Missing device tree am335x-boneblack-uboot-univ.dts in kernel version 6.17.x

Device tree doesn’t exist in /opt/source/dtb-6.17.x/src/arm for “am335x-boneblack-uboot-univ.dts” for kernel 6.17.x. Does exist for kernel 5.10-ti.

Trying to load the dtb by enabling the uEvn.txt switch, see boot log:

U-Boot 2022.04-gb4b56c73 (Oct 28 2025 - 17:45:28 +0000)

CPU : AM335X-GP rev 2.1
Model: TI AM335x BeagleBone Blackdebug: [enable_uboot_overlays=1] …

.

.
debug: [enable_uboot_cape_universal=1] …
debug: [uboot_base_dtb_univ=am335x-boneblack-uboot-univ.dtb] …
uboot_overlays: [uboot_base_dtb=am335x-boneblack-uboot-univ.dtb] …
debug: unable to find [am335x-boneblack-uboot-univ.dtb] using [am335x-boneblack-uboot.dtb] instead …
debug: [uboot_base_dtb_univ=am335x-boneblack-uboot.dtb] …
uboot_overlays: [uboot_base_dtb=am335x-boneblack-uboot.dtb] …
uboot_overlays: Switching too: dtb=am335x-boneblack-uboot.dtb …
loading /boot/dtbs/6.17.8-bone16/am335x-boneblack-uboot.dtb …

Yeah it’s fine.. right now we don’t have a drop in replacement for cape universal from 3.8 → 5.10 eras… I’ve elected to let the logic run as is in u-boot as nothing is broken, and leave room for future openings in that u-boot path..

Usually if your digging this path… Something has broken in your pin setup what peripheral where you using in 5.10?

I used to use config-pin to set the gpio pins and pru pins for my “motor control” that used P8_33 and P8_35 eQEP1B, P8_33 eQEP1A for my encoder. For direction control I used P8_11 r30_15 as pruout. For PWM I used P9_42A pru_apwm. In additon I used the gpio P8_14 amd P8_16 for diagnostics.

I am struggleing with trying to write my own overlay. Your help would be appreciated

Thanks

Which PRU do you use? RemoteProc or UIO?

For v6.17.x, i added the eqep’s last night:

eqep: Commits · beagleboard/BeagleBoard-DeviceTrees · GitHub

Yeah, the pru answer you give will point to what kernel..

Regards,

I used both prus and used these commands:

  • $ echo ‘pru-code’ > /dev/remoteproc/pruss-core0/firmware
  • $ echo start > /dev/remoteproc/pruss-core0/state
  • $ echo stop > /dev/remoteproc/pruss-core0/state
  • $ echo ‘pru-code’ > /dev/remoteproc/pruss-core1/firmware
  • $ echo start > /remoteproc/pruss-core1/state
  • $ echo stop > /dev/remoteproc/pruss-core1/state

Are you using TI’s PRU library, and what kernel version was your PRU code written for?

TI PRU library: Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - pru-software-support-package/pru-software-support-package.git/summary

TI had patches for specific kernel release’s, today mainline should work with the latest TI for am335x as everyting should be mainline.. but if you built on a specific ti kernel release… yeah..

Regards,

Linux Beaglebone 5.10.168-ti-r61 bullseye.

Not sure what library you are refering to. My app used code composer studio, uploaded to the beaglebone. Created my own PRU_LIbrary. The code used direct register writes to the system/pru registers. My control software from the Linux side emulated the command lines through C++ read and writes.

The link below is a zipped file, for my project.

My library was created originally from a “pru-software-support-package” Oct 21 and updated around Sept 2024 when working on the BBAI64. Probably used version 6.0.0.

Yeap, this is what i was worried about… Use the 5.10.x image for Debian 12 or Debian 13 and your pru library will work just fine..

The 5.10.x image will be available for a long time..

Regards,

Thanks got two BBB’s use 5.10 on one and 6.17 on the other. Debian 13 works well with my Ubuntu PC where I use CCS and Eclipse for cross compiling.

What is the significance of these device tree statements in a overlay?

&ocp {
	P9_27_pinmux { status = "disabled"; };	// P9_27: mcasp0_fsr, OMAP_MUX_MODE6 | AM33XX_PIN_INPUT, PRU CAPE SW1
	P9_25_pinmux { status = "disabled"; };	// P9_25: mcasp0_ahclkx, OMAP_MUX_MODE6 | AM33XX_PIN_INPUT, PRU CAPE SW2

I want to use P8_33 & P8_35 as PRU0 inputs ase QEP1B & QEP1A mode 2 connected to a quadrature encoder. Are they enabled in am335x_boneblack.dtb or do I need to with an overlay.

Those are used when you want to disable the “cape universal” default and hardcode you own pinmux values in the overlay..

Regards,

This is what I am propossing to use for an overlay. I use my pru0 for direct register access to the eqep periphereal, example – count = PWMSS1.EQEP_QPOSCNT_bit.QPOSCNT;

&ocp {
	P8_11_pinmux { status = "disabled"; };  // P8_11
	P8_12_pinmux { status = "disabled"; };	// P8_12
	P8_35_pinmux { status = "disabled"; };  // P8_35 \[lcd d12\]
	P8_33_pinmux { status = "disabled"; };  // P8_33 \[lcd d13\]
	// This pin is enabled in: am335x-boneblack.dts
//	P9_42_pinmux { status = "disabled"; }; // P9_42A \[ecappwm0\]
};

&am33xx_pinmux {
	pru_cape_bone_pins: pru_cape_bone_pins {
		pinctrl-single,pins = <
			0x030 0x06  // P8_12: pruout bit14
			0x034 0x06  // P9_11: pruout bit15
			0x0d0 0x02  // P8_35: eqep1A
			0x0d4 0x02  // P8_33: eqep1b
			0x164 0x00  // P9_42: ecappwm0
	};
};

that Looks fine

Great I will get my PRU PID motor controller working with Trixie using 5.10

1 Like

Shucks I am getting this error from the above device tree.

[ 74.676017] pvrsrvkm: loading out-of-tree module taints kernel.
[ 74.725951] pinctrl-single 44e10800.pinmux: pin PIN52 already requested by 0-0070; cannot claim for 4a300000.pruss
[ 74.874763] pinctrl-single 44e10800.pinmux: pin-52 (4a300000.pruss) status -22
[ 74.951509] pinctrl-single 44e10800.pinmux: could not request pin 52 (PIN52) from group pru_cape_bone_pins on device pinctrl-single
[ 75.042922] [drm] Initialized pvr 1.17.4948957 20110701 for 56000000.gpu on minor 1
[ 75.111246] pruss 4a300000.pruss: Error applying setting, reverse things back
[ 75.246027] pruss: probe of 4a300000.pruss failed with error -22

show full version of:

sudo beagle-version

52 is probally HDMI/AUDIO still enabled..

Regards,

How do I interpret pin 52 is it by gpiochip offsets?

in v5.10.x 52 should just be 52… P8_35 which you used for eqep1A, which is hdmi/audio..

so..

disable_uboot_overlay_video=1

Should fix it..

Yes that worked thanks again for your patient Robert