中断向量表
在跑裸机程序时候在程序的开始位置放置就是中断向量表
0x0 复位
0X4 Undef
0x8 SWI
.
.
.
0X18 外部中断请求 IRQ
0x1c 快速中断请求 FIQ
这些中断的实现都是在UBOOT或者是bootloder的代码里面实现的
进入到内核操作系统之后 内核或从新再建立一个中断向量表,当然地址也可以自己配置可以是从0开始也可以不是
主要是在trap_init()函数里面实现,他是把处理中断的函数拷贝到对应位置,当中断出现的时跳转到对应位置去处理
当然中断的处理大概有如下几个步骤:
1 中断发生
2 cpu发生中断跳到异常处理函数如后
3 保存被中断的现场
执行中断处理函数
恢复
大致就是这样,本文重点是:中断向量表是由bootloader 和kernel各自提供,以及放置的位置。当然对中断分类有所了解,一般在写程序用到的中断是SWI或者是IQR,对应IRQ中断如何添加IRQ中断的处理函数也是常用到的。