2. Содержимое CPSR автоматически копируется в соответствующий регистр SPSR_xxx.
3. Значения битов М4...М0 в CPSR автоматически устанавливаются в соответствии с новым режимом работы процессора: IRQ, FIQ, Abort или Undefinied.
4. Из размещенной в памяти таблицы векторов прерываний в программный счетчик PC загружается адрес первой команды обработчика прерывания. При этом могут быть также запрещены (замаскированы) некоторые ИС, чтобы избежать ситуации, когда неуправляемое вложение ИС приводит к нарушению процесса обработки прерываний (см. Табл. 1.18).
Таблица 1.18. Вектора исключительных ситуаций ARM7TDMI-S
Адрес вектора в памяти |
Исключительная ситуация |
Режим |
Состояние бита I |
Состояние бита F |
0x00000000 |
Reset |
Supervisor |
Замаскирован |
Замаскирован |
0x00000004 |
Undefined instruction |
Undefined |
I |
F |
0x00000008 |
Software interrupt |
Supervisor |
Замаскирован |
F |
ОхОООООООС |
Abort (Prefetch) |
Abort |
I |
F |
0x00000010 |
Abort (Data) |
Abort |
I |
F |
0x00000014 |
Зарезервировано |
Зарезервировано |
- |
- |
0x00000018 |
IRQ |
IRQ |
Замаскирован |
F |
0х0000001С |
FIQ |
FIQ |
Замаскирован |
Замаскирован |
Исключительная ситуация всегда обрабатывается в состоянии ARM. Если ИС генерируется, когда процессор находится в состоянии THUMB, то переключение в состояние ARM производится автоматически в тот момент, когда адрес вектора исключительной ситуации загружается в PC.
В системе команд ARM отсутствует специальная команда для выхода из обработчика прерывания и возврата в основную программу. Для того, чтобы выполнить возврат, программный блок обработчика исключительной ситуации должен произвести следующие действия:
1. Восстановить содержимое CPSR из SPSR_xxx.
2. Разрешить прерывания, запрещенные при входе в текущий обработчик.
3. Загрузить в PC адрес возврата из регистра LR с вычитанием смещения с помощью команды выхода из соответствующего прерывания.
Загрузка в PC адреса возврата для каждой исключительной ситуации производится командами, приведенными в Табл. 1.19. При выходе из режимов FIQ, IRQ, Abort необходимо произвести коррекцию адреса возврата. Поскольку после обработки этих ИС процессор должен вернуться к выполнению команды, вызвавшей прерывание, а в регистре LR хранится адрес следующей команды, то при выходе из обработчика прерываний содержимое этого регистра следует скорректировать с помощью команды вычитания SUBS.
Таблица 1.19. Обработка исключительных ситуаций ARM7TDMI-S
Исключительная ситуация или вход |
Команда возврата |
Предыдущее состояние |
Примечание |
|
ARM R14_xxx |
THUMB R14 xxx |
|||
BL |
MOV PC, R14 |
PC+ 4 |
PC+ 2 |
PC содержит адрес BL, SWI, команды Undefined или команды Prefetch Abort |
SWT |
MOV PC, R14_svc |
PC+ 4 |
PC+ 2 |
|
Неправильная команда (Undefined) |
MOV PC, R14_und |
PC+ 4 |
PC+ 2 |
|
Ошибка выборки команды (Prefetch Abort) |
SUBS PC, R14_abt, #4 |
PC+ 4 |
PC + 4 |
|
FIQ |
SUBS PC, R14_fiq, #4 |
PC+ 4 |
PC+ 4 |
PC содержит адрес команды, которая не была выполнена, потому что FIQ или IRQ получили приоритет |
IRQ |
SUBS PC, R14_irq, #4 |
PC+ 4 |
PC + 4 |
|
Ошибка выборки данных (Data Abort) |
SUBS PC, R14_abt, #8 |
PC+ 8 |
PC+ 8 |
PC содержит адрес команды загрузки или сохранения, которая генерировала ошибку выборки данных (Data Abort) |
Сброс (RESET) |
Значение, сохраняющееся в R14_svc при сбросе, непредсказуемо |
Ниже, в порядке убывания приоритета, перечислены семь видов ИС, генерируемых ядром ARM7TDMI.
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |