1. 课程导入与工业平台适配全景
在工业控制、边缘网关、人机界面(HMI)与运动控制等场景中,处理器选型往往决定了整个产品的生命周期成本。TI Sitara 系列正是面向这类嵌入式工业应用的一条完整产品线:它把 ARM Cortex-A 应用核、可编程实时单元(PRU-ICSS)、工业通信外设与多路显示/网络接口集成在同一颗芯片上,使一颗 SoC 既能跑 Linux 应用,又能承担微秒级实时任务。理解 Sitara 的定位,是理解后续 BSP 适配工作的前提。
Sitara 家族内部差异明显,选型时通常按“应用核性能—实时单元—工业外设—封装与温度等级”四个维度权衡。例如 AM335x 属于经典单核/双核 Cortex-A8 平台,常用于成本敏感的 HMI 与协议转换器;AM437x 在 A9 基础上强化了 PRU 与显示能力;AM57xx 采用 Cortex-A15 并集成 DSP 与双 PRU-ICSS,适合机器视觉与多轴运动控制;而 AM64x/AM62x 等新一代器件则采用 Cortex-A53 加 Cortex-R5F/M4F 的异构架构,把实时控制与 Linux 应用进一步解耦。下表给出一个便于对照的示例性定位视图(参数为教学归纳,具体以对应数据手册为准)。
| 系列 | 应用核 | 实时/协处理单元 | 典型工业用途 |
|---|---|---|---|
| AM335x | Cortex-A8 单/双核 | 2×PRU-ICSS | HMI、协议网关、低成本 PLC |
| AM437x | Cortex-A9 | 2×PRU-ICSS | 显示终端、工业通信节点 |
| AM57xx | Cortex-A15 双核 | DSP + 2×PRU-ICSS | 机器视觉、多轴运动控制 |
| AM64x | Cortex-A53 双核 | Cortex-R5F + M4F | 伺服驱动、实时以太网 |
所谓 Linux BSP(Board Support Package),并不是“一个内核”那么简单。它是一套让 Linux 能在特定硬件上稳定启动并驱动全部关键外设的软件集合,通常包含:引导链(ROM Code → SPL/MLO → U-Boot → Kernel)、设备树(DTS/DTB)、内核配置与驱动、根文件系统(RootFS)、工具链与构建系统(如 Yocto/OpenEmbedded 或 TI SDK 提供的 Arago 层),以及用于烧录、调试和量产的辅助工具。BSP 的质量直接决定了产品能否快速从 EVM 迁移到自研板卡。
工业场景对 BSP 的诉求与消费电子有本质区别。第一是确定性:EtherCAT、PROFINET、EtherNet/IP 等实时以太网要求周期抖动稳定在微秒级,这依赖 PRU 固件、内核实时补丁(如 PREEMPT_RT)以及中断与网络栈的协同调优。第二是长期可用性:工业设备生命周期常达 10~15 年,BSP 需要长期维护分支、可复现构建与安全更新机制。第三是可靠性:看门狗、掉电安全文件系统、双分区 A/B 升级、ECC 内存与温度监控都是常见要求。第四是可制造性:量产烧录、MAC 地址与序列号写入、板级校准参数存储,都需要在 BSP 中预留接口。
下面这张图给出 Sitara Linux BSP 的整体分层与数据/控制流关系。左侧是硬件与固件层,右侧是软件层,中间通过设备树与驱动接口衔接;PRU 固件与实时以太网栈作为独立支路,与 Linux 网络栈并行工作,这正是工业适配中最容易被忽视、也最关键的部分。
课程实战项目将围绕一块基于 AM64x 的工业网关参考板展开。该板卡具备双千兆以太网(其中一路接 PRU-ICSS 用于 EtherCAT 从站)、CAN FD、RS485、eMMC 与 QSPI 双启动介质,并预留 EEPROM 存放板级信息。项目目标是从 TI SDK 出发,完成一条可复现的 BSP 构建与适配链路,最终让板卡在 1 ms 周期下稳定运行 EtherCAT 从站,同时通过 Linux 应用层读取过程数据并上报。整个课程会依次覆盖:环境搭建与 SDK 获取、U-Boot 与启动介质适配、设备树裁剪与引脚复用、内核驱动与工业外设调试、PRU 固件加载与实时以太网配置、RootFS 裁剪与 A/B 升级、量产烧录与板级信息写入、以及最终的实时性验证与排障。
需要特别强调的是,工业 BSP 适配中大量问题并非来自内核本身,而是来自“软硬件交界处”:引脚复用冲突、时钟树配置错误、电源时序不满足、PRU 固件版本与内核驱动不匹配、设备树节点与原理图不一致等。因此本课程不会把 BSP 当作纯软件工作来讲,而是始终把原理图、数据手册、示波器波形与内核日志放在同一条证据链上。只有建立起这种“软硬对照”的判断方式,才能在面对自研板卡时快速定位问题,而不是依赖 EVM 的现成配置反复试错。