2. TI Sitara硬件平台解析

在实时Linux与工业控制协同系统中,SoC选型不是“挑一个主频最高的芯片”,而是要把控制环路的时序要求、现场总线协议、外设接口数量、实时核资源与软件生态放在同一张表里权衡。TI Sitara系列中,AM335x与AM57x是两类典型代表:前者面向低成本、单核Cortex-A8加双PRU-ICSS的紧凑型工业节点;后者面向多核Cortex-A15、DSP与双PRU-ICSS的高性能运动控制与视觉网关。理解它们的资源边界,是后续做实时性设计与接口分配的前提。

一、CPU子系统:从单核到异构多核

AM335x采用单核ARM Cortex-A8,主频常见为600MHz、800MHz或1GHz,带NEON SIMD与32KB/32KB L1、256KB L2。它没有独立DSP,但PRU-ICSS可承担硬实时I/O任务。AM57x则采用异构架构:双核或单核Cortex-A15(最高约1.5GHz),外加C66x DSP、两个Cortex-M4(分别用于IPU1/IPU2和IVA-HD中的视频编码控制),以及两个PRU-ICSS。这种“A15跑Linux + DSP跑算法 + M4跑低功耗控制 + PRU跑硬实时I/O”的分工,决定了AM57x更适合多轴运动控制、EtherCAT主站与机器视觉融合的场景。

选型时先看实时任务落在哪个核:若控制周期在50μs~1ms且需要确定性抖动,PRU-ICSS是首选;若需要浮点密集运算(如电流环、滤波、坐标变换),C66x DSP更合适;若只是协议栈与HMI,A8/A15足够。不要把所有任务都压在A核上,否则Linux调度抖动会直接破坏控制周期。

二、PRU-ICSS:工业实时性的核心资源

PRU-ICSS(Programmable Real-time Unit and Industrial Communication Subsystem)是Sitara区别于普通应用处理器的关键。每个ICSS包含两个PRU核,每个PRU有8KB指令RAM、8KB数据RAM、32位乘法器、GPIO与专用外设引脚。PRU运行在200MHz(AM335x)或200MHz(AM57x),指令周期5ns,可逐周期访问I/O,不经过Linux调度器,因此能实现纳秒级抖动的信号翻转。

PRU-ICSS还集成了工业通信专用硬件:MII/RMII接口、UART、eCAP、eQEP、PWM、SPI、IEP(工业以太网外设)与中断控制器。以EtherCAT从站为例,PRU负责处理EtherCAT帧的接收、解析与过程数据映射,A核只负责配置与慢速管理,这样从站循环可稳定在100μs以内。若用AM335x做EtherCAT从站,通常使用PRU-ICSS的MII接口接PHY,配合TI的PRU-ICSS EtherCAT固件;若做PWM输出,PRU可直接生成带死区的互补PWM,避免Linux PWM子系统的延迟。

AM335x 与 AM57x 工业资源对比与任务映射 AM335x(单核A8 + 双PRU) Cortex-A8 @ 600M~1GHz Linux / 协议栈 / HMI / 文件系统 PRU0 200MHz / 5ns周期 PWM / 编码器 / 中断 PRU1 200MHz / 5ns周期 EtherCAT / MII / SPI 工业接口资源 2×MII/RMII · 6×UART · 2×CAN · 2×eQEP 2×eCAP · 2×PWM · 2×SPI · 2×I2C · 8ch ADC 典型任务映射 A8:Modbus TCP / HMI / 数据记录 PRU:EtherCAT从站 / 多轴PWM / 编码器采集 AM57x(异构多核 + 双PRU) Cortex-A15 @ 1.5GHz(双核) Linux / 视觉 / 网关 / 数据库 C66x DSP 浮点运算 / 滤波 坐标变换 / 电流环 双PRU-ICSS 4×PRU核 EtherCAT / PROFINET 工业接口资源 2×ICSS MII · PCIe · SATA · USB3.0 · GbE 多路UART/SPI/I2C · eQEP · eCAP · PWM 典型任务映射 A15:EtherCAT主站 / 视觉 / 云连接 DSP:伺服算法 · PRU:多轴I/O与总线 性能/复杂度提升

