ARM体系结构—架构—指令集—寄存器—工作模式
基础概念集
嵌入式:以应用为中心,以计算机技术为基础,软硬件可剪裁的专用计算机系统
计算机系统基本组成:硬件系统 软件系统(应用软件,系统软件)
计算机硬件系统基本组成:运算器,控制器,存储器,输入设备,输出设备
存储器:寄存器 > Cache > 主存储器(RAM) > 辅助存储器(外存 - 磁盘)
CPU(Center Processing Unit):中央处理单元,是一种强大的通用性处理器
GPU(Graphics Processing Unit):图形处理单元
FPU(Float Processing Unit):浮点型运算单元
嵌入式领域名词解释
MPU(Mirco Processing Unit):微处理器 通用型 偏向处理
MCU(Mirco Contral Unit):微控制器 集成度 偏向控制
单片机:单片微型计算机系统
DSP(Digital Signal Processing):数字信号处理器,为了高强度数学运算而设计的一种专用芯片
SOC(Sysrem On Chip):片上系统
//是一种集成和设计的理念,像一个蓝图,将市政府(MPU)警察局(MCU)研究所(DSP)机场(调制解调器)放在同一片土地上(芯片),形成功能完善的芯片。
kerbal:架构:X86,ARM,MIPS,RISC V
计算机指令集:
RISC (Reduce Instruction Set Computer) 精简指令集架构 X86
CISC (Complex Instruction Set Computer) 复杂指令集架构 ARM
RAM (Random Access Memory)
特点:(1)可以被处理器直接寻址
(2)访问速度快
(3)价格昂贵
(4)掉电丢失(易失性存储)
ROM (Read-Only Memory)
特点:(1)不可以被处理器直接寻址
(2)访问速度慢
(3)价格便宜
(4)掉电不丢失(非易失性存储)
flash:nor flash(或非):可被处理器直接寻址且掉电不丢失
nand flash(与非):
三大总线(功能上):地址总线,数据总线,控制总线(若干根)
单总线结构(冯诺依曼架构):人车不分流,成本低
多总线结构(哈佛架构):分为高速总线(AHB)和低速总线(APB)(人车分流),成本高,处理速度快,效率高
| 冯诺依曼架构 | 核心特点 |
- 指令和数据共享同一存储器
- 单总线结构:使用同一组总线传输指令和数据,无法同时进行指令读取和数据读写
- 串行工作方式:CPU执行时,需要先从内存取指令,再根据指令取数据、处理、按顺序完成
| 哈佛架构 | 核心特点 |
- 指令和数据分离:有两个独立的存储器,分别存放指令和数据
- 多总线结构
- 并行工作方式:CPU可以同时读取指令和访问数据,提高执行效率
ARM_Kernal
通用寄存器:共十六个(R0~R15),用于缓存数据
R13(sp)
sp(stack pointer):栈指针寄存器
R14(lr):在跳转函数之前备份pc寄存器的值
lr(linked register):链接寄存器
R15(pc):指向当前正在执行的下一条的下一条指令(即,PC指向预取指令)
pc(program counter):程序计数器
Cache:高速缓存器
i cache :instruction
d cache:data
ALU (Arithmetic Logical Unit) :算数逻辑单元(算数以及逻辑运算)
CPSR(Current Program Status Register):当前程序状态寄存器(32位)
SPSR(Saved Program Status Register):程序状态备份寄存器(32位)
MMU(Memory Management Unit):内存管理单元 (ARM_kernal默认关闭)
外设(eg:GPIO)由操作系统管理
处理器的工作模式
- ARM 有7个基本工作模式:(共包含37个32-bits长的寄存器)
<1> User:非特权模式,大部分任务执行在这种模式
<2> FIQ:(快中断请求)当一个高优先级(fast) 中断产生时将会进入这种模式
<3> IRQ:当一个低优先级(normal)中断产生时将会进入这种模式
<4> Supervisor:当复位或软中断指令执行时将会进入这种模式
<5> Abort:当存取异常时将会进入这种模式
<6> Undef:当执行未定义的指令时将会进入这种模式
<7> System:使用和User模式相同寄存器集的特权模式 - Cortex-A特有模式(额外包含3个32-bits长的寄存器)
<1> Monitor:是为了安全而扩展出的用于执行安全监控代码的模式,也是一种特权模式
<2> Hyp:是为了测试使用
备注:黑色是共用寄存器
ARM寄存器
- ARM有37个32-Bits长的寄存器
- Cortex体系结构下有40个32-Bits长的寄存器(Cortex-A多出3个寄存器)
异常处理
当异常产生时, ARM core:
拷贝 CPSR 到 SPSR_
设置适当的 CPSR 位: 偏移量
- 改变处理器状态进入 ARM 态
- 改变处理器模式进入相应的异常模式
- 设置中断禁止位禁止相应中断 (如果需要)0
保存返回地址到 LR (LR – User模式中的)
设置 PC 为相应的异常向量
返回时, 异常处理需要:
从 SPSR恢复CPSR
从LR_恢复PC
Note:这些操作只能在 ARM 态执行.