PRU not workingi in Kernels 5.10 bone rt, 5.10 ti rt but in 4.19 ti rt

Hello,
my pocket beagle with 5.10 bone rt Kernel, the pru, spi and pwms are working neither with Kernel 5.10.212-bone-rt-r78 nor 5.10.168-ti-rt-r77 and
Kernel 4.19.94-ti-rt-r74 w/ AM335X-PRU-UIO-00A0.dtbo the PRU not working
But with 4.19.94-ti-rt-r74 w/ AM335X-PRU-RPROC-4-19-TI-00A0.dtbo everything is fine (the last one):

Can anyone explain why? What am I doing wrong?

====================== 5.10.212-bone-rt-r78 w/ AM335X-PRU-UIO-00A0

debian@beaglebone:~$ uname -r
5.10.212-bone-rt-r78
debian@beaglebone:~$ rc_test_drivers

Kernel: 5.10.212-bone-rt-r78
BeagleBoard.org Debian Buster Console Image 2023-04-06
Debian: 10.13

PASSED: gpio 0
PASSED: gpio 1
PASSED: gpio 2
PASSED: gpio 3
ERROR: ti-pwm driver not loaded for hrpwm0
ERROR: ti-pwm driver not loaded for hrpwm1
ERROR: ti-pwm driver not loaded for hrpwm2
ERROR: ti-eqep driver not loaded for eqep0
ERROR: ti-eqep driver not loaded for eqep1
ERROR: ti-eqep driver not loaded for eqep2
ERROR: pru-rproc driver not loaded
PASSED: uart1
PASSED: uart2
PASSED: uart4
ERROR: uart5 driver not loaded
PASSED: i2c1
PASSED: i2c2
ERROR: spi driver not loaded
ERROR: LED driver not loaded
PASSED: ADC iio

Currently running on a:
MODEL_BB_POCKET
Robot Control library Version:
1.0.5
debian@beaglebone:~$ sudo /opt/scripts/tools/version.sh
git:/opt/scripts/:[1b1122751f7051bd8996f353756ba6ff30e71820]
eeprom:[A335PBGL00A22251SPB00180]
model:[TI_AM335x_PocketBeagle]
dogtag:[BeagleBoard.org Debian Buster Console Image 2023-04-06]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot SPL 2019.04-g923f8b8 (Jan 02 2022 - 19:05:15 +0000)]:[location: dd MBR]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot 2019.04-g923f8b8]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-pocketbeagle.dts]
UBOOT: Loaded Overlay:[AM335X-PRU-UIO-00A0.kernel]
UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]
kernel:[5.10.212-bone-rt-r78]
device-tree-override:[dtb=am335x-pocketbeagle.dtb]
/boot/uEnv.txt Settings:
pkg check: to individually upgrade run: [sudo apt install --only-upgrade ]
pkg:[bb-cape-overlays]:[4.14.20210821.0-0~buster+20210821]
pkg:[bb-customizations]:[1.20240119.0-0~buster+20240119]
pkg:[bb-usb-gadgets]:[1.20230414.0-0~buster+20230414]
pkg:[bb-wl18xx-firmware]:[1.20230414.0-0~buster+20230414]
pkg:[kmod]:[26-1]
pkg:[librobotcontrol]:[1.0.5-git20200715.0-0~buster+20200716]
pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input bluetooth netdev gpio admin i2c tisdk weston-launch cloud9ide]
cmdline:[console=ttyS0,115200n8 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]
dmesg | grep remote
dmesg | grep pru
dmesg | grep pinctrl-single
[ 2.321332] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
[ 3.099342] gpio-of-helper ocp:cape-universal: Allocated GPIO id=0 name=‘P1_02’
[ 3.099549] gpio-of-helper ocp:cape-universal: Allocated GPIO id=1 name=‘P1_04’
[ 3.099602] gpio-of-helper ocp:cape-universal: Failed to get gpio property of ‘P1_06’
[ 3.099612] gpio-of-helper ocp:cape-universal: Failed to create gpio entry
[ 3.174124] gpio-of-helper ocp:cape-universal: Allocated GPIO id=0 name=‘P1_02’
[ 3.174275] gpio-of-helper ocp:cape-universal: Allocated GPIO id=1 name=‘P1_04’
[ 3.174518] gpio-of-helper ocp:cape-universal: Allocated GPIO id=2 name=‘P1_06’
[ 3.174685] gpio-of-helper ocp:cape-universal: Allocated GPIO id=3 name=‘P1_08’
[ 3.174887] gpio-of-helper ocp:cape-universal: Allocated GPIO id=4 name=‘P1_10’
[ 3.175636] gpio-of-helper ocp:cape-universal: Allocated GPIO id=5 name=‘P1_12’
[ 3.175845] gpio-of-helper ocp:cape-universal: Allocated GPIO id=6 name=‘P1_20’
[ 3.176021] gpio-of-helper ocp:cape-universal: Allocated GPIO id=7 name=‘P1_26’
[ 3.176190] gpio-of-helper ocp:cape-universal: Allocated GPIO id=8 name=‘P1_28’
[ 3.176625] gpio-of-helper ocp:cape-universal: Allocated GPIO id=9 name=‘P1_29’
[ 3.176847] gpio-of-helper ocp:cape-universal: Allocated GPIO id=10 name=‘P1_30’
[ 3.177019] gpio-of-helper ocp:cape-universal: Allocated GPIO id=11 name=‘P1_31’
[ 3.177197] gpio-of-helper ocp:cape-universal: Allocated GPIO id=12 name=‘P1_32’
[ 3.177373] gpio-of-helper ocp:cape-universal: Allocated GPIO id=13 name=‘P1_33’
[ 3.177562] gpio-of-helper ocp:cape-universal: Allocated GPIO id=14 name=‘P1_34’
[ 3.177741] gpio-of-helper ocp:cape-universal: Allocated GPIO id=15 name=‘P1_35’
[ 3.177999] gpio-of-helper ocp:cape-universal: Allocated GPIO id=16 name=‘P1_36’
[ 3.178181] gpio-of-helper ocp:cape-universal: Allocated GPIO id=17 name=‘P2_01’
[ 3.178352] gpio-of-helper ocp:cape-universal: Allocated GPIO id=18 name=‘P2_02’
[ 3.178551] gpio-of-helper ocp:cape-universal: Allocated GPIO id=19 name=‘P2_03’
[ 3.178736] gpio-of-helper ocp:cape-universal: Allocated GPIO id=20 name=‘P2_04’
[ 3.178907] gpio-of-helper ocp:cape-universal: Allocated GPIO id=21 name=‘P2_05’
[ 3.180031] gpio-of-helper ocp:cape-universal: Allocated GPIO id=22 name=‘P2_06’
[ 3.180250] gpio-of-helper ocp:cape-universal: Allocated GPIO id=23 name=‘P2_07’
[ 3.180453] gpio-of-helper ocp:cape-universal: Allocated GPIO id=24 name=‘P2_08’
[ 3.180625] gpio-of-helper ocp:cape-universal: Allocated GPIO id=25 name=‘P2_09’
[ 3.180797] gpio-of-helper ocp:cape-universal: Allocated GPIO id=26 name=‘P2_10’
[ 3.180982] gpio-of-helper ocp:cape-universal: Allocated GPIO id=27 name=‘P2_11’
[ 3.181160] gpio-of-helper ocp:cape-universal: Allocated GPIO id=28 name=‘P2_17’
[ 3.181340] gpio-of-helper ocp:cape-universal: Allocated GPIO id=29 name=‘P2_18’
[ 3.181515] gpio-of-helper ocp:cape-universal: Allocated GPIO id=30 name=‘P2_19’
[ 3.181678] gpio-of-helper ocp:cape-universal: Allocated GPIO id=31 name=‘P2_20’
[ 3.181859] gpio-of-helper ocp:cape-universal: Allocated GPIO id=32 name=‘P2_22’
[ 3.182016] gpio-of-helper ocp:cape-universal: Allocated GPIO id=33 name=‘P2_24’
[ 3.182185] gpio-of-helper ocp:cape-universal: Allocated GPIO id=34 name=‘P2_25’
[ 3.182355] gpio-of-helper ocp:cape-universal: Allocated GPIO id=35 name=‘P2_27’
[ 3.182718] gpio-of-helper ocp:cape-universal: Allocated GPIO id=36 name=‘P2_28’
[ 3.182921] gpio-of-helper ocp:cape-universal: Allocated GPIO id=37 name=‘P2_29’
[ 3.183400] gpio-of-helper ocp:cape-universal: Allocated GPIO id=38 name=‘P2_30’
[ 3.183603] gpio-of-helper ocp:cape-universal: Allocated GPIO id=39 name=‘P2_31’
[ 3.183882] gpio-of-helper ocp:cape-universal: Allocated GPIO id=40 name=‘P2_32’
[ 3.184056] gpio-of-helper ocp:cape-universal: Allocated GPIO id=41 name=‘P2_33’
[ 3.184240] gpio-of-helper ocp:cape-universal: Allocated GPIO id=42 name=‘P2_34’
[ 3.184416] gpio-of-helper ocp:cape-universal: Allocated GPIO id=43 name=‘P2_35’
[ 3.184428] gpio-of-helper ocp:cape-universal: ready
END

