ZHDA316 September   2026 AM623

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2PRU 功能比较
    1. 2.1 PRUSS:可编程实时单元子系统
    2. 2.2 PRU-ICSS:可编程实时单元和工业通信子系统
    3. 2.3 PRU_ICSSG:可编程实时单元和工业通信子系统 - 千兆位
    4. 2.4 PRU 子系统特性比较
  6. 3主流工业协议
    1. 3.1 EtherCat:用于控制自动化技术的以太网
    2. 3.2 PROFINET实时以太网标准
    3. 3.3 EtherNet/IP:通用工业协议
  7. 4基于 PRU-ICSS 的多协议工业通信架构设计
    1. 4.1 硬件架构
    2. 4.2 软件架构
    3. 4.3 应用示例
  8. 5工业协议支持矩阵
  9. 6总结
  10. 7参考资料

软件架构

软件架构 (图 4-2) 通过分层的 Linux 驱动程序栈,将 Arm 内核与 PRU 子系统紧密耦合。运行在 Arm 内核上的 Linux 内核为 PRU 通信提供了两种驱动机制:RemoteProc 和 rpmsg。RemoteProc 充当基本控制机制:读取从 U-Boot 传递的器件树二进制文件 (DTB),将 PRU 固件加载到指令内存中,并启动 PRU 执行。一旦 PRU 开始运行,rpmsg 便通过 PRU 数据内存中的共享 vring 缓冲区,处理 PRU 固件与用户空间应用程序之间的双向消息传递,并通过 /dev/rpmsg-pru 接口对外暴露。位于这些核心 Linux 驱动之上的是两个 PRU 专用客户端驱动:RemoteProc-PRU 和 rpmsg-PRU,它们将通用框架抽象为一套统一的 API,供上层协议栈使用。

 Sitara Arm/PRU 软件架构图 4-2 Sitara Arm/PRU 软件架构

图 4-3 将此通用协议栈映射到 AM335x 上具体的 EtherCAT 器件实现。图 3-3 中的 PRU 子系统驱动程序 (API) 对应于图 3-2 中的客户端驱动程序层:它提供一个统一的接口,将底层的固件加载和消息传递机制对上层隐藏。运行在 Arm 核心上的 Protocol Adaptation Layer、EtherCAT Device Stack 和 Industrial Application 共同对应于图 4-2 中的用户空间应用程序,并通过 /dev/rpmsg-pru 接口与 PRU 交换数据。PRU 固件处理第 2 层数据链路功能:帧处理和 MII 接口控制。这种分层设计允许将不同的工业协议固件独立加载到 PRU 上,从而在无需修改应用层软件的情况下实现多协议运行。

 PRU-ICSS 上的 EtherCAT 器件软件架构图 4-3 PRU-ICSS 上的 EtherCAT 器件软件架构