Monday, June 3, 2013

Beagle Bone PRU Links

I'm dumping a bunch of links for the Beagle Bone and BeagleBone Black related to PRU support, the 3.8 kernel, device tree, and the tricky bits of getting my PRU code working under the new kernel.  This is so I can find these later, and with hopes that others might find something useful.  If you know of others good links for intermediate to advanced hardware support on the 'Bone, please let me and I'll add them.

PRU tools

  • pasm: New and Improved!  This is a "New and Improved" version of the open-source TI PRU assembler pasm.  Bas Laarhoven (designer of the BeBoPr cape) added support for some of the "semi-documented" instructions.  These instructions can be found in Revision C of the AM3358 technical reference manual (along with details on the hardware multiplier and other goodies), but are absent from the latest official TI documentation.  This repository also includes the pruss Linux-side C code required to talk to the PRU, and some example apps to help you get started.
  • The LinuxCNC PRU debugger: specific to the LinuxCNC HAL environment; supports symbolic debugging with source information.  This is the primary debugging tool I use when writing my code, and it works quite well.  Some instructions for use can be found in the LinuxCNC configs/pru-examples/README file.
  • Element 14 PRU Tutorial A nice write up if you haven't done anything with the PRU, and need to start at the beginning.
  • prudebug: http://sourceforge.net/projects/prudebug/ - known to work with a minor change for the BB, see here: http://e2e.ti.com/support/arm/sitara_arm/f/791/p/229812/937205.aspx#937205 the UI is a tad rough, but the basics are in place. No symbolic debugging.
  • pView - A TI tool which isn't publicly available (inferred by the pasm docs).  pasm generates the debugging information for pView which is used by the Michael Haberler's symbolic debugger in LinuxCNC.
  • prude: https://github.com/wz2b/prude , an abandoned debugger project, not useful without finishing
Want to help?  The LinuxCNC PRU debugger is an awesome tool, but currently needs the rest of LinuxCNC to run, making it hard to play with. It should not take much work (1-2 days worst case) to get this debugger running outside of the LinuxCNC HAL framework.

Device Tree

  • Beaglebone and the 3.8 Kernel An excellent introduction to Device Tree and how to use it with the BeagleBone
  • Device Tree Usage Another Device Tree overview, straight from the "horse's mouth" as it were.
  • Device Tree Pinmux Test A validation test script for capemgr that  serves as a great basic introduction to device tree fragments and using them to control the I/O pins

General BeagleBone Information

BeagleBone Pin Mux Tables
Pin mux and usage data extracted from the multiple tables in various TI manuals.  Official TI data can be found in the AM335x Technical Reference Manual, AM335x Datasheet, and AM335x PRU-ICSS Reference Guide

1 comment:

  1. I'm the author of the LinuxCNC symbolic PRU debugger

    I'm happy to coach a willing soul through the process of making that work without the 'LinuxCNC' prefix

    - Michael

    ReplyDelete