历史上的今天
今天是:2025年05月06日(星期二)
2018年05月06日 | 系统学习ARM之六 --异常处理
2018-05-06 来源:eefocus
转载自 http://blog.csdn.net/qqliyunpeng/article/details/48791715
一、简介:
异常:
是一种突发情况。异常发生后,处理器要进行相应的处理(异常处理),切换到对应的异常工作模式。
二、四大步三小步:(异常处理的硬件完成的事项)
(1)拷贝 CPSR 到 SPSR_
(2)设置适当的 CPSR 位:
①改变处理器状态进入 ARM 状态
②改变处理器模式进入相应的异常模式
③设置中断禁止位禁止相应中断 (如果需要)
(3)保存返回地址到 LR_
(4)设置 PC 为相应的异常向量
三、异常处理的返回: --通过异常返回指令
1. 要做的:
从 SPSR_
恢复CPSR 从LR_
恢复PC
2. 返回的具体实现指令:
①第一种方式:指令带 “S” 后缀 + PC做为目的寄存器
movs pc,lr
②第二种方式:如果 lr之前被压栈的话使用LDM +“ ^”
ldmfd sp!,{ pc }^
注意:有些异常处理返回值需要修正lr寄存器
所有从异常返回的情况:
a、从SWI 和Undef 异常返回:
movs pc,lr
b、从FIQ, IRQ 和 预取异常(Prefect Abort)返回:
SUBS pc,lr,#4 == @ pc = lr -4 和 cpsr = spsr 两句
c、从数据异常( Data Abort)返回:
SUBS pc,lr,#8
d、如果LR之前被压栈的话:
MOVS pc,lr
四、异常源处理优先级表:
1. 表:
Reset 最高
Data Abort //数据存取异常
FIQ
IRQ
Prefetch Abort
SWI
Undefined instruction
2. 向量表指令:
①异常向量表:放的是不同异常源的处理地址。
②异常向量表指令:
LDR PC, [PC, #+0xFF0] 可寻址±4k
MOV PC, #0x30000000 立即数
B IRQ_handler 可寻址±32M
五、中断控制器:
1. 为什么会有中断控制器?:
ARM内核(小核)只有两个中断源,用中断控制器来扩展中断源
2. 中断控制器要实现的功能 / 中断控制器的作用:
择优----(优先级)
跳转到对应的中断处理函数
选择处理该中断源的cpu
六、FIQ 比 IRQ快的原因:
fiq 比 irq 的优先级高
FIQ 向量位于向量表的最末端,异常处理不需要跳转
FIQ 比 IRQ 多5个私有的寄存器(r8-r12),在中断操作时,压栈出栈操作的少。
史海拾趣
|
红外线发射接收感应开关 要求: 1、 模组由发射管和接收管组成,状态转换时(模组对人体感应到和感应不到两种状态)由一红色LED闪烁一下来指示,模组前面加一个红外线滤光片(可由一具有红外线滤光片作用的塑料外壳替代),不受其他家电红外线遥控 ...… 查看全部问答> |
|
概述 12232F是一种内置8192个16*16点汉字库和128个16*8点ASCII字符集图形点阵液晶显示器,它主要由行驱动器/ 列驱动器及128×32全点阵液晶显示器组成。可完成图形显示,也可以显示7.5×2个(16×16点阵)汉字.与外部CPU接口采用并行或串行方式控制。 ...… 查看全部问答> |
|
级联信号处理器的FPGA实现 需要的下过去看看 摘要:现代通信系统中,数字化已成为发展的必然趋势,数字信号处理则是数字系统中的重要环节。在数字信号处理方面提出一种级联信号处理器的FPGA实现方案,用以取代昂贵的专用数字处理芯片。首先对级联 ...… 查看全部问答> |
|
QT是跨平台的程序设计库,在windows下的程序往往想要有一个好看的图标,方法如下: 1、有无图标的区别: 2、首先要准备好.ico图标 下面这个是可以转换的网站:http://www.ico.la/old.html 可以格式 ...… 查看全部问答> |
|
replyreload += \',\' + 1328453;我们在实际电子产品设计调试过程中,经常会有这样的疑问,MOS管为什么会被静电击穿?静电击穿是指击穿MOS管G极的那层绝缘层吗?击穿就一定短路了吗?JFET管静电击穿又是怎么回事? Timson,如果您要查看本帖隐藏内 ...… 查看全部问答> |
|
#include \"msp430g2553.h\" #include \"UART.h\" void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdo ...… 查看全部问答> |
|
IC封装小知识: 经常看到IC封装中使用BSC,那么BSC到底是什么意思呢? BSC的全称是Basic Spacing between Centers(中心基本距离),一般用在说明IC两引脚中心的基本间距。这是一个无误差的,理论的真实位置尺寸。 … 查看全部问答> |




