今天学习了ARM相关的概念,了解到很多关于寄存器的相关知识,内核中有哪些东西,以及数据是怎么在CPU中被处理读取写入的,概念相关的知识还是挺繁琐的,以下是今天总结的相关重点知识
Day1
1.ARM体系架构
1. 概念
-
PC寄存器:process counter 程序计数器
-
CPU:Center: Processing Unit 中央处理单元
-
GPU:Graphics Processing Unit 图形处理单元
-
FPU: Float Processing Unit 浮点运算单元
-
二八定律:百分之80的硬件的电路只会在百分之20的情况下会用到
-
RAM跟ROM区别记忆
-
内核想要访问ROM中的东西就要先将ROM里面的东西读到RAM中才能让内核读到
-
三大总线:数据总线(双向) 地址总线(单向) 控制总线(双向)
2.内核
-
机器字长:CPU 一次能自然处理、运算和传输的二进制位数(传输处理都是以32位来处理,及四个字节)
-
裸机操作时建议把dcache关闭还有MMU,避免数据不回写
-
MMU(memory mangement unit):内存管理单元:
-
MMU映射0到4G的虚拟内存
-

-
MMU用来映射背后的真实物理内存可能是寄存器,RAM,ROM
-
-
CPSR(Current Program status Register):当前程序状态寄存器
- ARM中默认使用是小端对齐
-
SPSR(Save Program status Register):备份程序状态寄存器
-
通用寄存器:
-
R13(SP:stack pointer):栈顶指针寄存器
-
R14(LR:linked register):链接寄存器
-
R15(PC:program counter):程序计数器
-
3.处理器工作模式
-
ARM七种基本工作模式
-

-
ARM内核里面一共有多少个通用寄存器:

-
溢出
- 两个正数相加结果应该是正数,但是超过存储范围,就会产生溢出
-
记忆
-
ARM七种工作模式
-
User:非特权模式,相当于Linux的普通用户模式
-
FIQ:当高优先级中断产生时会进入此模式
-
IRQ:当低优先级中断产生时会进入此模式
-
Supervisor:当复位或者中断指令执行时会进入此模式
-
Abort:当存取异常的时候会进入此模式
-
Undef:当执行未定义指令时会进入此模式
-
System:使用和User模式下相同寄存器的特权模式(相当于Linux下的sudo)
-
Monitor:Cortex-A特有模式,用于执行安全代码监控的模式,也姓相当于一种特权模式
-
-
ARM Core中包含了哪几种器件
-
通用寄存器:用来暂存数据和地址,是CPU的工作台
-
R13:SP栈顶指针寄存器
-
R14:LR链接寄存器
-
R15:PC程序计数器
-
-
ALU算数逻辑单元:执行算数逻辑运算
-
程序状态寄存器CPSR:相当于CPU的状态面板,上面记录了CPU的状态,CPU执行下一条命令时都要根据这个状态面板来决定下一步该怎么走
-
备份状态寄存器SPSR:相当于存档,当中断或者异常时,CPU将当前状态存入SPSR,等到CPU处理完中断或者异后,通过备份状态寄存器恢复回CPSR
-
Cache(高速缓存):指令 Cache、数据 Cache,减少访存延迟
-
MMU(内存管理单元):将物理空间虚拟成0到4G的虚拟内存
-
-
ARM Core异常处理流程
-
产生异常时:
-
先将当前CPSR拷贝到SPSR_<mode>
-
设置CPSR
-
改变状态进入ARM态
-
改变模式,进入相应的异常模式
-
如果需要的话设置中断禁止位禁止相应中断
-
-
保存返回地址到LR_<mode>
-
设置PC为相应异常向量
-
-
从异常中返回:
-
从SPSR_<mode>中恢复CPSR
-
从LR_<mode>中恢复PC
-
-
-