Programmable real-time unit and industrial communications subsystem (PRU-ICSS) FAQ

What is a PRU-ICSS?


The Programmable Real-time Unit and Industrial Communications Subsystem (PRU-ICSS / PRU-ICSSG) is a small processor that is tightly integrated with an IO subsystem, offering low-latency control of IO pins on … SoC devices, including the AM335x, AM437x, AM57x, and AM65x Sitara™ processors.

The PRU-ICSS / PRU-ICSSG is customer-programmable and can be used to implement simple and flexible control functions, peripherals and state machines that directly access IO pins of the device, as well as can communicate with the application cores.

Why PRUs?

A programmable real-time unit (PRU) is a fast (200-MHz, 32-bit) processor with single-cycle I/O access to a number of the pins and full access to the internal memory and peripherals on the AM3358 processor on BeagleBones (BeagleBone, BeagleBone Black, BeagleBone Green, etc.). They are design to provide software-defined peripherals as part of the Programmable Real-time Unit Industrial Control SubSystem (PRU-ICSS) and are capable of implementing things like 25 pulse-width modulators, 4 soft UARTs, stepper motor drivers and much more. Having these controllers integrated is really handy to avoid throwing in another device to control or interface to a new peripheral. The real power comes when you need high-bandwidth between the main CPU and these controllers, such as in, MachineKit or LEDscape. Those are all super-cool projects to check out.

The MIT Center for Bits and Atoms did a study of a critical metric for building machines able to control the physical world, a software ring oscillator. This metric may help to give some perpective on how much of a game-changer having the PRU-ICSS is: ring oscillator timing tests.

Links to good resources

Check out the new PRU Cookbook!

There are also PRU examples for BeagleBone Black, BeagleBone AI, and PocketBeagle.

TI links

This page is still in development. You should also explore Category:PRU -