=================5.10.212-bone-rt-r78 w/ AM335X-PRU-RPROC-4-19-TI-00A0
debian@beaglebone:~$ rc_test_drivers

Kernel: 5.10.212-bone-rt-r78
BeagleBoard.org Debian Buster Console Image 2023-04-06
Debian: 10.13

PASSED: gpio 0
PASSED: gpio 1
PASSED: gpio 2
PASSED: gpio 3
ERROR: ti-pwm driver not loaded for hrpwm0
ERROR: ti-pwm driver not loaded for hrpwm1
ERROR: ti-pwm driver not loaded for hrpwm2
ERROR: ti-eqep driver not loaded for eqep0
ERROR: ti-eqep driver not loaded for eqep1
ERROR: ti-eqep driver not loaded for eqep2
ERROR: pru-rproc driver not loaded
PASSED: uart1
PASSED: uart2
PASSED: uart4
ERROR: uart5 driver not loaded
PASSED: i2c1
PASSED: i2c2
ERROR: spi driver not loaded
ERROR: LED driver not loaded
PASSED: ADC iio

Currently running on a:
MODEL_BB_POCKET
Robot Control library Version:
1.0.5
debian@beaglebone:~$ sudo /opt/scripts/tools/version.sh
git:/opt/scripts/:[1b1122751f7051bd8996f353756ba6ff30e71820]
eeprom:[A335PBGL00A22251SPB00180]
model:[TI_AM335x_PocketBeagle]
dogtag:[BeagleBoard.org Debian Buster Console Image 2023-04-06]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot SPL 2019.04-g923f8b8 (Jan 02 2022 - 19:05:15 +0000)]:[location: dd MBR]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot 2019.04-g923f8b8]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-pocketbeagle.dts]
UBOOT: Loaded Overlay:[AM335X-PRU-RPROC-4-19-TI-00A0]
UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]
kernel:[5.10.212-bone-rt-r78]
device-tree-override:[dtb=am335x-pocketbeagle.dtb]
/boot/uEnv.txt Settings:
pkg check: to individually upgrade run: [sudo apt install --only-upgrade ]
pkg:[bb-cape-overlays]:[4.14.20210821.0-0~buster+20210821]
pkg:[bb-customizations]:[1.20240119.0-0~buster+20240119]
pkg:[bb-usb-gadgets]:[1.20230414.0-0~buster+20230414]
pkg:[bb-wl18xx-firmware]:[1.20230414.0-0~buster+20230414]
pkg:[kmod]:[26-1]
pkg:[librobotcontrol]:[1.0.5-git20200715.0-0~buster+20200716]
pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input bluetooth netdev gpio admin i2c tisdk weston-launch cloud9ide]
cmdline:[console=ttyS0,115200n8 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]
dmesg | grep remote
dmesg | grep pru
dmesg | grep pinctrl-single
[ 2.320482] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
[ 3.104512] gpio-of-helper ocp:cape-universal: Allocated GPIO id=0 name=‘P1_02’
[ 3.104712] gpio-of-helper ocp:cape-universal: Allocated GPIO id=1 name=‘P1_04’
[ 3.104762] gpio-of-helper ocp:cape-universal: Failed to get gpio property of ‘P1_06’
[ 3.104771] gpio-of-helper ocp:cape-universal: Failed to create gpio entry
[ 3.179103] gpio-of-helper ocp:cape-universal: Allocated GPIO id=0 name=‘P1_02’
[ 3.179246] gpio-of-helper ocp:cape-universal: Allocated GPIO id=1 name=‘P1_04’
[ 3.179482] gpio-of-helper ocp:cape-universal: Allocated GPIO id=2 name=‘P1_06’
[ 3.179656] gpio-of-helper ocp:cape-universal: Allocated GPIO id=3 name=‘P1_08’
[ 3.179821] gpio-of-helper ocp:cape-universal: Allocated GPIO id=4 name=‘P1_10’
[ 3.180527] gpio-of-helper ocp:cape-universal: Allocated GPIO id=5 name=‘P1_12’
[ 3.180753] gpio-of-helper ocp:cape-universal: Allocated GPIO id=6 name=‘P1_20’
[ 3.180943] gpio-of-helper ocp:cape-universal: Allocated GPIO id=7 name=‘P1_26’
[ 3.181135] gpio-of-helper ocp:cape-universal: Allocated GPIO id=8 name=‘P1_28’
[ 3.181565] gpio-of-helper ocp:cape-universal: Allocated GPIO id=9 name=‘P1_29’
[ 3.181778] gpio-of-helper ocp:cape-universal: Allocated GPIO id=10 name=‘P1_30’
[ 3.181948] gpio-of-helper ocp:cape-universal: Allocated GPIO id=11 name=‘P1_31’
[ 3.182120] gpio-of-helper ocp:cape-universal: Allocated GPIO id=12 name=‘P1_32’
[ 3.182289] gpio-of-helper ocp:cape-universal: Allocated GPIO id=13 name=‘P1_33’
[ 3.182480] gpio-of-helper ocp:cape-universal: Allocated GPIO id=14 name=‘P1_34’
[ 3.182672] gpio-of-helper ocp:cape-universal: Allocated GPIO id=15 name=‘P1_35’
[ 3.182937] gpio-of-helper ocp:cape-universal: Allocated GPIO id=16 name=‘P1_36’
[ 3.183123] gpio-of-helper ocp:cape-universal: Allocated GPIO id=17 name=‘P2_01’
[ 3.183309] gpio-of-helper ocp:cape-universal: Allocated GPIO id=18 name=‘P2_02’
[ 3.183499] gpio-of-helper ocp:cape-universal: Allocated GPIO id=19 name=‘P2_03’
[ 3.183671] gpio-of-helper ocp:cape-universal: Allocated GPIO id=20 name=‘P2_04’
[ 3.183837] gpio-of-helper ocp:cape-universal: Allocated GPIO id=21 name=‘P2_05’
[ 3.184941] gpio-of-helper ocp:cape-universal: Allocated GPIO id=22 name=‘P2_06’
[ 3.185197] gpio-of-helper ocp:cape-universal: Allocated GPIO id=23 name=‘P2_07’
[ 3.185377] gpio-of-helper ocp:cape-universal: Allocated GPIO id=24 name=‘P2_08’
[ 3.185566] gpio-of-helper ocp:cape-universal: Allocated GPIO id=25 name=‘P2_09’
[ 3.185740] gpio-of-helper ocp:cape-universal: Allocated GPIO id=26 name=‘P2_10’
[ 3.185912] gpio-of-helper ocp:cape-universal: Allocated GPIO id=27 name=‘P2_11’
[ 3.186091] gpio-of-helper ocp:cape-universal: Allocated GPIO id=28 name=‘P2_17’
[ 3.186260] gpio-of-helper ocp:cape-universal: Allocated GPIO id=29 name=‘P2_18’
[ 3.186429] gpio-of-helper ocp:cape-universal: Allocated GPIO id=30 name=‘P2_19’
[ 3.186591] gpio-of-helper ocp:cape-universal: Allocated GPIO id=31 name=‘P2_20’
[ 3.186768] gpio-of-helper ocp:cape-universal: Allocated GPIO id=32 name=‘P2_22’
[ 3.186940] gpio-of-helper ocp:cape-universal: Allocated GPIO id=33 name=‘P2_24’
[ 3.187117] gpio-of-helper ocp:cape-universal: Allocated GPIO id=34 name=‘P2_25’
[ 3.187301] gpio-of-helper ocp:cape-universal: Allocated GPIO id=35 name=‘P2_27’
[ 3.187645] gpio-of-helper ocp:cape-universal: Allocated GPIO id=36 name=‘P2_28’
[ 3.187852] gpio-of-helper ocp:cape-universal: Allocated GPIO id=37 name=‘P2_29’
[ 3.188339] gpio-of-helper ocp:cape-universal: Allocated GPIO id=38 name=‘P2_30’
[ 3.188549] gpio-of-helper ocp:cape-universal: Allocated GPIO id=39 name=‘P2_31’
[ 3.188813] gpio-of-helper ocp:cape-universal: Allocated GPIO id=40 name=‘P2_32’
[ 3.188992] gpio-of-helper ocp:cape-universal: Allocated GPIO id=41 name=‘P2_33’
[ 3.189174] gpio-of-helper ocp:cape-universal: Allocated GPIO id=42 name=‘P2_34’
[ 3.189362] gpio-of-helper ocp:cape-universal: Allocated GPIO id=43 name=‘P2_35’
[ 3.189373] gpio-of-helper ocp:cape-universal: ready
END

