一、硬件存储介质
- 运行内存:DDR3 512MB;配套存储 EMMC
- EEPROM:AT24C02,容量 2048bit(256byte)
- Flash 两类存储
- Nor flash:每一字节均可寻址,自带地址总线、数据总线,访问速度接近 RAM,多用于单片机
- Nand flash:属于块设备,数据以 512byte 为单位访问,多用于电脑、SOC
- 片内 RAM:s3c2440 内置 iram 4KB
nor flash和nand flash区别
| 对比维度 | Nor Flash | Nand Flash |
|---|---|---|
| 访问方式 | 支持随机访问,可执行代码(XIP) | 按页/块顺序访问,需控制器配合 |
| 读写性能 | 读速度快,写/擦除速度慢 | 连续读写、写/擦除速度快,随机读慢 |
| 容量成本 | 容量小(MB~GB级),单位成本高 | 容量大(GB~TB级),成本低 |
| 可靠性 | 坏块极少,稳定性高 | 存在坏块,需ECC校验纠错 |
| 典型应用 | Bootloader、BIOS存储 | SSD、eMMC、U盘等大容量存储场景 |
二、总线分类
1. 按通信线路数量划分
- 单总线:内核与外设仅一组线路完成通信
- 双总线:内核与外设通过两组线路分开通信
2. 标准片上总线
- AHB(Advanced High Bus 先进高速总线):挂载 USB、网口、RAM 等高速设备
- APB(Advanced Peripheral Bus 先进外设总线):挂载 Timer、GPIO、UART 等低速外设
AHB与APB总线(AMBA总线规范)
| 总线类型 | 全称 | 核心特性 | 典型连接设备 |
|---|---|---|---|
| AHB | Advanced High-performance Bus | 高性能、高时钟频率、支持突发传输、流水线操作、多主设备仲裁 | CPU、DDR、DMA、NOR Flash等高速模块 |
| APB | Advanced Peripheral Bus | 低功耗、结构简单、无突发传输、低时钟频率 | UART、GPIO、定时器、I2C等低速外设 |
三、指令集架构分类
- CISC:复杂指令集架构
- RISC:精简指令集架构
- ARM、RISC V 均属于精简指令架构处理器
- 存储架构区分
- 冯・诺依曼架构:指令、数据共用同一块存储空间
- 哈佛架构:指令、数据拥有独立存储空间,绝大多数计算机采用哈佛架构

