2. Sitara硬件平台与最小系统构建

Sitara 处理器(如 AM335x、AM437x、AM57xx 系列)本身只是一颗 SoC,它要真正跑起来,必须与外围的电源、时钟、DDR、Flash、调试接口共同组成一个"最小系统"。所谓最小系统,是指去掉所有业务外设之后,仍能让 SoC 完成上电、复位、时钟锁定、DDR 初始化、从 Flash 加载并运行引导程序、并通过串口或 JTAG 与开发者交互的最小硬件集合。工业网关的软件平台再复杂,最终都建立在这个最小系统之上,因此本章的重点不是"画一块板子",而是理解核心板与底板的职责划分、电源与时钟的依赖关系、存储选型的取舍,以及如何用串口和 JTAG 验证系统真的活了。

核心板与底板的职责划分

工业网关常见的做法是"核心板 + 底板"两级结构。核心板把 SoC、DDR、eMMC/NAND、PMIC、主晶振、复位电路集成在一块小尺寸高密度板上,做成可复用的模块;底板则承载以太网 PHY、RS485/RS232 收发器、CAN 收发器、DI/DO、隔离电源、工业连接器等现场接口。这样划分的好处是:核心板经过一次 DDR 布线和电源验证后即可批量复用,底板只需按项目裁剪接口,降低硬件迭代风险。

核心板设计的关键约束有三点。第一是 DDR 走线,必须做等长与阻抗控制,通常要求同组数据线长度偏差控制在 ±25 mil 以内,地址/命令/控制线相对时钟的偏差更严,且要避免跨分割。第二是电源完整性,SoC 的 VDD_CORE、DDR 电源、IO 电源需要独立去耦,每个电源引脚附近放置 0.1 µF 与 1 µF 组合电容。第三是时钟,主晶振要靠近 SoC 的 OSC 引脚,负载电容按晶振规格匹配,走线尽量短且包地。底板设计的关键则是接口隔离与保护:RS485 要加 TVS 与共模电感,以太网要处理变压器中心抽头与 Bob Smith 端接,DI 输入要加限流与光耦隔离。

电源与时钟树

Sitara 的电源不是单一电压,而是一棵有上电顺序要求的树。以 AM335x 为例,典型电源域包括:VDD_MPU(1.1 V 或 1.26 V,随 OPP 变化)、VDD_CORE(1.1 V)、VDD_RTC(1.8 V)、DDR 电源(1.5 V 或 1.35 V)、以及 3.3 V 的 IO 电源。上电顺序一般要求 RTC 与 IO 先建立,再给 CORE,最后给 MPU,避免内部 ESD 结构倒灌。PMIC(如 TPS65217、TPS65910)通过 I²C 由 SoC 控制,可动态调压实现 DVFS。

时钟树同样分层:一颗 24 MHz 或 25 MHz 主晶振进入 SoC 内部 PLL,经倍频后产生 MPU、DDR、PER 等时钟域;32.768 kHz 晶振供 RTC;以太网 PHY 需要 25 MHz 或 50 MHz 参考时钟,可由 SoC 输出或独立晶振提供。时钟没锁定时,SoC 不会释放复位,串口也不会有任何输出,这是排查"上电无反应"时首先要确认的点。

Sitara 最小系统:电源树 · 时钟树 · 启动链 电源树(上电顺序) DC 5V / 12V 输入 PMIC(TPS65217) ① VDD_RTC 1.8V / IO 3.3V ② VDD_CORE 1.1V ③ VDD_MPU 1.1~1.26V DDR 电源 1.5V / 1.35V PWRON → RESET 释放 时钟树 24 MHz 主晶振 SoC 内部 PLL MPU 时钟域 DDR 时钟域 PER 外设时钟域 32.768 kHz RTC PHY 25/50 MHz 启动链与验证 ROM Code(片内) SPL / MLO(SRAM) U-Boot(DDR 运行) 内核 + 根文件系统 串口 UART0 打印日志 JTAG 连接 CCS 调试

DDR 与 Flash 选型

DDR 选型主要看容量、位宽、速率与温度等级。工业网关跑 Linux 加协议栈,512 MB 是入门,1 GB 更从容;位宽通常 16 bit(单片 DDR3)或 32 bit(两片并联),位宽越大带宽越高但布线越复杂。速率上 DDR3-800/1066 已足够,不必盲目追高,因为速率越高对等长和参考层要求越苛刻。温度等级要选工业级(-40~85 ℃),并注意 DDR 颗粒的刷新率在高温下需要加倍。

Flash 选型在 eMMC、SPI NAND、NOR 之间取舍。eMMC 容量大、读写快、支持坏块管理,适合存放根文件系统与日志,但需要 8 位数据线且对时序有要求;SPI NAND 引脚少、成本低,适合中小容量;NOR 则用于存放 SPL/MLO 与 U-Boot 等关键引导代码,可靠性高、可 XIP。工业网关常见组合是"SPI NOR 放引导 + eMMC 放系统",兼顾可靠性与容量。选型时还要确认 SoC 的启动模式引脚(SYSBOOT)如何配置,因为 ROM Code 会根据这些引脚决定从哪种介质加载 MLO。

调试串口与 JTAG

调试串口是最基础的验证手段。Sitara 的 UART0 通常作为调试口,波特率 115200、8 数据位、无校验、1 停止位。硬件上只需把 SoC 的 UART0_TXD/RXD 经电平转换接到 USB-TTL 或 RS232 收发器,注意 TXD 与 RXD 要交叉连接,GND 必须共地。上电后若能看到 ROM Code 的 "CCCCC" 字符,说明 SoC 已开始运行并等待串口下载;若能看到 U-Boot 的版本与倒计时,说明 DDR 初始化和引导加载都已成功。

JTAG 用于更底层的调试:当串口完全无输出时,可用 CCS 或 OpenOCD 通过 JTAG 连接 SoC 的 TDI/TDO/TCK/TMS/TRST 与 EMU0/EMU1,读取 PC 指针、查看 DDR 控制器寄存器、单步执行 SPL。JTAG 连接要注意 TCK 走线尽量短、加串阻匹配,TRST 要有上拉,EMU0/EMU1 按调试器要求上拉。实际排障顺序通常是:先量各路电源与复位是否正常,再用示波器看主晶振是否起振,然后看串口有无输出,最后才动用 JTAG。

验证最小系统是否成功,可按以下顺序观察:① 上电后各电源电压与上电顺序符合 PMIC 规格;② 主晶振 24 MHz 起振、RTC 32.768 kHz 起振;③ 串口出现 ROM Code 提示或 U-Boot 日志;④ U-Boot 能识别 DDR 容量并打印 "DRAM: 512 MiB";⑤ 能从 Flash 加载内核并进入登录提示符。任一步失败,就停在该步对应的硬件环节排查,不要跳步。

把上述环节串起来,最小系统的构建流程就是:确定核心板与底板分工 → 设计电源树并核对上电顺序 → 设计时钟树并确认 PLL 锁定 → 按容量与温度选 DDR 和 Flash → 引出 UART0 与 JTAG → 上电按顺序验证。只有这条链路每一环都可观测、可判断,后续的工业网关软件平台才有稳定的硬件基础。