找回密码
 注册
关于网站域名变更的通知
查看: 598|回复: 2
打印 上一主题 下一主题

ARM异常中断的原因及处理措施

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-7-26 10:29 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
       当ARM异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指令处执 行。在进入异常中断处理程序时,要保存被中断程序的执行现场,从异常中断处理程序退出时,要恢复被中断程序的执行现场。& p( _( @9 S0 o7 b9 R* x( z- p7 s' E( ^0 p4 c5 B) Q
1、引起异常的原因 对于ARM核,可以且只能识别7种处理器异常,每种异常都对应一种ARM处理器模式,当发生异常时,ARM处理器就切换到相应的异常模式,并调用异常处理 程序进行处理。- J, s+ u6 d4 C6 Q; s! L6 Z! [% H2 i0 r3 v" f
    (1)、指令执行引起的异常 软件中断、未定义指令(包括所要求的协处理器不存在是的协处理器指令)、预取址中止(存储器故障)、数据中止。
; H7 `$ U0 J, X! i' l    (2)、外部产生的中断 复位、FIQ、IRQ。' }( P$ b7 j7 e1 R3 k7 }+ o5 o& a4 y+ T; q
2、ARM中异常中断的种类) @& \" m9 Y5 F3 ?$ c; G# Z
, v4 y& }; l! k* e9 Q& v9 n" N    (1)、复位(RESET)3 u* N. j5 W. r+ L
* A4 L8 x  i6 @+ N, o; L( ha、当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行,包括系统加电和系统复位。
" P3 D5 f) c2 W# A: T2 H* _b、通过设置PC跳转到复位中断向量处执行称为软复位。, N8 \, o# R6 a( l  l
    (2)、未定义的指令 当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。3 z0 g* O' n/ y% Q
    (3)、软件中断 这是一个由用户定义的中断指令(SWI)。可用于用户模式下的程序调用特权操作指令。在实时操作系统中可以通过该机制实现系统功能调用。
! h+ X3 n0 O) w/ y    (4)、指令与取终止(Prefech Abort) 如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行时,处理器产生指令预取终止异常中断。1 ]0 p% r1 B% Y; D0 J5 h2 e8 ~# j% R% u5 V, U% `
    (5)、数据访问终止(DATAABORT) 如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问终止异常中断。2 L% q! e7 N; [# Q! Y
2 H1 v. h8 h6 G; L" y    (6)、外部中断请求(IRQ) 当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。系统中个外设通过该异常中断请求处理服务。& R$ S' T; _# s8 j/ f' t9 e4 j& U0 J. L* s  ?2 _( L- L
    (7)、快速中断请求(FIQ) 当处理器的外部快速中断请求引脚有效,而且CPSR的F控制位被清除时,处理器产生外部中断请求异常中断。
( x' i$ }2 A5 G2 [
3、异常的响应过程 除了复位异常外,当异常发生时,ARM处理器尽可能完成当前指令(除了复位异常)后,再去处理异常。并执行如下动作: ; {& h( a6 Q% H* g% w( s& a7 ?* B+ R& j
    (1)、将引起异常指令的下一条指令的地址保存到新模式的R14中,若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或 PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态 进入的。例如:在软件中断异常SWI,指令MOV PC,R14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状 态执行。! K5 I% ]6 X( c$ }7 G7 l# ~% O
    (2)、将CPSR的内容保存到要执行异常中断模式的SPSR中。
5 n  Q5 j( ^# w1 ?/ {/ C  p/ F    (3)、设置CPSR相应的位进入相应的中断模式。
$ |4 ^6 C9 B, I9 k    (4)、通过设置CPSR的第7位来禁止IRQ。如果异常为快速中断和复位。则还要设置CPSR的第6位来禁止快速中断。0 X/ u2 r) b* F. p) A8 p; ]0 ~. ^# P  S9 Z: l! M6 B3 p
    (5)、给PC强制赋向量地址值。上面的异常处理操作都是由ARM核硬件逻辑自动完成的,程序计数器PC总是跳转到相应的固定地址。如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态,则异常处理返回时,自动切换到Thumb状态。' ?( a! J. U" j: H! d
4、异常中断处理返回 异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:
5 I0 {+ ]0 L0 [$ c" e; X! ^    (1)、将所有修改过的用户寄存器从处理程序的保护栈中恢复。
; J/ \8 r) K6 ?: C" J    (2)、将SPSR复制回CPSR中,将连接寄存器LR的值减去相应的偏移量后送到PC中。0 L4 p6 `2 }8 q9 J2 n# ~% l1 Y
    (3)、若在进入异常处理时设置了中断禁止位,要在此清除。复位异常处理程序不需要返回。# d& |! a: S3 w$ s  e  f5 E
5 p( `; S  q4 \! P6 S7 x1 I
4 ~7 O6 f- e5 w* H" I. V7 X
1 T4 I3 M7 o( q$ u/ A
  • TA的每日心情
    开心
    2022-12-27 15:46
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    3#
    发表于 2021-7-26 16:32 | 只看该作者
    很实用的分享,谢谢楼主
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 12:09 , Processed in 0.156250 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表