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参考文献

基于Linux应用高速PRU串口

基于SDK11.1对PRU的高速串口进行应用和实验验证,首先需要在原生的kernel中添加PRU串口的驱动,使用以下命令和对应补丁进行应用。

  1. 将内核补丁应用到 SDK11.1 内核,重新编译内核,并将新的内核映像(Image)、模块以及 k3-am625-sk.dtb 安装到 SD 卡的根文件系统(rootfs)中。
    
    host# patch -p1 < pru-tty-driver-v6.12-20251204.diff
    host# make linux
    host# sudo DESTDIR=/media/tony/root make linux_install
  2. 将 PRU 固件复制到根文件系统的 /lib/firmware/ 目录中,然后为其创建一个名为 am62x-pru0-fw的软链接。
    # ln -sf PRU_UART_12Mb.out.v1.1 am62x-pru0-fw
  3. 启动 am62x sk evm 开发板。新的 pru-tty 驱动已内置在内核映像中,它会创建 4 个 UART 节点:
    
    # ls /dev/ttyPRU*
      /dev/ttyPRU0  /dev/ttyPRU1  /dev/ttyPRU2  /dev/ttyPRU3
  4. 运行以下命令来启动PRU0.
    
    root@am62xx-evm:~# echo start > /sys/class/remoteproc/remoteproc2/state
    [  703.729726] remoteproc remoteproc2: powering up 30074000.pru
    [  703.737406] remoteproc remoteproc2: Booting fw image am62x-pru0-fw, size 25852
    [  703.744705] remoteproc remoteproc2: remote processor 30074000.pru is now up
    

    现在可以运行串口应用程序向这些 UART 节点写入数据了,目前只需使用 open() 和 write() 函数就可以实现使用PRU的高速串口发送数据。以下是使用Open和Write进行发送数据的参考代码。

    
    write(fp0, data, data_len);
    fp0 = open("/dev/ttyPRU0",  O_RDWR | O_NONBLOCK);
    

图 3-3 是通过Linux侧随机生成数据发送来验证整体从应用到底层数据通路,并使用逻辑分析仪进行测量得到的波形。

 Linux随机串口数据波形 图 3-3 Linux随机串口数据波形