ARM接口编程笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ARM接口编程笔记
一、ARM编程模式
1.ARM的含义
●ARM是一家公司的名字
●ARM代表的是一种RISC技术
●ARM是一种CPU体系结构的名称,同x86、PPC、MIPS等并列
2.ARM体系结构中对字节、半字、字、双字的定义
●字节:8 bit
●半字:16 bit
●字:32 bit
●双字:64 bit
3.ARM指令集
●ARM指令集,32 bit,功能最全
●Thumb指令集,16 bit,是ARM指令集的子集,完成部分功能
●Thumb‐2指令集,16 bit和32 bit混合
●Thumb‐EE指令集,16 bit和32 bit混合
●Java指令集,直接执行绝大部分的Java字节流,但需要授权
4.ARM处理器的权限
●非特权级:部分指令不能执行,是一种硬件的保护机制,通常用户应用
程序运行在该权限级别
●特权级:能执行所有指令,通常操作系统运行在该权限级别
5.ARM的工作模式,处理对应模式下的特定事务,使得这些特定事务能够在硬
件资源的使用上部分地独立开来,这是通过各种模式下有对应的私有硬件资源来实现的。
●User:应用程序一般运行在该模式下
●Supervisor:操作系统一般运行在该模式下
●IRQ:中断处理程序一般运行在该模式下
●FIQ:快速中断处理程序一般运行在该模式下
●Abort:发生存取异常后会进入该模式
●Undef:执行未定义的指令会进入该模式
●System:为解决中断不可重入而设计的一种特殊模式
●Monitor:Cortex‐A特有的模式,执行监控代码
●除User模式外,其他7种模式都是特权模式
6.ARM寄存器
寄存器最靠近CPU中的ALU,存取速度最快,没有地址,只有编号。部分寄存器有别名,在汇编程序中本名和别名可以混用。
●R0‐R7:各模式都共用的寄存器,物理上共8个寄存器。
●R8‐R12:FIQ模式下有对应的私有寄存器,即FIQ模式下使用其私有的这
组寄存器,另外7中模式都共用另外一组寄存器,物理上共有10个寄存
器
●R13:User和System模式共用,另外6种模式都有各自私有的寄存器,
物理上共7个寄存器
●R14:User和System模式共用,另外6种模式都有各自私有的寄存器,
物理上共7个寄存器
●R15:各模式都共用的寄存器,物理上只有1个
●CPSR:各模式都共用的寄存器,物理上只有1个
●SPSR:User和System模式下无此寄存器,另外6种模式都有各自私有的
寄存器,物理上共6个寄存器
7.ARM寄存器使用说明
●虽然上表中各模式下的私有寄存器都跟有后缀,但在汇编中都使用统一
的名字。如,在FIQ模式下的汇编代码要表示R13寄存器,只能在汇编
中写R13,而不能写R13_fiq
●虽然总共有40个寄存器,但是处理器在某一个特定时刻,只能处于一种
模式下,所以处理器在同一时间内只能见到本模式下的寄存器,最多有
18个可见,最少有17个可见(User和System模式)
●R13寄存器的别名为SP,是栈指针,各模式有私有的栈指针,则意味着
各模式下的栈空间可以彼此独立。通常由编译器和CPU来维护,使用前
需初始化
●R14寄存器的别名为LR,链接寄存器,用于自动保存返回地址。特别需
要注意的是:如果程序执行流程的改变不涉及模式的切换,则返回地址
保存在当前模式下的LR寄存器中;如果程序执行流程的改变伴随着模式
的切换,则返回地址保存在被切换后的模式下的LR寄存器中。注意对
LR寄存器的保护
●R15的寄存器别名为PC,程序计数器,用于指示被取指令的地址,通常
由CPU自动维护,也可以通过程序手动修改
●CPSR寄存器,用于反映当前的程序状态,如处理器所处的模式,处理器
所处的状态,中断是否被屏蔽,数据运算的结果是否发生了借位、进位,
结果是否为0,结果是否为负,是否发生溢出等
●SPSR寄存器,定义同CPSR寄存器。在模式发生切换后用于保存模式切
换前的模式下的CPSR寄存器,如果要切换回以前的模式,则可用切换后
所在模式的SPSR去恢复切换前模式的CPSR,需要由特殊的指令来实现
8.ARM指令特点
●定长32 bit
●大部分为单周期指令
●大部分指令可条件执行,即在常规指令后跟上执行条件
●采用Load/Store架构,典型的限制是不能在存储器和存储器间直接拷贝,
必须通过寄存器中转
9.ARM处理器核
●流水线使得指令流可并行处理,提高效率
●PC指向正被取指的指令,而非正在执行的指令
●Cache因为存取速度高于内存,用于缓存指令和数据,提高执行速度
●Write Buffer用于暂存向内存写入的数据
●MMU用于程序的保护和实现虚拟内存
●CP15协处理器用于控制Cache、Write Buffer和MMU等
10.SoC的概念:片上系统,将CPU核同其他外围接口电路(如串口,LCD控制
器等)集成在一片芯片上
二、ARM指令集
1.条件码
CMP r3, #0 CMP r3, #0
BEQ Skip ADDNE r0,r1,r2
ADD r0,r1,r2
Skip: Skip:
合理使用条件码,可以提高代码密度,减少分支跳转指令的数目(避免清空流水线),提高了性能