Syntax for dts file error. Trying to make an overlay for connecting to PRU R30 register

I can’t find my old post, so I apologize for any repeat post.

I am trying to allocate two pins (P8_12,P8_46) to PRU0 and PRU1. So effectively mode 6 and mode 5. I want to exclusively use these by the pru(s). Still trying to understand this device tree overlay, but I found an example one and modified it. It gives a syntax error when ti toy to compile it (dtc). After beating my head against the wall, I am hoping a second set of eyes will be helpful. Any help one can give on the syntax error (and if the dts file won’t accomplish what the desire for these pins).



Ok, so I got it working, so will post in case others face the same issue. First, the syntax issue was a missing “;” after the exclusive use tag. Also, I had some references using the wrong labels. What wold be great if a write up on the current use and sections of the device tree for the beaglebone black. Right now one must be knowledgeable in all things (PRU assembly, mapping memory to a arm program to read/write, tools to build the PRU, how to activate it, and finally device tree). Although I know the basic concept of the device tree, known what to put for the sections (PRUSS, am355x, etc) and the keywords are still very much a mystery. Hard to be knowledgable in all things and keep it a hobby). Luckily I didn’t have to disable items (although the next project I will). Anyway, this file appears to have worked:





compatible = “ti,beaglebone”, “ti,beaglebone-black”;

part-number = “DIYBLIGHTS”;

version = “00A0”;

exclusive-use = “P8.12,P8.46”;

fragment@0 {

target = <&am33xx_pinmux>;

overlay {

diyblights: pinmux_pru_pru_pins {

pinctrl-single,pins = <

0x30 0x06 /* P8_12 GPIO:44 $PINS:12 MODE 6 -pru0 R30_14 */

0xA4 0x05 /* P8_46 GPIO:71 $PINS:41 MODE 5 - pru1 R30_1 */





fragment@1 {

target = <&ocp>;

overlay {

test_helper: helper {

compatible = “bone-pinmux-helper”;

pinctrl-names = “default”;

pinctrl-0 = <&diyblights>;

status = “okay”;






Hi Charles!

Drop all that device tree stuff. Instead use the elegant way for pinmuxing: libpruio. Side effects: faster booting time, smaller memory footprint.

Find example code for pinmuxing, downloading and running PRU firmware at

In your case the following code will do the trick (note: single source, pinmuxing in your program code)

if (io->setPin(io, P8_12, 6)) {
printf(“P8_12 configuration failed (%s)\n”, io->Errr); break;}

`if (io->setPin(io, P8_46, 5)) {
printf(“P8_46 configuration failed (%s)\n”, io->Errr); break;}