ARM处理模式和部分处理指令
来源:互联网 发布:管家婆库存软件 编辑:程序博客网 时间:2024/06/17 16:09
1、先介绍ARM的处理模式(7种)
用户模式(User):ARM处理器正常的程序执行状态
快速中断模式(FIQ):用于高速数据传输或通道处理
外部中断模式(IRQ):用于通用的中断处理
管理模式(Svc):操作系统使用的保护模式
数据访问中止模式(Abort):数据或指令预取终止时进入该模式,用于虚拟存储及存储保护
系统模式(System):运行具有特权的操作系统任务
未定义指令中止模式(Undifined):当未定义指令运行时进入该模式,可用于支持硬件协处理器的软件仿真。
2、介绍基于ARM内核的微处理器
1.它是由ARM公司设计。
2.是微处理器中的核心部分,相当于人的大脑,控制着整个系统的运行。
3.主要功能是实现程序的自动化执行,包括从哪个地址取指令,进行指令译码,指令执行,从哪个地址取待操作的数据,进行数据的数学运算或逻辑运算,将数据结果存储到哪个地址。
4.某些ARM内核还进行CACHE和MMU的管理。
5.唯一可以配置ARM内核的途径是CP15协处理器接口(JTAG调试口除外)。
6.在ARM内核的眼里,它看不到所有的外围设备,包括GPIO,UART,ADC,NAND FLASH,LCDC等许多的设备,在它眼里,数据和地址就是整个世界。所以别期待ARM内核知道当前在操作系统的哪个外围设备。
7.由ARM内核提供给外部的接口我们也可以知道内核在芯片中起的作用。
3、介绍外围设备和接口控制器
外围设备和外围接口控制器是芯片设计厂家在ARM内核上集成的,它由芯片厂家根据自己芯片所面对的市场来集成需要的外围设备和接口,比如GPIO,UART,IIC,SPI,ADC.LCDC.SENSOR,NAND FLASH,DDR,H.263/H.264等等。
芯片设计厂家如何分配和组织ARM内核提供的这4G的地址空间,完全取决于芯片厂家的习惯和方便,更何况加入了MMU后,将哪段地址分配给哪个外围设备或外围接口,就更加变得无关紧要了。
4、介绍外围设备和ARM内核连接的桥梁:
1. 寄存器,下面以GPIO来分析一下ARM内核是怎么通过寄存器来控制GPIO的:
通常ARM内核通过如下几个寄存器来控制GPIO:第一个是方向寄存器(方向配置),第二个是数据寄存器,第三个是上拉下拉电阻配置寄存器。ARM内核通过方向寄存器来控制GPIO管脚的输入和输出;通过数据寄存器来输出高电平和低电平,或读取GPIO管脚的高低电平状态;通过上拉下拉配置寄存器来开启上拉下拉电阻。
总结:寄存器一端连接ARM内核的总线(当然,有可能是间接连接),另一端连接外围控制逻辑,是ARM内核和外围的连接桥梁。采用寄存器控制外围的方式除了GPIO,还有UART,IIC,SPI,ADC.LCDC.SENSOR,NAND FLASH,H.263/H.264等其它很多外围控制器。
2. 总线接口
5、介绍ARM汇编指令
格式:
{} {S} {Rd}, {Rn}, {operand2}
: 指令操作编码,如LDR,STR
{} :指令执行的条件编码,如EQ,NE等
{S} :决定指令的执行是否影响CPRS的值
{Rd} :目标寄存器编码
{Rn} :包括第一个源操作数的寄存器编码
{operand2} 第二个操作数
6、跳转指令
跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法实现程序的流程的跳转
1.使用专门的跳转指令
2.直接向程序计数器PC写入跳转的地址值
ARM汇编中共有四种跳转指令
1.B跳转指令 B指令编码中的跳转地址值是相依当前PC的一个偏移量,经过汇编器计算得到跳转的绝对地址
2.BL 带返回的跳转指令,BL指令在执行完跳转的同时将转移指令的下一条指令的地址复制到当前处理器模式下的链接地址LR中,一般用于子程序的调用和返回
3.BLX带返回和状态切换的跳转指令
4.BX带状态切换的跳转指令
7、数据处理指令
数据传送指令
MOV 传送 MOV R1, R0 ;R1 = R0
MVN 求反传送 MVN R1, R0 ;R1 = ~R0
CMP 比较 CMP R1, #100 ;R1-100—>CPSR
CMN 负数比较 CMN R1, R0 ;R1+R0—->CPSR
TST 测试 TST R1, #0xffe ;R1&0xffe–>CPSR
TEQ 测试相等 TEQ R1, R0 ;R1^R2—–>CPSR
ADD 相加 ADD R0, R1, R2 ;R0 = R1+R2
ADC 带进位相加 ADC R0, R1, R2 ;R0 = R1+R2+CPSR->C
SUB 相减 SUB R0, R1, R2 ;R0 = R1 - R2
RSB 反向相减 RSB R0, R1, R2 ;R0 = R2 - R1
MUL 乘法 MUL R0,R1, R2 ;R0 = R1 * R2;
AND 与 AND R0, R0, #3 ;R0 = R0 & 3
ORR 或 ORR R0, R0, #3 ;R0 = R0 | 3
BIC 位清除 BIC R0, R0,#0xf0 ;R0 = R0 | 0xf0
LDR 加载 LDR R0, {R1,R2} ;将存储器地址为R1+R2的字数据读入寄存器R0
LDR R0, {R1,R2}! ;将存储器地址为R1+R2的字数据读入寄存器R0并将新地址R1+R2写入R1
STR R0, [R1], #8 ;将R0中的字数据写入R1+8为地址的存储器中
MSR 通用–>CPSR MSR CPSR, R0 ;传输R0的内容到CPSR寄存器
MRS CPSR–>通用 MRS R0, CPSR ;传送CPSR的内容到R0寄存器
- ARM处理模式和部分处理指令
- ARM 7_指令处理速度
- ARM指令集与异常处理
- ARM汇编部分指令
- ARM第一部分-ARM的异常处理方式简单介绍
- ARM指令在Thumb模式和arm模式之间跳转
- ARM指令在Thumb模式和arm模式之间跳转
- 处理指令
- ARM指令如何在thumb和arm模式切换
- ARM处理器的“处理者模式(handler mode)”和“线程模式”
- 部分arm汇编伪指令
- ARM:单和多寄存器加载存储、状态寄存器、协处理、软中断、乘法、交换等汇编指令
- ARM 中断处理和中断控制器
- ARM编程中的警告和错误处理
- C#预处理器指令和字符串处理
- XML的CDATA区和PI指令(处理指令)
- ARM 伪指令和 ARM 宏指令
- 第十部分 字符串处理和正则表达式---------------
- 3
- 2007: Football Training Camp
- android studio 无法启动AVD,运行程序一直显示waiting for device to come online
- 文件上传的基本代码
- appium做自动化时,屏蔽键盘会导致某些输入框无法呼出键盘导致发送按钮不可见
- ARM处理模式和部分处理指令
- HDU-1520 Anniversary party(树dp)
- Solr配置IK分词器
- C语言入门第十三篇,指针
- OSI七层模型详解
- Windows命令查看文件的MD5/SHA1/SHA256
- 一图简述大数据技术生态圈
- Linux 文件编码格式设置
- binary tree traver