Outline

1. Outline

A cookbook for programming the PRUs in C using remoteproc and compiling on the Beagle

  • Notes

    1. Case Studies

      • ✓ Robotics Control Library

      • ✓ BeagleLogic

      • ✓ LEDscape

      • ✓ Falcon Player

      • ❏ MachineKit

      • ❏ ArduPilot

    2. Getting started

      • ✓ Selecting a Beagle

      • ✓ Installing the Latest OS on Your Bone

      • ✓ Flashing a Micro SD Card

      • ✓ Cloud9 IDE

      • ✓ Getting Example Code

      • ✓ Blinking an LED

    3. Running a Program; Configuring Pins

      • ✓ Getting Code Example Files

      • ✓ Compiling and Running

      • ✓ Stopping and Starting the PRU

      • ✓ The Standard Makefile

      • ✓ Compiling with clpru and lnkpru

      • ✓ The Linker Command File - AM335x_PRU.cmd

      • ✓ Loading Firmware

      • ✓ Configuring Pins for Controlling Servos

      • ✓ Configuring Pins for Controlling Encoders

    4. Debugging and Benchmarking [1]

      • ✓ Debugging via an LED

      • ✓ dmesg –Hw

      • ✓ prudebug - A Simple Debugger for the PRU

      • ✓ UART

    5. Building Blocks – Applications

      • ✓ Memory Allocation

      • ✓ Auto Initialization of Built in LED Triggers

      • ✓ PWM Generator

      • ✓ Controlling the PWM Frequency

      • ✓ Loop Unrolling for Better Performance

      • ✓ Making All the Pulses Start at the Same Time

      • ✓ Adding More Channels via PRU 1

      • ✓ Sychronizing Two PRUs

      • ✓ Reading an Input at Regular Intervals

      • ✓ Analog Wave Generator

      • ✓ WS2812 (NeoPixel) driver

      • ✓ Setting NeoPixels to Different Colors

      • ✓ Controlling Arbitrary LEDs

      • ✓ Controlling NeoPixels Through a Kernel Driver

      • ✓ RGB LED Matrix - No Integrated Drivers

      • ✓ Compiling and Inserting rpmsg_pru

    6. Accessing More I/O [2]

      • ✓ /boot/uEnv.txt to access P8 I/O

      • ✓ Accessing gpio

    7. More Performance

      • ✓ Calling Assembly from C

      • ✓ Returning a Value from Assembly

      • ✓ Using the Built In Counter for Timing

      • ✓ Xout and Xin - Transfering Between PRUs

[common]: # "Some kind of intro to these building blocks is needed. Look at the TI examples for a good list."


1. Roadmap-wise, I’d want to consider how to plug RPMsg into a printf function to aide debug. I’m sure you’ve seen that with CCS in the past.
2. The split with talking to the ARM is a little confusing to me as I don’t know what the 'more' is.