Using the PRU in BeagleBone - AM335x to access GPIO's

Started by DigitalGeek 7 years ago5 replieslatest reply 7 years ago327 views

Has anyone had any success with accessing or controlling the GPIO's using the BeagleBones-AM335x's inbuilt PRU's, for the below Debian distro and Kernel version?

Linux beaglebone 4.1.18-ti-r53 #1 SMP Thu Mar 17 19:41:05 UTC 2016 armv7l GNU/Linux

I had referred to this Blog and have followed all the steps described in there. But for some reason, I have had no success in getting the PRU drivers active in /dev/ path for access. 

This has to do something with the device tree overlay and I have tried all variants. Currently, I am still researching on this issue and trying to figure out the cause. In the mean time, I am trying to check with folks who have had any success with this recently.

If any one has got this to work for the mentioned kernel version or know anyone who has, please do share the device tree overlay used as well as any other relevant information.

Will keep you posted. Thanks.

[ - ]
Reply by DigitalGeekNovember 6, 2017

After researching and trying for several hours with no luck. I switched back to Kernel 3.8. And again, I tried the steps described in the Blog post linked in my question. And this time, BOOM!, It worked like a charm :). I have decided to stick to 3.8 for now.

Having worked with Kernel 4.1 for almost a year, even today I still feel that, Debian distro with Kernel 3.8 is by far the most stable one for developing applications.

I will switch back to 4.1 or >, once I feel there is sufficient information regarding the usage of DTO's and other stuffs as well. 


[ - ]
Reply by stephanebNovember 6, 2017

Let me ping Fabien again, I believe his username is @texane

[ - ]
Reply by DigitalGeekNovember 6, 2017

I had come across Fabien's post regarding the usage of PRU. Loads of good stuff. But I think he had got those to work on the older kernels, probably 3.8. And, I have tried those .dts in my case, but it doesn't seem to be exposing the PRU's. 

Currently, I am trying with the .dts generated by Kilobaser for using the P8.11 via the PRU. I hope this works.

[ - ]
Reply by simonzzNovember 6, 2017

@DigitalGeek, I tested the PRU a few days ago but since PRU cannot handle asynchronous hardware interrupts, I did not use it anymore.

However, in the Derek Molloy's Book 'Exploring Beaglebone' you can find an example of GPIO using the PRU (I tested it with libprussdrv and kernel 4.9.58-bone7).

The code on GitHub is here.

Keep in mind that libprussdrv is considered as obsolete. 

RemoteProc driver is used instead. See here.


[ - ]
Reply by DigitalGeekNovember 6, 2017

Yes your right, PRU's cannot be interrupted like in the traditional controllers. However, you can still monitor for interrupts by polling. 

Thanks for sharing the info and code. I will check em out.