Предыдущая Следующая

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.


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_31.html on line 549

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_31.html on line 549

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book4_31.html on line 549