原创 ARM的中断处理过程

2008-3-13 13:00 6991 6 7 分类: MCU/ 嵌入式

1.   首先就是知道ARM状态下的通用寄存器和程序计数器,绿颜色的就是相应模式下的私有寄存器。就是说程序一般运行在系统和用户模式下,使用的是系统和用户模式下的通用寄存器,当有异常发生时,比如FIQ,那么系统将切换到FIQ模式下,相应的就会采用FIQ模式下的寄存器,其中绿颜色的就是只在FIQ模式下才会用到的寄存器。



2.   在模式切换的过程中,要保护系统和用户模式下的通用寄存器状态,以便在异常处理完成之后程序能正常返回。因为FIQ模式下R8-R14为其私有寄存器,所以切换的过程中,系统和用户模式下的通用寄存器的R8-R14就不用保护了,所以减少了对寄存器存取的需要,从而可以快速的进行FIQ处理,故称为FIQ































889dae23-aba5-4e3f-9786-f656a21b0f6a.jpg
3. 异常处理的动作。当然这都是内核自己干的。以FIQ为例。
当系统进入
FIQ模式时
第一,将原来执行程序的下一条指令地址保存到
LR中,就是将R14保存到R14_fiq里面。
第二,拷贝CPSRSPSR_fiq
第三,改变
CPSR模式位的值,改到FIQ模式。
第四,改变
PC值,将其指向异常处理向量所指的下一条指令。
离开异常处理的时候
第一,将
LRR14_fiq)赋给PC
第二,将
SPSRSPSR_fiq)拷贝到CPSR
第三,清除中断禁止标志(如果开始时置位了)。
















4异常中断向量

异常中断的向量地址
地址
                  异常中断类型             入口时处理器的操作模式
0x00000000        复位               超级用户
0x00000004        未定义指令         未定义
0x00000008        软件中断           超级用户
0x0000000c        中止(预取指)     中止
0x00000010        中止(数据)       中止
0x00000014        保留                              保留
0x00000018        IRQ                                IRQ
0x0000001c        FIQ                                FIQ

异常中断优先级
中断                   优先级
复位
                                     最高
数据异常
   
FIQ
IRQ

预取指异常中断
未定义指令和软件中断
        最低
5当发生IRQ中断时
第一,模式进入到IRQ里面。
第二
PC跳到0x00000018处运行。因为这是IRQ的中断入口。
第三
通过0x00000018LDR  PC, IRQ_ADDR。跳转到相应的中断服务程序。这个里面就有个确定哪个中断源的问题了。那就有优先级的问题了。每个中断源会有自己的中断服务程序。
第四,得到中断源有硬件实现和软件处理两种方式。比如LPC21XX的就是利用硬件方式,为了利用向量中断控制器的优点,IRQ中断向量入口处代码做了修改,变成
        0x00000018LDR  PC, [PC, #-0xff0]
    这条指令从内存映射地址
0xfffff030处获得数据装载到PC,这样就能够直接从硬件中获得中断源。这样就减少了中断延迟。记得,三星的S3C44B0好象采用的是用软件确定中断源,因此要建立中断向量表。好久不用了,记不清了。
第五,得到中断源,就知道要跳到哪个中断服务程序去了。
    一般都是这么定义的。
Timer0_Handler  HANDLER  Timer0 。这种格式是调用一种宏定义,目的是保护现场,跳到中断服务程序。














PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

yonshosing_872168241 2008-3-24 21:03

多谢了,讲的相当清楚,希望能多发些。

用户36760 2008-1-23 15:48

cao.yi.2007@163.com
相关推荐阅读
用户1003858 2014-03-04 11:18
电子花样机控制系统-常州数控技术研究所
CZSK-GE01花样机控制系统 CZSK-GE01是常州数控技术研究所自主研发的一款花样机控制系统,适用于电脑花样机G款,E款,210D款用途,系统采用模块化设计,可以应用于多种不同机型,可...
用户1003858 2014-03-03 16:31
三轴运动控制器-常州数控技术研究所
三轴控制器介绍 控制器由手持盒(CZSK02T)和控制器(CZSK02M)组成,两者通过串口连接,手持盒完成人机交互功能,图形化的示教方式生成用户轨迹文件,支持G代码导入,DXF图形导入,PL...
用户1003858 2010-06-28 09:08
ARM资料网站推荐
http://www.stmfans.com/bbs/?fromuid=4215 http://www.stmfans.com/bbs/?fromuser=cyzgod关于STM32的资料,值得一看哦...
用户1003858 2010-06-09 10:53
STM32 AD
关于STM32的12位AD,前些日子经过实际使用,使用外部电源参考,精度能达到11位,最起码能保证10位精度。可放心使用。...
用户1003858 2009-12-26 14:22
STM32 I2C使用
    用了STM32F103的I2C读写CAT1025的EEPROM,采用的是STM32给的固件例子,网上反映的问题也挺多的。说不好使,用了下,确实是它奶奶的郁闷。不过,也不是不能用。    首先,...
用户1003858 2009-10-16 17:58
常州数控培训
投身制造业的“黄埔军校”<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />常州数控培训...
EE直播间
更多
我要评论
1
6
关闭 站长推荐上一条 /3 下一条