杭州 网站开发,wordpress通过api发送邮件,企业网站建立,设计师培训内容关于异常处理#xff0c;分为三部分#xff1a; 1. ARM异常和模式#xff1a;core处理异常时的操作#xff0c;几种模式介绍。 2. Vector table#xff1a; 3. 异常优先级 4. lr偏移#xff1a;几种异常如何返回异常和中断处理简介在嵌入式系统中异常处理是核心之一。高效…关于异常处理分为三部分 1. ARM异常和模式core处理异常时的操作几种模式介绍。 2. Vector table 3. 异常优先级 4. lr偏移几种异常如何返回异常和中断处理简介在嵌入式系统中异常处理是核心之一。高效的处理能够极大的提升系统的性能。 ARM处理器一共有7种可以暂停指令的执行序列的异常。 主要分为三个部分 点击这里1小时彻底掌握中断 创客学院带你搞定异常和中断处理 1. Exception handling 2. Interrupts 3. Interrupt handling schemes 今天我们主要介绍第一部分Exception Handling1.ARM Processor Exceptions And Modes任何一种中断模式都可以通过手动的修改cpsr的值来进入。但是User和System模式是仅有的2个不能由相应中断进入的模式换句话说我们必须要通过手动修改cpsr才能进入。当一个异常产生的时候core会自动进行如下4步 1. saves the cpsr to the spsr of the exception mode 2. saves the pc to the lr of the exception mode 3. sets the cpsr to the exception mode 4. sets the pc to the address of the exception handler需要注意的是当异常产生的时候ARM处理器总是会切换到ARM状态。2.Vector Tablehandler定位在相应内存位置中如下图的IRQ,FIQ0x00000018: 0xe59ffa38 IRQ ; ldr pc, [pc, #irq] 0x0000001c: 0xe59ffa38 FIQ ; ldr pc, [pc, #fiq]3.Exception Priorities4.Link Register Offset如下三种从IRQ和FIQ异常处理返回的例子例1handler ... SUBS pc, r14, #4 ;pc r14 -4因为SUB后的S和pc作为目标寄存器cpsr的值会自动从spsr中恢复出来例2handler SUB r14, r14, #4 ;r14 - 4 ... code ... MOVS pc, r14r14 r14 -4, pc r14 , cpsr spsr(因为S)例3handler SUB r14, r14, #4 ; r14 r14 - 4 STMFD r13!, {r0-r3, r14} ;store context ... LDMFD r13!, {r0-r3, r14}^ ;returnSTMFD,LDMFD 分别提供了pop/push的功能。STMFD sp!, {r0-r3, r14}就是依次将r14, r3, r2, r1放入栈中。LDMFD r13!, {r0-r3, r14}^则依次反向取出。^ 这个符号则强制cpsr从spsr中恢复出来。