The BeagleBone Black has a powerful featureset: decent clock speed, analog inputs, multiple UART, SPI and I2C channels and on-board memory, to name a few. One missing feature seems to be the lack of support for the two on-board Programmable Real-time Units (PRU’s). Each of these 32-bit processors run independently of the main processor, but are able to interface with the main processor through the use of shared RAM and some interrupts. Unfortunately, PRU’s are not supported and in the absence of information, difficult to program. Enabling the PRU’s will allow them direct access to external sensors via the GPIO pins, for example. Perhaps most enticing is the idea that the PRU’s add real-time processing capability to the BBB.
[Thomas Freiherr] is working on the libpruio project to allow PRU support on the BBB. It is “designed for easy configuration and data handling at high speed. libpruio software runs on the host (ARM) and in parallel on a Programmable Realtime Unit SubSystem (= PRUSS or just PRU) and controls the subsystems”. Additional information about the project is available on the libpruio wiki, and files can be downloaded from here (German Page).
This paper presented at inter.noise2014 (PDF) a couple of months ago has a nice comparison of various small computer/controller boards and outlines the advantages of the BBB once its PRUs are enabled. If readers come across applications of the BBB with PRUs enabled, let us know in the comments. If you want to work your way into the world of the PRU we highly recommend this tutorial series.
Thanks for sending in the tip, [Patrick]
[Image Source: libpruio stepper motor example]
I mentor a highschool robotics team. We’re putting 12 32×32 LED panels on our robot this year. It’s driven by a BBB from the PRU’s with the LEDScape/Octoscoller library.
https://plus.google.com/104993129097415623295/posts/2ZMqQUbBvHa?pid=6114766187269141970&oid=104993129097415623295&authkey=CLb_jtD10JuroAE
Is it FIRST? What team are you? Former member of 830 here.
former member of 3035 here
1678 here
lifelong member of 1337 here
80085 here
A couple of the bigger applications using the PRU right now are probably the Ardupilot port to the BBB and Beaglebone CNC.
http://dev.ardupilot.com/wiki/building-for-beaglebone-black-on-linux/
http://blog.machinekit.io/p/machinekit_16.html
I saw some stepper-control software a while back, and what struck me was that the PRU stuff was specifically called out as closed-source because that had been the only way the author could get access to the docs. I’m glad to see that’s apparently changing.
Well if people are wanting to know more about the pru/see other applications:
An example of working with it:
http://www.element14.com/community/community/designcenter/single-board-computers/next-gen_beaglebone/blog/2013/05/22/bbb–working-with-the-pru-icssprussv2
There’s also a C compiler:
http://www.ti.com/tool/PRU-SWPKG
It’s possible to use it for camera imaging:
http://www.element14.com/community/community/designcenter/single-board-computers/next-gen_beaglebone/blog/2013/08/18/bbb–imaging-with-a-pru-connected-camera
The information on the pruss was removed from the chip’s documentation, but it was thrown onto github:
https://github.com/beagleboard/am335x_pru_package
And I forgot to mention, BBB used for opencv ball tracking with PRU motor control:
Code: https://github.com/pbrook/beagle-football
Tracking demo: https://www.youtube.com/watch?v=UOPglf-0neM
Motor control: https://www.youtube.com/watch?v=Gpm4ldWZRyM
As DeKay mentioned, the ArduPilot BBB port uses both PRUs to do the parts of the autopilot code that needs microsecond timing. See this talk for a demo of it flying a small fixed wing aircraft: https://www.youtube.com/watch?v=2Twl2mQAh6g
the bebopr cape for cnc and 3d printer uses the pru stuff and i think i remeber they program them throue the eprom on the cape
Reblogged this on Beagle Blogger and commented:
More solutions to ease the use of the fast-I/O microcontrollers on BeagleBone Black
Is the PRU really that much of a mystery? I found it quite easy to use…
The guys from Analog Digital lab wrote up a tutorial on how to use the PRU since they use it in their Ethernet-controlled oscilloscope. http://analogdigitallab.org/articles/beaglebone-black-introduction-pru-icss
yes, yes, there is no support at all for PRUs.
most probably guys at Machinekit (fork of LinuxCNC) are from another universe – Machinekit is using PRUs to generate step signals for whatever stepper-driven CNC machine you need. I have one 3D printer with BBB and Machinekit right next to me…
the full potential of PRUs is yet to be unlocked, but I really hate statements like “One missing feature seems to be the lack of support for the two on-board Programmable Real-time Units (PRU’s)”. To be honest, I did not read any further…
It’s wrong to say that the PRUs are not supported. I think the right thing to say is “they are not supported by TI”, as in only community support is offered. That being said, this looks like a very interesting library that can hopefully serve as a basis for coordinating the efforts toards better use of the PRUs. It looks like a lot of work has gone into it and as the maintainer of Redeem, this is a very interesting development, certainly something to look into!
BBB + PRU is also used as a basis for a logic analyser, claimed to be able to sample 16 channels @ 100MHz.
http://beagleboard.org/project/beaglelogic/
And is supported by sigrok / pulseview.
Unfortunately the PulseView version I’ve been playing with (+ chinese saleae clone) was still pretty unstable, almost unusable.
Thank you very much, I like