2. Sitara硬件平台与工业接口认知
做TI Sitara Linux BSP移植与工业平台适配,第一步不是改设备树,而是先把“板子到底长什么样”看清楚。Sitara系列覆盖了从低成本工业HMI到多核工业网关的完整谱系,AM335x、AM437x、AM57xx是其中最具代表性的三档平台。理解它们的芯片架构、工业通信外设、电源与时钟树,以及如何从硬件文档中快速提取BSP所需信息,是后续所有适配工作的基础。
三档典型芯片的架构定位
AM335x是单核Cortex-A8平台,主频常见为600MHz、800MHz或1GHz,片上集成PRU-ICSS(可编程实时单元与工业通信子系统)、双千兆以太网MAC、CAN控制器、USB、LCD控制器等。它的典型定位是工业HMI、小型PLC、协议转换器和低成本网关。AM335x的PRU-ICSS包含两个PRU内核,每个PRU有独立的指令RAM、数据RAM和32位GPIO,可运行确定性实时固件,用于EtherCAT、PROFINET、EtherNet/IP等工业以太网协议,也可做PWM、编码器采集等实时任务。
AM437x升级为Cortex-A9单核,主频常见800MHz或1GHz,增加了Quad-SPI、更丰富的外设和显示子系统,PRU-ICSS同样保留并增强。它适合需要更高计算性能和更复杂显示交互的工业设备,例如带图形界面的工业控制器、电力保护装置和医疗仪器。AM57xx则是异构多核平台,典型配置为双核Cortex-A15加双核Cortex-M4,再配合DSP和PRU-ICSS,主频可达1.5GHz。它面向工业网关、机器视觉、电机控制和边缘计算节点,能在Linux侧跑应用、在M4/DSP侧跑实时控制、在PRU侧跑工业协议,形成“应用+实时+协议”的分层处理结构。
工业通信外设:CAN、EtherCAT与PRU-ICSS
CAN是工业现场最常用的串行总线之一。AM335x/AM437x/AM57xx都集成了DCAN控制器,支持CAN 2.0B协议,位速率典型为125kbps、250kbps、500kbps和1Mbps。在Linux BSP中,CAN通常通过SocketCAN框架暴露为can0、can1网络接口,使用ip link set can0 type can bitrate 500000配置,再用ip link set can0 up启用。实际调试时,用candump can0观察报文,用cansend can0 123#11223344发送测试帧,是验证CAN收发器和终端电阻是否正常的最直接手段。
EtherCAT、PROFINET、EtherNet/IP这类工业以太网协议对实时性要求极高,普通Linux网络栈无法满足微秒级抖动要求。Sitara的解决方案是PRU-ICSS:把协议栈的实时部分下沉到PRU固件中执行,Linux侧只负责配置、管理和非实时数据交换。以EtherCAT从站为例,PRU固件负责处理EtherCAT帧的接收、解析和过程数据映射,A8/A9/A15核上的Linux运行EtherCAT主站或从站应用,两者通过共享内存和中断交互。BSP适配时需要确认PRU固件版本、加载方式(通常通过remoteproc或PRU loader)、以及PDI(过程数据接口)与Linux应用的映射关系。
电源与时钟树:BSP启动的隐形前提
电源和时钟是硬件平台能否正常启动和稳定运行的前提。以AM335x为例,典型电源方案使用TPS65910或TPS65217 PMIC,输出VDD_CORE(1.1V或1.2V)、VDD_MPU(1.1V~1.35V,随OPP变化)、VDD_RTC(1.8V)、DDR电源(1.5V或1.35V)以及3.3V外设电源。上电时序要求VDD_CORE先于VDD_MPU建立,否则可能触发上电复位异常。BSP中的电源管理通过PMIC驱动和OPP表实现,设备树中需要正确描述PMIC的I2C地址、稳压器输出和电压范围。
时钟树方面,AM335x的时钟源通常为24MHz晶振,经PLL锁相后产生MPU、CORE、DDR、PER等时钟域。MPU时钟决定CPU主频,CORE时钟驱动外设总线,DDR时钟决定内存带宽。设备树中的clock-frequency、assigned-clocks和assigned-clock-rates节点描述了这些关系。如果时钟配置错误,常见现象是串口无输出、DDR初始化失败或外设无法访问。排查时先用示波器测量晶振和PLL输出,再对照TRM中的时钟树章节确认分频比。
硬件文档阅读方法:从TRM到原理图
面对一份几百页的TRM和原理图,BSP工程师需要快速定位关键信息。建议按以下顺序阅读:先看原理图的电源部分,确认PMIC型号、各路输出电压和上电时序;再看时钟部分,确认晶振频率、PLL配置和时钟分配;然后看启动模式配置,确认SYSBOOT引脚的电平组合,这决定了从NAND、MMC、QSPI还是UART启动;最后看外设连接,确认CAN收发器、以太网PHY、PRU引脚复用和中断连接。
TRM阅读应聚焦于Memory Map、Pin Multiplexing、Clock Tree和Peripheral章节。Memory Map告诉你外设寄存器的基地址,Pin Multiplexing告诉你每个引脚可配置的功能,Clock Tree告诉你外设时钟的来源和分频,Peripheral章节告诉你寄存器的具体操作。设备树中的pinctrl节点、reg属性、interrupts属性,都能在TRM中找到对应依据。把原理图、TRM和设备树三者对照起来看,是BSP适配最有效的工作方法。
从硬件认知到BSP适配的衔接
完成硬件平台认知后,BSP适配就有了明确的输入:芯片型号决定内核配置和DTS文件选择,工业通信外设决定驱动模块和PRU固件,电源与时钟树决定PMIC驱动和时钟配置,硬件文档决定引脚复用和寄存器地址。以AM335x工业网关为例,典型BSP适配清单包括:选择am335x-evm或am335x-icev2作为基础DTS,启用CONFIG_CAN和CONFIG_CAN_DCAN,配置PRU-ICSS的remoteproc节点,确认TPS65910的I2C地址和稳压器输出,以及根据原理图调整pinctrl中的引脚复用。这些工作都建立在对硬件平台的准确认知之上,而不是盲目复制参考设计。