Difference between revisions of "BeagleBone PRU Notes"
(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
- Http://i.imgur.com/vgOiatO.png
AM335x PRUSS
- 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.