4. 上电启动与最小系统验证
最小系统验证的目标不是“板子能亮”,而是确认 SoC 在脱离操作系统、脱离应用固件的条件下,仍能按 i.MX 芯片规定的硬件约束完成一次可复现的启动。i.MX6/8/9 系列的启动链路高度依赖上电时序、复位释放顺序、参考时钟稳定以及 BOOT_MODE/GPIO 启动配置的采样结果。任何一项不满足,Boot ROM 都会在串口日志中给出可判读的失败信号,而不是随机死机。
一、上电时序与复位释放
i.MX 芯片通常要求多路电源按固定顺序建立,典型顺序为 VDD_SNVS(常电域)→ VDD_HIGH(DDR/IO 域)→ VDD_ARM/VDD_SOC(内核域)→ VDD_DRAM 等。以 i.MX8M Mini 为例,数据手册要求 VDD_SNVS_0V8 先于 VDD_ARM 建立,且各域之间的时间差需控制在毫秒级。若 VDD_ARM 先于 VDD_SNVS 上电,内部 POR 电路可能无法正确复位,表现为上电后串口无任何输出。
复位信号 POR_B 必须在上电稳定后保持足够长的低电平时间(典型 ≥ 1ms),并在释放时与 32.768kHz 或 24MHz 参考时钟的稳定建立保持时序关系。实际调试中,建议用示波器同时抓取 VDD_SNVS、VDD_ARM、POR_B 和 24MHz 时钟四路信号,确认 POR_B 释放沿位于所有电源和时钟稳定之后。若使用外部复位芯片,需注意其复位阈值和延迟是否与 i.MX 的 POR 要求匹配。
二、参考时钟与启动模式采样
i.MX 的 Boot ROM 在 POR_B 释放后,会先锁定内部 RC 振荡器,再等待外部参考时钟(通常为 24MHz 晶振或外部时钟输入)稳定。若使用晶振,需确认负载电容与晶振规格匹配;若使用外部有源时钟,需确认电平标准(通常为 1.8V 或 3.3V)与芯片 XTALI 引脚兼容。时钟未稳定时,Boot ROM 不会进入启动模式采样阶段。
启动模式由 BOOT_MODE[1:0] 引脚在 POR_B 释放瞬间的电平决定。i.MX8M 系列典型配置为:00 表示内部 Boot(从 eFUSE 或 QSPI 启动),01 表示串行下载模式(Serial Download),10 表示内部 Boot(从 SD/eMMC 启动),11 保留。这些引脚通常通过电阻上拉/下拉配置,调试阶段建议预留跳线或测试点,便于切换启动介质。注意:BOOT_MODE 引脚仅在 POR_B 释放时被采样一次,运行中改变不会生效。
三、串口日志与Boot ROM行为确认
i.MX 的 Boot ROM 在启动过程中会通过 UART1(默认引脚通常为 UART1_TXD/RXD)输出诊断信息,波特率固定为 115200-8N1。上电后若串口无任何输出,应优先检查:UART 引脚是否被复用为其他功能、电平转换是否正常、串口线序是否正确。若输出乱码,通常是参考时钟频率偏差过大或波特率不匹配。
Boot ROM 的正常输出通常包含:ROM 版本号、DRAM 初始化结果、启动介质识别信息、IVT 加载地址等。若启动失败,会输出十六进制错误码。例如 i.MX8M 系列中,0x00 表示启动介质未找到,0x01 表示 IVT 校验失败,0x02 表示 HAB 认证失败。这些错误码是定位问题的第一手依据,应结合参考手册的 ROM 错误码表逐项排查。
在 Serial Download 模式下,Boot ROM 会等待主机通过 USB 或 UART 发送固件。此时可使用 NXP 的 uuu(Universal Update Utility)工具进行连接测试:
uuu -lsusb
# 预期输出:USB device found, VID:PID = 1fc9:013e (i.MX8M Serial Download)
uuu -b emmc_all flash.bin
# 将 flash.bin 写入 eMMC,验证 Boot ROM 的 USB 下载通道正常
若 uuu -lsusb 无法识别设备,需检查 USB_OTG1 的 ID 引脚电平、VBUS 供电以及 BOOT_MODE 是否确实处于 01 状态。注意:Serial Download 模式下,Boot ROM 不会主动初始化 DDR,因此下载的固件必须包含完整的 DRAM 初始化代码(通常由 Flashloader 或 SPL 提供)。
四、最小系统验证的实操闭环
建议按以下顺序完成一次完整验证,每步均以串口日志或示波器波形作为判据:
- 静态检查:确认 BOOT_MODE 跳线、电源跳线、晶振负载电容与原理图一致。
- 上电波形抓取:示波器四通道分别接 VDD_SNVS、VDD_ARM、POR_B、24MHz,确认时序满足数据手册要求。
- 串口连接:USB-TTL 转接板 TX/RX 交叉连接,GND 共地,波特率 115200。
- 上电观察:记录串口完整输出,对照 ROM 错误码表判断启动阶段。
- 切换启动介质:从 SD 卡启动切换到 eMMC 启动,确认 BOOT_MODE 采样有效。
- Serial Download 验证:切换至 01 模式,用 uuu 工具连接并下载一次固件,确认 USB 通道正常。
完成上述验证后,最小系统即具备可复现的启动能力,后续的 U-Boot 移植、内核启动和量产烧录才有可靠的硬件基础。若任一步骤失败,应回到对应的电源、复位、时钟或启动模式环节,而不是直接修改软件配置。