一、ARM内核分为哪几类?他们之间有什么区别?
ARM内核主要分为三类,Cortex-A,Cortex-R,Cortex-M三种,A代表Applications,向用户提供全方位解决方案,主要用于复制的应用场合,比如智能手机、移动计算平台,数字电视、机顶盒、打印机或服务器等。R代表Real-Time Embedded,主要用于实时应用的系统,面向深层嵌入式实时应用,对低功耗、良好的中断行为、卓越性能以及与现有平台的高兼容性这些需求进行了平衡考虑,比如摄像机、智慧汽车等。M代表MCU & FPGA,面向具有确定性的微控制器应用的成本敏感型解决方案,主要是针对微控制器领域开发的,在该领域中,既需进行快速且具有高确定性的中断管理,又需将门数和可能功耗控制在最低,例如玩具,电子手表、音响、游戏手柄等设备。
二、ARM工作模式
用户模式(USR:User)只能执行处理自己的数据,也不能切换到其它模式下,要想访 问硬件资源或切换到其它模式只能通过软中断或产生异常。
系统模式(SYS:System)系统模式是特权模式,不受用户模式的限制。
中止模式(ABT:Abort)当用户程序访问非法地址,没有权限读取的内存 地址时,会进入该模式
未定义模式(UDF:Undifined)CPU在指令的译码阶段不能识别该指令操作时, 会进入未定义模式。
快速中断模式(FIQ:Fast Interrupt Request)它是用来处理对时间要求比较紧急的中断请求, 主要用于高速数据传输及通道处理中。
一般中断模式(IRQ:Interrupt Request)用于处理一般的中断请求,通常在硬件产生中断 信号之后自动进入该模式,该模式为特权模式
管理模式(SVC:Supervisor)说明:系统复位或开机、软中断时进入到SVC模式下
安全监管模式(MON:Monitor)是为了安全而扩展出的用于执行安全监控代码的 模式;也是一种特权模式 Cortex-A特有模式
ARM系列有7个基本工作模式,Cortex-A系列有8种基本工作模式
除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes)
三、寄存器
R0~R12、R15、CPSR为通用寄存器,在任意一个模式下内核都可以存取,R13、R14与SPSR为私有寄存器,每个模式都有自己独有的。
R0~R10主要用于存放临时数据
R11(fp)frame pointer 用来记录一个栈空间开始的地址(栈底寄存器)
R12(ip)The Intra- Procedure-call scratch register 用来临时存放sp
R13(sp) 通常用作栈指针。指向当前栈的顶部(栈顶寄存器)
R14(lr) 通常用作连接(或返回地址)寄存器。存储子程序返回地址 (链路寄存器)
R15(pc) 通常用作程序计数器,存储下一条要执行的指令的地址。当执行指令时,CPU自动地修改PC 的内容,即每执行一条指令PC增加一个量,使 PC总是指向正在取指的指令地址
CPSR(Current Program Status Register)状态寄存器,记录当前的算数/逻辑操作结果、记录中断禁止标志位、记录当前的状态(ARM / Thumb)、记录当前的操作模式等
SPSR(Saved Program Status Register)临时保存CPSR,当一个异常发生时保存当前的CPSR 值。结合连接寄存器可使处理器返回先前的状态。