=================5.10.168-ti-rt-r77 w/ AM335X-PRU-UIO-00A0

debian@beaglebone:~$ rc_test_drivers

Kernel: 5.10.168-ti-rt-r77
BeagleBoard.org Debian Buster Console Image 2023-04-06
Debian: 10.13

PASSED: gpio 0
PASSED: gpio 1
PASSED: gpio 2
PASSED: gpio 3
ERROR: ti-pwm driver not loaded for hrpwm0
ERROR: ti-pwm driver not loaded for hrpwm1
ERROR: ti-pwm driver not loaded for hrpwm2
ERROR: ti-eqep driver not loaded for eqep0
ERROR: ti-eqep driver not loaded for eqep1
ERROR: ti-eqep driver not loaded for eqep2
ERROR: pru-rproc driver not loaded
PASSED: uart1
PASSED: uart2
PASSED: uart4
ERROR: uart5 driver not loaded
PASSED: i2c1
PASSED: i2c2
ERROR: spi driver not loaded
ERROR: LED driver not loaded
PASSED: ADC iio

Currently running on a:
MODEL_BB_POCKET
Robot Control library Version:
1.0.5

debian@beaglebone:~$ sudo /opt/scripts/tools/version.sh
git:/opt/scripts/:[1b1122751f7051bd8996f353756ba6ff30e71820]
eeprom:[A335PBGL00A22251SPB00180]
model:[TI_AM335x_PocketBeagle]
dogtag:[BeagleBoard.org Debian Buster Console Image 2023-04-06]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot SPL 2019.04-g923f8b8 (Jan 02 2022 - 19:05:15 +0000)]:[location: dd MBR]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot 2019.04-g923f8b8]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-pocketbeagle.dts]
UBOOT: Loaded Overlay:[AM335X-PRU-UIO-00A0.kernel]
UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]
kernel:[5.10.168-ti-rt-r77]
device-tree-override:[dtb=am335x-pocketbeagle.dtb]
/boot/uEnv.txt Settings:
pkg check: to individually upgrade run: [sudo apt install --only-upgrade ]
pkg:[bb-cape-overlays]:[4.14.20210821.0-0~buster+20210821]
pkg:[bb-customizations]:[1.20240119.0-0~buster+20240119]
pkg:[bb-usb-gadgets]:[1.20230414.0-0~buster+20230414]
pkg:[bb-wl18xx-firmware]:[1.20230414.0-0~buster+20230414]
pkg:[kmod]:[26-1]
pkg:[librobotcontrol]:[1.0.5-git20200715.0-0~buster+20200716]
pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input bluetooth netdev gpio admin i2c tisdk weston-launch cloud9ide]
cmdline:[console=ttyS0,115200n8 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]
dmesg | grep remote
[ 10.112998] remoteproc remoteproc0: wkup_m3 is available
[ 43.876445] remoteproc remoteproc0: powering up wkup_m3
[ 43.876492] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
[ 43.876817] remoteproc remoteproc0: remote processor wkup_m3 is now up
dmesg | grep pru
dmesg | grep pinctrl-single
[ 9.736805] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
[ 9.738807] gpio-of-helper ocp:cape-universal: Failed to get gpio property of ‘P1_02’
[ 9.738827] gpio-of-helper ocp:cape-universal: Failed to create gpio entry
[ 10.401909] gpio-of-helper ocp:cape-universal: Allocated GPIO id=0 name=‘P1_02’
[ 10.402221] gpio-of-helper ocp:cape-universal: Allocated GPIO id=1 name=‘P1_04’
[ 10.402531] gpio-of-helper ocp:cape-universal: Allocated GPIO id=2 name=‘P1_06’
[ 10.402784] gpio-of-helper ocp:cape-universal: Allocated GPIO id=3 name=‘P1_08’
[ 10.403026] gpio-of-helper ocp:cape-universal: Allocated GPIO id=4 name=‘P1_10’
[ 10.403250] gpio-of-helper ocp:cape-universal: Allocated GPIO id=5 name=‘P1_12’
[ 10.403540] gpio-of-helper ocp:cape-universal: Allocated GPIO id=6 name=‘P1_20’
[ 10.403793] gpio-of-helper ocp:cape-universal: Allocated GPIO id=7 name=‘P1_26’
[ 10.404400] gpio-of-helper ocp:cape-universal: Allocated GPIO id=8 name=‘P1_28’
[ 10.404910] gpio-of-helper ocp:cape-universal: Allocated GPIO id=9 name=‘P1_29’
[ 10.405242] gpio-of-helper ocp:cape-universal: Allocated GPIO id=10 name=‘P1_30’
[ 10.405502] gpio-of-helper ocp:cape-universal: Allocated GPIO id=11 name=‘P1_31’
[ 10.405750] gpio-of-helper ocp:cape-universal: Allocated GPIO id=12 name=‘P1_32’
[ 10.405983] gpio-of-helper ocp:cape-universal: Allocated GPIO id=13 name=‘P1_33’
[ 10.406279] gpio-of-helper ocp:cape-universal: Allocated GPIO id=14 name=‘P1_34’
[ 10.406517] gpio-of-helper ocp:cape-universal: Allocated GPIO id=15 name=‘P1_35’
[ 10.406786] gpio-of-helper ocp:cape-universal: Allocated GPIO id=16 name=‘P1_36’
[ 10.407050] gpio-of-helper ocp:cape-universal: Allocated GPIO id=17 name=‘P2_01’
[ 10.407274] gpio-of-helper ocp:cape-universal: Allocated GPIO id=18 name=‘P2_02’
[ 10.407529] gpio-of-helper ocp:cape-universal: Allocated GPIO id=19 name=‘P2_03’
[ 10.407756] gpio-of-helper ocp:cape-universal: Allocated GPIO id=20 name=‘P2_04’
[ 10.408277] gpio-of-helper ocp:cape-universal: Allocated GPIO id=21 name=‘P2_05’
[ 10.408731] gpio-of-helper ocp:cape-universal: Allocated GPIO id=22 name=‘P2_06’
[ 10.408981] gpio-of-helper ocp:cape-universal: Allocated GPIO id=23 name=‘P2_07’
[ 10.409248] gpio-of-helper ocp:cape-universal: Allocated GPIO id=24 name=‘P2_08’
[ 10.409493] gpio-of-helper ocp:cape-universal: Allocated GPIO id=25 name=‘P2_09’
[ 10.409747] gpio-of-helper ocp:cape-universal: Allocated GPIO id=26 name=‘P2_10’
[ 10.409991] gpio-of-helper ocp:cape-universal: Allocated GPIO id=27 name=‘P2_11’
[ 10.410226] gpio-of-helper ocp:cape-universal: Allocated GPIO id=28 name=‘P2_17’
[ 10.410472] gpio-of-helper ocp:cape-universal: Allocated GPIO id=29 name=‘P2_18’
[ 10.410749] gpio-of-helper ocp:cape-universal: Allocated GPIO id=30 name=‘P2_19’
[ 10.410979] gpio-of-helper ocp:cape-universal: Allocated GPIO id=31 name=‘P2_20’
[ 10.411231] gpio-of-helper ocp:cape-universal: Allocated GPIO id=32 name=‘P2_22’
[ 10.411459] gpio-of-helper ocp:cape-universal: Allocated GPIO id=33 name=‘P2_24’
[ 10.411714] gpio-of-helper ocp:cape-universal: Allocated GPIO id=34 name=‘P2_25’
[ 10.412251] gpio-of-helper ocp:cape-universal: Allocated GPIO id=35 name=‘P2_27’
[ 10.412530] gpio-of-helper ocp:cape-universal: Allocated GPIO id=36 name=‘P2_28’
[ 10.412796] gpio-of-helper ocp:cape-universal: Allocated GPIO id=37 name=‘P2_29’
[ 10.413069] gpio-of-helper ocp:cape-universal: Allocated GPIO id=38 name=‘P2_30’
[ 10.413334] gpio-of-helper ocp:cape-universal: Allocated GPIO id=39 name=‘P2_31’
[ 10.413592] gpio-of-helper ocp:cape-universal: Allocated GPIO id=40 name=‘P2_32’
[ 10.413838] gpio-of-helper ocp:cape-universal: Allocated GPIO id=41 name=‘P2_33’
[ 10.414079] gpio-of-helper ocp:cape-universal: Allocated GPIO id=42 name=‘P2_34’
[ 10.414308] gpio-of-helper ocp:cape-universal: Allocated GPIO id=43 name=‘P2_35’
[ 10.414321] gpio-of-helper ocp:cape-universal: ready
END

