历史上的今天
今天是:2025年03月16日(星期日)
2020年03月16日 | ARM的异常返回
2020-03-16 来源:eefocus
异常返回有3类,我这只解释两类,第三类我没有理解,后续会看看linux kernel怎么做的。
1)从swi和未定义指令返回
ARM
SWI pc-8 ;异常发生处
指令1 pc-4 ; 程序返回的地方, LR=下一条指令
指令2 pc ;pc当前值
异常是由指令本身引起的,PC、LR的值没有更新,CPSR模式就已经更改了,而当前执行的产生异常的执行是不希望再次执行的,所以返回指令为
MOVS PC,LR
2)从fiq,irq中断和预取异常返回
ARM
指令1 pc-12 ;异常发生在这条指令执行期间
指令2 pc-8 ;异常返回后需要回到执行的指令
指令3 pc-4 ;arm LR=下一条指令
指令4 pc ;
异常在当前指令执行完毕后响应,此时pc的值已经更新了,而lr也跟着为pc的decode阶段指令(三级流水线),所以为了异常执行完毕后返回现场
MOVS PC,LR,#4
3)从数据异常返回
上一篇:ARM体系结构与编程-4
下一篇:S3C2440时钟体系结构与编程
史海拾趣
|
规则五:高速PCB设计的布线方向规则 相邻两层间的走线必须遵循垂直走线的原则,否则会造成线间的串扰,增加EMI辐射,如下图: 此主题相关图片如下: 相邻的布线层遵循横平竖垂的布线方向,垂直的布线可以抑制线间的串扰。 规则六:高速PCB设计 ...… 查看全部问答> |
|
串口ReadPortThread读到数据后,怎样正确显示出来? DWORD WINAPI ReadPortThread(LPVOID lpvoid) { BYTE Byte; DWORD dwCommModemStatus, dwBytesTransferred; CString tempStr; // Specify a set of events ...… 查看全部问答> |
|
液晶1602显示源代码 #include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit en=P2^0;sbit rs=P2^1;uchar code table[]=\"I LOVE YOU\";uchar code table1[]=\"FOREVER MAMA!\";uchar num;void delay(uint z);void write ...… 查看全部问答> |
|
85W反激变压器设计的详细步骤1. 确定电源规格. 1).输入电压范围Vin=90—265Vac; 2).输出电压/负载电流:Vout1=42V/2A, Pout=84W 3).转换的效率ŋ=0.80 Pin=84/0.8=105W 2. 工作频率,匝比, 最低输入电压和最大占空 ...… 查看全部问答> |
|
Verilog HDL练习题和Verilog基础知识适合verilog新人.rar Verilog HDL练习题和Verilog基础知识适合verilog新人 Verilog的135个经典设计实例… 查看全部问答> |
|
如何用MSP 430(WIZNET W5200)启动服务器以太网扩充包? $(\'swf_mko\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XNDQ3NDE1NzQw/v.sw ...… 查看全部问答> |
|
作者:朱长江 Altium Designer 14是Altium公司于2013年10月推出的Altium Designer最新版本。该版本比10版在界面和功能上都有了相当大的改进。笔者作为10版的深度用户,自然很想知道14版相对于10版,到底在那些方面,带来了 ...… 查看全部问答> |




