24.8 Контроллер прерываний AIC. Интерфейс пользователя
24.8.1 Базовый адрес
Контроллер прерываний в адресном пространстве расположен по 0xFFFF F000. для него отведено 4-кБайта адресного пространства. Это позволяет задать векторы прерываний, обеспечивая поддержку ±4-кБайтного смещения для загрузки/хранения команд доступных через программный счетчик PC.
Таблица 24-2. Контроллер прерываний AlC. Описание регистров
Смещение |
Регистр |
Обозначение |
Тип доступа |
Значение после сброса |
0000 |
Регистр источника прерывания 0 |
AIC_SMR0 |
Чтение/Запись |
0x0 |
0x04 |
Регистр источника прерывания 1 |
AIC_SMR1 |
Чтение/Запись |
0x0 |
- |
- |
- |
- |
- |
0x7C |
Регистр источника прерывания 31 |
AIC_SMR31 |
Чтение/Запись |
0x0 |
0x80 |
Вектор прерывания 0 |
AIC_SVR0 |
Чтение/Запись |
0x0 |
0x84 |
Вектор прерывания 1 |
AIC_SVR1 |
Чтение/Запись |
0x0 |
- |
- |
- |
- |
- |
0xFC |
Вектор прерывания 31 |
AIC_SVR31 |
Чтение/Запись |
0x0 |
0x100 |
Регистр вектора прерывания |
AIC_IVR |
Только Чтение |
0x0 |
0x104 |
Регистр вектора быстрого прерывания |
AIC_FVR |
Только Чтение |
0x0 |
0x108 |
Регистр статуса прерывания |
AIC_ISR |
Только Чтение |
0x0 |
0x10C |
Регистр обрабатываемого прерывания |
AIC_IPR |
Только Чтение |
0x0(1) |
0x110 |
Регистр маски прерывания |
AIC_IMR |
Только Чтение |
0x0 |
0x114 |
Регистр статуса прерываний ядра |
AIC_CISR |
Только Чтение |
0x0 |
0x118 |
Зарезервирован |
- |
- |
- |
0x11C |
Зарезервирован |
- |
- |
- |
0x120 |
Регистр разрешения прерываний |
AIC_IECR |
Только запись |
- |
0x124 |
Регистр запрета прерываний |
AIC_IDCR |
Только запись |
- |
0x128 |
Регистр сброса прерываний |
AIC_ICCR |
Только запись |
- |
0x12C |
Регистр установки прерываний |
AIC_ISCR |
Только запись |
- |
0x130 |
Регистр окончания прерывания |
AIC_EOICR |
Только запись |
- |
0x134 |
Регистр вектора случайных прерываний |
AIC_SPU |
Чтение/Запись |
0x0 |
0x138 |
Регистр управления отладки |
AIC_DCR |
Чтение/Запись |
0x0 |
0x13C |
Зарезервирован |
- |
- |
- |
0x140 |
Регистр разрешения быстрых прерываний |
AIC_FFER |
Только запись |
- |
0x144 |
Регистр запрета быстрых прерываний |
AIC_FFDR |
Только запись |
- |
0x148 |
Регистр статуса быстрых прерываний |
AIC_FFSR |
Только Чтение |
0x0 |
Примечание: 1. Значение этого регистра после сброса зависит от приоритета источника внешнего прерывания. Остальные источники после сброса очищаются, кроме неотработанного.
24.8.2 Регистр источника прерывания
Обозначение регистра: AIC_SMR0.. AIC_SMR31
Тип доступа: Чтение/Запись
Значение после сброса: 0x0
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
- |
- |
- |
- |
- |
- |
- |
- |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
- |
- |
- |
- |
- |
- |
- |
- |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
- |
- |
- |
- |
- |
- |
- |
- |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
- |
SRCTYPE |
- |
- |
PRIOR |
- PRIOR: Приоритет прерывания
Приоритет прерывания устанавливается для всех источников прерываний, кроме источника FIQ (0-ой источник).
Приоритет задается между 0 (самый низкий ) и 7 (самый высокий).
В регистре для FIQ источника приоритет не используется.
- SRCTYPE: Тип источника прерывания
Для внутренних источников прерывания активный уровень источника прерывания (по уровню или по фронту) не задается.
SRCTYPE |
Источники внутренних прерываний |
Источники внешних прерываний |
0 |
0 |
Высокий уровень |
Низкий уровень |
0 |
1 |
Положительный фронт |
Отрицательный фронт |
1 |
0 |
Высокий уровень |
Высокий уровень |
1 |
1 |
Положительный фронт |
Положительный фронт |
24.8.3 Вектор прерывания
Обозначение регистра: AIC_SVR0..AIC_SVR31
Тип доступа: Чтение/Запись
Значение после сброса: 0x0
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
VECTOR |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
VECTOR |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
VECTOR |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
VECTOR |
- VECTOR: Вектор прерывания
В эти регистры записываются адреса соответствующих процедур обработки прерывания для каждого источника.
24.8.4 Регистр вектора прерывания
Обозначение регистра: AIC_IVR
Тип доступа: Только Чтение
Значение после сброса: 0x0
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
IRQV |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
IRQV |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
IRQV |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
IRQV |
- IRQV: Регистр вектора прерывания
Регистр вектора прерывания содержит вектор, программируемый пользователем в Регистре источника прерывания в соответствии с текущим источником прерывания.
Регистр источника прерывания индексируется, используя номер текущего прерывания при прочтении Регистра вектора прерывания. При отсутствии текущего прерывания чтение Регистра вектора прерывания дает значение, сохраненное в регистре вектора случайных прерываний AIC_SPU.
24.8.5 Регистр вектора быстрого прерывания
Обозначение регистра: AIC_FVR
Тип доступа: Только Чтение
Значение после сброса: 0x0
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
FIQV |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
FIQV |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
FIQV |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
FIQV |
- FIQV: Регистр вектора быстрого прерывания
Регистр вектора быстрого прерывания содержит вектор, программируемый пользователем в 0-ой вектор прерывания При отсутствии быстрого прерывания чтение Регистра вектора прерывания дает значение сохраненное в регистре вектора случайных прерываний AIC_SPU.
24.8.6 Регистр статуса прерывания
Обозначение регистра: AIC_ISR
Тип доступа: Только Чтение
Значение после сброса: 0x0
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
- |
- |
- |
- |
- |
- |
- |
- |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
- |
- |
- |
- |
- |
- |
- |
- |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
- |
- |
- |
- |
- |
- |
- |
- |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
- |
- |
- |
IRQID |
- IRQID: Идентификатор текущего прерывания
Регистр статуса прерывания возвращает номер источника текущего прерывания.
24.8.7 Регистр обрабатываемого прерывания
Обозначение регистра: AIC_IPR
Тип доступа: Только Чтение
Значение после сброса: 0x0
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
PID31 |
PID30 |
PID29 |
PID28 |
PID27 |
PID26 |
PID25 |
PID24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
PID23 |
PID22 |
PID21 |
PID20 |
PID19 |
PID18 |
PID17 |
PID16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PID15 |
PID14 |
PID13 |
PID12 |
PID11 |
PID10 |
PID9 |
PID8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PID7 |
PID6 |
PID5 |
PID4 |
PID3 |
PID2 |
SYS |
FIQ |
- FIQ, SYS, PID2-PID31: Обрабатываемое прерывание
- 0 = Соответствующее прерывание не обрабатывается.
- 1 = Соответствующее прерывание обрабатывается.
24.8.8 Регистр маски прерывания
Обозначение регистра: AIC_IMR
Тип доступа: Только Чтение
Значение после сброса: 0x0
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
PID31 |
PID30 |
PID29 |
PID28 |
PID27 |
PID26 |
PID25 |
PID24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
PID23 |
PID22 |
PID21 |
PID20 |
PID19 |
PID18 |
PID17 |
PID16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PID15 |
PID14 |
PID13 |
PID12 |
PID11 |
PID10 |
PID9 |
PID8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PID7 |
PID6 |
PID5 |
PID4 |
PID3 |
PID2 |
SYS |
FIQ |
- FIQ, SYS, PID2-PID31: Маска прерывание
- 0= Соответствующее прерывание запрещено.
- 1= Соответствующее прерывание разрешено.
24.8.9 Регистр статуса прерываний ядра
Обозначение регистра: AIC_CISR
Тип доступа: Только Чтение
Значение после сброса: 0x0
|
|
|
28 |
27 |
26 |
25 |
24 |
|
|
|
- |
- |
- |
- |
- |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
- |
- |
- |
- |
- |
- |
- |
- |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
- |
- |
- |
- |
- |
- |
- |
- |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
- |
- |
- |
- |
- |
- |
NIRQ |
NFIQ |
- 0 = nFIQ сигнал неактивен.
- 1 = nFIQ сигнал активен.
- 0 = nIRQ сигнал неактивен.
- 1 = nIRQ сигнал активен.
24.8.10 Регистр разрешения прерываний
Обозначение регистра: AIC_IECR
Тип доступа: Только Запись
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
PID31 |
PID30 |
PID29 |
PID28 |
PID27 |
PID26 |
PID25 |
PID24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
PID23 |
PID22 |
PID21 |
PID20 |
PID19 |
PID18 |
PID17 |
PID16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PID15 |
PID14 |
PID13 |
PID12 |
PID11 |
PID10 |
PID9 |
PID8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PID7 |
PID6 |
PID5 |
PID4 |
PID3 |
PID2 |
SYS |
FIQ |
- FIQ, SYS, PID2-PID31: Разрешение прерывания
- 0= Нет влияния.
- 1= Разрешить соответствующее прерывание.
24.8.11 Регистр запрета прерываний
Обозначение регистра: AIC_IDCR
Тип доступа: Только Запись
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
PID31 |
PID30 |
PID29 |
PID28 |
PID27 |
PID26 |
PID25 |
PID24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
PID23 |
PID22 |
PID21 |
PID20 |
PID19 |
PID18 |
PID17 |
PID16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PID15 |
PID14 |
PID13 |
PID12 |
PID11 |
PID10 |
PID9 |
PID8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PID7 |
PID6 |
PID5 |
PID4 |
PID3 |
PID2 |
SYS |
FIQ |
- FIQ, SYS, PID2-PID31: Запрет прерывания
- 0= Нет влияния.
- 1= Запретить соответствующее прерывание.
24.8.12 Регистр сброса прерываний
Обозначение регистра: AIC_ICCR
Тип доступа: Только Запись
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
PID31 |
PID30 |
PID29 |
PID28 |
PID27 |
PID26 |
PID25 |
PID24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
PID23 |
PID22 |
PID21 |
PID20 |
PID19 |
PID18 |
PID17 |
PID16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PID15 |
PID14 |
PID13 |
PID12 |
PID11 |
PID10 |
PID9 |
PID8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PID7 |
PID6 |
PID5 |
PID4 |
PID3 |
PID2 |
SYS |
FIQ |
- FIQ, SYS, PID2-PID31: Сброс прерывания
- 0= Нет влияния.
- 1= Сброс соответствующего прерывания.
24.8.13 Регистр установки прерываний
Обозначение регистра: AIC_ISCR
Тип доступа: Только Запись
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
PID31 |
PID30 |
PID29 |
PID28 |
PID27 |
PID26 |
PID25 |
PID24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
PID23 |
PID22 |
PID21 |
PID20 |
PID19 |
PID18 |
PID17 |
PID16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PID15 |
PID14 |
PID13 |
PID12 |
PID11 |
PID10 |
PID9 |
PID8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PID7 |
PID6 |
PID5 |
PID4 |
PID3 |
PID2 |
SYS |
FIQ |
- FIQ, SYS, PID2-PID31: Установка прерывания
- 0= Нет влияния.
- 1= Установка соответствующего прерывания.
24.8.14 Регистр окончания прерывания
Обозначение регистра: AIC_EOICR
Тип доступа: Только Запись
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
- |
- |
- |
- |
- |
- |
- |
- |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
- |
- |
- |
- |
- |
- |
- |
- |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
- |
- |
- |
- |
- |
- |
- |
- |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
- |
- |
- |
- |
- |
- |
- |
- |
Регистр окончания прерывания используется процедурой обработки прерывания для обозначения окончания обработки прерывания. Можно записать любое значение, так как требуется только произвести запись в этот регистр для сигнализации окончания обработки прерывания.
24.8.15 Регистр вектора случайного прерывания
Обозначение регистра: AIC_FVR
Тип доступа: Чтение/Запись
Значение после сброса: 0x0
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
SIQV |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
SIQV |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
SIQV |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
SIQV |
- SIQV: Регистр вектора случайного прерывания
В этот регистр можно записать адрес процедуры обработки случайного прерывания. Записанное значение возвращается в регистр AIC_IVR в случае общего случайного прерывания и в регистр AIC_FVR в случае быстрого случайного прерывания.
24.8.16 Регистр управления отладки
Обозначение регистра: AIC_DEBUG
Тип доступа: Чтение/Запись
Значение после сброса: 0x0
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
- |
- |
- |
- |
- |
- |
- |
- |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
- |
- |
- |
- |
- |
- |
- |
- |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
- |
- |
- |
- |
- |
- |
- |
- |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
- |
- |
- |
- |
- |
- |
GMSK |
PROT |
- 0 = Защищенный режим запрещен.
- 1 = Защищенный режим разрешен.
- 0 = Сигналы nIRQ и nFIQ управляются контроллером прерываний.
- 1 = Сигналы nIRQ и nFIQ подключены к неактивным состояниям.
24.8.17 Регистр разрешения эмуляции быстрого прерывания
Обозначение регистра: AIC_FFER
Тип доступа: Только Запись
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
PID31 |
PID30 |
PID29 |
PID28 |
PID27 |
PID26 |
PID25 |
PID24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
PID23 |
PID22 |
PID21 |
PID20 |
PID19 |
PID18 |
PID17 |
PID16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PID15 |
PID14 |
PID13 |
PID12 |
PID11 |
PID10 |
PID9 |
PID8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PID7 |
PID6 |
PID5 |
PID4 |
PID3 |
PID2 |
SYS |
- |
- SYS, PID2-PID31: Разрешение эмуляции быстрого прерывания
- 0= Нет влияния.
- 1= Разрешение эмуляции быстрого прерывания для соответствующего прерывания
24.8.18 Регистр запрета эмуляции быстрого прерывания
Обозначение регистра: AIC_FFDR
Тип доступа: Только Запись
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
PID31 |
PID30 |
PID29 |
PID28 |
PID27 |
PID26 |
PID25 |
PID24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
PID23 |
PID22 |
PID21 |
PID20 |
PID19 |
PID18 |
PID17 |
PID16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PID15 |
PID14 |
PID13 |
PID12 |
PID11 |
PID10 |
PID9 |
PID8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PID7 |
PID6 |
PID5 |
PID4 |
PID3 |
PID2 |
SYS |
- |
- SYS, PID2-PID31: Запрет эмуляции быстрого прерывания
- 0= Нет влияния.
- 1= Запрет эмуляции быстрого прерывания для соответствующего прерывания
24.8.19 Регистр статуса эмуляции быстрого прерывания
Обозначение регистра: AIC_FFSR
Тип доступа: Только Чтение
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
PID31 |
PID30 |
PID29 |
PID28 |
PID27 |
PID26 |
PID25 |
PID24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
PID23 |
PID22 |
PID21 |
PID20 |
PID19 |
PID18 |
PID17 |
PID16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PID15 |
PID14 |
PID13 |
PID12 |
PID11 |
PID10 |
PID9 |
PID8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PID7 |
PID6 |
PID5 |
PID4 |
PID3 |
PID2 |
SYS |
- |
- SYS, PID2-PID31: Статус эмуляции быстрого прерывания
- 0= Режим эмуляции быстрого прерывания запрещен для соответствующего прерывания.
- 1= Режим эмуляции быстрого прерывания разрешен для соответствующего прерывания