======================5.10.168-ti-rt-r77 w/ AM335X-PRU-RPROC-4-19-TI-00A0

PRU loaded but Spi, PWMs, eQEPs are gone :confused:

debian@beaglebone:~$ rc_test_drivers

Kernel: 5.10.168-ti-rt-r77
BeagleBoard.org Debian Buster Console Image 2023-04-06
Debian: 10.13

PASSED: gpio 0
PASSED: gpio 1
PASSED: gpio 2
PASSED: gpio 3
ERROR: ti-pwm driver not loaded for hrpwm0
ERROR: ti-pwm driver not loaded for hrpwm1
ERROR: ti-pwm driver not loaded for hrpwm2
ERROR: ti-eqep driver not loaded for eqep0
ERROR: ti-eqep driver not loaded for eqep1
ERROR: ti-eqep driver not loaded for eqep2
PASSED: pru-rproc
PASSED: uart1
PASSED: uart2
PASSED: uart4
ERROR: uart5 driver not loaded
PASSED: i2c1
PASSED: i2c2
ERROR: spi driver not loaded
ERROR: LED driver not loaded
PASSED: ADC iio

Currently running on a:
MODEL_BB_POCKET
Robot Control library Version:
1.0.5

debian@beaglebone:~$ sudo /opt/scripts/tools/version.sh
git:/opt/scripts/:[1b1122751f7051bd8996f353756ba6ff30e71820]
eeprom:[A335PBGL00A22251SPB00180]
model:[TI_AM335x_PocketBeagle]
dogtag:[BeagleBoard.org Debian Buster Console Image 2023-04-06]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot SPL 2019.04-g923f8b8 (Jan 02 2022 - 19:05:15 +0000)]:[location: dd MBR]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot 2019.04-g923f8b8]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-pocketbeagle.dts]
UBOOT: Loaded Overlay:[AM335X-PRU-RPROC-4-19-TI-00A0]
UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]
kernel:[5.10.168-ti-rt-r77]
device-tree-override:[dtb=am335x-pocketbeagle.dtb]
/boot/uEnv.txt Settings:
pkg check: to individually upgrade run: [sudo apt install --only-upgrade ]
pkg:[bb-cape-overlays]:[4.14.20210821.0-0~buster+20210821]
pkg:[bb-customizations]:[1.20240119.0-0~buster+20240119]
pkg:[bb-usb-gadgets]:[1.20230414.0-0~buster+20230414]
pkg:[bb-wl18xx-firmware]:[1.20230414.0-0~buster+20230414]
pkg:[kmod]:[26-1]
pkg:[librobotcontrol]:[1.0.5-git20200715.0-0~buster+20200716]
pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input bluetooth netdev gpio admin i2c tisdk weston-launch cloud9ide]
cmdline:[console=ttyS0,115200n8 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]
dmesg | grep remote
[ 10.209228] remoteproc remoteproc0: wkup_m3 is available
[ 43.005600] remoteproc remoteproc0: powering up wkup_m3
[ 43.005646] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
[ 43.005937] remoteproc remoteproc0: remote processor wkup_m3 is now up
[ 60.608682] remoteproc remoteproc1: 4a334000.pru is available
[ 60.632809] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pru
[ 0.210505] platform 4a326004.pruss-soc-bus: Cannot lookup hwmod ‘pruss’
[ 60.608682] remoteproc remoteproc1: 4a334000.pru is available
[ 60.632809] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pinctrl-single
[ 9.831904] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
[ 9.833986] gpio-of-helper ocp:cape-universal: Failed to get gpio property of ‘P1_02’
[ 9.834008] gpio-of-helper ocp:cape-universal: Failed to create gpio entry
[ 10.501235] gpio-of-helper ocp:cape-universal: Allocated GPIO id=0 name=‘P1_02’
[ 10.501578] gpio-of-helper ocp:cape-universal: Allocated GPIO id=1 name=‘P1_04’
[ 10.501892] gpio-of-helper ocp:cape-universal: Allocated GPIO id=2 name=‘P1_06’
[ 10.502155] gpio-of-helper ocp:cape-universal: Allocated GPIO id=3 name=‘P1_08’
[ 10.502416] gpio-of-helper ocp:cape-universal: Allocated GPIO id=4 name=‘P1_10’
[ 10.502685] gpio-of-helper ocp:cape-universal: Allocated GPIO id=5 name=‘P1_12’
[ 10.502930] gpio-of-helper ocp:cape-universal: Allocated GPIO id=6 name=‘P1_20’
[ 10.503156] gpio-of-helper ocp:cape-universal: Allocated GPIO id=7 name=‘P1_26’
[ 10.503422] gpio-of-helper ocp:cape-universal: Allocated GPIO id=8 name=‘P1_28’
[ 10.503908] gpio-of-helper ocp:cape-universal: Allocated GPIO id=9 name=‘P1_29’
[ 10.504569] gpio-of-helper ocp:cape-universal: Allocated GPIO id=10 name=‘P1_30’
[ 10.504984] gpio-of-helper ocp:cape-universal: Allocated GPIO id=11 name=‘P1_31’
[ 10.505223] gpio-of-helper ocp:cape-universal: Allocated GPIO id=12 name=‘P1_32’
[ 10.505514] gpio-of-helper ocp:cape-universal: Allocated GPIO id=13 name=‘P1_33’
[ 10.505771] gpio-of-helper ocp:cape-universal: Allocated GPIO id=14 name=‘P1_34’
[ 10.506011] gpio-of-helper ocp:cape-universal: Allocated GPIO id=15 name=‘P1_35’
[ 10.506261] gpio-of-helper ocp:cape-universal: Allocated GPIO id=16 name=‘P1_36’
[ 10.506518] gpio-of-helper ocp:cape-universal: Allocated GPIO id=17 name=‘P2_01’
[ 10.506764] gpio-of-helper ocp:cape-universal: Allocated GPIO id=18 name=‘P2_02’
[ 10.507018] gpio-of-helper ocp:cape-universal: Allocated GPIO id=19 name=‘P2_03’
[ 10.507252] gpio-of-helper ocp:cape-universal: Allocated GPIO id=20 name=‘P2_04’
[ 10.507520] gpio-of-helper ocp:cape-universal: Allocated GPIO id=21 name=‘P2_05’
[ 10.507767] gpio-of-helper ocp:cape-universal: Allocated GPIO id=22 name=‘P2_06’
[ 10.508013] gpio-of-helper ocp:cape-universal: Allocated GPIO id=23 name=‘P2_07’
[ 10.508516] gpio-of-helper ocp:cape-universal: Allocated GPIO id=24 name=‘P2_08’
[ 10.508771] gpio-of-helper ocp:cape-universal: Allocated GPIO id=25 name=‘P2_09’
[ 10.509022] gpio-of-helper ocp:cape-universal: Allocated GPIO id=26 name=‘P2_10’
[ 10.509263] gpio-of-helper ocp:cape-universal: Allocated GPIO id=27 name=‘P2_11’
[ 10.509496] gpio-of-helper ocp:cape-universal: Allocated GPIO id=28 name=‘P2_17’
[ 10.509760] gpio-of-helper ocp:cape-universal: Allocated GPIO id=29 name=‘P2_18’
[ 10.509999] gpio-of-helper ocp:cape-universal: Allocated GPIO id=30 name=‘P2_19’
[ 10.510241] gpio-of-helper ocp:cape-universal: Allocated GPIO id=31 name=‘P2_20’
[ 10.510502] gpio-of-helper ocp:cape-universal: Allocated GPIO id=32 name=‘P2_22’
[ 10.510745] gpio-of-helper ocp:cape-universal: Allocated GPIO id=33 name=‘P2_24’
[ 10.510989] gpio-of-helper ocp:cape-universal: Allocated GPIO id=34 name=‘P2_25’
[ 10.511217] gpio-of-helper ocp:cape-universal: Allocated GPIO id=35 name=‘P2_27’
[ 10.511470] gpio-of-helper ocp:cape-universal: Allocated GPIO id=36 name=‘P2_28’
[ 10.511739] gpio-of-helper ocp:cape-universal: Allocated GPIO id=37 name=‘P2_29’
[ 10.511973] gpio-of-helper ocp:cape-universal: Allocated GPIO id=38 name=‘P2_30’
[ 10.512507] gpio-of-helper ocp:cape-universal: Allocated GPIO id=39 name=‘P2_31’
[ 10.512761] gpio-of-helper ocp:cape-universal: Allocated GPIO id=40 name=‘P2_32’
[ 10.513084] gpio-of-helper ocp:cape-universal: Allocated GPIO id=41 name=‘P2_33’
[ 10.513343] gpio-of-helper ocp:cape-universal: Allocated GPIO id=42 name=‘P2_34’
[ 10.513577] gpio-of-helper ocp:cape-universal: Allocated GPIO id=43 name=‘P2_35’
[ 10.513591] gpio-of-helper ocp:cape-universal: ready
END

