Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > ARM > ARM7TDMI |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7. Исключительные ситуацииИсключительные ситуации возникают всякий раз, когда нормальный ход выполнения программы необходимо временно прерывать, например, для обслуживания прерывания периферийного устройства. Перед началом обработки исключительной ситуации процессор ARM7TDMI запоминает текущее состояние процессора для того, чтобы по завершении подпрограммы обработчика возобновить нормальное выполнение программы. Если две или более исключительных ситуации возникает одновременно, то данные ситуации обрабатываются в фиксированном порядке, представленном в таблице 2.5. В данном параграфе приводится описание обработки исключительных ситуаций процессора ARM7TDMI в следующей последовательности:
7.1 Краткое описание по входу и выходу из исключительных ситуаций В таблице 2.3 приведена итоговая информация по значениям счетчика программы PC, значение которого запоминается в r14 при входе в исключительную ситуацию, и рекомендованная инструкция для выхода из обработчика исключительной ситуации. Таблица 2.3. Вход и выход из исключительных ситуаций
7.2 Вхождение в исключительную ситуацию Процессор ARM7TDMI обрабатывает исключительную ситуацию следующим образом:
Процессор ARM7TDMI может также установить флаги отключения прерывания, чтобы предотвратить возникновение неуправляемых вложенных исключительных ситуаций. Прим.: исключительные ситуации всегда вводятся в состоянии ARM. Когда процессор находится в состоянии Thumb и возникает исключительная ситуация, переход в состояние ARM происходит автоматически после загрузки адреса вектора исключительной ситуации в счетчик программы PC. Обработчик исключительной ситуации может перейти к состоянию Thumb, но для корректного завершения своей работы он должен вернуться к состоянию ARM. 7.3 Выход из исключительной ситуации После завершения исключительной ситуации процедура ее обработки должна выполнить следующие действия:
Прим.: при восстановлении содержимого CPSR из SPSR происходит автоматическая переустановка бита T к значению, которое предшествовало исключительной ситуации. 7.4 Запрос быстрого прерывания Исключительная ситуация запроса быстрого прерывания (FIQ) поддерживает передачу данных или обработку канала. В состоянии ARM режим FIQ имеет 8 банкированных регистров, что исключает необходимость предварительного запоминания регистров. Этим минимизируется потеря производительности при переключении контекста. FIQ генерируется внешне путем удержания в низком состоянии входа nFIQ. Вход поступает в ядро через синхронизатор. Независимо от того, в каком состоянии ARM или Thumb вводится исключительная ситуация, обработчик FIQ возвращается из прерывания путем выполнения инструкции: SUBS PC,R14_fiq,#4 Исключительные ситуации FIQ могут быть отключены в привилегированном режиме путем установки флага F в CPSR. Если флаг F сброшен, то процессор ARM7TDMI проверяет наличие низкого уровня на выходе синхронизатора FIQ в конце выполнения каждой инструкции. 7.5 Запрос на прерывание Исключительная ситуация запроса на прерывание (IRQ) - обычное прерывание, вызванное низким уровнем на входе nIRQ. IRQ имеет более низкий приоритет по сравнению FIQ и маскируется при вызове последовательности FIQ. Также как и вход nFIQ вход nIRQ поступает в ядро через синхронизатор. Независимо от того, в каком состоянии ARM или Thumb вводится исключительная ситуация, обработчик IRQ возвращается из прерывания путем выполнения: SUBS PC,R14_irq,#4 Отключить прерывание можно в любой момент путем установки бита I в регистре CPSR из привилегированного режима. 7.6 Аварийная ситуация Аварийная ситуация индицирует, что текущий доступ к памяти не может быть завершен. Аварийная ситуация сигнализируется через внешний вход ABORT. Процессор ARM7TDMI проверяет возникновение аварийной исключительной ситуации по завершении цикла доступа к памяти. Аварийный механизм позволяет реализовать систему виртуальной памяти с подкачкой страниц по требованию. В таких системах процессор может генерировать произвольные адреса. Если данные по адресу не доступны, то блок управления памятью (MMU) сигнализирует об аварии. В этом случае обработчик аварийной ситуации должен выполнить следующее:
Этим гарантируется, что после восстановления инструкции, основной регистр будет иметь тоже значение, что и в момент первоначального выполнения инструкции. Прикладной программе нет необходимости знать о доступном количестве памяти, а также о состоянии, которое было подвержено воздействию аварийной ситуации. Существует два типа аварийных ситуаций:
Аварийная предварительная выборка При возникновении аварийной предварительной выборки процессор ARM7TDMI маркирует загружаемую инструкцию как некорректную, но не генерирует исключительной ситуации до достижения инструкцией ступени "Исполнение" конвейера. Если инструкция не выполнена, например, по причине нарушения кодов условия или по причине возникновения перехода при нахождении на конвейере, то аварийная ситуация не возникает После определения причины аварийной ситуации обработчик выполняет следующую инструкцию, независимо от рабочего состояния процессора: SUBS PC,R14_abt,#4 Данная операция восстанавливает содержимое PC и CPSR, а также повторно выполняет аварийную инструкцию. Аварийные данные При возникновении ситуации аварийных данных необходимо выполнить действия, зависящие от типа инструкции:
Если основной регистр находится в списке передачи и уже перезаписан считанными данными за время, в течение которого сигнализировалось об аварии, то основной регистр возвращается к исходному значению. Процессор ARM7TDMI предотвращает перезапись всех регистров считанными данными после сигнализации об аварии. Это означает, что конечное значение основного регистра всегда является обратно записанным значением, если задана обратная запись, по его оригинальному значению. Это также означает, что ядро ARM7TDMI запоминает r15 в аварийной инструкции LDM, т.к. r15 всегда является последним регистром в списке регистров или вообще не представлен в списке передачи. После фиксации причины аварии обработчик должен выполнить следующую инструкцию возврата в точке входа, независимо от рабочего состояния процессора: SUBS PC,R14_abt,#8 Данное действие восстанавливает содержимое PC и CPSR, а также повторяет попытку исполнения аварийной инструкции. 7.7 Инструкция программного прерывания Инструкция программного прерывания (SWI) используется для ввода супервизорного режима, как правило, для запроса специальной супервизорной функции. Обработчик SWI считывает код операции для извлечения номера функции SWI. Возврат из обработчика SWI выполняется путем выполнения следующей инструкции, независимо от рабочего состояния процессора: MOVS PC, R14_svc Данное действие восстанавливает содержимое PC и CPSR, а также осуществляет возврат к инструкции, следующей за SWI. 7.8 Неопределенная инструкция Если процессор ARM7TDMI сталкивается с инструкцией, которую ни он, ни любой сопроцессор в системе не может обработать, ядро ARM7TDMI попадает в ситуацию неопределенной инструкции. Программа может использовать этот механизм для расширения набора инструкций ARM путем эмуляции неопределенных сопроцессорных инструкций. После эмуляции несуществующей инструкции обработчик особой ситуации выполняют следующую инструкцию, независимо от рабочего состояния процессора: MOVS PC,R14_und Данное действие восстанавливает содержимое CPSR и вызывает переход к следующей инструкции после неопределенной инструкции. Более подробная информация по неопределенным инструкциям приведена в "ARM Architecture Reference Manual" (справочное руководство по архитектуре ARM). 7.9 Векторы исключительных ситуаций В таблице 2.4 приведен список адресов векторов исключительных ситуаций. В этой таблице I и F представляют предыдущие значений бит отключения прерываний IRQ и FIQ, соответственно, в регистре CPSR. Таблица 2.4. Векторы исключительных ситуаций
7.10 Приоритеты исключительных ситуаций При одновременном возникновении нескольких исключительных ситуаций порядок их обработки определяется с помощью системы фиксированных приоритетов. Порядок приоритетов представлен в таблице 2.5. Таблица 2.5. Приоритет исключительных ситуаций
Некоторые исключительные ситуации не могут возникать одновременно:
Возврат из FIQ вызовет восстановление выполнения обработчика Авар. данных. Авар. данные должны иметь более высокий приоритет, чем FIQ, чтобы гарантировать невозможность пропуска ошибок передачи. В системах, где используется аварийные ситуации для поддержки виртуальной памяти, необходимо прибавить время для входа в данную исключительную ситуацию для вычисления наихудшего значения задержки FIQ.
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|