ARM Cortex-M 复位与取指流程浅析——学习笔记

📅 2026/7/10 21:49:47
ARM Cortex-M 复位与取指流程浅析——学习笔记
本文为个人关于 ARM Cortex-M 内核复位与取指流程的学习笔记基于公开的 ARM 架构参考手册及通用计算机组成原理知识整理欢迎大家讨论并指出问题。复位分为全局复位系统复位软件复位局部复位以下为简约版阐述以及个别例子。全局复位所有的SRAM清零BIST也要启动即芯片自测系统低功耗复位不需要自检SRAM清零。进行全局复位冷启动之后首先物理层苏醒即电压电流PMU与POR起来接下来是时钟与锁相环晶振与PLL心跳起来锁相环得锁住在电压电流还未到额定值时直接进行下一步时极有可能处于0与1的摇摆状态不太稳定等时钟与锁相环稳定后下一步进入BIST自检状态自检完成后若芯片有安全校验需求则进入HSM进行校验通过后加载向量表PC开始取值时钟寄存器开始初始化初始化完成后进入main函数程序运行。系统复位这个有些UNIT不需要重置目的是为了看程序在哪里跑飞了可能是看门狗或者其他的起到一个查看日志的作用。软件复位在硬件层面是不需要重置太多目的是不需要让芯片再次进行冷启动循环不需要物理断电即可保存故障状态。局部复位针对于一些小模块比如CAN出现了问题不需要消耗其他时间重启针对于个别模块进行处理。在内核退出复位状态之后CPU通过PC指针即程序计数器R15寄存器向I-CODE总线发起请求从内存中Flash/ROM/RAM等获取16位或32位机器码机器码进入译码器后解析出对应的指令操作码和指令操作数若为运算则在CPU中进行若是存读数据则是LDR和STR通过总线读取或写到Flash或者SRAM结束对应的操作后PC根据指令长度若是16位长度则PC2若是32位长度则PC4指向下一条取值地址。芯片中的操作皆是由硬件自行处理这里的汇编是用汇编语句对操作进行的描述其他语言同理。