======================= 4.19.94-ti-rt-r74 with AM335X-PRU-UIO-00A0

debian@beaglebone:~$ sudo /opt/scripts/tools/version.sh
git:/opt/scripts/:[1b1122751f7051bd8996f353756ba6ff30e71820]
eeprom:[A335PBGL00A22251SPB00180]
model:[TI_AM335x_PocketBeagle]
dogtag:[BeagleBoard.org Debian Buster Console Image 2023-04-06]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot SPL 2019.04-g923f8b8 (Jan 02 2022 - 19:05:15 +0000)]:[location: dd MBR]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot 2019.04-g923f8b8]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-pocketbeagle.dts]
UBOOT: Loaded Overlay:[AM335X-PRU-UIO-00A0]
UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]
kernel:[4.19.94-ti-rt-r74]
device-tree-override:[dtb=am335x-pocketbeagle.dtb]
/boot/uEnv.txt Settings:
pkg check: to individually upgrade run: [sudo apt install --only-upgrade ]
pkg:[bb-cape-overlays]:[4.14.20210821.0-0~buster+20210821]
pkg:[bb-customizations]:[1.20240119.0-0~buster+20240119]
pkg:[bb-usb-gadgets]:[1.20230414.0-0~buster+20230414]
pkg:[bb-wl18xx-firmware]:[1.20230414.0-0~buster+20230414]
pkg:[kmod]:[26-1]
pkg:[librobotcontrol]:[1.0.5-git20200715.0-0~buster+20200716]
pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input bluetooth netdev gpio admin i2c tisdk weston-launch cloud9ide]
cmdline:[console=ttyS0,115200n8 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]
dmesg | grep remote
[ 39.121760] remoteproc remoteproc0: wkup_m3 is available
[ 39.168973] remoteproc remoteproc0: powering up wkup_m3
[ 39.169008] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
[ 39.169294] remoteproc remoteproc0: remote processor wkup_m3 is now up
dmesg | grep pru
dmesg | grep pinctrl-single
[ 1.155062] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
[ 1.167874] gpio-of-helper ocp:cape-universal: ready
END

