嵌入式系统核心概念:从RISC/CISC到ARM架构的10个关键问题

📅 2026/7/17 4:55:37
嵌入式系统核心概念:从RISC/CISC到ARM架构的10个关键问题
1. RISC和CISC的区别与特点RISC精简指令集计算机指令集简单、规整每条指令执行时间接近指令长度固定通常为32位采用加载/存储架构只有load/store指令能访问内存大量使用寄存器减少内存访问代表架构ARM、RISC-V、MIPS、PowerPC优点功耗低、面积小、适合嵌入式系统CISC复杂指令集计算机指令集复杂、功能强大一条指令可完成复杂操作指令长度可变支持内存到内存的直接操作寄存器数量相对较少代表架构x86、x86-64优点代码密度高、向后兼容性好对比总结RISC追求简单高效适合移动和嵌入式设备CISC追求功能强大适合桌面和服务器。现代处理器常采用混合设计如ARM的Thumb指令集。2. Cortex-A7内核中的通用寄存器数量Cortex-A7处理器采用ARMv7-A架构其通用寄存器配置如下31个32位通用寄存器R0-R30其中R13通常用作栈指针SPR14通常用作链接寄存器LRR15为程序计数器PC加上当前程序状态寄存器CPSR此外ARM架构还有7组备份寄存器对应不同的处理器模式但这些不属于通用寄存器范畴。3. PC、LR、SP、CPSR、SPSR寄存器作用详解寄存器全称主要作用备注PCProgram Counter存储下一条要执行的指令地址ARM中PC 当前指令地址 8三级流水线LRLink Register保存子程序返回地址BL指令自动将返回地址存入LRSPStack Pointer指向当前栈顶位置不同模式有独立的SPR13CPSRCurrent Program Status Register存储当前处理器状态信息包含条件标志、中断禁止位、处理器模式等SPSRSaved Program Status Register异常发生时保存CPSR的值异常返回时恢复CPSR4. MMU和Cache的作用MMU内存管理单元虚拟地址到物理地址的转换通过页表实现地址映射内存保护设置页面访问权限读/写/执行内存隔离不同进程使用独立的地址空间实现需求分页按需加载页面提高内存利用率Cache高速缓存减少处理器访问内存的延迟利用程序局部性原理时间局部性和空间局部性分级结构L1 Cache指令/数据分离、L2 Cache、L3 Cache写策略写直达Write-Through和写回Write-Back映射方式直接映射、组相联、全相联5. NOR Flash和NAND Flash的区别简单来说Nor Flash 的接口和行为看起来就像一块只读的内存这让 CPU 可以直接从它里面“取指令”执行。像内存一样的接口它拥有独立的地址总线和数据总线。CPU 只要给出一个地址Nor Flash 就能直接返回这个地址上存储的数据这个过程和读取普通内存几乎没有区别。NAND Flash 则不同它的地址、数据和命令共用 I/O 引脚CPU 无法直接通过地址取数据所以通常不支持 XIP。随机读取速度快Nor Flash 的随机读取速度很快通常在70ns ~ 90ns左右。这个速度虽然比 CPU 主频慢但足以让 CPU 在上电初期直接从它里面执行代码特别是启动代码。这也完全对应了你的0x00000000就是 Nor Flash 的起始地址因为这是 Cortex-A7 上电后默认的取指位置。 使用限制写入和擦除的特殊规则Nor Flash 虽然在读取上像内存但在“写入”操作上则有完全不同的、更复杂的规则。这也是为什么你的程序代码可以放在里面直接运行但变量数据必须放在那 4KB RAM 里。必须先擦除后写入你不能像修改内存那样直接改写 Nor Flash 的内容。任何写入操作前都必须先按“块Block”为单位进行擦除将目标区域的所有位都变成“1”。写入速度慢相比于读取Nor Flash 的写入编程和擦除速度要慢得多。比如擦除一个 64KB 的块典型耗时约18ms。写入需通过命令序列不像读取那样直接给地址就行写入和擦除操作都需要向 Flash 发送一系列特定的命令来触发内部操作。例如擦除操作可能对应一个“扇区擦除命令序列”特性NOR FlashNAND Flash接口并行接口支持XIP串行接口需控制器读取速度快随机访问慢顺序访问写入/擦除速度慢快容量较小通常≤256MB大GB到TB级成本高单位容量低单位容量可靠性高位错误率低较低需要ECC校验主要用途存储Bootloader、固件存储数据、文件系统寿命10万次擦写100万次擦写6. ARM处理器的7种工作模式用户模式User, usr正常程序执行模式权限受限系统模式System, sys运行特权操作系统任务快速中断模式FIQ, fiq处理高速数据传输、通道处理外部中断模式IRQ, irq用于通用中断处理管理模式Supervisor, svc操作系统保护模式复位和软中断进入中止模式Abort, abt处理内存访问异常未定义模式Undefined, und处理未定义指令异常模式切换通过异常或直接修改CPSR模式位实现。除用户模式外其他均为特权模式。7. ARM异常处理流程// ARM异常处理伪代码流程 1. 保存现场 - 将CPSR保存到SPSR_mode - 将返回地址保存到LR_mode - 设置CPSR模式位为对应异常模式 - 禁止IRQ如果为FIQ则禁止FIQ 跳转到异常向量表 PC 异常向量地址0x00-0x1C 执行异常处理程序 保存通用寄存器入栈 处理异常原因 恢复通用寄存器出栈 异常返回 从SPSR恢复CPSR 从LR恢复PC注意调整偏移8. 异常向量和异常向量表异常向量表ARM处理器预留的固定地址区域每个异常对应一个4字节的入口地址。地址异常类型进入模式0x00复位Reset管理模式0x04未定义指令未定义模式0x08软件中断SWI管理模式0x0C预取中止中止模式0x10数据中止中止模式0x14保留保留0x18IRQ中断IRQ模式0x1CFIQ中断FIQ模式9. AHB和APB总线对比AHBAdvanced High-performance Bus高性能系统总线连接高速设备支持流水线操作、突发传输、分块传输多主设备仲裁支持总线分割和重试典型时钟频率100-200MHz连接设备CPU、DMA、内存控制器、高速外设APBAdvanced Peripheral Bus低功耗外设总线连接低速设备简单非流水线协议适合寄存器访问单主设备通常为AHB-APB桥典型时钟频率50MHz以下连接设备UART、I2C、SPI、GPIO、定时器等总线架构典型的ARM SoC采用AHB APB层次结构AHB作为系统主干APB通过桥接器连接低速外设。10. i.MX6ULL芯片内核版本i.MX6ULL是NXP推出的高性能、低功耗应用处理器其内核信息如下内核架构ARM Cortex-A7架构版本ARMv7-A核心数量单核或双核i.MX6ULL为单核主频528MHz/696MHz/900MHz不同型号指令集ARM、Thumb-2、NEON SIMD浮点单元VFPv4缓存32KB L1 I-Cache32KB L1 D-Cache128KB L2 CacheLinux内核支持i.MX6ULL官方支持Linux 4.x/5.x内核NXP提供长期维护的LTS内核分支。总结本文系统梳理了嵌入式系统和ARM架构中的10个核心概念从指令集架构到具体芯片实现为嵌入式开发提供了全面的基础知识参考。理解这些概念有助于更好地进行底层驱动开发和系统优化。