PRU programming with pasm compiled .bin hangup - prussdrv_open() failed

Hello,

I’ve been playing with this Beaglebone Black Wireless for several months now, and I feel like I’ve come pretty far from out-right newbie status, but after struggling for so long to program one of the BBBW’s PRUs I’m starting to feel like a newbie again. Please help!

I’ve been following this tutorial - http://credentiality2.blogspot.com/2015/09/beaglebone-pru-gpio-example.html - mostly because it makes intuitive sense to me.

It says that to program the PRU, you have to use a device tree overlay to set up the gpios pins and their configuration for the PRU to be able to use them, then you have to write a .c program to load assembly code into the PRU after you compile it into .bin with ./pasm. This all seems relatively simple, and I’ve been able to get everything to compile and I can load my overlay into /sys/devices/platform/bone_capemgr/slots with no issues. But as soon as I try to load my compiled assembly code into the PRU with:

“./pru_loader pru_gpio_test.bin” - as instructed by the tutorial

I get the error “prussdrv_open() failed”

Can anyone help me please?? I’m so stuck and I’m not finding information on existing threads that works for me.

my uname -a read out is:

Linux beaglebone 4.9.45-ti-r57 #1 SMP PREEMPT Fri Aug 25 22:58:38 UTC 2017 armv7l GNU/Linux

when I run lsmod |grep pru :

pruss_soc_bus 4788 0
pru_rproc 14966 0
pruss_intc 9092 1 pru_rproc
pruss 10889 1 pru_rproc

I haven’t altered the pru_loader.c code at all from what is shown on the tutorial page, and I only made minor adjustments to the .dts file and assembly code. I will provide those if it helps.

Thank you for reading! Please get back to me soon!
evangrcarter@gmail.com

Hi Evan!

Your example is based on libprussdrv. In order to use it, the uio_pruss kernel driver is required. Unfortunatelly the pru_rproc driver is still default. Find details on how to adapt it at this link:

https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_PRU_Options

BR