ARM中断和异常向量表20220911
作者:互联网
1、ARM中的异常与中断总共有7种
按响应优先级从高到低 |
按中断向量表顺序 |
复位 |
复位 |
数据中止 |
未定义指令中断 |
FIQ |
SWI |
IRQ |
预取指令中止 |
预取指令中止 |
数据中止异常 |
未定义指令、SWI |
IRQ |
FIQ |
ARM要求中断向量表必须放置在从0地址开始,连续8×4字节的空间内(ARM720T和ARM9、ARM10也支持从0xFFFF0000开始的高地址向量表),各异常和中断向量在向量表中的位置如下:
地址 |
中断 |
0x00 |
Reset |
0x04 |
Undef |
0x08 |
SWI |
0x0C |
Prefetch Abort |
0x10 |
Data Abort |
0x14 |
(Reserved) |
0x18 |
IRQ |
0x2C |
FIQ |
当中断产生时ARM处理器强制把PC指针置为中断向量表中相对应的向量地址。因为每个中断向量在向量表中只有一个字节的存储空间,只能存放一条指令,所以通常存放跳转指令,使程序跳转到存储器的其他地方,再执行中断处理。--这个是处理器硬件完成,软件仅参与开启关闭设置相关。
中断向量表的实现程序通常如下 AREA Boot,CODE,READONLY ENTRY B Reset_Handler ; Reset_Handler is a label B Undef_Handler B SWI_Handler B PreAbort_Handler B DataAbort_Handler B ;for reserved interrupt, stop here B IRQ_Handler B FIQ_Handler ———————————————— 版权声明:本文为CSDN博主「hudieping」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/hudieping/article/details/5202243
其中的关键字ENTRY是指定编译器保留这段代码,因为编译器可能会认为这段代码是冗余代码,将其优化。链接的时候要确保这段代码被连接到0地址处,并且作为整个程序的入口点(ENTRY并非总是用来设置程序的入口点的,所以通常需要在链接选项里面显式的设置程序入口点)。
标签:SWI,FIQ,中断向量,20220911,Handler,IRQ,ARM,向量 来源: https://www.cnblogs.com/icaowu/p/16683410.html