Complete Communications Engineering

Running firmware on the AM335x PRU co-processors can be done using the Linux remoteproc drivers.  These drivers may not be enabled by default, so this might require modifying the Linux configuration.  The following kernel options will enable building the remoteproc drivers:

  Device Drivers -> SOC (System On Chip) specific Drivers -> TI SOC drivers support (*)

  Device Drivers -> SOC (System On Chip) specific Drivers -> TI SOC drivers support

                                                                                                -> TI PRU-ICSS Subsystem Platform drivers (M)

  Device Drivers -> Remoteproc drivers -> TI PRU remoteproc support (M)

Using the remoteproc drivers also requires device tree support.  The Linux kernel comes with device tree files for the AM335x processor.  The device tree file for a custom board can use these in its own device tree.  The file ‘am33xx-l4.dtsi’ from the Linux source tree has declarations for the PRU but disables it by default.  For a custom device tree that includes this file, the following declarations should be enough:

&am33xx_pinmux {

    pru_default: pru_default_pins {

        pinctrlsingle,pins = <

            // TODO – add pin configurations for PRU inputs and outputs





&pruss_tm {

    pinctrlnames = “default”;

    pinctrl0 = <&pru_default>;

    status = “okay”;


Once Linux is running with the remoteproc drivers and the device tree in place, running software on the PRU co-processors requires the firmware to run and a few commands.  The remoteproc driver is controlled from the filesystem through the ‘/sys/class/remoteproc’ folder.  If remote processors are available, each one will appear as a subfolder here.  Each remote processor has a name.  The two PRU co-processors should be named ‘’ and ‘’.  The default firmware files are ‘am335x-pru0-fw’ and ‘am335x-pru1-fw’.  These files should be in the ‘/lib/firmware’ folder.  If the firmware is in place, the following commands can be used to start the PRU co-processors:

> modprobe pru_rproc

> echo start > /sys/class/remoteproc/remoteproc0/state

> echo start > /sys/class/remoteproc/remoteproc1/state