3. System — режим выполнения системных программ, при котором ОС работает с данными пользователя.
4. IRQ — режим обработки прерываний, в который процессор, попадает при поступлении на вход IRQ запроса прерывания низшего уровня.
5. FIQ (Fast IRQ) — режим быстрой реакции на прерывания, в который процессор попадает при поступлении на вход FIQ запроса высшего уровня.
6. Abort — режим, в который процессор переходит при ошибке обращения к памяти (обращение по несуществующему адресу, попытка записи в ПЗУ и т. п.). Эти ошибки фиксируются контроллером прерываний, который выдает процессорному ядру запрос на переход в режим Abort.
7. Undefined — режим, в который процессор переходит при выборке неправильного кода команды.
Все режимы функционирования процессора, кроме' режима User, называются привилегированными. Каждому из них соответствует определенная регистровая модель, содержащая набор 32-битных регистров, доступных процессору в этом режиме. Все возможные регистровые модели для состояния ARM приведены в Табл. 1.2. В каждом режиме процессору доступны 16 регистров общего назначения R0...R15 и регистр состояния CPSR. Все регистры общего назначения имеют определенные стандартом фирмы ARM дополнительные имена, которые указаны в таблице в скобках. При вызове подпрограмм и организации передачи данных между ними, этот стандарт рекомендует следующее использование регистров общего назначения:
• регистры al...а4 используются для передачи параметров подпрограммам;
• регистры v 1...v8 используются для хранения локальных переменных;
• регистр IP служит для хранения промежуточных данных между вызовами процедур.
Регистры, имена которых выделены в таблице жирным шрифтом, являются банкированными. Это значит, что они используются только в том режиме, на который указывают их суффиксы (_fiq, _svc, _abt, _irq, _und) вместо соответствующих им регистров без суффиксов. При переходе в указанный режим из других режимов, текущее содержимое регистров без суффиксов автоматически переписывается в соответствующие банкированные регистры, а при возврате в прежний режим вновь используются его собственные регистры. Таким образом, суммарное количество физических 32-битных регистров общего назначения, доступное процессору во всех режимах состояния ARM, равно 31, а суммарное количество доступных процессору физических регистров состояния равно 6 (регистру CPSR соответствуют банкированные регистры с обобщенным форматом имени SPSR_xxx, о чем будет сказано ниже).
Таблица 1.2. Регистровые модели процессорного ядра ARM7TDMI-S в различных режимах состояния ARM
User, System |
FIQ |
Supervisor |
Abort |
IRQ |
Undefined |
RO (al) |
RO |
RO |
RO |
RO |
RO |
Rl (a2) |
Rl |
Rl |
Rl |
Rl |
Rl |
R2(a3) |
R2 |
R2 |
R2 |
R2 |
R2 |
R3(a4) |
R3 |
R3 |
R3 |
R3 |
R3 |
R4 (vl) |
R4 |
R4 |
R4 |
R4 |
R4 |
R5(v2) |
R5 |
R5 |
R5 |
R5 |
R5 |
R6 (v3) |
R6 |
R6 |
R6 |
R6 |
R6 |
R7 (v4) |
R7 |
R7 |
R7 |
R7 |
R7 |
R8 (v5) |
R8_flq |
R8 |
R8 |
R8 |
R8 |
R9(v6) |
R9_fiq |
R9 |
R9 |
R9 |
R9 |
RIO (v7) |
R10_flq |
RIO |
RIO |
RIO |
RIO |
Rll (v8) |
Rll_flq |
Rll |
Rll |
Rll |
Rll |
R12 (IP) |
R12_flq |
R12 |
R12 |
R12 |
R12 |
R13(SP) |
R13_fiq |
R13_svc |
R13_abt |
R13_irq |
R13_und |
R14 (LR) |
R14_flq |
R14_svc |
R14_abt |
R14_irq |
R14_und |
R15 (PC) |
R15 |
R15 |
R15 |
R15 |
R15 |
CPSR |
CPSR |
CPSR |
CPSR |
CPSR |
CPSR |
SPSR_flq |
SPSR_svc |
SPSR_abt |
SPSRJrq |
SPSR_und |
В базовом режиме User, в котором процессор находится большую часть рабочего времени, используются 32-битные регистры R0...R15 и регистр состояния CPSR.
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |