基础知识
架构设计
最大区别在于内核设计的区别:X86,8051,ARM,MIPS

CPU内核(指令集架构)
分类:CISC,RISC
- CISC:Complex Instruction Set Computer 复杂指令集计算机 例:x86
特点:面积大,加工成本高,复杂,体积大,功耗大
80%情况下只用到20%的功能(二八效应)- RISC:Reduced Instruction Set Computer 精简指令集计算机
特点:面积小,加工成本低,功耗低,体积小 例:ARM,便携式设备(手机)
ARM应用
三种型号:Cortex-A,Cortex-R,Cortex-M
- A:Application 应用,手机、应用电子领域
- R:realtime 实时性,汽车电子,航空航天
- M:Micro 微控制器
Coretx - A7:32位处理器
寄存器:32位,4字节 数据范围:0000 0000 ~FFFF FFFF
ALU + R0~R15 +
一、寄存器
1.通用寄存器
16个通用寄存器(R0~R15)
R0~R12:通用寄存器(内核),
存放数据,无地址,搭配ALU(算术逻辑单元)使用
特殊的通用寄存器
- pc寄存器
名称:程序计数器(R13)
指向当前指令的指针
指向哪一行代码,就执行哪一行,
未被指向过,则会跳过不执行
上电后,默认指向首条指令
- 三级流水线结构
- pc取指令
- 译码器解释指令
- 内核(kernel)执行指令
- 三指并非串行,而是并行
- 局限:发生跳转,无法返回
- lr寄存器:link register(R14)
- 链接寄存器:保存函数的返回地址
- 局限:二次调用,可能覆盖
- sp寄存器:stack pointer,(R15)
- 栈指针寄存器:用于管理栈空间,永远指向栈顶
- 发生跳转:先入栈,再跳转
- 跳转后执行完毕:开始出栈,返回
2.特殊寄存器
状态寄存器(PSR)
cpsr寄存器:current program status register
当前程序状态寄存器:保存程序运行到某一步的状态
spsr:save program status register
保存/备份程序状态寄存器:异常发生时,保存cpsr寄存器中的程序状态
二
MMU:Memory Manager Unit
内存管理单元
功能:用于虚拟内存到物理内存的映射,从而提高物理内存的利用率
注:裸机开发必须关闭MMU
Cache:高速数据缓存
功能:直接从Cache访问数据,提高CPU访问数据的效率
分类:icache,指令缓存;dcache,数据缓存
架构采用哈佛架构
裸机开发时:打开icache,关闭dcache,提高指令运行速度
内核和外设之间的通信方式
种类:单总线通信,双总线通信
单总线通信,通过一根线/一组线和外设通信
和某一外设进行通信时,其他外设无法接入
双总线通信:
AHB总线:先进高速总线(USB,网卡,RAM)
APB总线:先进外设总线(GPIO,UART)
SATA:存储接口 BIOS:基本输入输出系统
booteloader
SOC
system on chip,片上系统
SOC处理器内核
8051,8051,DSP,MIPS,PPC,ARM
2440 RAM 4KB
补充知识
冯·诺依曼架构:数据和指令存放到同一片内存空间
哈佛架构:数据和指令要分开对立存储

预处理:头文件展开,宏定义替换,条件编译
编译:将C语言文件编译成汇编文件
汇编:将汇编代码编译成二进制机器语言
链接:链接成一个可执行的文件
gcc编译,生成的可执行程序只能在arm架构使用
交叉编译:在一个平台编写编译程序,能够在另外一个平台运行程序
ARM指令
汇编语法
电路基础
三极管

与或非门
锁存器,记忆功能

RAM与ROM
RAM:易失性
RAM类型(了解即可)
- sram(static ram)用晶体管存储0、1。速度快,成本高,存储密度低。
- dram(dynamicram)动态存储,用电容充放电存储0,1。功耗大,需要外接刷新电路,读写速度低于sram。成本低,存储密度大。
- sdram(synchronous dram)增加了同步电路,提高dram的数据读写速度。
- ddr ram(全称ddr sdram即double data rate sdram),为sdram的下一代,目前已发展到ddr5。
- iram(internal ram)注意iram并非是真正意义上的某种ram,通常iram就是sram,它通常存在于Soc内部,所以被称为iram。

- rom:非易失性存储器,最早的rom在出场时写入数据,之后无法更改。
- prom(programmnable rom):可编程rom。出场后能够让用户写入一次数据,例如cdrom
- eprom(erasable prom):可擦写prom,出场后可以擦除数据再次写入,但需要特殊的设备。如紫外光等
- eeprom(electically eprom):电可擦写可编程rom,无需专用设备就可以擦写,编程。
- flash闪存,新一代非易失性存储器。
- nor flash(与非) :每一个字节可以被寻址,地址总线和数据总线
- nand flash(或非):无法被寻址,以固定块大小写入或读取数据512byte

7种必须记忆(重点)
ARM的7个基本工作模式(七种两类)
- User:非特权模式,大部分任务执行在这种模式
- FIQ:当一个高优先级(fast)中断 产生时将会进入这种模式
- IRQ:当一个低优先级(normal)中断产生时将会进入这种模式
- Supervisor:当复位 或软中断指令执行时将会进入这种模式
- Abort:当存取异常时将会进入这种模式
- Undef:当执行未定义指令时会进入这种模式
- System:使用和User模式相同寄存器集 的特权模式
- Cortex-A特有模式:
- Monitor:是为了安全而扩展出的用于执行安全监控代码的模式;也是一种特权模式

颜色不同,同名寄存器不同
发生模式跳转时,调用spsr存储cpsr内容(不同的寄存器集),完成当前模式后,基于spsr存储相关的cpsr内容,恢复原先模式
程序状态寄存器
|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|---|---|---|---|---|---|---|---|---|---|
| 条件位 |||| | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| N | Z | C | V | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

异常处理
异常产生时,内核工作
- 拷贝CPSR到SPSR<mode>
- 设置适当的CPSR位:
- 改变处理器状态进入ARM态
- 改变处理器模式进入相应的异常模式
- 设置中断禁止位禁止相应中断(如果需要)
- 保存返回地址到LR_<mode>
- 设置PC为相应的异常向量
异常向量表:数组,数组中存放的是跳转到对应异常服务函数的指令
返回时,异常处理需要:
- 从SPSR<mode>恢复CPSR
- 从LR <mode>恢复PC
- Note:这些操作只能在ARM态执行

汇编语言
MOV
算术右移:针对有符号数,最高位补符号位,需要考虑数值的符号位
1111 1111 1111 1111 → 1111 1111 1111 1111
0111 1111 1111 1111 → 0011 1111 1111 1111
逻辑右移:针对无符号数,最高位补0,不需要考虑数值的符号位
1111 1111 1111 1111 → 0111 1111 1111 1111
循环右移:循环将移出的最低位补到最高位
0111 1111 1111 1111 → 1011 1111 1111 1111
ADD
概念回顾:指令集(复杂/精简),ARM内核版本(ARM11的变化)应用领域(A/R/M)
Cortex-A7 内核中的寄存器
pc,lr,sp,cpsr,spsr,MMU, Cache,icache,dcache,功能记忆
哈佛与冯诺依曼了解即可
单总线/双总线
ram/rom,flash/nor flash/nand flash
七种arm工作模式(记忆)
寄存器概要,不同模式下的数量(37,40位)
程序寄存器各位作用(了解即可)
异常处理流程(记忆)

