1. 课程导入与系统全景
在工业自动化现场,一台设备往往同时承担两类看似矛盾的任务:一类是与人机界面、数据库、云端通信相关的非实时业务,另一类是对电机、伺服、编码器、IO 模块进行微秒级响应的硬实时控制。传统方案通常用“MCU 做实时 + 工控机做管理”的双芯片结构来化解矛盾,而 TI Sitara 系列处理器(如 AM335x、AM437x、AM57x、AM64x)提供的思路是:用一颗 SoC 同时承载实时控制域与通用计算域,通过异构核、PRU-ICSS 可编程实时单元、工业通信外设与实时 Linux 补丁,把两类任务在同一芯片内协同起来。
本课程围绕“实时 Linux + 工业控制协同”这一主线展开,目标不是单纯讲解某个内核参数,而是让学习者能够从系统层面理解:实时性从哪里来、工业协议如何落地、控制回路如何与 Linux 应用交换数据、以及如何用可测量的指标判断系统是否达标。本章作为导入,先建立整体地图,后续 29 章再逐层深入。
一、Sitara 平台在工业控制中的定位
Sitara 属于 TI 面向工业与嵌入式市场的 Arm 处理器家族,其典型特征包括:Arm Cortex-A 核运行 Linux 承担应用与网络;Cortex-M 或 PRU 承担确定性任务;片上集成 EtherCAT、PROFINET、CAN、ADC 等工业外设。以 AM64x 为例,它包含双核 Cortex-A53、双核 Cortex-R5F 以及两个 PRU-ICSSG 实例,R5F 可运行 RTOS 或裸机程序处理运动控制,A53 运行实时 Linux 处理 HMI、OPC UA、数据库与远程运维,PRU 则直接生成 EtherCAT 从站帧或编码器采样时序。
这种“主核管智能、协处理器管时序”的分工,是理解本课程所有实验与设计的前提。学习者需要建立的第一条认知是:实时 Linux 并不是让 Linux 变成硬实时 RTOS,而是把 Linux 的调度抖动压缩到可接受范围,并把真正苛刻的时序交给 PRU、R5F 或专用外设。
二、实时 Linux 与工业控制协同系统的总体架构
从下往上,系统可分为四层。最底层是硬件与固件层,包括 Sitara SoC、DDR、eMMC、工业以太网 PHY、ADC 前端以及 PRU/R5F 固件。第二层是内核与实时层,采用 PREEMPT_RT 补丁后的 Linux 内核,配合 CPU 隔离、线程优先级、中断线程化、时钟源选择等手段控制延迟。第三层是工业协议与中间件层,如 IgH EtherCAT Master、OPC UA、Modbus TCP、CANopen 以及共享内存/邮箱通信机制。最上层是控制应用层,包括运动控制算法、PLC 逻辑、HMI 与数据上云。
层与层之间的关键接口是数据通路:PRU 采集的编码器值通过共享内存写入内核,再由实时线程读取并送入控制算法;控制输出经 PWM 或 EtherCAT 周期帧下发到驱动器。整条链路的延迟预算,通常按“采样—计算—输出”三段分配,例如 1 ms 周期内,采样与传输占 200 μs,控制计算占 300 μs,输出与抖动余量占 500 μs。这个预算表是后续调优的基准。
三、学习路径与关键能力
课程按“环境搭建—实时性验证—工业协议—协同控制—系统集成”推进。第一阶段在 AM64x 或 AM335x 开发板上完成 SDK 安装、交叉编译、内核裁剪与 PREEMPT_RT 补丁验证,使用 cyclictest 测量最大延迟,目标是在隔离 CPU 上把最大抖动控制在 100 μs 以内。第二阶段进入 PRU 与 R5F 固件开发,理解 RPMsg、共享内存与中断的配合方式。第三阶段实现 EtherCAT 主站或 Modbus 从站,把周期帧与实时线程绑定。第四阶段完成一个完整项目:三轴步进/伺服控制,带 HMI 与数据记录。
需要掌握的核心能力包括:读懂设备树与引脚复用、会用 ftrace 与 cyclictest 定位延迟来源、能编写 PRU 汇编或 C 固件、能配置 EtherCAT 从站描述文件、能设计实时线程与普通线程的优先级与通信方式。这些能力在后续章节中会逐一展开。
四、实战项目说明与评价指标
贯穿课程的项目是“基于 Sitara 的实时运动控制节点”。硬件采用 AM64x 评估板、EtherCAT 从站 IO 模块、增量式编码器与步进驱动器。软件上,A53 运行实时 Linux 与 HMI,R5F 运行 1 kHz 电流环/速度环,PRU 负责编码器正交解码与 PWM 输出。项目验收指标包括:控制周期 1 ms,周期抖动小于 50 μs;EtherCAT 通信周期 1 ms,丢帧率为 0;HMI 刷新延迟小于 200 ms;连续运行 8 小时无看门狗复位。
为便于后续实验对照,下面给出一份可填写的实时性测试记录表模板,字段直接对应 cyclictest 与系统状态观察项。
| 测试项 | 命令/方法 | 示例目标值 | 实测记录 | 判定 |
|---|---|---|---|---|
| 最大调度延迟 | cyclictest -p 80 -m -n -i 1000 -l 100000 | < 100 μs | ||
| CPU 隔离 | isolcpus=2,3 + taskset | 实时线程独占 CPU2 | ||
| 中断线程化 | 检查 /proc/interrupts 与线程优先级 | 关键中断优先级高于普通线程 | ||
| EtherCAT 周期 | ethercat master + 从站 DC 同步 | 1 ms,抖动 < 20 μs | ||
| PRU 采样一致性 | 示波器观察 PWM 与编码器索引 | 相位误差 < 1 μs |
本章建立了系统全景:Sitara 的异构核与 PRU 提供硬件确定性,PREEMPT_RT 与调度配置提供软件实时性,工业协议与共享内存把两者连接成完整控制回路。接下来将从开发环境与内核配置开始,逐步把这张架构图变成可运行、可测量、可复现的系统。