三、外设与工业接口:数量与类型决定系统边界

AM335x的工业接口以“够用”为原则:最多6路UART、2路CAN、2路eQEP(正交编码器)、2路eCAP、2路PWM、2路SPI、2路I2C,以及8通道12位ADC。它适合单轴或双轴伺服、变频器控制、远程I/O模块。AM57x则扩展出PCIe、SATA、USB3.0、千兆以太网,并保留双ICSS的MII接口,适合做EtherCAT主站、PROFINET控制器、视觉网关或边缘计算节点。

实际选型时,先列出系统需要的接口清单,再对照SoC的引脚复用表。例如一个EtherCAT从站需要2路MII、1路UART调试、1路SPI接EEPROM、2路PWM输出、2路eQEP输入,AM335x的PRU-ICSS正好覆盖;若还要加一路CAN和一路ADC,AM335x也能满足。但若需要同时跑EtherCAT主站、视觉处理和数据库,AM335x的A8会力不从心,此时应选AM57x。

四、选型依据:从任务时序反推硬件

选型的第一步是明确控制周期与抖动预算。假设一个多轴运动控制系统的电流环周期为50μs,位置环为1ms,EtherCAT从站循环为100μs。若用AM335x,PRU可承担EtherCAT从站与PWM生成,A8跑Linux和HMI,但A8无法在50μs内完成浮点电流环,因此电流环必须放在外部MCU或DSP。若用AM57x,C66x DSP可承担电流环,PRU负责EtherCAT与I/O,A15跑Linux,系统更完整。

第二步是评估PRU资源是否够用。每个PRU有8KB指令RAM,EtherCAT从站固件通常占用约4~6KB,剩余空间可放自定义逻辑。若需要同时处理EtherCAT和PWM,建议将两个PRU分工:PRU0跑EtherCAT,PRU1跑PWM与编码器。若两个协议都需要MII,则要确认ICSS的MII引脚是否被复用冲突。

第三步是看软件生态。TI提供PRU-ICSS固件包、EtherCAT从站协议栈、PROFINET IRT固件,以及Linux SDK中的remoteproc/rpmsg框架。AM335x的PRU开发资料更成熟,社区案例多;AM57x的DSP开发需要CCS与OpenCL,门槛略高。若团队没有DSP经验,可先用AM335x加外部MCU实现电流环,再逐步迁移到AM57x。

选型检查清单(示例):
  • 控制周期:电流环≤50μs?位置环≤1ms?EtherCAT循环≤100μs?
  • 实时任务归属:PRU / DSP / M4 / A核,是否明确?
  • 接口数量:MII×2、UART×3、CAN×1、eQEP×2、PWM×4、ADC×4,是否满足?
  • PRU指令RAM余量:固件占用后是否≥2KB?
  • 软件生态:是否有现成协议栈与例程?团队是否熟悉DSP/PRU开发?
  • 成本与供货:AM335x单价低、供货稳;AM57x性能高、BGA封装对PCB层数要求更高。

五、典型配置示例

以一个EtherCAT从站+双轴PWM输出的工业节点为例,选用AM335x(800MHz)配置如下:PRU0运行EtherCAT从站固件,通过MII0接PHY;PRU1生成两路带死区的互补PWM(20kHz),并读取两路eQEP编码器;A8运行Linux,通过rpmsg与PRU交换过程数据,同时跑Modbus TCP和HMI。该配置下,EtherCAT循环可稳定在100μs,PWM抖动小于10ns,A8负载约40%。若换成AM57x,可将电流环放入C66x DSP,PRU专注总线与I/O,A15跑视觉与云连接,系统扩展性更强。

选型没有绝对优劣,只有与任务匹配与否。先画时序预算表,再列接口清单,最后对照PRU与DSP资源,才能避免“选完发现PRU不够用”或“A核被实时任务拖垮”的常见问题。