中断控制器
简介
中断控制器负责统筹管理来自外设和内部模块的中断请求,将其路由到对应的 CPU,并协调优先级仲裁,确保实时系统能够可靠地响应事件。
芯片系列涵盖多种异构多核设计,各型号按需集成以下架构中的一种或多种处理器核心,各架构有自己的中断管理体系,CPU 使用与其架构匹配的中断控制器。
ARM Cortex-M: 嵌套向量中断控制器 (NVIC)
ARM Cortex-A: 通用中断控制器 (GIC)
RISC-V: 平台级中断控制器 (PLIC)
Xtensa HiFi 5 DSP: DSP 中断控制器
各 CPU 与其对应的中断控制器如下表所示。
处理器 |
中断控制器类型 |
|---|---|
KM4 |
|
KM0 |
处理器 |
中断控制器类型 |
|---|---|
KM4 |
|
KR4 |
处理器 |
中断控制器类型 |
|---|---|
KM4 |
|
KR4 |
处理器 |
中断控制器类型 |
|---|---|
KM4 |
|
KR4 |
|
DSP |
处理器 |
中断控制器类型 |
|---|---|
KM4 |
|
KR4 |
|
DSP |
处理器 |
中断控制器类型 |
|---|---|
CA32 |
|
KM4 |
|
KM0 |
处理器 |
中断控制器类型 |
|---|---|
KM4TZ |
|
KM4NS |
中断序号列表
各 CPU 的中断源与中断序号分配如下。在编写中断服务程序时,需根据目标 CPU 查找对应的中断序号进行注册。
备注
单元格为空表示该 CPU 不存在此中断。
功能 |
KM0 序号 |
KM4 序号 |
|---|---|---|
WIFI_FISR_FESR_IRQ |
0 |
0 |
WIFI_FTSR_MAILBOX |
1 |
1 |
WL_DMA |
2 |
2 |
WL_PROTOCOL |
3 |
3 |
BT_SCB |
4 |
4 |
SYS_ILLEGAL_WRITE |
5 |
|
KM4_WAKE_IRQ |
5 |
|
BT_WAKE_HOST |
6 |
6 |
RXI300 |
7 |
7 |
IPC_KM0 |
8 |
|
IPC_KM4 |
8 |
|
IWDG |
9 |
9 |
Timer0 |
10 |
10 |
Timer1 |
11 |
11 |
Timer2 |
12 |
12 |
Timer3 |
13 |
13 |
Timer4 |
14 |
14 |
Timer5 |
15 |
15 |
Timer6 |
16 |
16 |
Timer7 |
17 |
17 |
Timer8 |
18 |
18 |
Timer9 |
19 |
19 |
Timer10 |
20 |
20 |
Timer11 |
21 |
21 |
pmc_timer0 |
22 |
22 |
pmc_timer1 |
23 |
23 |
UART0 |
24 |
24 |
UART1 |
25 |
25 |
UART2_BT |
26 |
26 |
UART_LOG |
27 |
|
UART_LOG |
27 |
|
UART_LOG |
||
GPIOA |
28 |
28 |
GPIOB |
29 |
29 |
I2C0 |
30 |
30 |
I2C1 |
31 |
31 |
CTOUCH |
32 |
32 |
GDMA0_Channel0 |
33 |
33 |
GDMA0_Channel1 |
34 |
34 |
GDMA0_Channel2 |
35 |
35 |
GDMA0_Channel3 |
36 |
36 |
GDMA0_Channel4 |
37 |
37 |
GDMA0_Channel5 |
38 |
38 |
GDMA0_Channel6 |
39 |
39 |
GDMA0_Channel7 |
40 |
40 |
PPE |
41 |
41 |
SPI0 |
42 |
42 |
SPI1 |
43 |
43 |
SPORT0 |
44 |
44 |
SPORT1 |
45 |
45 |
RTC |
46 |
46 |
ADC |
47 |
47 |
ADC_COMP |
48 |
48 |
BOR |
49 |
49 |
PWR_DOWN |
50 |
50 |
SPI_FLASH |
51 |
51 |
Keyscan |
52 |
52 |
RSIP |
53 |
53 |
AES |
54 |
54 |
SHA |
55 |
55 |
PSRAMC |
56 |
56 |
TRNG |
57 |
57 |
AES_S |
58 |
58 |
SHA_S |
59 |
59 |
AON_TIM |
60 |
60 |
AON_WAKEPIN |
61 |
61 |
LEDC |
62 |
62 |
IR |
63 |
63 |
SDIO |
64 |
64 |
KM0_WDG |
65 |
|
KM4_NS_WDG |
65 |
|
KM4_S_WDG |
66 |
|
QSPI_INT |
67 |
|
USB_INT |
66 |
68 |
OCP_INT |
69 |
功能 |
KR4 序号 |
KM4 序号 |
|---|---|---|
WIFI_FISR_FESR_IRQ |
0 |
0 |
WIFI_FTSR_MAILBOX |
1 |
1 |
WL_DMA |
2 |
2 |
WL_PROTOCOL |
3 |
3 |
BT_SCB |
4 |
4 |
NP_WAKE_IRQ |
5 |
5 |
DSP_WAKE_IRQ |
6 |
6 |
BT_WAKE_HOST |
7 |
7 |
RXI300 |
8 |
8 |
SYS_ILLEGAL_WRITE |
9 |
9 |
IPC_KR4 |
10 |
|
IPC_KM4 |
10 |
|
IPC_DSP |
||
IWDG |
11 |
11 |
KM4_NS_WDG_RST |
12 |
|
KM4_NS_WDG |
12 |
|
KM4_S_WDG_RST |
13 |
|
KM4_S_WDG |
13 |
|
KR4_WDG_RST |
14 |
|
KR4_WDG |
14 |
|
DSP_WDG_RST |
15 |
15 |
DSP_WDG |
||
Timer0 |
16 |
16 |
Timer1 |
17 |
17 |
Timer2 |
18 |
18 |
Timer3 |
19 |
19 |
Timer4 |
20 |
20 |
Timer5 |
21 |
21 |
Timer6 |
22 |
22 |
Timer7 |
23 |
23 |
Timer8 |
24 |
24 |
Timer9 |
25 |
25 |
Timer10 |
26 |
26 |
Timer11 |
27 |
27 |
Timer12 |
28 |
28 |
Timer13 |
29 |
29 |
Timer14 |
30 |
30 |
UART0 |
31 |
31 |
UART1 |
32 |
32 |
UART2 |
33 |
33 |
UART3_BT |
34 |
34 |
UART_LOG |
35 |
35 |
GPIOA |
36 |
36 |
GPIOB |
37 |
37 |
I2C0 |
38 |
38 |
I2C1 |
39 |
39 |
CTOUCH |
40 |
40 |
GDMA0_Channel0 |
41 |
41 |
GDMA0_Channel1 |
42 |
42 |
GDMA0_Channel2 |
43 |
43 |
GDMA0_Channel3 |
44 |
44 |
GDMA0_Channel4 |
45 |
45 |
GDMA0_Channel5 |
46 |
46 |
GDMA0_Channel6 |
47 |
47 |
GDMA0_Channel7 |
48 |
48 |
SPI0 |
49 |
49 |
SPI1 |
50 |
50 |
SPORT0 |
51 |
51 |
SPORT1 |
52 |
52 |
RTC |
53 |
53 |
ADC |
54 |
54 |
ADC_COMP |
55 |
55 |
BOR |
56 |
56 |
PWR_DOWN |
57 |
57 |
SPI_FLASH |
58 |
58 |
Thermal |
59 |
59 |
RSIP |
60 |
60 |
AES |
61 |
61 |
SHA |
62 |
62 |
ECDSA |
63 |
63 |
PSRAMC |
64 |
64 |
TRNG |
65 |
65 |
LEDC |
66 |
66 |
AES_S |
67 |
67 |
SHA_S |
68 |
68 |
AON_TIM |
69 |
69 |
AON_WAKEPIN |
70 |
70 |
DSP_ERROR |
71 |
71 |
DSP_FATAL_ERROR |
72 |
72 |
VAD |
73 |
73 |
Zigbee |
74 |
74 |
DSP_NMI |
功能 |
KR4 序号 |
KM4 序号 |
|---|---|---|
WIFI_FISR_FESR_IRQ |
0 |
0 |
WIFI_FTSR_MAILBOX |
1 |
1 |
WL_DMA |
2 |
2 |
WL_PROTOCOL |
3 |
3 |
BT_SCB |
4 |
4 |
NP_WAKE_IRQ |
5 |
5 |
DSP_WAKE_IRQ |
6 |
6 |
BT_WAKE_HOST |
7 |
7 |
RXI300 |
8 |
8 |
SYS_ILLEGAL_WRITE |
9 |
9 |
IPC_KR4 |
10 |
|
IPC_KM4 |
10 |
|
IPC_DSP |
||
IWDG |
11 |
11 |
KM4_NS_WDG_RST |
12 |
|
KM4_NS_WDG |
12 |
|
KM4_S_WDG_RST |
13 |
|
KM4_S_WDG |
13 |
|
KR4_WDG_RST |
14 |
|
KR4_WDG |
14 |
|
DSP_WDG_RST |
15 |
15 |
DSP_WDG |
||
Timer0 |
16 |
16 |
Timer1 |
17 |
17 |
Timer2 |
18 |
18 |
Timer3 |
19 |
19 |
Timer4 |
20 |
20 |
Timer5 |
21 |
21 |
Timer6 |
22 |
22 |
Timer7 |
23 |
23 |
Timer8 |
24 |
24 |
Timer9 |
25 |
25 |
Timer10 |
26 |
26 |
Timer11 |
27 |
27 |
Timer12 |
28 |
28 |
Timer13 |
29 |
29 |
Timer14 |
30 |
30 |
UART0 |
31 |
31 |
UART1 |
32 |
32 |
UART2 |
33 |
33 |
UART3_BT |
34 |
34 |
UART_LOG |
35 |
35 |
GPIOA |
36 |
36 |
GPIOB |
37 |
37 |
I2C0 |
38 |
38 |
I2C1 |
39 |
39 |
CTOUCH |
40 |
40 |
GDMA0_Channel0 |
41 |
41 |
GDMA0_Channel1 |
42 |
42 |
GDMA0_Channel2 |
43 |
43 |
GDMA0_Channel3 |
44 |
44 |
GDMA0_Channel4 |
45 |
45 |
GDMA0_Channel5 |
46 |
46 |
GDMA0_Channel6 |
47 |
47 |
GDMA0_Channel7 |
48 |
48 |
SPI0 |
49 |
49 |
SPI1 |
50 |
50 |
SPORT0 |
51 |
51 |
SPORT1 |
52 |
52 |
RTC |
53 |
53 |
ADC |
54 |
54 |
ADC_COMP |
55 |
55 |
BOR |
56 |
56 |
PWR_DOWN |
57 |
57 |
SPI_FLASH |
58 |
58 |
Thermal |
59 |
59 |
RSIP |
60 |
60 |
AES |
61 |
61 |
SHA |
62 |
62 |
ECDSA |
63 |
63 |
PSRAMC |
64 |
64 |
TRNG |
65 |
65 |
LEDC |
66 |
66 |
AES_S |
67 |
67 |
SHA_S |
68 |
68 |
AON_TIM |
69 |
69 |
AON_WAKEPIN |
70 |
70 |
DSP_ERROR |
71 |
71 |
DSP_FATAL_ERROR |
72 |
72 |
VAD |
73 |
73 |
Zigbee |
74 |
74 |
DSP_NMI |
功能 |
KR4 序号 |
KM4 序号 |
DSP 序号 |
DSP_INT_LEVEL |
|---|---|---|---|---|
WIFI_FISR_FESR_IRQ |
0 |
0 |
||
WIFI_FTSR_MAILBOX |
1 |
1 |
||
WL_DMA |
2 |
2 |
9 |
1 |
WL_PROTOCOL |
3 |
3 |
||
BT_SCB |
4 |
4 |
||
NP_WAKE_IRQ |
5 |
5 |
||
DSP_WAKE_IRQ |
6 |
6 |
||
BT_WAKE_HOST |
7 |
7 |
||
RXI300 |
8 |
8 |
||
SYS_ILLEGAL_WRITE |
9 |
9 |
||
IPC_KR4 |
10 |
|||
IPC_KM4 |
10 |
|||
IPC_DSP |
7 |
2 |
||
IWDG |
11 |
11 |
||
KM4_NS_WDG_RST |
12 |
|||
KM4_NS_WDG |
12 |
|||
KM4_S_WDG_RST |
13 |
|||
KM4_S_WDG |
13 |
|||
KR4_WDG_RST |
14 |
|||
KR4_WDG |
14 |
|||
DSP_WDG_RST |
15 |
15 |
||
DSP_WDG |
8 |
4 |
||
Timer0 |
16 |
16 |
||
Timer1 |
17 |
17 |
||
Timer2 |
18 |
18 |
||
Timer3 |
19 |
19 |
||
Timer4 |
20 |
20 |
||
Timer5 |
21 |
21 |
||
Timer6 |
22 |
22 |
||
Timer7 |
23 |
23 |
10 |
1 |
Timer8 |
24 |
24 |
||
Timer9 |
25 |
25 |
||
Timer10 |
26 |
26 |
11 |
2 |
Timer11 |
27 |
27 |
12 |
2 |
Timer12 |
28 |
28 |
13 |
2 |
Timer13 |
29 |
29 |
14 |
3 |
Timer14 |
30 |
30 |
15 |
3 |
UART0 |
31 |
31 |
||
UART1 |
32 |
32 |
||
UART2 |
33 |
33 |
||
UART3_BT |
34 |
34 |
||
UART_LOG |
35 |
35 |
||
GPIOA |
36 |
36 |
16 |
1 |
GPIOB |
37 |
37 |
17 |
2 |
I2C0 |
38 |
38 |
||
I2C1 |
39 |
39 |
||
CTOUCH |
40 |
40 |
18 |
1 |
GDMA0_Channel0 |
41 |
41 |
19 |
4 |
GDMA0_Channel1 |
42 |
42 |
20 |
4 |
GDMA0_Channel2 |
43 |
43 |
21 |
1 |
GDMA0_Channel3 |
44 |
44 |
22 |
1 |
GDMA0_Channel4 |
45 |
45 |
||
GDMA0_Channel5 |
46 |
46 |
||
GDMA0_Channel6 |
47 |
47 |
||
GDMA0_Channel7 |
48 |
48 |
||
SPI0 |
49 |
49 |
||
SPI1 |
50 |
50 |
||
SPORT0 |
51 |
51 |
23 |
3 |
SPORT1 |
52 |
52 |
17 |
3 |
RTC |
53 |
53 |
||
ADC |
54 |
54 |
||
ADC_COMP |
55 |
55 |
||
BOR |
56 |
56 |
||
PWR_DOWN |
57 |
57 |
||
SPI_FLASH |
58 |
58 |
||
Thermal |
59 |
59 |
||
RSIP |
60 |
60 |
||
AES |
61 |
61 |
||
SHA |
62 |
62 |
||
ECDSA |
63 |
63 |
||
PSRAMC |
64 |
64 |
||
TRNG |
65 |
65 |
||
LEDC |
66 |
66 |
||
AES_S |
67 |
67 |
||
SHA_S |
68 |
68 |
||
AON_TIM |
69 |
69 |
||
AON_WAKEPIN |
70 |
70 |
||
DSP_ERROR |
71 |
71 |
||
DSP_FATAL_ERROR |
72 |
72 |
||
VAD |
73 |
73 |
25 |
3 |
Zigbee |
74 |
74 |
26 |
4 |
DSP_NMI |
28 |
备注
DSP_INT_LEVEL 表示各个功能在 DSP 的中断优先级。各个中断在 DSP 中有固定的优先级,无法修改。
功能 |
KR4 序号 |
KM4 序号 |
DSP 序号 |
DSP_INT_LEVEL |
|---|---|---|---|---|
WIFI_FISR_FESR_IRQ |
0 |
0 |
||
WIFI_FTSR_MAILBOX |
1 |
1 |
||
WL_DMA |
2 |
2 |
9 |
1 |
WL_PROTOCOL |
3 |
3 |
||
BT_SCB |
4 |
4 |
||
NP_WAKE_IRQ |
5 |
5 |
||
DSP_WAKE_IRQ |
6 |
6 |
||
BT_WAKE_HOST |
7 |
7 |
||
RXI300 |
8 |
8 |
||
SYS_ILLEGAL_WRITE |
9 |
9 |
||
IPC_KR4 |
10 |
|||
IPC_KM4 |
10 |
|||
IPC_DSP |
7 |
2 |
||
IWDG |
11 |
11 |
||
KM4_NS_WDG_RST |
12 |
|||
KM4_NS_WDG |
12 |
|||
KM4_S_WDG_RST |
13 |
|||
KM4_S_WDG |
13 |
|||
KR4_WDG_RST |
14 |
|||
KR4_WDG |
14 |
|||
DSP_WDG_RST |
15 |
15 |
||
DSP_WDG |
8 |
4 |
||
Timer0 |
16 |
16 |
||
Timer1 |
17 |
17 |
||
Timer2 |
18 |
18 |
||
Timer3 |
19 |
19 |
||
Timer4 |
20 |
20 |
||
Timer5 |
21 |
21 |
||
Timer6 |
22 |
22 |
||
Timer7 |
23 |
23 |
10 |
1 |
Timer8 |
24 |
24 |
||
Timer9 |
25 |
25 |
||
Timer10 |
26 |
26 |
11 |
2 |
Timer11 |
27 |
27 |
12 |
2 |
Timer12 |
28 |
28 |
13 |
2 |
Timer13 |
29 |
29 |
14 |
3 |
Timer14 |
30 |
30 |
15 |
3 |
UART0 |
31 |
31 |
||
UART1 |
32 |
32 |
||
UART2 |
33 |
33 |
||
UART3_BT |
34 |
34 |
||
UART_LOG |
35 |
35 |
||
GPIOA |
36 |
36 |
16 |
1 |
GPIOB |
37 |
37 |
17 |
2 |
I2C0 |
38 |
38 |
||
I2C1 |
39 |
39 |
||
CTOUCH |
40 |
40 |
18 |
1 |
GDMA0_Channel0 |
41 |
41 |
19 |
4 |
GDMA0_Channel1 |
42 |
42 |
20 |
4 |
GDMA0_Channel2 |
43 |
43 |
21 |
1 |
GDMA0_Channel3 |
44 |
44 |
22 |
1 |
GDMA0_Channel4 |
45 |
45 |
||
GDMA0_Channel5 |
46 |
46 |
||
GDMA0_Channel6 |
47 |
47 |
||
GDMA0_Channel7 |
48 |
48 |
||
SPI0 |
49 |
49 |
||
SPI1 |
50 |
50 |
||
SPORT0 |
51 |
51 |
23 |
3 |
SPORT1 |
52 |
52 |
24 |
3 |
RTC |
53 |
53 |
||
ADC |
54 |
54 |
||
ADC_COMP |
55 |
55 |
||
BOR |
56 |
56 |
||
PWR_DOWN |
57 |
57 |
||
SPI_FLASH |
58 |
58 |
||
Thermal |
59 |
59 |
||
RSIP |
60 |
60 |
||
AES |
61 |
61 |
||
SHA |
62 |
62 |
||
ECDSA |
63 |
63 |
||
PSRAMC |
64 |
64 |
||
TRNG |
65 |
65 |
||
LEDC |
66 |
66 |
||
AES_S |
67 |
67 |
||
SHA_S |
68 |
68 |
||
AON_TIM |
69 |
69 |
||
AON_WAKEPIN |
70 |
70 |
||
DSP_ERROR |
71 |
71 |
||
DSP_FATAL_ERROR |
72 |
72 |
||
VAD |
73 |
73 |
25 |
3 |
Zigbee |
74 |
74 |
26 |
4 |
DSP_NMI |
28 |
备注
DSP_INT_LEVEL 表示各个功能在 DSP 的中断优先级。各个中断在 DSP 中有固定的优先级,无法修改。
功能 |
KM0 序号 |
KM4 序号 |
CA32 序号 |
|---|---|---|---|
IPC_IRQ |
0 |
||
RXI300_IRQ |
1 |
||
WIFI_FISR_FESR_IRQ |
2 |
||
WIFI_FTSR_MAILBOX_IRQ |
3 |
||
AON_TIM |
4 |
79 |
95 |
NP_WAKE_IRQ |
5 |
||
AP_WAKE_IRQ |
6 |
20 |
|
IWDG |
7 |
||
Timer0 |
0 |
0 |
|
Timer1 |
1 |
1 |
|
Timer2 |
10 |
2 |
2 |
Timer3 |
11 |
3 |
3 |
Timer4 |
12 |
4 |
4 |
Timer5 |
13 |
5 |
5 |
Timer6 |
14 |
6 |
6 |
Timer7 |
15 |
7 |
7 |
UART_LOG |
16 |
8 |
8 |
GPIOA |
17 |
9 |
9 |
GPIOB |
18 |
10 |
10 |
GPIOC |
19 |
11 |
11 |
RTC |
20 |
12 |
12 |
CTOUCH |
21 |
13 |
13 |
ADC |
22 |
14 |
14 |
ADC_COMP |
23 |
15 |
15 |
BOR |
24 |
16 |
16 |
PWR_DOWN |
25 |
17 |
17 |
VADBT_OR_VADPC |
26 |
18 |
18 |
SPI_FLASH |
27 |
19 |
19 |
DEBUG_TIMER |
28 |
20 |
|
Thermal |
29 |
21 |
21 |
I2C0 |
30 |
22 |
22 |
RSIP |
31 |
23 |
23 |
IPC_NP |
24 |
||
IPC_AP |
24 |
||
GDMA0_Channel0 |
25 |
25 |
|
GDMA0_Channel1 |
26 |
26 |
|
GDMA0_Channel2 |
8 |
27 |
27 |
GDMA0_Channel3 |
9 |
28 |
28 |
GDMA0_Channel4 |
29 |
29 |
|
GDMA0_Channel5 |
30 |
30 |
|
GDMA0_Channel6 |
31 |
31 |
|
GDMA0_Channel7 |
32 |
32 |
|
LCDC |
33 |
33 |
|
WL_DMA |
36 |
34 |
34 |
WL_PROTOCOL |
37 |
35 |
35 |
AES |
36 |
36 |
|
SHA |
37 |
37 |
|
SDIO_HOST |
38 |
38 |
|
USB_OTG |
39 |
39 |
|
SPI0 |
40 |
40 |
|
SPI1 |
41 |
41 |
|
RSVD |
42 |
42 |
|
RSA |
43 |
43 |
|
ECDSA |
44 |
44 |
|
ED25519 |
45 |
45 |
|
PSRAMC |
46 |
46 |
|
DDR |
47 |
47 |
|
RXI300_HP |
48 |
48 |
|
IR |
49 |
49 |
|
UART0 |
50 |
50 |
|
UART1 |
51 |
51 |
|
UART2 |
52 |
52 |
|
UART3_BT |
53 |
53 |
|
TRNG |
54 |
54 |
|
I2C1 |
42 |
55 |
55 |
I2C2 |
43 |
56 |
56 |
Timer8 |
57 |
57 |
|
Timer9 |
58 |
58 |
|
KM4_S_WDG |
59 |
59 |
|
KM4_NS_WDG |
60 |
60 |
|
CA32_S_WDG |
61 |
61 |
|
CA32_NS_WDG |
62 |
62 |
|
SPORT0 |
63 |
63 |
|
SPORT1 |
64 |
64 |
|
SPORT2 |
65 |
65 |
|
SPORT3 |
66 |
66 |
|
BT_SCB |
67 |
67 |
|
LEDC |
68 |
68 |
|
PMUIRQ0 |
69 |
||
MIPI_DSI |
69 |
70 |
|
AXIERIRQ |
71 |
||
AES_S |
70 |
72 |
|
SHA_S |
71 |
73 |
|
AON_WAKEPIN |
32 |
72 |
74 |
Zigbee |
73 |
75 |
|
BT_WAKE_HOST |
33 |
74 |
76 |
nFIQOUT0_OR_nIRQOUT0 |
34 |
||
nFIQOUT1_OR_nIRQOUT1 |
35 |
||
CTIIRQ |
77 |
||
Timer10 |
38 |
75 |
78 |
Timer11 |
39 |
76 |
79 |
Timer12 |
40 |
77 |
80 |
Timer13 |
41 |
78 |
81 |
功能 |
KM4NS 序号 |
KM4TZ 序号 |
|---|---|---|
WIFI_FISR_FESR_IRQ |
0 |
0 |
WIFI_FTSR_MAILBOX_IRQ |
1 |
1 |
WL_DMA |
2 |
2 |
WL_PROTOCOL |
3 |
3 |
AP_WAKE_IRQ |
4 |
4 |
IPC_CPU1 |
5 |
|
IPC_CPU0 |
5 |
|
IPC_BT_CPU |
||
IWDG |
6 |
6 |
Timer0 |
7 |
7 |
Timer1 |
8 |
8 |
Timer2 |
9 |
9 |
Timer3 |
10 |
10 |
Timer4 |
11 |
11 |
Timer5 |
12 |
12 |
Timer6 |
13 |
13 |
Timer7 |
14 |
14 |
Timer8 |
15 |
15 |
COEX_MAILBOX |
16 |
16 |
rsvd |
17 |
17 |
pmc_timer0 |
18 |
18 |
pmc_timer1 |
19 |
19 |
UART0 |
20 |
20 |
UART1 |
21 |
21 |
UART2 |
22 |
22 |
UART3 |
23 |
23 |
UART_LOG |
24 |
|
UART_LOG |
24 |
|
UART_LOG |
||
GPIOA |
25 |
25 |
GPIOB |
26 |
26 |
GPIOC |
27 |
27 |
I2C0 |
28 |
28 |
I2C1 |
29 |
29 |
GDMA0_Channel0 |
30 |
30 |
GDMA0_Channel1 |
31 |
31 |
GDMA0_Channel2 |
32 |
32 |
GDMA0_Channel3 |
33 |
33 |
GDMA0_Channel4 |
34 |
34 |
GDMA0_Channel5 |
35 |
35 |
GDMA0_Channel6 |
36 |
36 |
GDMA0_Channel7 |
37 |
37 |
SPI0 |
38 |
38 |
SPI1 |
39 |
39 |
SPORT0 |
40 |
40 |
RTC |
41 |
41 |
ADC |
42 |
42 |
ADC_COMP |
43 |
43 |
CAPTOUCH |
44 |
44 |
THERMAL |
45 |
45 |
BOR |
46 |
46 |
PWR_DOWN |
47 |
47 |
RMII |
48 |
48 |
LCDC |
49 |
49 |
MJPEG |
50 |
50 |
PPE |
51 |
51 |
PKE |
52 |
52 |
TRNG |
53 |
53 |
AON_TIM |
54 |
54 |
AON_WAKEPIN |
55 |
55 |
SDIO_WIFI |
56 |
56 |
SDIO_BT |
57 |
57 |
SDIO_HOST |
58 |
58 |
USB |
59 |
59 |
CAN0 |
60 |
60 |
CAN1 |
61 |
61 |
IR |
62 |
62 |
RXI300 |
63 |
63 |
PSRAMC |
64 |
64 |
SPI_FLASH |
65 |
65 |
RSIP |
66 |
66 |
AES |
67 |
67 |
SHA |
68 |
68 |
AES_S |
||
SHA_S |
||
CPU1_WDG |
69 |
|
CPU0_NS_WDG |
69 |
|
CPU0_S_WDG |
70 |
|
OCP |
71 |
|
SPIC_ECC |
72 |
|
UVC_DEC |
73 |
|
RTC_DET |
74 |
|
BT_MAILBOX |
70 |
75 |
BT_SCB |
71 |
76 |
BT_WAKE_HOST |
72 |
77 |
CPU1_WDG_RST |
78 |
嵌套向量中断控制器(NVIC)
嵌套向量中断控制器(Nested Vector Interrupt Controller,NVIC)是 ARM Cortex-M 系列处理器的中断控制器,与内核紧密集成,以实现低延迟中断处理。
NVIC 的功能特性:
统一异常管理:处理器异常(如 HardFault、SysTick)与外设中断共享同一套 NVIC 管理机制,统一注册和响应。
嵌套中断:支持基于优先级的中断嵌套处理,高优先级中断可抢占正在执行的低优先级中断服务程序。
向量化中断:中断发生时,硬件直接跳转至向量表中对应的 ISR 入口,无需软件轮询判断中断源。
硬件优先级屏蔽:通过
BASEPRI寄存器(ARM Cortex-M 核内特殊寄存器,可通过 CMSIS 库访问)可屏蔽低于指定优先级的所有中断。向量表重定位:通过向量表偏移寄存器
VTOR(核内 SCB 寄存器)可将向量表重定位至自定义地址。
各个 ARM Cortex-M 系列 CPU 的 NVIC 特性如下:
KM4 的 NVIC 支持:
80 个向量中断
8 个可编程中断优先级。值可以是 0 ~ 7,值越小,优先级越高。
安全 NVIC 和非安全 NVIC
KM0 的 NVIC 支持:
80 个向量中断
4 个可编程中断优先级。值可以是 0 ~ 3,值越小,优先级越高。
KM4 的 NVIC 支持:
80 个向量中断
8 个可编程中断优先级。值可以是 0 ~ 7,值越小,优先级越高。
安全 NVIC 和非安全 NVIC
KM4 的 NVIC 支持:
80 个向量中断
8 个可编程中断优先级。值可以是 0 ~ 7,值越小,优先级越高。
KM4 的 NVIC 支持:
80 个向量中断
8 个可编程中断优先级。值可以是 0 ~ 7,值越小,优先级越高。
安全 NVIC 和非安全 NVIC
KM4 的 NVIC 支持:
80 个向量中断
8 个可编程中断优先级。值可以是 0 ~ 7,值越小,优先级越高。
KM4 的 NVIC 支持:
80 个向量中断
8 个可编程中断优先级。值可以是 0 ~ 7,值越小,优先级越高。
安全 NVIC 和非安全 NVIC
KM0 的 NVIC 支持:
36 个向量中断
4 个可编程中断优先级。值可以是 0 ~ 3,值越小,优先级越高。
KM4TZ 的 NVIC 支持:
80 个向量中断
8 个可编程中断优先级。值可以是 0 ~ 7,值越小,优先级越高。
安全 NVIC 和非安全 NVIC
KM4NS 的 NVIC 支持:
80 个向量中断
8 个可编程中断优先级。值可以是 0 ~ 7,值越小,优先级越高。
备注
有关中断和 NVIC 编程的更多信息,参考官方技术手册: Arm® Cortex®-M55 处理器技术参考手册。
通用中断控制器(GIC)
通用中断控制器(Generic Interrupt Controller,GIC)是 ARM Cortex-A 系列处理器使用的中断控制器。GIC 负责从中断源收集和仲裁中断,并分发给对应的 CPU。
GIC 架构组件:
分发器(Distributor):全局模块,负责管理所有中断源的优先级和使能状态,并将中断分发至目标 CPU 接口。
CPU 接口:每个 CPU 独立的接口,负责向 CPU 提交中断信号,并处理中断确认(Acknowledge)和结束(EOI)操作。
外设中断输入:外设通过专用中断请求线(IRQ lines)将中断信号送入分发器,是 GIC 与片上外设之间的信号接口(非 GIC 内部模块)。
GIC 功能特性:
中断屏蔽:可按优先级或逐个中断源控制中断使能与禁用。
优先级排序:支持可配置的中断优先级,优先级值越小,优先级越高。
中断分发:可将中断路由至一个或多个目标 CPU。
中断状态跟踪:硬件维护每个中断的挂起(Pending)和激活(Active)状态。
软件生成中断(SGI):支持通过写寄存器向目标 CPU 发送软件中断,常用于核间通信。
安全扩展:支持 TrustZone 安全分区,将安全和非安全中断隔离管理。
虚拟化扩展:支持 Hypervisor 场景下的虚拟中断注入。
多核支持:可将中断分发至多核系统中的任意处理单元。
中断抢占:支持高优先级中断抢占正在处理的低优先级中断。
以上为 GIC 的通用特性,以下是本芯片 CA32 CPU 的具体配置参数。GIC 将中断分为三类:软件生成中断(SGI),由软件写寄存器触发,用于核间通信;私有外设中断(PPI),每个 CPU 独占,如内核定时器;共享外设中断(SPI),由所有 CPU 共享,对应片上外设 IRQ。
CA32 的 GIC 支持:
16 个软件生成中断(SGI):用于核间软件触发中断。
16 个私有外设中断(PPI):每个 CPU 私有,如通用定时器中断。
最多 96 个共享外设中断(SPI):由所有 CPU 共享的外设中断。
32 个可编程中断优先级。
备注
CA32 的所有中断都必须经过 GIC 路由到 CPU。虽然 CA32 处理器保留了旧版 nFIQ/nIRQ 输入引脚,但本芯片中没有任何中断源连接至这些引脚。因此,即使 GIC 中断旁路生效(例如复位后),也不会有外部中断经由 nFIQ/nIRQ 绕过 GIC 直接触发 CA32。
平台级中断控制器(PLIC)
RISC-V 平台级中断控制器(Platform-Level Interrupt Controller,PLIC)是专为 RISC-V 系统设计的中断控制器。PLIC 将各类设备中断复用到 KR4 的外部中断线上,并提供硬件中断优先级支持。
备注
PLIC 优先级值越大优先级越高(与 NVIC/GIC 相反),SDK 已封装此差异。
SDK 的 ISR 框架已自动处理 PLIC 要求的显式完成 claim-complete 操作处理外部中断。
PLIC 可以生成三种类型的中断,它们的功能特性如下:
外部中断
输入到 PLIC 的中断源称为全局中断,也称为 PLIC 中断。
每个中断源(例如 I/O 中断)都有自己的:
优先级寄存器。优先级值越大,优先级越高。
针对每个中断目标的使能寄存器。
中断标识符(ID),从 1 开始(0 为保留值)。
每个中断目标(例如 CPU)都有自己的:
阈值寄存器。
针对每个中断源的使能寄存器。
当最大优先级严格大于相应的中断阈值时触发中断。
PLIC 采用"声明-完成(claim-complete)"握手机制处理中断:CPU 通过读取
claim寄存器(MMIO 读操作)获取最高优先级中断 ID(声明),处理完毕后向complete寄存器写回该 ID(完成)。PLIC 支持电平敏感和脉冲敏感两种中断信号类型,不同类型在 claim-complete 流程中的挂起行为有所不同:
对于电平敏感中断:只要在完成信号发出前将中断源清除,中断处理程序仅运行一次;若完成信号发出后中断源仍处于有效电平,中断将再次挂起。
对于脉冲敏感中断:无论在完成信号发出前 PLIC 检测到多少个脉冲,中断挂起仅触发一次。
定时器中断
当定时器计数值超过
MTIMECMP寄存器设定值时触发。
软件中断
当向
MSIP地址写入0x1时触发。
KR4 的 PLIC 支持:
80 个中断源。所有中断都是电平敏感中断。
7 个可编程中断优先级,带硬件优先级屏蔽。
备注
KR4 的 PLIC 挂起位行为与 RISC-V 标准规范存在以下差异:
标准 PLIC:中断触发时,无论使能位状态如何,均设置挂起位;中断重新使能后,已挂起的中断将被处理。
KR4 修改:仅当对应中断的使能位(enable bit)已置位时,触发信号才会设置挂起位;使能位未置位时触发的信号不产生挂起,重新使能后也不会被处理。
备注
有关中断和 PLIC 编程的更多信息,请参考 RISC-V privileged architecture proposal。
DSP 中断控制器(XEA2)
HiFi 5 DSP 使用 Xtensa 中断架构 2(XEA2)作为其中断控制器。XEA2 是由 Tensilica 为 Xtensa 处理器系列定义的标准中断架构。
备注
XEA2 的优先级模型优先级值越大优先级越高(与 NVIC/GIC 相反),且中断源的优先级在硬件中固定,无法通过软件修改(参考 中断序号列表 中的 DSP_INT_LEVEL 列)。
HiFi 5 DSP 中断控制器特性:
32 个异步中断:由外部和内部源生成,覆盖从普通级别(Level-1)到高优先级乃至不可屏蔽(NMI)的各个中断优先级,以及定时器等内部中断源。
多级优先级与 NMI:支持多个中断优先级(XEA2 标准最多六级,本芯片 DSP 上为四级)和一个可选的不可屏蔽中断(NMI)。各功能的中断优先级固定于硬件,无法修改。
iDMA 中断:集成的 DMA 引擎可配置中断,在特定描述符完成或发生错误时通知 DSP。
定时器中断:两个内部定时器中断,基于特殊寄存器触发值与 32 位周期计数器的比较结果生成。
中断向量:高优先级和不可屏蔽中断每个级别都有独立的中断向量。
性能监视中断:性能监视器在性能计数器溢出时,向处理器发送一个电平敏感信号(来自调试模块)触发中断。
支持多种中断类型:
外部电平中断:输入到处理器的电平敏感中断信号。
外部边沿中断:输入到处理器的边沿触发中断信号。
内部中断:由处理器内部逻辑生成的中断(例如定时器和调试中断)。
不可屏蔽中断(NMI):输入到处理器的外部边沿触发中断信号,具有隐式无限优先级。
写错误中断:PIF 写响应发生错误时生成中断。