Next-generation PRU Libraries for the BeagleBone

Proposing an idea for mentoring in this Google Summer of Code discussion among mentors and developers from the BeagleBoard community.

The PRU is one such peripheral which differentiates the BeagleBoard from almost any other development platform out there and has given rise to many awesome projects. However:

(i) Entry barrier is high

(ii) There are many libraries out there like libpruio, libprussdrv and others that intend to make the PRU more accessible. However with no common infrastructure each application ends up defining a shared memory pool (which is limited to 8 MB at most) and defines a protocol according to the need or situation. As such, code reusage is quite difficult.

(iii) The remoteproc infrastructure is promising but has a very high entry barrier (Having worked with it to develop BeagleLogic last year) and there is as such no definite interface to userspace. There is a virtio based serial port solution but comes with its overhead.

The idea proposes development of a language-agnostic framework for the PRU - from the kernel driver to userspace libraries.

Please have a look at this Wiki page entry for more information and design goals as of now:

​I open this idea to discussion from prospective students, developers and the BeagleBoard community to help in drafting the proposal and defining how you would want the API to be while also limiting the scope so that the vision can be achieved over this GSoC and the times to come.

​Best Regards

[cc: The BeagleBoard Discussion group]​

Yes, please do this! :slight_smile:


I think there’s some potential for optimization to clarify what’s your aim:


I am an ECE student from NIT durgapur and would like to work on a BeagleBone project for GSoC 2015. I have prior experience in working with BB Black, during mu summer inter at IIT Guwahati. I have built an autonomous bot that can communicate with other bots and perform a task. I had worked with the PWM, ADC and PRU modules. Please guide me on how to proceed for GSoc.
Thank you.


With all the use of libprussdrv, it would be great to move that library over as part of any effort to switch to remote_proc.