2. 硬件基础回顾

在开始联合 Bring-up 之前,必须先把 SoC/MCU 的硬件骨架在脑中建立成一张可追踪的“地图”。电源、时钟、复位、启动介质这四条链路彼此耦合:电源没稳,时钟无法锁定;时钟没起,复位释放后 CPU 也取不到指令;启动介质选错,即使前三者正常,系统仍会停在 BootROM。本节从硬件结构出发,为后续联合调试建立统一的观察坐标系。

一、电源树结构:从输入到负载的层级分配

电源树描述的是电能从板级输入到各负载的分配关系。典型结构为:适配器或电池输入 → 保护与滤波 → 一级 DC-DC 降压 → 多路二级 LDO/DC-DC → 各电源域(VDD_CORE、VDD_IO、VDD_DDR、VDD_PLL、VDD_ANA 等)。每一级都有使能(EN)、电源良好(PG)和上电时序要求。

理解电源树的关键不是记住电压值,而是记住三件事:谁给谁供电、谁控制谁的使能、谁先谁后上电。例如 DDR 电源通常要求先于 DDR 控制器 IO 上电,PLL 模拟电源要求最干净且最后上电。若时序错误,可能出现 IO 倒灌、锁存或 PLL 失锁。

Bring-up 时优先测量每一路电源的 PG 信号与上电斜率,而不是只看万用表电压值。PG 未拉高,后级使能就不会释放,整条链路会“静默卡死”。

二、时钟树结构:从晶振到各时钟域

时钟树描述参考时钟如何经过 PLL、分频器、门控单元分配到 CPU、总线、外设和 DDR。典型路径为:晶振(XO/TCXO)→ 主 PLL → 各分频器 → 时钟多路选择器(MUX)→ 门控(GATE)→ 各模块。部分 SoC 还有独立音频 PLL、DDR PLL、USB PLL。

时钟树调试的核心是“先有源,再有锁,再有分频,再有门控”。若晶振未起振,PLL 的 LOCK 位永远为 0;若 PLL 未锁定就切换时钟源,CPU 可能跑飞。因此 Bring-up 顺序通常是:确认晶振波形 → 配置 PLL → 等待 LOCK → 切换时钟源 → 打开模块门控。

三、复位类型与来源

复位不是单一信号,而是一组按域划分的复位网络。常见类型包括:上电复位(POR)、系统复位、看门狗复位、软件复位、外设独立复位、调试复位。来源可能是复位芯片、PMIC、SoC 内部 POR 模块、看门狗定时器或调试器。

  • POR:上电时产生,释放后 CPU 从 BootROM 开始执行。
  • 系统复位:复位大部分模块,但可能保留 DDR 或 RTC 域。
  • 外设复位:仅复位单个 IP,常用于驱动初始化。
  • 看门狗复位:软件跑飞后的兜底,需确认复位原因寄存器。
调试时若发现系统反复重启,第一步应读取复位原因寄存器(Reset Reason),区分是 POR、看门狗还是软件主动复位,否则容易误判为电源问题。

四、启动介质与启动阶段划分

启动介质决定 BootROM 从哪里加载第一阶段代码。常见介质有:SPI NOR、SPI NAND、eMMC、SD 卡、UART/USB 下载模式。SoC 通常通过启动模式引脚(BOOT_MODE)或 eFuse 选择介质。

启动阶段一般划分为:

  1. BootROM:芯片内部固化代码,初始化最小时钟与介质控制器,加载 SPL/一级引导。
  2. SPL/一级引导:初始化 DDR、时钟树,加载 U-Boot 或二级引导。
  3. 二级引导:加载内核、设备树,准备操作系统运行环境。
  4. 内核/RTOS:挂载根文件系统,启动用户空间。

联合 Bring-up 时,启动阶段是“验收点”:电源树正常 → 时钟树锁定 → 复位释放 → BootROM 能读到介质 → SPL 能初始化 DDR。任何一环失败,都会停在对应阶段。

五、典型 SoC/MCU 系统框图与联合关系

下图把电源树、时钟树、复位网络、启动介质与 SoC 内部核心域放在同一张关系图中,便于建立“四链联合”的整体视角。

电源树 输入 12V / 适配器 一级 DC-DC → 5V / 3.3V VDD_CORE VDD_IO VDD_DDR VDD_PLL 时钟树 晶振 24MHz / TCXO 主 PLL → LOCK CPU CLK BUS CLK DDR CLK PERI CLK 复位网络 POR / 复位芯片 看门狗 / 软件复位 系统复位 外设复位 复位原因寄存器 SoC / MCU 核心域 CPU · 总线 · DDR 控制器 · 外设 IP · BootROM PLL · 复位控制器 · 时钟门控 · 启动模式选择 电源域 / 时钟域 / 复位域 在此交汇 启动介质 SPI NOR / SPI NAND / eMMC SD 卡 / UART / USB 下载 启动阶段 BootROM → SPL → 二级引导 → 内核 / RTOS → 用户空间 调试观测点 电源 PG / 时钟 LOCK / 复位状态 串口日志 / JTAG / 启动模式引脚 供电 时钟 复位 加载 执行 观测

六、联合 Bring-up 的检查清单

链路 关键对象 典型观测点 失败现象
电源树 DC-DC、LDO、PG 各路电压、上电斜率、PG 电平 后级无电、反复重启
时钟树 晶振、PLL、分频、门控 晶振波形、LOCK 位、时钟输出 CPU 不跑、外设无时钟
复位网络 POR、看门狗、外设复位 复位原因寄存器、复位引脚 停在 BootROM、循环复位
启动介质 SPI NOR、eMMC、SD 启动模式引脚、介质读写波形 BootROM 报无启动设备
启动阶段 BootROM、SPL、二级引导 串口日志、阶段跳转点 卡在 DDR 初始化或加载内核

七、常见误区与复盘

误区一:只测电压,不测时序。电源电压正常不代表上电顺序正确,PG 未释放会导致后级永远不工作。

误区二:忽略时钟 LOCK 位。PLL 未锁定就切换时钟源,CPU 可能执行随机指令,表现为“莫名跑飞”。

误区三:把复位当成单一信号。系统复位、外设复位、调试复位作用域不同,混用会导致 DDR 数据丢失或外设状态异常。

误区四:启动介质选择与启动模式引脚不一致。硬件拨码与软件配置不匹配时,BootROM 会直接跳过该介质。

建议在 Bring-up 初期建立一张“四链联合检查表”:每测一路电源,记录 PG;每配一个 PLL,记录 LOCK;每释放一次复位,记录原因;每切换一次启动介质,记录串口首行日志。这样任何异常都能快速定位到具体链路。

掌握电源树、时钟树、复位网络、启动介质与启动阶段这五个基础结构后,后续的联合调试就不再是“盲调”,而是沿着明确的信号流和状态流逐级验证。硬件基础回顾的价值,正在于把复杂的 SoC/MCU 系统拆解成可观测、可测量、可复位的若干条链路。