I have spent a solid 12 hours trying to get the PRU’s on the beaglebone to work. So far I seem to be completely stuck at the getting the device overlay to work as well as enabling the remoteproc. I have tried to piece together all of the information I have found on the internet but it is either out of date or extremely fragmented. I can’t seem to find a current working example or I hit a wall when following along as said previously.
Setup/Environment
I have updated the kernel on the beaglebone followed by multiple “updates”, “upgrades” and “dist-upgrades”. As far as I can tell I am using the most recent version of everything.
- Beaglebone Black
- Debian 8.6
- kernel 4.4.30-ti-r64
- dtc 1.4.1
Sample Code
Device Overlay File [PRU-GPIO-BLINK-00A0.dts]:
`
// Setup file for basic PRU GPIO Blinking LED
/dts-v1/;
/plugin/;
/ {
compatible = “ti,beaglebone”, “ti,beaglebone-black”;
part-number = “PRU-GPIO-BLINK”;
version = “00A0”;
// This overlay uses the following resources
exclusive-use = “P8.12”;
fragment@0 {
target = <&am33xx_pinmux>;
overlay {
gpio_pins: pinmux_gpio_pins {
pinctrl-single,pins = <
0x034 0x06
;
};
};
};
fragment@1 {
target = <&pruss>;
overlay {
status = “okay”;
pinctrl-names = “default”;
pinctrl-0 = <&gpio_pins>;
};
};
};
`
The above code compiles using:
root@beaglebone:/lib/firmware# dtc -O dts -o /lib/firmware/PRU-GPIO-BLINK-00A0.dtbo -b 0 -@ PRU-GPIO-BLINK.dts
When I go to add this to the bone_capemgr using:
root@beaglebone:/lib/firmware# echo "PRU-GPIO-BLINK" > /sys/devices/platform/bone_capemgr/slots
I end up getting either a “No Such File or Directory” error or a “File Exists” error. I have disabled the HDMI in uEnvt.txt like many people have recommended by simply uncommenting the line:
dtb=am335x-boneblack-emmc-overlay.dtb
On top of the above I tried following the exercise here: http://elinux.org/EBC_Exercise_30_PRU_via_remoteproc_and_RPMsg
I make it through most of that exercise, up until I hit the enabling the remoteproc portion. When I go to “uncomment”
#include "am33xx-pruss-rproc.dtsi
I can’t seem to find it anywhere in the file. When I simply add the line to the file and try calling make
the compiler complains that it can’t find the file and fails the build.
If anyone is curious here is the output when I run
cat /sys/devices/platform/bone_capemgr/slots
0: PF---- -1 1: PF---- -1 2: PF---- -1 3: PF---- -1 4: P-O-L- 0 Override Board Name,00A0,Override Manuf,univ-emmc
Question
Does anyone have any suggestions as to why my device overlay is not working and I can’t follow along with the exercise on elinux? I am pretty much stuck at this point and most of the examples online reference out of date pathing or approaches. Is there a package that I am missing? From what I have read it seems like all of the compilers and loaders come built into the new beaglebone distributions now. If anyone needs clarification or I forgot to mention something I will be happy to provide it.