"); //-->
###################嵌入式体系结构基础###############
一、指令集:
1.数据传输指令--
mvn r0,r2 ;r0 = ~r2
mvns r0,r2 ;影响cpsr
2.逻辑指令--
add r0,r1,r2 ;r0 = r1 & r2
orr r0,r1,r2 ;r0 = r1 | r2
eor r0,r1,r2 ;r0 = r1 ^ r2
bic r0,r1,r2 ;r0 = r1 & ~r2
3.比较指令--主要用于循环;用完它,下面就要bne了,有点循环的测试条件部分;
cmp r1,r2
tst r1,r2 ;根据r1&r2的结果设置cpsr
teq r1,r2 ;根据r1^r2...
4.算术指令--
adc r0,r1,r2 ;r0 = r1 + r2 + carry//??????????????
5.程序状态访问指令--当需要修改cpsr/spsr的内容时,
首先要读它的值到一个通用寄存器,-- mrs r0,cpsr
然后修改某些位后,在将数据写回状态寄存器;--msr cpsr,r0
6.单数据访存指令--
ldr r0,[r1,#0xfff] ;将内存r1+0xfff地址的内容读到r0中。
str r0,[r1,-r2,LSL#31] ;将r0的内容写到r1-(r2<<31)的内存单元中去。
7.多数据访存,和模拟栈--
1)stmdb == stmfd ;压栈PUSH
stmfd sp!,{r0-r12,lr} ;将所有寄存器包括返回地址压栈
2)ldmia == ldmfd ;出栈POP
ldmfd sp!,{r0-r12,pc} ;恢复所有寄存器包括PC
二、异常、中断
1.ARM模式分类:
########################################################
usr/system | SVC | Abort | Undef | IRQ | FIQ
r0 r0 r0
r1 r1 r1
r2 r2 r2
r3 r3 r3
r4 r4 r4
r5 r5 r5
r6 r6 r6
r7 r7 r7
r8 r8 r8 r8_FIQ
r9 r9 r9
r10 r10 r10
r11 r11 r11
r12 r12 r12
r13 r13_SVC r13_ABORT r13_UNDEF r13_IRQ
r14 r14_SVC r14_ABORT r14_UNDEF r14_IRQ
PC PC PC
CPSR CPSR CPSR
SPSR_SVC SPSR_ABORT
######################################################
2.CPSR/SPSR
1)条件标志
-N = ALU计算结果为负
-Z = ALU计算结果为零
-C = ALU计算结果进位
-V = ALU计算结果溢出
2)中断禁止位
-I = 1 ;关IRQ
-F = 1 ;关FIQ
-T:
T = 0 ;处理器当前处于ARM状态
T = 1 ;处理器当前处于THUMB状态
3.异常和异常向量表
1)异常向量表 -- 0x18是IRQ;
2)优先级:
-RESET ;
-DATA ABORT ;
-FIQ
-IRQ
-Prefetch
-SWI/Undef
异常的产生:
1)外部异常:复位,FIQ,IRQ
2)间接异常:数据终止(在LOAD和STORE数据访存时的存储器故障)
3)直接异常:软件中断,未定义指令和预取指令
3.异常时的模式切换
异常发生后
################在跳到异常向量表前硬件做得事情###################
-将CPSR拷贝到SPSR_<MODE>
-设置将要用在异常模式的CPSR中的适当位
清除CPSR中的Thumb位(异常进入后就均为ARM STATUS,不可能是Thumb);
修改相应的模式位;
关中断(如果是RESET OR FIQ异常,还要关FIQ)
-映射相应模式寄存器;
-将PC保存LR_<MODE>,用于返回;
-将PC指向异常向量表的某个地址;
##################处理异常中...#################################
......
...
..
.
.
#########异常处理结束,异常返回##################################
-从SPSR_<MODE>中恢复CPSR
-用LR_<MODE>恢复PC /* 注意流水线的影响 */
SO,我们讨论一下在各种异常返回时,因为流水线的原因,对返回地址的调整;
-SWI/UND: movs pc,r14_swi/und
- FIQ/IRQ/Prefetch: subs pc,r14_<mode>,#4
- DataABR: subs pc,r14_ABORT,#8
###############################END###########################
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
Microsoft Windows CE .NET 4.2操作系统已投入生产
付款解决方案
光电路交换何以成为 AI 数据中心刚需
<<无线电>>杂志2003.5期上的自制51编程器资料下载
台积电出售世界先进8.1%股权,披露2029年前技术蓝图
1602LCD液晶屏秒表
HY8000A系列的串联、并联应用
13264液晶模块资料
语音 AI 系统易遭受隐秘音频攻击
MSP430的开发工具和仿真软件
MSP430的开发资源:源代码、应用笔记、参考设计等
常用三极管、场效应管资料下载
192X64液晶屏的MCS51汇编语言驱动程序
HY8000A外接小功率音频放大器电路原理图
MSP430的无线射频应用
理解烟雾探测器:主要类型、功能和最佳使用方法
移动 DRAM 价格暴涨,智能手机生产承压
1601液晶程序
HY8000A八段语音电路原理图
“零关税”效应突显 首季上海口岸手机“大进出”
MSP430的外围模块介绍
ML-01G与LM386相连应用电路(语音播放)
PCB 电路板热量管控方案与设计要点
韩国与SUN合作 采用Java平台作为无线互联网标准
ML-01G型自动奏乐升旗仪式专用集成电路
AI时代车载芯片设计:功能与网络安全协同发展
Vishay PARÒ和TRANSZORBÒ TVS采用新的DFN6546A超薄封装实现3000 W功率耗散
192X64液晶屏用AVR驱动的汇编语言程序
可靠性成为下一代机器人技术发展的核心挑战
效仿 HBM 架构 高带宽堆叠闪存 HBF 正式问世