This is an old revision of the document!
Table of Contents
Background
BeagleBone PRUSS
The BeagleBone is a low-cost, high-performance embedded platform for hobbyists and other uses. It is based upon a TI AM335x 1GHz ARM® Cortex-A8. Features (from the product website) include:
Processor: AM335x 1GHz ARM® Cortex-A8
- 512MB DDR3 RAM
- 2GB 8-bit eMMC on-board flash storage
- 3D graphics accelerator
- NEON floating-point accelerator
- 2x PRU 32-bit microcontrollers
Connectivity
- USB client for power & communications
- USB host
- Ethernet
- HDMI
- 2x 46 pin headers
The board comes pre-loaded with and Ångström Linux distirubtion and many other options can be considered for development and operating the device. It is a very powerful device with a large number of peripherals built in making it well-suited for a number of soft real-time applications.
To support demanding hard-real time constraints or to off load processes from the main CPU, the processor chip includes two programmable real-time (PRU) cores. These are reasonably high speed, 32-bit RISC cores where every instruction takes a deterministic 5 ns to complete. The devices have dedicated peripherals, access to the main system's peripherals, and ability to communicate with the main processor through interrupts, shared memory or DMA.
These devices can be used to create programmable real-time peripherals and subsystems. The downside is that they are specialized and need low-level (assembly) programming (at least until someone develops a compiler) and configuration.
Procedure
The goal is to experiment with the PRU devices and modify a small program to send a burst of bits at a given rate. The ARM processor should query the user for a 32-bit hexadecimal number and transmit it out serially on a GPIO pin LSB first. The period of transmission for each bit in microseconds should also be sent by the ARM to the PRU. A small program based on the TI examples has been provided to show two methods of sharing memory with the PRU and ARM as well as for using the PRU timer (you can also rely on the 5 ns instruction timing but then become more sensitive to code changes).