文章目录
- 一、ARM相关概念
- 1. 机器码:计算机可以识别的0和1组成的特殊的编码
- 2. 汇编指令:编译器可以将每条汇编指令编译生成特定的计算机可以识别的机器码
- 3. 汇编指令集:很多具有不同功能的汇编指令的集合
- 4. 架构:基于不同的汇编指令集设计不同的架构,架构就是汇编指令集的版本的命名
- 5. 内核:基于不同的架构设计不同的内核
- 6. 处理器
- 二、RISC和CISC的区别
- (一)RISC---精简指令集
- (二)CISC---复杂指令集
- 三、ARM内核处理器的工作模式
- (一)Cortex-M4核处理器的工作模式
- (二)Cortex-A7核处理器的工作模式
- 1. 特权模式
- (1)异常模式
- (2)非异常模式
- 2. 非特权模式
- 3. monitor模式
- 4. HYP模式
- 四、ARM-v7架构的寄存器组织
- (一)寄存器的位置
- (二)寄存器介绍
- (三)特殊的寄存器
- 1. R13寄存器
- 2. R14寄存器
- 3. R15寄存器
- 4. CPSR寄存器
- 5. SPSR寄存器
一、ARM相关概念
1. 机器码:计算机可以识别的0和1组成的特殊的编码
0:表示低电平信号(0V)
1:表示高电平信号(5V/3.3V/1.8V)
2. 汇编指令:编译器可以将每条汇编指令编译生成特定的计算机可以识别的机器码
计算机只写机器码指令时,可以完成一个特定的功能
3. 汇编指令集:很多具有不同功能的汇编指令的集合
4. 架构:基于不同的汇编指令集设计不同的架构,架构就是汇编指令集的版本的命名
x86-64架构、ARM架构、RISC-V架构、Mips架构…
ARM架构:
arm-V1架构~arm-V6架构:目前已经淘汰
arm-V7架构:
arm-V8架构:
arm-V9架构:最新的64位ARM架构,未来十年主流ARM架构
5. 内核:基于不同的架构设计不同的内核
Cortex-A7内核 : 基于ARM-v7架构设计
Cortex-A9内核 : 基于ARM-v7架构设计
Cortex-A53/A55内核 : 基于ARM-v8架构设计
Cortex-A72/A76/A78 : 基于ARM-v8架构设计
Cortex-A710/A720/A510/A520 : 基于ARM-v9架构设计
Cortex-X3/X4 : 基于ARM-v9架构设计
ARM公司基于不同的ARM架构设计不同性能的ARM内核,然后ARM公司将ARM内核授权给
芯片产商,芯片厂商基于ARM内核在添加很多外设控制器,设计对应的处理器。
比如:ARM公司将Cortex-x4核,Cortex-A720核,Cortex-A520核,授权高通公司,
高通公司基于以上内核设计了骁龙8 Gen 3处理器。
ARM公司将COrtex-A7核Cortex-M4核授权给ST(意法半导体)公司,
ST公司基于以上内核设计了STM32MP157A处理器。
ST : 意法半导体公司
M : 微处理器
32 :32位处理器
MP : 系列,微处理器,可以运行操作系统
157A : 处理器性能相关的
6. 处理器
芯片厂商获取ARM内核授权之后,基于ARM内核设计处理器
CPU:中央处理单元
MPU:微处理器,一般指可以运行linux操作系统的
MCU:微处理器,一般指单片机
SOC:片上系统,MPU、MCU都可称为SOC
每个汇编指令都对应一个运算器,实现对应的指令的功能
每个运算器都是一个硬件,由硬件完成运算器对应的功能
二、RISC和CISC的区别
(一)RISC—精简指令集
ARM架构/Mips架构/PowerPC架构/RISC-v架构使用的汇编指令集是精简指令集
精简指令集的指令相对简单,指令周期和宽度是固定的
指令的宽度:汇编指令被编译生成机器码,将机器码存到代码段,每条汇编指令的机器码在代码段占用的内存空间固定。ARM汇编指令占4字节
指令的周期:执行一条汇编指令需要的时钟的周期的个数,ARM汇编指令的周期固定
CPU主频:CPU运行的频率
周期和频率成反比:周期=1s/频率
(二)CISC—复杂指令集
x86-64架构使用的指令集是复杂指令集
复杂指令集对应的汇编指令的周期和指令的宽度不固定
file filename
查看文件属性命令
objdump -D filename > filename2.dis
三、ARM内核处理器的工作模式
(一)Cortex-M4核处理器的工作模式
M4核只有两种工作模式:线程模式、异常模式
线程模式:用户模式
异常模式:当发生异常事件时,如中断
(二)Cortex-A7核处理器的工作模式
Cortex-A7核有九种工作模式,在不同工作模式下完成工作
1. 特权模式
(1)异常模式
IRQ异常模式(普通中断异常模式)
FIQ异常模式(快速中断异常模式)
SVC异常模式(管理异常模式)
Undef异常模式(未定义异常模式)
Abort异常模式(中止异常模式)
(2)非异常模式
System模式:属于用户模式的特权模式
2. 非特权模式
User模式:主要执行用户代码
3. monitor模式
安全监控模式,主要执行安全相关代码
4. HYP模式
主要针对虚拟化技术的支持
四、ARM-v7架构的寄存器组织
(一)寄存器的位置
一块具有特殊用途的内存空间,就可以称之为寄存器。
定义变量的6种存储类型:auto static extern const register volatile
register对应变量的特点:访问速度快,保存在寄存器上,因此寄存器类型的变量不能取地址。
硬盘:掉电数据不丢失
用于保存没有运行的程序或者数据
内存:掉电数据丢失
用于存放正在运行的程序或者数据
寄存器:内核上有一块空间
大小有限,只有几百字节。该块空间没有地址,只能通过R0-R15变化来访问,
(二)寄存器介绍
- 寄存器通过编号进行访问R0-R15
- 每种工作模式只能访问自己工作模式下对应的寄存器
User和SYS最多访问17个寄存器;
FIQ,IRQ,ABT,SVC,UND,MON模式最多访问18个寄存器
HYP模式最多访问19个寄存器。 - 寄存器没有地址,只能通过每个寄存器的编号进行访问
- Banked类型的寄存器表示私有的寄存器,只有对应的异常模式才可以访问对应的私有的寄存器;
非Banked类型的寄存器表示公有的寄存器;
没有对应的私有寄存器才可以访问公有的寄存器。 - 对于ARM-v7架构而言,每个寄存器大小为4字节
(三)特殊的寄存器
1. R13寄存器
R13 别名:SP The Stack Pointer 栈指针寄存器
作用:栈指针寄存器中存储的是栈空间的地址,主要用于压栈保存现场,出栈恢复现场
2. R14寄存器
R14 别名:LR The Link Register 链接寄存器
作用:用来保存返回地址
3. R15寄存器
R15 别名:PC The Program Counter 程序寄存器
作用:PC寄存器中存储的是当前取指指令
从代码段中根据指令的地址,读取指令的机器码,每完成一次取指令的操作之后,PC会自动加4(每条ARM指令占4字节内存空间)指向下一条指令
4. CPSR寄存器
CPSR Current Program State Register 当前程序状态寄存器
存储当前程序的运行状态,所有工作模式共用一个CPSR
-
N [31]
指令执行结果为负数时,N位被自动置1,否则为0 -
Z [30]
指令执行结果为0时,Z位被自动置1,否则为0 -
C [29]
加法:产生进位时,C位被自动置1,否则为0
进位是低32位向高32位进位时,加法指令一次就可以完成32位以内数据的加法
减法:产生借位时,C位被自动清0,否则为1
借位是低32位向高32位借位时,减法指令一次就可以完成32位以内数据的减法 -
V [28]
符号位发生变化时,V位被自动置1,否则为0 -
I [7]
IRQ异常中断屏蔽位,
I=0:不屏蔽IRQ中断;
I=1:屏蔽IRQ中断 -
F [6]
FIQ异常中断屏蔽位
F = 0 : 不屏蔽FIQ中断
F = 1 : 屏蔽FIQ中断 -
T [5]
状态位
T=0:ARM状态,执行ARM汇编指令集
T=1:Thumb状态,执行Thumb汇编指令集,每条汇编指令的机器码占2个字节 -
M [4:0]
处理器工作模式位
10000 User mode;
10001 FIQ mode;
10011 SVC mode;
10111 Abort mode;
11011 Undfined mode;
11111 System mode;
10110 Monitor mode;
10010 IRQ mode
5. SPSR寄存器
SPSR Save Program State Register 保存当前程序状态寄存器
用于对CPSR寄存器进行备份,每种异常模式下都有一个私有的SPSR寄存器
工作状态切换:
保存现场:
先保存CPSR寄存器到SPSR
恢复现场:
恢复SPSR到CPSR
恢复LR到PC寄存器