ZHCAGC6 August   2026 AM625

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
    1. 1.1 TI PRU介绍
    2. 1.2 高速串口应用背景与工业需求
    3. 1.3 12Mbps高速串口技术挑战
  5. 2基于PRU的高速串口通信系统设计与实现
    1. 2.1 串口底层物理层设计
    2. 2.2 PRU软件利用PEFIF接口实现多路高速串口
    3. 2.3 串口ARM Linux侧应用层驱动设计
  6. 3高速串口实验验证
    1. 3.1 高速PRU串口裸机实验
    2. 3.2 基于Linux应用高速PRU串口
  7. 4总结
  8. 5参考文献

TI PRU介绍

TI SOC上的PRU(Programmable Real-Time Unit) 的框图如 图 1-1 所示,PRU是一个专门为了硬实时、低延迟控制而设计的RISC内核。它通过无流水线单周期执行机制以及引脚直接映射架构,在物理边界上保证了时序的确定性。

 AM62x PRU-ICSS功能框图 图 1-1 AM62x PRU-ICSS功能框图

在实际的工业应用中,系统经常需要与不使用标准协议的外部设备进行交互。对于特殊时序接口,通过SOC可能不具备直接连接的方式,传统的做法是使用FPGA来实现SOC和特殊时序接口外设的高带宽通信,Sitara 处理器内部包含可编程实时单元 (PRU) 内核,在这种情况下无需在设计中添加 FPGA、ASIC、CPLD 等器件。另一种方式则是使用微控制器 (MCU) 的GPIO进行模拟,然而,使用 MCU内核来操作 GPIO 引脚存在一些根本性的缺陷,与 FPGA 相比,标准 MCU 在与 GPIO 交互时将具有更高的延迟和更低的确定性。使用软件来控制GPIO的翻转,由于内部总线的延时,可以支持的频率和精度将极大受限,无法满足占空比控制和时序控制的要求。

PRU 系统包含 32 个 32 位寄存器,其中两个寄存器专用于 GPIO 功能,一个寄存器直接连接到通用输出 (GPO) 信号,通过写入该寄存器来切换 GPO 信号,另一个寄存器直接连接到通用输入 (GPI) 信号,通过读取该寄存器来读取 GPI 信号。通过这种设计,从PRU到实际的GPIO直接连接,输入输出信号的性能也都得到了提升。PRU 具有暂停程序运行直至 GPI 事件发生的指令,这使得在检测到输入触发信号后,能够以最佳延迟产生输出响应,PRU 能够实现单个输入和输出之间,以及多个输入信号或多个输出信号之间完全确定的时序关系。高确定性的物理层通信需求与上层复杂的非实时操作系统解耦,在333MHz主频下,将单周期GPIO的执行精度控制在了3ns,中断响应周期可以控制在6ns。并且PRU 核心集成了创新的宽边接口(Broadside Interface),该接口打破了传统通用 CPU 逐字(Word-by-Word)读取的总线瓶颈,允许 PRU 在单个时钟周期内完成与本地硬件加速器之间高达 124 字节的大容量数据并行吞吐。此外,每个 PRU 核心均配有 2kB 的专用宽边专用内存(Broadside RAM)。该内存挂载于相同的宽边专用总线上,不仅具备与共享内存同等的访问速度,更通过物理隔离保障了多核并发时的零总线冲突。

以上介绍适用于所有带有 PRU 子系统的 Sitara 处理器,包括 AM243x、AM263x、AM335x、AM437x、AM57x、AM62x、AM64x 和 AM65x。TI处理器中包含多种PRU子系统如PRU-ICSS,PRU-ICSSG,PRUSS等,本文主要针对AM625系列PRUSS进行研究和讨论,每个PRU子系统具体的差异可以参见以下文章: PRU-ICSS Feature Comparison (Rev. H) 。本文基于PRUSS实现高速串口通讯功能,理论上可以直接迁移到其他PRU子系统。