ZHCAGC6 August 2026 AM625
随着现代工业对生产精度和监控频率要求的提升,串口通信正向着高频、大吞吐量、兆比特(Mbps)级的方向演进。这个趋势往往需要以数兆比特的速率不间断地向主控单元推送数据。这种高速串口通信对底层控制系统的实时响应能力和吞吐性能提出了更高的要求。在现有的工业嵌入式设计中,主流方案通常采用通用处理器(MPU,如ARM Cortex-A系列)挂载Linux等通用操作系统,并利用芯片内置的硬件UART控制器来处理串口数据。这种"ARM + Linux + 硬件UART" 的传统架构在低速通信时表现良好,但在Mbps级的高速场景下,其任务调度器、虚拟内存管理和复杂的网络协议栈会引入不可预测的延时抖动(Jitter)。当高速串口产生高频中断时,Linux操作系统的线程调度延迟往往在数十微秒到数百微秒不等。在Mbps级的波特率下,传输一个字节的时间仅为几微秒或几百纳秒。尽管硬件UART芯片带有16字节或64字节的FIFO(先进先出缓存),但在高速通信的情况下,FIFO极易在几微秒内被填满。如果无法及时处理,极容易导致溢出错误和丢包,为了防止丢包,系统不得不耗费大量算力进行串口数据的处理。
在TI的处理器上均可以支持多个串口通信,表 1-1 列举了TI处理器分别能支持的串口数量和最高速度,以AM62x为例,芯片原生可以支持高达9个串口,传统Linux加上串口硬件的限制,TI Sitara系列处理器软件上可以支持的串口速度的上限在3Mbps。即使TI处理器的串口可以支持DMA模式等优化的措施,可以减少串口的接收和发送时CPU占用,但使用传统方案实际测试仍然无法在不影响系统其他任务(大幅增加CPU负载)的情况下满足超过3Mbps的高吞吐需求。因此本文提出使用PRU来模拟串口,以实现更高速(12Mbps)的串口,并且不大幅增加CPU的负载。
| Domain | AM62x | AM62L | AM62P | AM64x | AM62A | Max Speed | Uart IP |
|---|---|---|---|---|---|---|---|
| WKUP | 1 | 1 | 1 | 0 | 1 | 3Mbps | 16C750 |
| MCU | 1 | 0 | 1 | 2 | 1 | 3Mbps | 16C750 |
| Main | 7 | 7 | 7 | 7 | 7 | 3Mbps | 16C750 |
| Total | 9 | 8 | 9 | 9 | 9 | 3Mbps | 16C750 |