ARM体系结构与嵌入式系统
第一部分:嵌入式系统概述
- 嵌入式系统定义
以应用为中心,以计算机技术为基础,软硬件可剪裁的专用计算机系统。根据用户需求(功耗、体积、环境、稳定性、可靠性)进行定制。
- 计算机系统基本组成
· 软件系统:应用层(APP)、操作系统(SYS)
· 硬件系统:运算器、控制器、存储器、输入设备、输出设备
- 处理器基本分类
· CPU(中央处理单元):强大通用型处理器
· GPU(图形处理单元):图形处理单元
· FPU(浮点运算单元):浮点运算单元
· NPU(神经网络处理单元):神经网络处理器
- 嵌入式领域处理器分类
· MPU(微处理器):通用型,偏向处理
· MCU(微控制器):集成度高,偏向控制,单片机即单片微型计算机系统
· DSP(数字信号处理器):为高强度数学运算而设计的一种专用芯片
· SoC(片上系统):一种集成和设计的理念,将MPU、MCU、DSP等功能模块整合在同一芯片上,形成一个功能完善的系统
- SoC内部结构
包含多个内核(如kernel1、kernel2)以及丰富的外设接口,如GPIO、PWM、UART、定时器、硬盘控制器等。
第二部分:存储器分类与特性
- RAM(随机访问存储器)
· 可被处理器直接寻址
· 单位存储空间价格高
· 易失性存储器
· 读写速度快
- ROM(只读存储器)
· 一般不可被处理器直接寻址
· 单位存储空间价格低
· 非易失性存储器
· 读写速度慢
第三部分:计算机架构与指令集
- 主流架构
· x86
· ARM
· MIPS
· RISC-V
- 指令集分类
· CISC(复杂指令集计算机):指令系统复杂,如x86架构(X64为其64位扩展)
· RISC(精简指令集计算机):指令系统精简,如ARM架构
- ARM指令集版本演进
V1-V4-V9,包含V4、V5、V7、V9等版本。
- ARM内核型号
· 经典系列:ARM7、ARM9、ARM11
· Cortex系列:
· Cortex-A:应用处理器,用于高性能场景(如手机)
· Cortex-R:实时处理器,用于高实时性场景
· Cortex-M:微控制器,用于低功耗控制场景
第四部分:ARM内部结构与寄存器
- 机器字长
ARM架构为32位,机器字长4字节。
- 通用寄存器
· R0~R15:通用寄存器
· R13(sp):栈指针寄存器,指向当前栈顶
· R14(lr):链接寄存器,保存函数返回地址
· R15(pc):程序计数器,指向下一条要执行的指令地址
- 关键硬件模块
· ALU(算术逻辑单元):执行算术和逻辑运算
· Cache(高速缓存):分为iCache(指令缓存)和dCache(数据缓存),用于提高访存速度
· MMU(内存管理单元):负责虚拟地址到物理地址的映射
· CPSR(当前程序状态寄存器):保存当前程序运行状态
· SPSR(备份程序状态寄存器):在异常发生时保存CPSR的值
- 总线结构
· 数据总线:32根
· 地址总线:32根,寻址范围0x00000000 ~ 0xFFFFFFFF
· 控制总线:若干根,用于传输控制信号
第五部分:内存管理(MMU)与虚拟内存
- MMU的作用
· 关闭MMU:直接访问物理内存空间
· 打开MMU:通过MMU将物理内存空间映射为虚拟内存空间
- 虚拟内存空间布局(由高到低)
· 操作系统内核区
· 栈区:存放局部变量,向低地址方向增长
· 堆区:动态分配内存,向高地址方向增长
· BSS段(未初始化区):存放未初始化的全局变量和静态变量,自动清零
· 数据段(已初始化区):存放已初始化的全局变量和静态变量
· 代码段:存放程序指令
- 内存映射
通过MMU将外设(如GPIO、PWM、RAM、ROM等)映射到虚拟内存空间的特定地址范围,实现统一编址访问。
第六部分:程序编译与内存布局
- GCC编译流程
· 预处理:.c -> .i(展开宏、头文件)
· 编译:.i -> .s(生成汇编代码)
· 汇编:.s -> .o(生成目标文件)
· 链接:.o -> .out(生成可执行文件)
- 程序在内存中的布局
· 代码段:存放函数指令,如main、fun0、fun1等函数体
· 栈区:存放函数的局部变量和参数,栈帧随函数调用而创建和销毁
· 栈指针R13(sp)向下移动分配空间,向上移动释放空间
- 栈帧(Stack Frame)
每次函数调用都会在栈上创建一个新的栈帧,用于保存函数的局部变量、参数和返回地址。函数返回时,栈帧被销毁。
第七部分:流水线与总线
- 三级流水线
· 取指:从内存中取出指令
· 译码:解析指令的操作码和操作数
· 执行:执行指令的实际操作
流水线技术允许多条指令同时处于不同执行阶段,提高CPU执行效率。
- 总线类型
· AHB(先进的高性能总线):用于连接高性能模块(如CPU、内存控制器、DMA等)
· APB(先进的高性能外设总线):用于连接低速外设(如UART、GPIO、定时器等)
关键概念辨析
MPU vs MCU
· MPU:微处理器,通用型,偏向处理,通常需要外接内存和外设
· MCU:微控制器,集成度高,偏向控制,内部集成内存和外设
RAM vs ROM
· RAM:易失性,读写快,可随机访问,用于运行时数据存储
· ROM:非易失性,读写慢,一般用于存储固件或启动代码
CISC vs RISC
· CISC:指令复杂,一条指令可完成较多操作,硬件实现复杂
· RISC:指令精简,每条指令执行时间短,便于流水线优化,硬件实现简单
MMU开启与关闭
· 关闭MMU:直接操作物理地址,适用于裸机或简单嵌入式系统
· 开启MMU:使用虚拟地址,提供内存保护和地址映射,适用于复杂操作系统