历史上的今天
今天是:2024年11月02日(星期六)
2021年11月02日 | ARM体系结构--第九章--异常中断处理
2021-11-02 来源:eefocus
注:本文资料全部来源于网络或书籍,同时加上个人理解。若有侵权,告知即删。若有错误,留言商讨。


1、中断向量表
中断向量表中指定了异常中断及其处理程序的对应关系,通常存储在存储地址的低端。ARM异常中断向量表的大小为32个字节,每个异常占用4个字节的空间。通常在这个4个字节的地址空间存放一个跳转指令,跳转到相应的异常服务程序。
2、ARM体系的异常中断
异常中断的响应过程:
保存当前处理器状态、即将cpsr保存到相应的异常模式下spsr_xxx中
设置当前cpsr的相应位,包括:mode修改、T、禁止IRQ中断(I)、FQR模式下,禁止FIQ(F位)
将寄存器r14_xxx设置为返回地址,保存pc的值
将PC设置为异常中断向量的中断向量地址,从而跳转程序。
异常中断返回:
恢复处理器状态,将spsr_xxx复制到cpsr
将r14_xxx复制到pc中
当异常程序使用了数据栈的时,在进入异常程序的时保护现场,退出异常的时候恢复现场。
3、FRQ和IRQ对比
FRQ要比IRQ快的原因:
IRQ保护现场,需要保存的寄存器更多,FRQ不需要保存R8-R12;
FRQ比IRQ中断优先级高
FIQ在中断向量表的最高处,这就为我们直接在FIQ上面的地址直接写异常处理程序提供了可能,其他的异常必须通过跳转,而跳转就需要保存IR值
4、只有一个irq和一个frq如何管理这么多个外部中断?
通用中断控制器(GIC),用于管理具体的硬件中断,可能存在于SOC中,也能集成于core内核中。一般位于core外部,但是也有集成在core内部的,比如ARM的cortex系列。但是SOC厂商可以将其移除,集成在core外。GIC也会映射到AHB总线上面,以便core可以高速访问,例如访问中断号。
如下图4412芯片的GIC:
上一篇:ARM启动及工作模式切换
下一篇:ARM体系结构--第一章
史海拾趣
|
E:\\mobile.bmp 如图,请教高手怎么实现这样的文件打开时的路径选择界面, 最上面一行显示当前路径, 下面可以点选,进入或返回上一级路径, 多谢高手指教。 … 查看全部问答> |
|
有哪位兄台知道如果利用AT命令控制短信猫设备拨打USSD号码:如:*111*222×NNN#这样的号码。 如果有成功实现过的请和我联系。QQ:61238333.如果能帮我解决问题。现金200元酬谢。… 查看全部问答> |
|
SimpliciTI-IAR-1.2.0>>CC430EM里的程序为何不能用了???? 我用SimpliciTI-IAR-1.2.0里的cc430例程,用cc430F5137模块来测试程序AP_as_Data_Hub,为何AP和ED连接不上了,我的ED发送地址是0xFF,为何发不出去了???望各位老师能够解答我的难题 !在此谢过!… 查看全部问答> |