RISC和CISC
-
RISC(精简指令集计算机):指令格式固定、种类少、单周期执行,采用Load/Store架构,通用寄存器多,编译优化依赖高,功耗低,典型如ARM、MIPS、RISC-V。
-
CISC(复杂指令集计算机):指令可变长、种类多、功能复杂,支持内存直接操作,寄存器较少,微码控制为主,典型如x86。
-
核心区别:RISC追求结构简单与能效,CISC追求指令功能集成与代码密度,现代两者互相借鉴。
四、ARM 处理器系列、型号与对应指令集
1. 早期传统 ARM 内核
ARM1、ARM7、ARM8、ARM9
- s3c2440:ARM920T,指令集 armv4te
2. Cortex 三大产品线
- Cortex-A(Application 高端应用 / 消费电子)
- CortexA7、CortexA8、CortexA9、CortexA97
- Samsung Galaxy Note:CortexA8
- Exynos4412:Cortex-A9,指令集 armv8
- imx6ull:Cortex-A7,指令集 armv7
- Cortex-R(Real-time 实时性领域专用)
- Cortex-M(Micro 微控制器 MCU)
- stm32f103:Cortex-M3,厂商意法半导体
ARM处理器的7种工作模式
| 模式名称 | 类型 | 说明 |
|---|---|---|
| User(用户模式) | 非特权模式 | 普通应用程序运行模式,无法直接访问硬件资源 |
| System(系统模式) | 特权模式 | 操作系统内核任务运行模式,与User模式共用寄存器 |
| Supervisor(SVC/管理模式) | 特权+异常模式 | 复位、软中断(SWI)后进入,用于操作系统内核态 |
| IRQ(普通中断模式) | 特权+异常模式 | 外部普通中断触发后进入 |
| FIQ(快速中断模式) | 特权+异常模式 | 高速外设中断触发后进入,有独立寄存器组,响应更快 |
| Abort(中止模式) | 特权+异常模式 | 内存访问出错(预取中止/数据中止)时进入 |
| Undefined(未定义模式) | 特权+异常模式 | 执行未定义指令时进入 |
五、CPU 内核运算与寄存器
1. 运算单元
- ALU:算术逻辑单元,负责数值运算 示例:R0 存 a、R1 存 b、R2 存放 a+b 运算结果
2. 通用寄存器
内核通用寄存器共 16 个,用于存放运算数据,包含 R0~R12
3. 特殊专用寄存器
- SP (R13):stack pointer 栈指针寄存器,管理栈区空间;栈规则先进后出(后进先出),存入数据时 sp 值减小,数据存放在 sp 指向位置
- LR (R14):linked register 链接寄存器,保存函数返回地址
- PC (R15):programmer counter 程序计数器,指针,指向当前执行指令的下一条指令
- CPSR:current programmer status register,当前程序状态寄存器,存放程序运行到某一步时相关的状态(溢出、进位、借位)
- SPSR:save programmer status register,保存程序状态寄存器,当异常发生时,保存CPSR寄存器中的值
- MMU:Memory Management Unit,内存管理单元,将程序中的虚拟内存空间映射到实际物理内存空间,提高物理内存利用率
| 寄存器 | 全称 | 核心作用 |
|---|---|---|
| PC | Program Counter(R15) | 存放下一条待取指指令的地址,修改PC可实现程序跳转 |
| LR | Link Register(R14) | 保存函数调用的返回地址/异常发生后的返回地址 |
| SP | Stack Pointer(R13) | 指向当前模式栈顶,用于函数调用、局部变量存储、现场保护 |
| CPSR | Current Program Status Register | 记录条件标志位(N/Z/C/V)、中断屏蔽位、处理器工作模式、ARM/Thumb状态 |
| SPSR | Saved Program Status Register | 异常发生时自动保存CPSR的值,异常返回时用其恢复CPSR(用户/系统模式无SPSR) |
4. 流水线执行
译码、执行阶段可同一时刻并发执行
六、Cache 高速缓存
作用:提升 CPU 访问数据的速度
- ICACHE:instruction cache 指令缓存,缓存程序指令
- DCACHE:data cache 数据缓存,缓存运算数据 配置示例:可打开 ICACHE,关闭 DCACHE
MMU、Cache作用
-
MMU(内存管理单元):负责虚拟地址到物理地址的转换(页表映射),实现内存权限保护、隔离(多进程)、虚拟内存管理等,是运行Linux等OS的基础。
-
Cache(高速缓存):位于CPU与主存之间,依据局部性原理缓存近期访问的指令/数据(L1/L2等),解决CPU与内存速度不匹配,提升访问效率。
七、移位运算规则
- 逻辑右移 LSR:无符号数移位,最高位补 0 例:1011 0010 LSR 1 → 0101 1001
- 算术右移 ASR:有符号数移位,最高位补符号位 例:1011 0010 ASR 1 → 1101 1001
- 循环右移 ROR:最低位移出,补到最高位 例:1011 0010 ROR 1 → 0101 1001 拼接 1010 1100

八、大小端存储模式
- 大端存储:内存低地址存放数据高位,内存高地址存放数据低位
- 小端存储:内存低地址存放数据低位,内存高地址存放数据高位;SOC 普遍使用小端模式
九、中断与异常体系
1. 中断相关
- 中断向量:中断标号,依靠向量索引查找中断服务函数
- 中断向量表:函数指针数组,数组内存储各个中断服务函数入口地址 示例代码:
void (*p[5])(void) = {fn1, fn2, fn3, fn4, fn5};
2. 异常相关
- 异常向量:跳转至异常服务函数指令对应的地址
- 异常向量表:数组,内部存放跳转到对应异常服务函数的指令
- 向量表固定偏移: 0x00:b reset_handler(复位异常跳转指令) 0x04:b undefine_handler(未定义指令异常跳转指令)
- 对应异常处理函数: reset_handler (void) 复位异常函数 undefine_handler (void) 未定义指令异常函数
ARM异常处理流程
异常发生时,硬件自动执行以下步骤:
-
保存CPSR 到对应异常模式的SPSR。
-
设置CPSR 模式位,切换到对应异常模式,禁止相应中断(IRQ/FIQ)。
-
保存返回地址 到对应模式的LR(通常是PC+偏移)。
-
设置PC 为异常向量表中对应异常的入口地址,跳转到异常处理程序。
-
软件在异常处理程序中保存现场(压栈等),处理异常,恢复现场,通过恢复SPSR到CPSR、LR到PC 实现异常返回(如
MOVS PC, LR)。
异常向量与异常向量表
-
异常向量:每种异常类型对应的固定内存入口地址,处理器发生异常时会自动跳转到该地址执行代码
-
异常向量表:一段连续的存储空间,按固定顺序排列所有异常向量,每个向量通常占4字节(存放跳转指令或入口地址)
-
向量表基址可通过VBAR(向量基地址寄存器)配置,常见异常包括:复位、未定义指令、SVC、预取中止、数据中止、IRQ、FIQ