异常和中断
参考资料:
韦东山第三期
《正点原子Linux驱动开发指南》
ARM系统中中断和异常是如何影响CPU:
![0](https://img2024.cnblogs.com/blog/3261801/202403/3261801-20240326054109775-1471988597.png)
中断处理的流程:
1、保存现场(各种寄存器)
2、处理异常(中断属于一种异常)
3、恢复现场
ARM对异常(中断)的使用过程:
1、初始化
- 设置中断源,使其可以产生中断
- 设置中断控制器(屏蔽,优先级)
- 设置cpu总开关使能中断
2、执行其他程序
3、产生中断:比如按下按键->中断信号发给中断控制器->中断控制器发给cpu
4、cpu每执行完一条指令都会检查有无中断产生有无异常产生
5、假设有异常或者中断产生,开始处理。不同的异常,跳去不同的地址执行程序(异常向量表)。这些地址上只是一条跳转指令,跳去执行某个函数
6、这些函数都会执行中断处理的流程
对于Cortex-A7来说,异常向量表就是放在代码的最前面,如下:
![0](https://img2024.cnblogs.com/blog/3261801/202403/3261801-20240326054109931-1676461347.png)