嵌入式系统离不开中断,这里记录下中断配置
说到中断配置,又绕不开中断向量表这个名词。
一、什么是中断向量表
中断发生时,CPU 不知道“哪个函数应该被调”。
它只有中断号,而没有直接绑定到函数名。
因此必须通过向量表把“中断号 -> 函数地址”匹配起来。CPU 在异常/中断触发时按它来跳转。
二、中断向量表的内容
初始向量:栈顶地址、复位入口,随后是 NMI、HardFault、SVCall 等内核异常入口等
用户中断:包括CAN中断、ADC中断、SPI中断、看门狗中断等,根据项目实际需要配置。
三、中断向量表存放在什么位置
一般来说,分两处存放,一处是ROM,另一处是RAM,我们分别介绍。
1、存储于ROM的中断向量表
对于S32K3XX,我们参考下NXP给的例程,其中链接文件linker_flash_s32kxx。
如下图,习惯把向量表放在int_pflash的起始地址,一般是放在IVT字段的后面,此处的例子里,IVT之后做了2K对齐,随后就是ROM中的 intc_vector中断向量表。
我理解这里是保存启动时的初始向量,后面启动过程中,也是把这个默认的表复制到 RAM 。再配置用户定义的部分。