I'm having some issues with PRU documentation and information gathering, or maybe I'm just reading a lot of stuff wrong.
Help me figure out where I am wrong.
PRU(s) are little embedded processors in the AM335x core.
bone_capemgr allows you to change pinmux functions of the core, to allow plug in capes to be detected and set up. and firmware loaded into the kernel.
there seems to be a handful of kernel modules relating to the PRUs,
pruss ( pru sub system driver / Allows kernel to interact with PRU? )
pru_rproc ( PRU Remoteproc system )
rpmsg_pru ( remote proc message system w/ PRU ) ( this may also be used to pass buffers between PRU and kernel ?)
uio ( UIO allows the IO to be assigned to Device files ?)
uio_pdrv_genirq ( guessing a UIO/PRU IRQ generator )
Based on what I have read from various Google Searches, the PRUs must be enabled, possibly by an Overlay?
are there any overlays that allow you to just enable the PRU, SANS IO pins, just to see if it will run code?
echo BB-BONE-PRU-01 >/sys/devices/bone_capemgr.9/slots
which I found is based on the older 3.8 kernels and bone_capemgr has moved to /sys/devices/platform/bone_capemgr
it gives me a plethora of options in /lib/firmware which all appear to be Device Tree Overlays
based on names I cannot find one like BB-BONE-PRU-01 the closest I can find is uio-pruss-enable-00A0
which I guessed enabled the PRU but the code from am335x_pru package still gives me the prussdrv_open open failed
so I'm guessing they are still disabled, or not enabled in the way I was expecting.
Looks like the apploader allows you to select which pru you want to use with #PRU_NUM.
so a couple of assumptions:
which of the following are true?
1. PRU firmware must be loaded at boot from /lib/firmware?
(unlikely based on documentation)
OR
2. kernel can jam a program into the PRUs whenever you feel like it
This one seems like the more likely candidate from the am335x_pru_package
however I keep getting a prussdrv_open open failed, which tells me I probably don't have the PRUs enabled
I'd really just like to write a program for the pru that looks for a clock signal and reads other pins on it.
Also from what I have read the PRUs have their own "GPI/GPO" pins that have single cycle IO that are dedicated to particular pins which are used elsewhere on the BBB
Really sorry for brain dumping and being all over the place here, these are just questions that I havent seemed to find the correct google search string to find the info I'm looking for,
there is so much stuff out there for the 3.8 kernels and I'm not sure how well all that stuff carries over to the new 4.1.18 kernel.