嵌入式 - ARM1
一.嵌入式系统基础概述
嵌入式系统是以应用为中心、以计算机技术为基础,软硬件可裁剪的专用计算机系统。
计算机系统的软件基本组成:系统软件(如操作系统)和应用软件
计算机系统的硬件基本组成运算器、控制器、存储器、输入设备、输出设备
CPU (Center Processing Unit):中央处理器是一种通用的强大的处理器
GPU (Graphics Processing Unit):图形处理器
FPU(Float Processing Unit):浮点型运算单元
MPU(Micro Process Unit):微处理器偏向处理复杂任务,高端嵌入式设备的核心计算
MCU(Micro Contral Unit):微控制器偏向控制和高集成度
DSP(Digital signal Process):数字信号处理器专为高度复杂数学运算设计
SOC(System On Chip):片上系统是一个集成化的概念,将 MPU、MCU、GPU、DSP 等多种
功能模块集成在一块芯片上
二.处理器架构与指令集
1.CISC 与 RISC
1. CISC(Complex Instuction Set Computer)
复杂指令集计算机,指令集庞大且复杂,试图用一条指令完成多种操作,不同指令周期差异大,一些复杂指令需要多个时钟周期,可以减少程序指令条数,硬件结构复杂
2. RISC(Reduced Instuction Set Computer)
精简指令集计算机,选取使用频率高的简单指令,绝大多数指令在单时钟周期内完成,指令格式规整,可以提高指令的并行度和执行效率,硬件实现相对简单
2. 冯诺依曼架构
指令和数据共享同一个存储空间和同一套总线,硬件结构简单,成本低,灵活性高,但CPU无法同时取指令和去操作数,效率低下,如通用计算机
3. 哈佛架构
指令和数据拥有独立的存储空间和独立的总线,即拥有两套总线,结构复杂,成本高,不够灵活,可以同时读取指令和数据,如DSP\MCU
4. ARM 内核版本与系列
核心架构版本:ARM1 - ARM11、ARM - A、ARM - R、ARM - M
指令集版本:V1 - V9
ARM内核属于改进的哈佛架构,拥有哈佛架构的高性能CPU缓存和总线,以及冯诺依曼架构的灵活性接口
三、计算机体系结构
1. ARM内核
1. ALU(Arithmetic Logic Unit)
算术逻辑单元,负责执行所有数学运算(加减乘除)和逻辑运算(与或非)
2. 寄存器组
r0 - r12:通用寄存器,用于暂存数据和地址。
r13 (sp - Stack Pointer):栈指针,指向当前栈顶地址。
r14 (lr - Link Register):链接寄存器,用于存储子程序的返回地址。
r15 (pc - Program Counter):程序计数器,存放下一条要执行的指令的地址。
3. MMU(内存管理单元)
负责虚拟地址到物理地址的转换、内存访问权限的管理。这是实现现代操作系统(如Linux)内存隔离和保护的基础。
4. Cache(高速缓存)
一种小型但极快的内存,用于缓存CPU最近可能访问的指令和数据,以弥补CPU和慢速主内存之间的速度差距。
5. CPSR / SPSR (程序状态寄存器)
CPSR:存储当前程序的状态信息,如运算结果是否为负(N)、零(Z)、进位(C)、溢出(V)等
即NZCV标志位,以及中断禁用、运行模式等。
SPSR:当发生异常或中断时,用于备份CPSR的状态,以便异常处理结束后能恢复现场。
2. 总线系统
1. 地址总线
CPU通过它指定要访问的内存或外设的地址。宽度(32位)决定了CPU的寻址能力
2. 数据总线
在CPU和内存/外设之间传输实际数据
3. 控制总线
传输各种控制信号(读/写、中断、时钟等)
4. 总线类型
AHB(Advansed High-performance Bus):连接高速设备,如内存控制器、DMA
APB(Advanced Peripheral Bus):一种典型的多总线分层结构,用于优化系统性能。
连接低速外设,如GPIO、UART、Timer。
3. 外设寄存器
1. GPIO Register
2. timer
3. Uart
4. RAM(Random Access Memory)
4. 内存映射
0x00000000 - 0xFFFFFFFF 是一个32位系统的完整4GB线性地址空间。
地址空间从低到高通常被划分为不同区域:
代码段 (.text):存放程序指令。
已初始化数据段 (.data):存放已初始化的全局变量和静态变量。
未初始化数据段 (.bss):存放未初始化的全局变量和静态变量。
堆区 (heap):动态分配内存的区域(malloc
)。
栈区 (stack):用于存储函数调用时的局部变量、返回地址等。顶部区域常保留给内核使用。
四、ARM工作模式
用户模式 (User):正常程序执行模式,权限受限。
FIQ模式 (Fast Interrupt):为处理高速数据传输的中断而设计。
IRQ模式 (Interrupt):用于处理普通中断。
管理模式 (Supervisor):CPU复位或执行SWI指令后进入的操作系统保护模式。
中止模式 (Abort):当存取异常时进入,用于处理内存访问错误。
未定义模式 (Undefined):当执行未定义指令时进入。
系统模式 (System):运行特权级操作系统任务的特权模式
五、异常向量表
异常向量表是一块固定的内存地址区域(0x0000 0000,0xFFFF 0000)
存放着各种异常处理程序的入口地址
它是CPU硬件与软件异常处理程序之间的桥梁,是操作系统实现中断管理和错误处理的基础机制。
工作原理:
当发生异常(如中断、复位、执行未定义指令等)时,CPU会自动跳转到向量表中对应的固定地址去执行指令。每个异常类型在表中有且仅有一个占位。
异常向量表地址分配:
0x00:复位(Reset)
0x04:未定义指令(Undifined Instruction)
0x08:软件中断(SWI)
0x0C:指令预取中止(Prefetch Abort)
0x10:数据访问中止(Data Abort)
0x18:IRQ中断
0x1C:FIQ中断