debian@beaglebone:~$ rc_test_drivers

Kernel: 4.19.94-ti-rt-r74
BeagleBoard.org Debian Buster Console Image 2023-04-06
Debian: 10.13

PASSED: gpio 0
PASSED: gpio 1
PASSED: gpio 2
PASSED: gpio 3
PASSED: pwm0
PASSED: pwm1
PASSED: pwm2
PASSED: eqep0
ERROR: ti-eqep driver not loaded for eqep1
PASSED: eqep2
ERROR: pru-rproc driver not loaded
PASSED: uart1
PASSED: uart2
PASSED: uart4
ERROR: uart5 driver not loaded
PASSED: i2c1
PASSED: i2c2
PASSED: spi
ERROR: LED driver not loaded
PASSED: ADC iio

Currently running on a:
MODEL_BB_POCKET
Robot Control library Version:
1.0.5
debian@beaglebone:~$ uname -r
4.19.94-ti-rt-r74

======================= 4.19.94-ti-rt-r74 with AM335X-PRU-RPROC-4-19-TI-00A0.dtbo

PRU is also working with this one?? Why?

debian@beaglebone:~$ rc_test_drivers

Kernel: 4.19.94-ti-rt-r74
BeagleBoard.org Debian Buster Console Image 2023-04-06
Debian: 10.13

