SPRADU2 August   2026 AM625

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
    1. 1.1 Introduction to TI PRU
    2. 1.2 Application Background and Industrial Requirements for High‑Speed UART
    3. 1.3 Technical Challenges of 12Mbps High‑Speed UARTs
  5. 2Design and Implementation of PRU‑Based High‑Speed UART Communication System
    1. 2.1 UART Low‑Level Physical‑Layer Design
    2. 2.2 Implementation of Multi‑Channel High‑Speed UART by PRU Software Using the PEFIF Interface
    3. 2.3 Design of Application-Layer Driver for UARTs on ARM Linux
  6. 3Experimental Verification of High‑Speed UARTs
    1. 3.1 Bare‑Metal Experiment of High‑Speed PRU UART
    2. 3.2 High‑Speed PRU UART Application Based on Linux
  7. 4Conclusion
  8. 5References

High‑Speed PRU UART Application Based on Linux

To apply and experimentally verify the PRU's high‑speed UARTs based on SDK 11.1, the PRU UART driver must first be added to the native kernel. Apply the following commands and the corresponding patch.

  1. Apply the kernel patch to the SDK 11.1 kernel, recompile the kernel, and install the new kernel image (Image), modules, and k3‑am625‑sk.dtb into the root file system (rootfs) on the SD card.
    
    host# patch -p1 < pru-tty-driver-v6.12-20251204.diff
    host# make linux
    host# sudo DESTDIR=/media/tony/root make linux_install
  2. Copy the PRU firmware to the /lib/firmware/ directory of the root file system, and then create a soft link named am62x‑pru0‑fw pointing to it.
    # ln -sf PRU_UART_12Mb.out.v1.1 am62x-pru0-fw
  3. Boot the AM62x SK EVM development board. The new pru‑tty driver is built into the kernel image and creates 4 UART nodes:
    
    # ls /dev/ttyPRU*
      /dev/ttyPRU0  /dev/ttyPRU1  /dev/ttyPRU2  /dev/ttyPRU3
  4. Run the following command to start 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
    

    Now you can run UART applications to write data to these UART nodes. Currently, simply using the open() and write() functions enables high‑speed UART data transmission via the PRU. The following is reference code for transmitting data using the open() and write() functions.

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

Figure 3-3 shows the waveform measured using a logic analyzer to verify the entire data path from the application layer to the underlying hardware by transmitting the data randomly generated on the Linux side.

 Random UART Data Waveform At Linux SideFigure 3-3 Random UART Data Waveform At Linux Side