4. 复位与时钟初始化调试
Layerscape 处理器上电后能否进入可调试状态,取决于复位释放顺序、RCW 配置字是否正确加载,以及时钟树与 PLL 是否按预期锁定。很多“板子完全无反应”或“串口只打印几个乱码字符”的问题,根源并不在 DDR 或内核,而在复位与时钟初始化阶段。本章围绕复位流程、RCW 加载、时钟树与 PLL 锁定展开,并给出通过 JTAG 与串口观察启动早期状态的定位方法。
一、复位流程与复位源识别
Layerscape 的复位并非单一信号,而是一组分层复位:上电复位(POR)、外部硬复位(RESET_REQ_B)、看门狗复位、软件复位以及各功能模块的软复位。POR 会复位整个芯片,包括复位配置逻辑;而模块软复位只影响对应 IP 块。调试时首先要确认“当前是哪一种复位”,因为不同复位源决定了 RCW 是否被重新采样。
关键机制在于:RCW(Reset Configuration Word)只在 POR 或硬复位释放时由芯片从指定来源采样一次。若只是软件复位或看门狗复位,RCW 不会被重新加载,此时若怀疑 RCW 配置错误,必须执行真正的 POR 才能验证。因此,遇到启动异常时,第一步应通过 JTAG 读取复位状态寄存器(如 RSTSR 类寄存器)判断复位源,而不是盲目改 RCW。
复位释放顺序也有讲究:芯片内部会先释放复位配置逻辑,再释放时钟与 PLL,最后释放 CPU 核。若外部复位芯片(如 PMIC 或复位监控器)释放过慢,或 PLL 尚未锁定就释放 CPU,CPU 可能取到无效指令。典型现象是 JTAG 能连上 TAP,但 CPU 无法停在复位向量处。
二、RCW 配置与加载来源
RCW 是一组决定启动介质、时钟选择、SerDes 参考时钟、DDR 类型、CPU 频率比等关键参数的配置字。它通常存放在 NOR Flash、SD/eMMC 或由外部 CPLD/FPGA 通过 I2C/SPI 提供。RCW 的加载来源由芯片的复位配置引脚(如 RCW_SRC[0:3])在上电时采样决定。
调试 RCW 时,应重点关注以下几类字段:
- 启动介质选择:决定 BootROM 从哪个接口读取 RCW 和后续镜像。
- 时钟源选择:SYSCLK 是来自外部晶振还是 SerDes 参考时钟,直接影响 PLL 输入频率。
- PLL 倍频比:决定 CPU、DDR、平台时钟的最终频率。
- SerDes 协议与参考时钟:影响 PCIe、SATA、SGMII 等高速接口能否建立链路。
若 RCW 中时钟源或倍频比配置错误,最直接的表现是 PLL 无法锁定,或锁定后频率与预期不符。此时串口可能完全无输出,因为 UART 时钟也来自 PLL。一个实用的排查手段是:用示波器测量 SYSCLK 输入是否正常,再通过 JTAG 读取 PLL 状态寄存器,确认各 PLL 的 LOCK 位是否置位。
三、时钟树与 PLL 锁定观察
Layerscape 的时钟树通常由外部参考时钟(如 100MHz 差分或 25MHz 单端)进入芯片,经 PLL 倍频后生成 CPU、DDR、平台、外设等各级时钟。PLL 锁定是一个模拟过程,需要稳定的参考时钟和正确的反馈分频配置。若参考时钟抖动过大、电源纹波超标或 RCW 中倍频比超出 PLL 工作范围,LOCK 位会一直为 0。
通过 JTAG 可以读取 PLL 控制与状态寄存器,观察 LOCK 位、当前倍频比和参考时钟选择。若 LOCK 位为 0,应依次检查:参考时钟是否存在且频率正确、PLL 供电是否正常、RCW 中该 PLL 是否被使能、复位是否已释放。若 LOCK 位为 1 但频率不对,则重点核对 RCW 中的倍频比字段与参考时钟频率是否匹配。
四、通过 JTAG 与串口定位启动失败
实际调试中,建议按“先复位、再时钟、后启动介质”的顺序排查。以下是一组可参考的观察步骤与判断依据,参数为示例,实际值需以具体芯片手册和板卡设计为准。
- 确认 JTAG 链路:用调试器扫描 TAP,确认能识别到 CPU 核。若识别不到,先检查 JTAG 参考时钟、复位释放和 TRST 连接。
- 读取复位状态:通过 JTAG 读取 RSTSR,确认最近一次复位源。若为看门狗或软件复位,先执行一次 POR 再观察。
- 检查 PLL LOCK:读取各 PLL 状态寄存器,确认 LOCK 位。示例:若 SYSCLK 为 100MHz,RCW 配置 CPU PLL 倍频比为 16,则期望 CPU 频率约 1.6GHz;若 LOCK 为 0,则先查参考时钟和供电。
- 观察串口输出:在 UART 引脚上接串口工具,波特率通常由 RCW 中的 UART 时钟分频决定。若完全无输出,用示波器测 UART TX 是否有起始位活动;若有乱码,则重点核对波特率与 UART 时钟源。
- 交叉验证 RCW:通过 JTAG 读取 RCW 影子寄存器,与设计文件比对。若发现启动介质或时钟源字段不符,检查 RCW_SRC 引脚电平和存储介质内容。
五、常见故障与快速对照
| 现象 | 可能原因 | 观察手段 | 处理方向 |
|---|---|---|---|
| JTAG 无法识别 TAP | 复位未释放、JTAG 时钟缺失 | 示波器测 RESET_REQ_B、TCK | 检查复位芯片与上拉 |
| JTAG 可连,CPU 不执行 | PLL 未锁定、RCW 时钟源错误 | 读 PLL LOCK 位、RCW 影子寄存器 | 修正 RCW 或参考时钟 |
| 串口无任何输出 | UART 时钟未起、启动介质错误 | 测 UART TX 活动、读 BootROM 状态 | 核对 RCW 启动介质字段 |
| 串口输出乱码 | 波特率不匹配、UART 时钟分频错误 | 示波器测位宽、读 UART 时钟配置 | 调整波特率或 RCW 分频 |
复位与时钟初始化是 Layerscape 板级 Bring-up 的第一道关口。把复位源识别、RCW 加载条件、PLL 锁定观察这三件事串起来,再配合 JTAG 寄存器读取和串口/示波器测量,就能把“完全无反应”的模糊问题收敛到具体的配置字段或硬件节点上,为后续 DDR 和启动镜像调试打下可靠基础。