Difference between revisions of "BeagleBone PRU Notes"

From eLinux.org
Jump to: navigation, search
(Created page with "== BeagleBone PRU == The goal of this page is to record information that is pertinent to getting started with the BeagleBone's AM335x Programmable Real-time Unit (PRU). This i...")
 
Line 1: Line 1:
 
== BeagleBone PRU ==
 
== BeagleBone PRU ==
 
The goal of this page is to record information that is pertinent to getting started with the BeagleBone's AM335x Programmable Real-time Unit (PRU).
 
The goal of this page is to record information that is pertinent to getting started with the BeagleBone's AM335x Programmable Real-time Unit (PRU).
 +
 
This is also called the PRU Subsystem (PRUSS) or PRU and Industrial Controller Subsystem (PRU-ICSS). It is optimized to perform embedded tasks that require real-time constraints.
 
This is also called the PRU Subsystem (PRUSS) or PRU and Industrial Controller Subsystem (PRU-ICSS). It is optimized to perform embedded tasks that require real-time constraints.
 +
 
Most important is the purssdrv library to expose functions to the PRU. You can load this library by typing modprobe uio_pruss.
 
Most important is the purssdrv library to expose functions to the PRU. You can load this library by typing modprobe uio_pruss.
  
Line 14: Line 16:
 
* 12KB shared RAM
 
* 12KB shared RAM
 
* A small, deterministic instruction set
 
* A small, deterministic instruction set
 +
 +
There is no pipelining done on the processor and there are 29 (r1-r30) registers to use.
 +
 +
=== Software examples ===
 +
BeagleBoard/TI has provided example C programs that utilize the PRU on [https://github.com/beagleboard/am335x_pru_package github.]
 +
 +
These include: PRU_memAccess_DDR_PRUsharedRAM, PRU_memAccessPRUDataRam, PRU_PRUtoPRUInterrupt, and a PRU assembler.

Revision as of 04:58, 18 April 2013

BeagleBone PRU

The goal of this page is to record information that is pertinent to getting started with the BeagleBone's AM335x Programmable Real-time Unit (PRU).

This is also called the PRU Subsystem (PRUSS) or PRU and Industrial Controller Subsystem (PRU-ICSS). It is optimized to perform embedded tasks that require real-time constraints.

Most important is the purssdrv library to expose functions to the PRU. You can load this library by typing modprobe uio_pruss.

PRU capabilities


  • The PRU has dual 32-bit RISC cores, shared data and instruction memories and an interrupt controller (INTC).
  • 8KB data memory and 8KB instruction memory
  • 12KB shared RAM
  • A small, deterministic instruction set

There is no pipelining done on the processor and there are 29 (r1-r30) registers to use.

Software examples

BeagleBoard/TI has provided example C programs that utilize the PRU on github.

These include: PRU_memAccess_DDR_PRUsharedRAM, PRU_memAccessPRUDataRam, PRU_PRUtoPRUInterrupt, and a PRU assembler.