PASSED: gpio 0
PASSED: gpio 1
PASSED: gpio 2
PASSED: gpio 3
PASSED: pwm0
PASSED: pwm1
PASSED: pwm2
PASSED: eqep0
ERROR: ti-eqep driver not loaded for eqep1
PASSED: eqep2
PASSED: pru-rproc
PASSED: uart1
PASSED: uart2
PASSED: uart4
ERROR: uart5 driver not loaded
PASSED: i2c1
PASSED: i2c2
PASSED: spi
ERROR: LED driver not loaded
PASSED: ADC iio

Currently running on a:
MODEL_BB_POCKET
Robot Control library Version:
1.0.5

debian@beaglebone:~$ sudo /opt/scripts/tools/version.sh
git:/opt/scripts/:[1b1122751f7051bd8996f353756ba6ff30e71820]
eeprom:[A335PBGL00A22251SPB00180]
model:[TI_AM335x_PocketBeagle]
dogtag:[BeagleBoard.org Debian Buster Console Image 2023-04-06]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot SPL 2019.04-g923f8b8 (Jan 02 2022 - 19:05:15 +0000)]:[location: dd MBR]
bootloader:[microSD]:[/dev/mmcblk0]:[U-Boot 2019.04-g923f8b8]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-pocketbeagle.dts]
UBOOT: Loaded Overlay:[AM335X-PRU-RPROC-4-19-TI-00A0.kernel]
UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]
kernel:[4.19.94-ti-rt-r74]
device-tree-override:[dtb=am335x-pocketbeagle.dtb]
/boot/uEnv.txt Settings:
pkg check: to individually upgrade run: [sudo apt install --only-upgrade ]
pkg:[bb-cape-overlays]:[4.14.20210821.0-0~buster+20210821]
pkg:[bb-customizations]:[1.20240119.0-0~buster+20240119]
pkg:[bb-usb-gadgets]:[1.20230414.0-0~buster+20230414]
pkg:[bb-wl18xx-firmware]:[1.20230414.0-0~buster+20230414]
pkg:[kmod]:[26-1]
pkg:[librobotcontrol]:[1.0.5-git20200715.0-0~buster+20200716]
pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input bluetooth netdev gpio admin i2c tisdk weston-launch cloud9ide]
cmdline:[console=ttyS0,115200n8 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]
dmesg | grep remote
[ 38.413883] remoteproc remoteproc0: wkup_m3 is available
[ 38.470557] remoteproc remoteproc0: powering up wkup_m3
[ 38.470594] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
[ 38.470890] remoteproc remoteproc0: remote processor wkup_m3 is now up
[ 39.977185] remoteproc remoteproc1: 4a334000.pru is available
[ 39.989270] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pru
[ 39.977185] remoteproc remoteproc1: 4a334000.pru is available
[ 39.977395] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully
[ 39.989270] remoteproc remoteproc2: 4a338000.pru is available
[ 39.989454] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully
dmesg | grep pinctrl-single
[ 1.155228] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
[ 1.168128] gpio-of-helper ocp:cape-universal: ready
END

librobotic needs to be ported to the changes TI did in 5.10/6.1/mainline for remoteproc_pruss…

Regards,

thank you for the answer. You say that the robotic library is delivering false results, but for the 5.10 it also could not add the spi device. It seems to have nothing to do with the robotic library. Here loaded 5.10 but
without spi driver:

i got the solution answer as modprobe spi…the i will handle myself.

Hi,

Just started with BBB with plans to use both PRUs to handle realtime stuff but the current images I cannot get them to work. I have been using POE and Google AI to help debug and try different things but haven’t been able to get a working example to run. Glad this thread said to try 4.19; it appears that 10/29/2025 images don’t work for me. Did you ever find out what was the underlying issue or get the current images to work? Will update as I learn more; surprised this mature platform is having the most basic issues but obviously I am new and may need to pay attention to the mirror……

