1. 课程导入与工业场景认知

在开始调试一块 Sitara 板卡之前,先要建立三个基本认知:TI Sitara 到底覆盖哪些芯片、工业 Linux 在这些芯片上通常跑什么业务、以及从"能启动"到"能交付"之间还隔着哪些工程环节。这三件事决定了后续所有调试动作的方向——同样是串口没输出,在 AM335x 的 U-Boot 阶段和在 AM62x 的 SPL 阶段,排查路径完全不同。

一、Sitara 产品线的分层结构

Sitara 是 TI 面向工业与嵌入式市场的 ARM 处理器家族,按内核代际和定位大致可分为四层。最底层是 AM335x(Cortex-A8 单核,主频 300MHz~1GHz),它是工业网关、HMI、PLC 通信模块中存量最大的型号,外设以 PRU-ICSS、双千兆以太网、CAN 为特色。往上是 AM437x(Cortex-A9),在 AM335x 基础上增强了显示与工业通信能力。再往上是 AM57x(Cortex-A15 + DSP + PRU),面向需要实时信号处理与运动控制的场景。最新一代是 AM62x / AM64x(Cortex-A53,64 位),AM64x 额外集成两个 Cortex-R5F 实时核,用于 EtherCAT、Profinet 等硬实时协议栈。

选型时最容易踩的坑是"只看主频不看实时性"。例如一个需要 1ms 周期 EtherCAT 从站的设备,用 AM335x 跑 Linux 主站往往抖动超标,而 AM64x 把协议栈放到 R5F 上、Linux 只做管理面,才能稳定达标。因此产品定义阶段就要把"实时任务放在哪个核"确定下来,这会直接影响后续的设备树划分和固件加载方式。

二、工业 Linux 的典型应用场景

Sitara 上的工业 Linux 大致落在四类场景中,它们的调试重点差异明显:

  • 工业网关/协议转换器:Modbus RTU 转 MQTT、CAN 转以太网。重点是串口/CAN 驱动的稳定性、长时间运行的内存泄漏、以及断网重连逻辑。
  • HMI 人机界面:Qt 或 Chromium 界面 + 触摸屏。重点是 GPU/显示子系统、触摸校准、以及界面进程崩溃后的自恢复。
  • 边缘控制器/运动控制:需要确定性周期。重点是 PREEMPT_RT 补丁、CPU 隔离(isolcpus)、中断亲和性设置。
  • 机器视觉/数据采集:摄像头或高速 ADC 采集。重点是 DMA 带宽、内存预留(CMA)、以及数据不丢包的缓冲设计。

这四类场景对"交付"的定义也不同:网关类看重 7×24 小时稳定性,HMI 类看重启动时间和界面流畅度,运动控制类看重周期抖动,视觉类看重吞吐。调试指标必须从场景反推,而不是统一套用"能跑就行"。

三、产品交付全流程框架

从一块 EVM 到一台可出货的设备,完整链路可以概括为:硬件确认 → Boot 链路打通 → 内核与根文件系统定制 → 外设驱动适配 → 应用部署 → 稳定性验证 → 量产烧录与固件升级。其中每一步都有明确的"通过判据",例如 Boot 链路的判据是"断电重启 100 次全部进入内核",而不是"看到一次登录提示符"。

下面这张图把这条链路与各阶段的核心对象、关键判据对应起来,便于在后续章节中定位自己处在哪一环:

Sitara 工业 Linux 产品交付链路与阶段判据 硬件确认 电源/时钟/DDR Boot 链路 ROM→SPL→U-Boot 内核与根FS DTS/驱动/裁剪 外设适配 网口/CAN/显示 应用部署 服务/自启动 稳定性验证 老化/断电/抖动 阶段判据(示例) 各路电压纹波 ≤50mV 串口连续输出 100 次无失败 挂载 rootfs 进入 login iperf 吞吐 ≥900Mbps 断电重启后 服务自动拉起 72h 无重启 抖动 <100μs 贯穿全流程的四类核心挑战 启动失败定位 无输出 / 卡 SPL DDR 训练不过 驱动适配差异 DTS 引脚复用 时钟/电源域 实时性达标 RT 补丁 / 隔离 中断亲和性 量产一致性 烧录脚本 固件升级回滚

四、调试与交付的核心挑战

上图中四类挑战并非并列关系,而是有明确的"暴露顺序"。硬件问题最早暴露,通常在板子回板后的第一次上电就能发现;Boot 问题紧随其后,表现为串口无输出或输出乱码;驱动问题在系统起来后才显现,比如网口能识别但 ping 不通;实时性问题往往要到压力测试阶段才暴露,且最难复现。

以"串口无输出"为例,实际排查应按信号链顺序推进,而不是盲目换线:先确认 SoC 的 UART 引脚是否被复用为其他功能(查 pinmux 寄存器或设备树 pinctrl 节点),再确认 UART 时钟是否使能(查 CM_PER 相关寄存器),然后确认波特率分频是否正确(115200 对应 48MHz 时钟下的分频值),最后才怀疑线序和终端软件。这个顺序的本质是"从 SoC 内部往外查",因为内部配置错误的概率远高于外部接线错误。

调试时建议始终保留一份"已知可用"的参考镜像(TI 官方 SDK 的预编译镜像)。当自建镜像启动失败时,先用参考镜像验证硬件本身没问题,再逐步替换 U-Boot、内核、设备树,这样能把问题范围快速收敛到某一个组件。

五、本节小结与后续定位