|
最近一直在6410研究启动代码,看了友善的裸机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处可以先做寄存器保存的处理,而后再去中断处理函数?而直接去中断处理函数应该也可以做寄存器保存,但友善的裸机程序好像没见这么做的(有可能就是凑合一下)
还请高手们能指点迷津,到底什么时候需要这么设置,或者这么设置的具体用途是什么.... |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|