ARM中断的基本过程
在IRQ0脚给个上升沿后,过程是这样的(比较通用的过程)。
1)如果你没有打开该中断的使能寄存器,没有任何反应。
2)如果你打开了使能寄存器,但在对应的屏蔽寄存器中屏蔽了该中断,也没有任何反应。
3)上述两个寄存器都设置正确了,中断产生了,CPU保存当前程序运行环境,跳到中断入口,ARM芯片一般是0x?地址处。
4)如果你没有设置中断向量,即0x?处不是你的代码,程序就会飞掉,当然也可能正常运行,这种情况一般发生在正好飞到正常代码处。
5)设置好中断向量了,中断向量一般是个跳转语句,跳到你的正式的中断处理过程,在这里你可以关闭所有中断,清中断,处理等等,然后退出。记住某些处理器一定要清中断,否则下次再给个上升沿就没有反应了。
中断路径
如果是irq中断
产生irq异常中断 转到 0x18 1 跳 中断跳
如果启用向量中断模式
自动转向对应向量地址 每地址对应一条跳转指令 2 跳
跳转到中断处理程序
如果使用汇编编写中断处理程序
在该处即可编写处理程序
如果使用c语言编写中断处理程序
需要添加与c语言接口程序 3 跳
方法:1 汇编编写
在内存空间定义一向量表,用来存放各中断c语言中断处理程序入口地址[即函数入口地址],
在上述程序跳转到处编写 将c语言处理程序入口地址放入pc (即跳转到c函数处)。
2 c编写
在内存空间定义指针表[与汇编向量表对应],用来存放各中断汇编转向c函数入口地址,
编写中断处理函数,将对应中断指针内容放入函数入口地址。
如果不启用中断向量模式
从0x18直接转向中断处理程序即可
小结: 上述1 跳为向量中断模式自动完成,可加快寻找中断源。
2 跳为与c语言相结合,汇编和c利用共同定义的中断向量地址表完成挂钩。
ARM中断基本过 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)