Just my advice, especially for a newbie PRU person (maybe even an experienced one too), don’t touch the Device Tree! At least not directly:
https://github.com/cdsteinkuehler/beaglebone-universal-io
(Note the path to slots is not the same for 4x kernels)
I’ve been using the Debian 8.6 IOT image and the “Universal IO” is already installed, ready to work its magic.
Follow the directions at the above repository. This will save you much time fiddling with the Device Tree stuff, highly recommended!
The config-pin utility is AWESOME, try it!
One thing config-pin can’t do. And that is change the pull-up/pull-down settings on the pads. In that case you may have to tweak a device tree.
But this is relatively simple and won’t waste piles of your time debugging.
Another something to be aware of which can burn time like no tomorrow: Header P8. There are pins on this header which determine how
the boot process proceeds. Not all of them, but some of the overlap possible PRU IO. I would avoid these if you can! Use config-pin and
set your PRU IO to pins on header P9 as required. Some pins on P8 are safe, but proceed with caution.
Even light resistive loading on these pins will corrupt the boot process!
You can go to the Beaglebone Black system reference manual to see this:
http://elinux.org/Beagleboard:BeagleBoneBlack#Hardware_Files
Check out page 68, diagram Figure 38. Note the “LCD_DATA” pins.
Then go to page 84, and you can see which pins on P8 to avoid.
There are probably enough PRU IO possible to route to P9 for many projects.
I think prussdrv is a UIO related kernel module, not Remoteproc related. I don’t recall seeing that one.
Activation of Remoteproc may not have happened. Use lsmod and look for pru_rproc, pruss, and pruss_intc.
With regards to manually running Remoteproc, you can
modprobe pru_rproc
to insert and start Remoteproc and
rmmod pru_rproc
to remove it (using root privilege).
To stop and start firmwares already loaded into the PRUs:
echo “4a334000.pru0” > /sys/bus/platform/drivers/pru-rproc/bind
echo “4a338000.pru1” > /sys/bus/platform/drivers/pru-rproc/bind
echo “4a334000.pru0” > /sys/bus/platform/drivers/pru-rproc/unbind
echo “4a338000.pru1” > /sys/bus/platform/drivers/pru-rproc/unbind
So this is the Debian image I am using successfully:
bone-debian-8.6-iot-armhf-2016-10-30-4gb.img
Get that here:
http://elinux.org/Beagleboard:BeagleBoneBlack_Debian
Once again, using the above image, don’t touch device tree files (except one very trivial change to activate Remoteproc) and use config-pin to change pin modes to PRU. All ready to go on this image.
Get Remoteproc activated and see if you can get the Remoteproc related kernel modules to appear in lsmod.
I’ve attempted to very carefully describe the process in the PDF file here and did a bunch of updates last weekend:
https://github.com/Greg-R/pruadc1/tree/master/doc/PRUADC1latex
Regards,
Greg