主题 : 关于中断向量定位的疑问,望高手指点 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 19229
精华: 0
发帖: 88
金钱: 455 两
威望: 91 点
贡献值: 0 点
综合积分: 176 分
注册时间: 2010-04-17
最后登录: 2021-10-20
楼主  发表于: 2012-05-02 16:39

 关于中断向量定位的疑问,望高手指点

最近一直在研究启动代码,看了友善的裸机startup.s,里面有三条语句:
;------------------------------------
;     Enable VIC Port @Andrew Huang
;------------------------------------
mrc p15,0,r0,c1,c0,0
orr r0,r0,#(1<<24)
mcr p15,0,r0,c1,c0,0
查了ARM1176手册,里面对协处理器的这一位是这么描述的
[24]          VE bit       Banked        Enables the VIC interface to determine interrupt vectors.
See the description of the V bit, bit [13].
0 = Interrupt vectors are fixed, reset value.
1 = Interrupt vectors are defined by the VIC interface.
做了实验,把这三条语句屏蔽掉,在发生IRQ时就可以从RESET入口处(地址0x0处)偏移相应的位置到IRQ入口(地址0x18处)。如果不屏蔽此三条语句,则不会跳到0x18处,而是直接跳到中断处理函数去了。
不知直接跳到中断处理函数,和跳到0x18处的区别是什么?是不是在0x18处可以先做寄存器保存的处理,而后再去中断处理函数?而直接去中断处理函数应该也可以做寄存器保存,但好像没见这么做的。
还请高手们能指点迷津,到底这么设置有什么区别。
级别: 侠客
UID: 19229
精华: 0
发帖: 88
金钱: 455 两
威望: 91 点
贡献值: 0 点
综合积分: 176 分
注册时间: 2010-04-17
最后登录: 2021-10-20
1楼  发表于: 2012-05-08 17:44
目前知道采用VIC模式可以加快中断响应速度,但不知道这种直接跳转到中断处理函数的做法只适用于裸机程序呢,如果有操作系统的话,当发生中断嵌套时系统岂不会乱.....