TI made things ubber complex with the pru for support. First you need to decide uio or remoteproc. Uio is no more as the driver has been removed from mainline.. but it still works today in 3.8 → 6.6.x ( hacking on it to make it with again on more )… Then remote proc, which TI has developed software stack to go with it… But broke the api with kernel charges, so it’s in a weird case of, 3.14, 4.9, 4.19, 5.10, and mainline abi varrations… (Which is what this specific thread ran into..)

And don’t worry after this mess, there’s now a third varient open-pru… GitHub - TexasInstruments/open-pru: Open PRU

Ti has a webinar in 2 hours on this.. I’m going to be attending as I want to know the plan going forward.. Getting started with PRU Development: Accelerating real-time control

That’s great. Now the issue is that I am trying older releases but now the images don’t seem to be there because of an internal CloudFlare issue. I would like to use the most up-2-date image and have a working solution so I am excited to try it. Thank you so much for helping :slight_smile:

i noticed this too this morning, it’ll come back… as just like aws, the world runs on CloudFlare

my daily buids are on hetzner… Index of /rootfs

Right now the ‘best’ is 5.10-ti images.. it supports both UIO and remoteproc.. 6.6.x-bone is best for latest UIO… and mainline remoteproc, slightly different then 5.10.'s, but it no longer can change randomly..

Regards,

Thank you. On the webinar but I cannot focus on it since I had other activities scheduled. I bought 4 BBB and 2 BeagleY and want to use all of them on the PRU. If you can and want to, please provide a guide to getting the PRU to work for me on the 10/29/2025 releases of BBB. So far, I can’t communicate with it. It seems like remoteproc is the way to go but if UIO works well on some images, I will just use that for those boards. Thank you for any and all support; it is surely appreciated.

Use 5.10.x-ti and the uio overlay… follow @zmatt 's repo here: GitHub - mvduin/py-uio: Userspace I/O in Python

Regards,

Great, thank you. I will do that but I plan to program my solution in C with the eventual end point being bare metal and loaded, I assume, using uboot. I am still away from that understanding though and will trudge along with purpose.

I’m pretty sure the AM67A SoC on the BeagleY does not have a PRU subsystem, unless TI did a really good job at hiding it from the documentation.

It’s not too hard to use uio_pruss in C, in fact in some ways it’s easier since python is not ideal for dealing with direct access to memory-mapped registers (which is what UIO is). Do beware that the old libprussdrv C library (which actually predates the AM335x) is incredibly gross so I’d avoid that, especially since you intend to move towards baremetal eventually.

Since UIO is simply a way of giving linux userspace direct access to a memory-mapped peripheral, actually very little changes when moving from using UIO in linux userspace to baremetal. The two big differences are enabling PRUSS and handling interrupts.

To enable PRUSS in baremetal code, first configure the clock source:

Set CLKSEL_PRU_ICSS_OCP_CLK(0x44e00530) to 0 to select the 200 MHz clock from the Core PLL M4 divider as clock source for PRUSS. Alternatively, if you want to run the PRU cores at a custom CPU frequency (max 200 MHz) then configure the Display PLL and select it as clock source by setting CLKSEL_PRU_ICSS_OCP_CLK to 1.

0 is the default value after cold reset but this register is warm reset insensitive so it’s a good idea to just ensure it has the desired value for the sake of robustness. (One time after doing some experiments with PRU at a custom frequency, after rebooting to get back to the normal configuration pruss was “broken” because the display PLL wasn’t configured anymore but was still selected as clock source for PRU since neither hardware nor u-boot nor the kernel had reset that setting.)

Then release its reset and enable its clocks:

Set RM_PER_RSTCTRL(0x44e00c00).PRU_ICSS_LRST(bit 1) to 0 to release reset.
Set CM_PER_PRU_ICSS_CLKSTCTRL(0x44e00140).CLKTRCTRL(bits 0-1) to 2 to ensure the clock domain is awake.
Set CM_PER_PRU_ICSS_CLKCTRL(0x44e000e8).MODULEMODE(bits 0-1) to 2 to enable the PRU subsystem.
Wait until CM_PER_PRU_ICSS_CLKCTRL(0x44e000e8).IDLEST(bits 16-17) == 0

Then proceed with configuring PRUSS, loading code, and starting the cores in the same way you would in linux when using UIO.

Don’t forget to set PRU_ICSS_CFG_SYSCFG(0x4a326004).STANDBY_INIT(bit 4) to 0 if you want the PRU cores to be able to access the rest of the SoC (via the L3 interconnect), or leave it at 1 if the PRU cores only need to access resources within PRUSS (to protect the rest of the SoC from accidental writes by PRU).

Also, if you’re using PRU direct output pins, keep in mind that the cpu registers of the PRU cores do not have a reset and thus after power up have random values, so you’ll probably want to initialize R30 of the relevant core (which you can do by writing its PRU_ICSS_PRU_DEBUG_GPREG30 register while the core is halted) before configuring pinmux.

You can use u-boot if you want, though for baremetal code on the BBB there’s certainly no hard requirement to do so. Some things u-boot does for you on the AM335x that are useful for baremetal applications:

  • Reconfigures the MPU PLL to clock the Cortex-A8 at 1 GHz instead of the 500 MHz configured by bootrom. (But this can be done in less than 10 lines of code, see section 8.1.6.9.1 of the TRM)
  • Initializing the memory controller, thus giving access to the 512MB of DDR3 memory instead of just the 127KB of internal SRAM. (If I remember correctly this pretty much just consists of loading a hardcoded table of timing parameters into the memory controller.)
  • The ability to load an executable larger than 109KB, which is the max supported by bootrom. (But 109KB of baremetal code is quite a lot of code.)
  • Probably leaves the serial console in functional state so you can do serial debug logging without having to initialize the uart first.

The main downside is that it slows down boot, which is mostly due to u-boot being incredibly bloated… it doesn’t even manage to fit its fat ass into the 109KB max that bootrom can load, so instead bootrom actually loads an intermediate bootloader (“SPL”) which initializes the memory controller and loads u-boot.