1. RealMonitor входит в цикл опроса DCC. Если буфер чтения DCC полон, управление передается функции rm_ReceiveData() (внутренняя функция RealMonitor). Если буфер записи DCC пуст, управление передается функции rm_TransmitData() (внутренняя функция RealMonitor). Если условия вызова ни одной из функций не выполняются, то управление возвращается вызывающей программе. При опросе DCC и установлении очередности вызова вышеуказанных функций, чтение DCC имеет более высокий приоритет, нежели запись.
2. RealMonitor останавливает приоритетное приложение. Запросы IRQ и FIQ продолжают обслуживаться, если они были разрешены в приоритетном приложении до его остановки.
24.3.1. Разрешение работы RealMonitor
Чтобы разрешить работу RealMonitor, необходимо выполнить ициализацию стеков. Пользователь должен гарантировать, что в его приложении определены стеки для каждого из режимов процессора, используемых RealMonitor, т. е. для каждого из этих режимов RealMonitor требует задания некоторого количества слов в пространстве стека. В общем случае, пользователь должен определить под стек пространство, достаточное для совместной работы RealMonitor и своего приложения.
Требования, предъявляемые к стеку со стороны RealMonitor, приведены в Табл. 24.1.
Таблииа-24.1. Требования RealMonitor к размеру области стека
Режим процессора |
Необходимый для RealMonitor размер области стека [байт] |
Неопределенная команда (Undefined) |
48 |
Аварийное прекращение работы выбора с упреждением (Prefetch Abort) |
16 |
Аварийное прекращение выборки данных (Data Abort) |
16 |
IRQ |
8 |
Режим IRQ. Для этого режима всегда требуется стек. RealMonitor использует 2 слова (по 4 байта) стека на входе в программу обработки прерывания. Эти 2 слова освобождаются до того, как разрешаются вложенные прерывания.
Режим Undefined. Для этого режима всегда требуется стек. При обработке исключительной ситуации «неопределенная команда», RealMonitor использует 12 слов стека.
Режим Supervisor (SVC). В этом режиме RealMonitor не использует стек.
Режим Prefetch Abort. RealMonitor использует 4 слова на входе в программу обработки прерывания от аварийного прекращения работы выбора с упреждением.
Режим Data Abort. RealMonitor использует 4 слова на входе в программу обработки прерывания от аварийного прекращения выборки данных.
Режим User/System. В этом режиме RealMonitor не использует стек.
Режим FIQ. В этом режиме RealMonitor не использует стек.
24.4. Обработка исключительных ситуаций
В этом разделе описаны особенности совместного использования обработчиков исключительных ситуаций программным модулем RealMonitor и пользовательским приложением.
24.4.1. Обработка исключительных ситуаций RealMonitor
Чтобы функционировать должным образом, RealMonitor должен иметь возможность блокировать некоторые прерывания и ИС. Диаграмма, изображенная на Рис. 24.3, демонстрирует, какие ИС могут потребоваться RealMonitor непосредственно или могут быть разделены между RealMonitor и пользовательским приложением. Если приложение требует совместного использования ИС, то это совместное использование должна обеспечивать соответствующая функция-обработчик (например, app_IRQDispatch()). В зависимости от типа исключительной ситуации, этот обработчик может также:
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |