学习笔笔记——ARM 嵌入式系统与内核架构

ARM 嵌入式系统与内核架构详解

一、计算机系统基本组成

1.1 计算机硬件系统基本组成

  • CPU(中央处理器):控制单元 + 运算单元 + 寄存器

  • 存储器系统

    • 内存(主存):RAM、ROM

    • 外存:硬盘、闪存等

  • 输入/输出设备

  • 总线系统

1.2 嵌入式系统定义

以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统。
设计考虑因素:功能、体积、环境、稳定性、可靠性、成本、功耗

1.3 处理器分类

类型 全称 特点 应用场景
CPU Central Processing Unit 通用处理器核心 通用计算
GPU Graphics Processing Unit 图形处理单元 图形渲染、并行计算
FPU Float Processing Unit 浮点处理单元 高强度数学运算
MCU Micro Control Unit 微控制器 单片机,片上集成外设
DSP Digital Signal Processing 数字信号处理器 数字信号处理
MPU Micro Processing Unit 微处理器 通用型,性能较强
SoC System on Chip 片上系统 集成多种处理器和功能模块

二、存储器详解

2.1 RAM(随机访问存储器)分类

SRAM(静态RAM)
  • 存储原理:使用晶体管存储0、1(6个晶体管构成1个存储单元)

  • 特点

    • 速度快(访问时间:10-30ns)

    • 成本高(面积大,制造复杂)

    • 存储密度低

    • 不需要刷新电路

    • 功耗相对较低(静态功耗)

  • 应用:Cache(高速缓存)、片上RAM

DRAM(动态RAM)
  • 存储原理:用电容充放电存储0、1(1个晶体管+1个电容)

  • 特点

    • 需要定期刷新(防止电容漏电导致数据丢失)

    • 存储密度高

    • 成本低

    • 速度较SRAM慢(访问时间:50-70ns)

    • 需要外部刷新电路

  • 刷新机制:每隔64ms刷新所有行

SDRAM(同步DRAM)
  • 改进:增加同步时钟,与系统时钟同步

  • 特点

    • 支持突发传输

    • 更高的数据传输率

    • 需要时钟信号

  • 工作模式:单倍数据率

DDR SDRAM(双倍数据率SDRAM)
  • 核心原理:在时钟上升沿和下降沿都传输数据

  • 发展历程

    • DDR1:2倍预取,电压2.5V

    • DDR2:4倍预取,电压1.8V

    • DDR3:8倍预取,电压1.5V

    • DDR4:8倍预取,电压1.2V

    • DDR5:16倍预取,电压1.1V

  • 特点:带宽倍增,功耗降低

iRAM(内部RAM)
  • 本质:SoC内部的SRAM

  • 特点

    • 访问速度最快(与CPU同频率)

    • 功耗最低

    • 容量有限(通常几KB到几MB)

    • 不需要外部总线访问

  • 用途:关键代码段、实时数据、栈空间

2.2 ROM(只读存储器)分类

传统ROM
  • MASK ROM:掩模ROM,工厂编程,不可更改

  • PROM:可编程ROM,一次编程

  • EPROM:可擦除PROM,紫外线擦除

  • EEPROM:电可擦除PROM,按字节擦写

Flash Memory
  • NOR Flash

    • 支持XIP(eXecute In Place)

    • 随机访问速度快

    • 容量较小(通常≤256MB)

    • 价格较高

    • 用于存储引导代码、关键程序

  • NAND Flash

    • 按页/块访问

    • 容量大(GB到TB级别)

    • 价格低

    • 需要坏块管理

    • 用于大容量存储

  • eMMC(嵌入式多媒体卡)

    • 本质:NAND Flash + 控制器 + 标准接口

    • 特点:简化设计,提高可靠性

    • 与SD卡区别:直接焊接在板上,更稳定

三、ARM内核架构详解

3.1 指令集架构

类型 全称 特点 代表架构
CISC Complex Instruction Set Computer 指令复杂,长度可变,微码控制 x86
RISC Reduced Instruction Set Computer 指令精简,长度固定,硬件直接译码 ARM, MIPS, RISC-V

ARM特点:Load/Store架构,大多数指令只能操作寄存器

3.2 ARM架构演进

  • ARMv1-v3:早期版本

  • ARMv4:引入Thumb指令集(16位)

  • ARMv5:增强DSP指令

  • ARMv6:引入SIMD,改进多媒体

  • ARMv7:支持Thumb-2,引入NEON

  • ARMv8:引入64位架构(AArch64)

  • ARMv9:安全性增强,AI加速

3.3 Cortex系列

系列 应用领域 特点 典型型号
Cortex-A 应用处理器 高性能,支持MMU,运行Linux/Android A53, A72, A76
Cortex-R 实时系统 高可靠性,实时响应,错误检测纠正 R4, R5, R52
Cortex-M 微控制器 低功耗,低成本,中断响应快 M0, M3, M4, M7

3.4 ARM内核组成器件(以Cortex-A系列为例)

1. 处理器核心(Core)
  • 取指单元:从内存获取指令

  • 译码单元:将指令解码为微操作

  • 执行单元

    • ALU(算术逻辑单元)

    • FPU(浮点单元)

    • NEON(SIMD单元)

  • 流水线:多级流水线提高效率

2. 寄存器组
  • 通用寄存器(R0-R15)

    • R0-R12:通用目的

    • R13(SP):栈指针

    • R14(LR):链接寄存器(保存返回地址)

    • R15(PC):程序计数器

  • 程序状态寄存器

    • CPSR(Current Program Status Register)

    • SPSR(Saved Program Status Register,异常模式时保存CPSR)

3. 存储系统
  • Cache

    • L1 Cache:分离的指令Cache和数据Cache

    • L2 Cache:统一的指令/数据Cache

    • 缓存一致性协议:MOESI/MESI

  • TLB(Translation Lookaside Buffer):加速虚拟地址转换

  • MMU(Memory Management Unit):内存管理,虚拟地址到物理地址转换

4. 中断控制器
  • GIC(Generic Interrupt Controller)

    • 支持多核中断分发

    • 优先级管理

    • 中断屏蔽

5. 调试系统
  • JTAG/SWD接口

  • ETM(Embedded Trace Macrocell):指令跟踪

  • DWT(Data Watchpoint and Trace):数据观察点

  • ITM(Instrumentation Trace Macrocell):软件跟踪

6. 总线接口
  • AMBA(Advanced Microcontroller Bus Architecture)

    • AXI(Advanced eXtensible Interface):高性能

    • AHB(Advanced High-performance Bus):中等性能

    • APB(Advanced Peripheral Bus):低功耗外设

7. 电源管理
  • 时钟门控:关闭不使用的模块时钟

  • 电源门控:关闭不使用的模块电源

  • 动态电压频率调整(DVFS)

3.5 ARM工作模式(7种)

特权模式
  1. 系统模式(System, sys)

    • 特权级:特权模式

    • 使用寄存器:与用户模式相同

    • 用途:运行操作系统任务

  2. 快速中断模式(FIQ, fiq)

    • 特权级:特权模式

    • 专用寄存器:R8_fiq-R14_fiq

    • 用途:高速中断处理

    • 特点:中断自动屏蔽,有独立寄存器组

  3. 外部中断模式(IRQ, irq)

    • 特权级:特权模式

    • 用途:普通中断处理

    • 特点:比FIQ优先级低

  4. 管理模式(Supervisor, svc)

    • 特权级:特权模式

    • 进入方式:复位、SWI指令

    • 用途:操作系统保护模式,处理软件中断

  5. 中止模式(Abort, abt)

    • 特权级:特权模式

    • 进入方式:数据/指令预取异常

    • 用途:内存保护、虚拟内存管理

  6. 未定义模式(Undefined, und)

    • 特权级:特权模式

    • 进入方式:执行未定义指令

    • 用途:软件仿真、扩展指令集

非特权模式
  1. 用户模式(User, usr)

    • 特权级:非特权模式

    • 限制:不能访问受限资源,不能直接切换模式

    • 用途:运行应用程序

模式切换
  • 自动切换:异常发生时自动切换

  • 手动切换:修改CPSR模式位(只能在特权模式下)

  • 返回用户模式:通过恢复CPSR(从SPSR)或直接修改CPSR

3.6 异常向量表

异常向量表位置
复制代码
地址          异常类型              进入模式
0x00000000    复位                 管理模式
0x00000004    未定义指令           未定义模式
0x00000008    软件中断(SWI)      管理模式
0x0000000C    预取中止             中止模式
0x00000010    数据中止             中止模式
0x00000014    保留                 -
0x00000018    外部中断(IRQ)      外部中断模式
0x0000001C    快速中断(FIQ)      快速中断模式
异常处理流程
  1. 异常发生:CPU检测到异常条件

  2. 保存状态

    • 将下一条指令地址保存到相应模式的LR(R14)

    • 将CPSR保存到相应模式的SPSR

  3. 模式切换:切换到对应的异常模式

  4. PC跳转:跳转到异常向量表对应地址

  5. 中断屏蔽:根据需要屏蔽某些中断

  6. 异常处理:执行异常处理程序

  7. 异常返回

    • 恢复CPSR(从SPSR)

    • 恢复PC(从LR,需要调整)

异常优先级
  1. 复位(最高优先级)

  2. 数据中止

  3. FIQ

  4. IRQ

  5. 预取中止

  6. 未定义指令、SWI(最低优先级)

FIQ与IRQ的区别
特性 FIQ IRQ
优先级
向量位置 0x1C(向量表末尾) 0x18
专用寄存器 R8-R14有专用备份 与用户模式共享
中断屏蔽 自动屏蔽FIQ 不自动屏蔽
使用场景 实时性要求高 普通中断

3.7 寄存器组织细节

Banked寄存器
  • 不同模式有自己的专用寄存器

    • R13(SP):每个模式都有自己的栈指针

    • R14(LR):每个模式都有自己的链接寄存器

    • SPSR:除用户模式外,其他模式都有

CPSR寄存器格式(32位)
复制代码
31 30 29 28  27    ...   8 7 6 5 4   ...   0
N  Z  C  V   保留         I F T   模式位
  • 条件标志位

    • N(Negative):结果为负

    • Z(Zero):结果为零

    • C(Carry):进位/借位

    • V(Overflow):溢出

  • 控制位

    • I:IRQ中断禁止(1=禁止)

    • F:FIQ中断禁止(1=禁止)

    • T:Thumb状态位(1=Thumb模式,0=ARM模式)

    • 模式位[4:0]:指定当前处理器模式

3.8 内存管理

MMU功能
  1. 地址转换:虚拟地址→物理地址

  2. 内存保护:设置访问权限

  3. Cache控制:设置缓存策略

  4. 总线优先级:设置访问优先级

页表结构
  • 一级页表:粗粒度划分(1MB sections)

  • 二级页表:细粒度划分(4KB pages)

  • TLB:缓存最近使用的页表项

内存访问属性
  • 访问权限:无访问/只读/读写

  • 域(Domain):16个域,控制访问权限

  • 缓存策略

    • 可缓存/不可缓存

    • 写回/写通

    • 分配/不分配

3.9 调试与跟踪

调试接口
  • JTAG:标准调试接口,引脚多(5线)

  • SWD:串行调试,引脚少(2线)

  • SWO:串行线输出,用于跟踪

跟踪组件
  • ETM:实时指令跟踪

  • ITM:软件插装跟踪

  • DWT

    • 数据观察点

    • 性能计数

    • 程序流跟踪

四、编程模型细节

4.1 指令流水线

典型的3级流水线:

  1. 取指(Fetch):从内存读取指令

  2. 译码(Decode):解码指令,读取操作数

  3. 执行(Execute):执行操作,写回结果

流水线冲突

  • 结构冲突:资源争用

  • 数据冲突:数据依赖

  • 控制冲突:分支指令

4.2 异常返回指令

指令 功能 说明
MOVS PC, LR 从异常返回 最简单方式
SUBS PC, LR, #4 标准返回 调整LR值
LDMFD SP!, {PC}^ 从栈恢复 恢复CPSR和PC

4.3 中断延迟

  • 最佳情况:3个时钟周期

    • 1周期:检测中断

    • 2周期:流水线刷新

    • 3周期:跳转到向量表

  • 最坏情况:取决于当前指令和流水线状态

4.4 电源管理状态

  1. 运行状态(Run):全速运行

  2. 睡眠状态(Sleep):时钟门控

  3. 停止状态(Stop):部分电源关闭

  4. 待机状态(Standby):仅保持必要逻辑

  5. 关机状态(Shutdown):完全断电

五、总结要点

  1. ARM是RISC架构,采用Load/Store模型

  2. 7种工作模式中,6种为特权模式,1种为用户模式

  3. 异常向量表固定在低地址空间,每个异常对应4字节

  4. FIQ有专用寄存器,中断响应更快

  5. CPSR是关键寄存器,包含条件标志和控制位

  6. MMU实现虚拟内存,提供内存保护和地址转换

  7. 多层次存储体系:寄存器→Cache→主存→外存

  8. 异常处理需要保存上下文,包括PC和CPSR

相关推荐
Darkershadow2 小时前
蓝牙学习之Provision(7)bind (1)
学习·蓝牙·ble·mesh
松涛和鸣2 小时前
55、ARM与IMX6ULL入门
c语言·arm开发·数据库·单片机·sqlite·html
PNP Robotics2 小时前
PNP机器人分享具身操作策略和数据采集
大数据·人工智能·学习·机器人
xiaoxiaoxiaolll2 小时前
从结构到性能|《Adv. Funct. Mater.》MOF基电催化剂的设计策略与应用前沿
学习
hetao17338373 小时前
2026-01-12~01-13 hetao1733837 的刷题笔记
c++·笔记·算法
Yu_Lijing3 小时前
基于C++的《Head First设计模式》笔记——外观模式
c++·笔记·设计模式
VekiSon3 小时前
ARM架构——从嵌入式系统底层到指令执行解析
linux·arm开发·架构
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [driver][base]container
linux·笔记·学习
国科安芯3 小时前
AS32X601的I2C模块操作EEPROM详解
stm32·单片机·嵌入式硬件·架构·安全威胁分析·安全性测试