• 首页
  • 中国
  • 嵌入式ARM系统异常和中断处理知识总结

嵌入式ARM系统异常和中断处理知识总结

2023-11-01 105浏览
百检网是一家专业的第三方检测平台,汇聚众多拥有权威资质的第三方检测机构为你提供一站式的检测服务,做检测就上百检网。百检网让检测从此检测,一份报告全国通用,专业值得信赖。

关于异常处理,分为三部分:

1. ARM异常和模式:core处理异常时的操作,几种模式介绍。2. Vector table:3. 异常优先级4. lr偏移:几种异常如何返回

异常和中断处理简介

在嵌入式系统中异常处理是核心之一。高效的处理能够*大的提升系统的性能。ARM处理器一共有7种可以暂停指令的执行序列的异常。主要分为三个部分:

点击这里1小时彻底掌握中断创客学院带你搞定异常和中断处理

1. Exception handling2. Interrupts3. Interrupt handling schemes今天我们主要介绍**部分

Exception Handling

1.ARM Processor Exceptions And Modes

任何一种中断模式都可以通过手动的修改cpsr的值来进入。但是User和System模式是仅有的2个不能由相应中断进入的模式,换句话说,我们必须要通过手动修改cpsr才能进入。

当一个异常产生的时候,core会自动进行如下4步:1. saves the cpsr to the spsr of the exception mode2. saves the pc to the lr of the exception mode3. sets the cpsr to the exception mode4. sets the pc to the address of the exception handler

需要注意的是,当异常产生的时候,ARM处理器总是会切换到ARM状态。

2.Vector Table

handler定位在相应内存位置中,如下图的IRQ,FIQ

0x00000018: 0xe59ffa38 IRQ ; ldr pc, [pc, #irq]0x0000001c: 0xe59ffa38 FIQ ; ldr pc, [pc, #fiq]

3.Exception Priorities

4.Link Register Offset

如下三种从IRQ和FIQ异常处理返回的例子

例1:

handler

...

SUBS pc, r14, #4 ;pc = r14 -4

因为SUB后的S和pc作为目标寄存器,cpsr的值会自动从spsr中恢复出来

例2:

handler

SUB r14, r14, #4 ;r14 -= 4

...

...

MOVS pc, r14

r14 = r14 -4, pc = r14 , cpsr =spsr(因为S)

例3:

handler

SUB r14, r14, #4 ; r14 = r14 - 4

STMFD r13!, {r0-r3, r14} ;store context

...

LDMFD r13!, {r0-r3, r14}^ ;return

STMFD,LDMFD 分别提供了pop/push的功能。STMFD sp!, {r0-r3, r14}就是依次将r14, r3, r2, r1放入栈中。LDMFD r13!, {r0-r3, r14}^则依次反向取出。^ 这个符号,则强制cpsr从spsr中恢复出来。


百检网秉承“客户至上,服务为先,精诚合作,以人为本”的经营理念,始终站在用户的角度解决问题,为客户提供“一站购物式”的新奇检测体验,打开网站,像挑选商品一样简单,方便。打破行业信息壁垒,建构消费和检测机构之间高效的沟通平台