Problems Getting UART Working via Device Trees

I’m trying to get UART2 and UART4 working via the PRUs. I thought I would start with the PRU-Codebook UART debugging examples and slowly work that way. I can follows the instruction, configure the pins via “config-pin” and run the examples just find, but if I try to configure the pins via the device tree files in uEnv.txt I cannot get UART to work and I’m not sure why.
Here is the beagle-verison output:

eeprom:[A335BNLT000C2327BBBG0023]
model:[TI_AM335x_BeagleBone_Black]
dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2023-09-02]
bootloader:[microSD-(push-button)]:[/dev/mmcblk0]:[U-Boot SPL 2022.04-ge0d31da5 (Aug 04 2023 - 18:48:26 +0000)]:[location: dd MBR]
bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot SPL 2022.04-ge0d31da5 (Aug 04 2023 - 18:48:26 +0000)]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-boneblack-uboot-univ.dts]
UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]
UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0.kernel]
UBOOT: Loaded Overlay:[BB-HDMI-TDA998x-00A0.kernel]
UBOOT: Loaded Overlay:[BB-UART1-00A0]
UBOOT: Loaded Overlay:[BB-UART2-00A0]
UBOOT: Loaded Overlay:[BB-UART4-00A0]
kernel:[5.10.168-ti-r71]
nodejs:[v12.22.12]
/boot/uEnv.txt Settings:
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[uboot_overlay_addr0=/lib/firmware/BB-UART2-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr1=/lib/firmware/BB-UART4-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr2=/lib/firmware/BB-UART1-00A0.dtbo]
uboot_overlay_options:[enable_uboot_cape_universal=1]
pkg check: to individually upgrade run: [sudo apt install --only-upgrade <pkg>]
pkg:[bb-cape-overlays]:[4.14.20210821.0-0~bullseye+20210821]
pkg:[bb-customizations]:[1.20230720.1-0~bullseye+20230720]
pkg:[bb-usb-gadgets]:[1.20230414.0-0~bullseye+20230414]
pkg:[bb-wl18xx-firmware]:[1.20230414.0-0~bullseye+20230414]
pkg:[kmod]:[28-1]
WARNING:pkg:[librobotcontrol]:[NOT_INSTALLED]
pkg:[firmware-ti-connectivity]:[20210315-3]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input render bluetooth netdev i2c gpio admin tisdk weston-launch cloud9ide]
cmdline:[console=ttyS0,115200n8 bone_capemgr.uboot_capemgr_enabled=1 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]
dmesg | grep remote
[    8.412861] remoteproc remoteproc0: wkup_m3 is available
[   35.868032] remoteproc remoteproc0: powering up wkup_m3
[   35.868070] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
[   35.868367] remoteproc remoteproc0: remote processor wkup_m3 is now up
[   49.258249] remoteproc remoteproc1: 4a334000.pru is available
[   49.298629] remoteproc remoteproc2: 4a338000.pru is available
[  100.667045] remoteproc remoteproc1: powering up 4a334000.pru
[  100.683800] remoteproc remoteproc1: Booting fw image am335x-pru0-fw, size 33864
[  100.683886] remoteproc remoteproc1: remote processor 4a334000.pru is now up
[  223.704432] remoteproc remoteproc2: powering up 4a338000.pru
[  223.718894] remoteproc remoteproc2: Booting fw image am335x-pru1-fw, size 22088
[  223.718979] remoteproc remoteproc2: remote processor 4a338000.pru is now up
[  504.540862] remoteproc remoteproc2: stopped remote processor 4a338000.pru
[  509.592482] remoteproc remoteproc1: stopped remote processor 4a334000.pru
[  512.049230] remoteproc remoteproc1: powering up 4a334000.pru
[  512.049627] remoteproc remoteproc1: Booting fw image am335x-pru0-fw, size 33864
[  512.049703] remoteproc remoteproc1: remote processor 4a334000.pru is now up
dmesg | grep pru
[   49.258249] remoteproc remoteproc1: 4a334000.pru is available
[   49.298629] remoteproc remoteproc2: 4a338000.pru is available
[  100.667045] remoteproc remoteproc1: powering up 4a334000.pru
[  100.683800] remoteproc remoteproc1: Booting fw image am335x-pru0-fw, size 33864
[  100.683886] remoteproc remoteproc1: remote processor 4a334000.pru is now up
[  223.704432] remoteproc remoteproc2: powering up 4a338000.pru
[  223.718894] remoteproc remoteproc2: Booting fw image am335x-pru1-fw, size 22088
[  223.718979] remoteproc remoteproc2: remote processor 4a338000.pru is now up
[  504.540862] remoteproc remoteproc2: stopped remote processor 4a338000.pru
[  509.592482] remoteproc remoteproc1: stopped remote processor 4a334000.pru
[  512.049230] remoteproc remoteproc1: powering up 4a334000.pru
[  512.049627] remoteproc remoteproc1: Booting fw image am335x-pru0-fw, size 33864
[  512.049703] remoteproc remoteproc1: remote processor 4a334000.pru is now up
dmesg | grep pinctrl-single
[    7.970868] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
[    7.972238] gpio-of-helper ocp:cape-universal: Failed to get gpio property of 'P8_03'
[    7.972265] gpio-of-helper ocp:cape-universal: Failed to create gpio entry
[    8.617063] gpio-of-helper ocp:cape-universal: Allocated GPIO id=0 name='P8_03'
[    8.617264] gpio-of-helper ocp:cape-universal: Allocated GPIO id=1 name='P8_04'
[    8.617446] gpio-of-helper ocp:cape-universal: Allocated GPIO id=2 name='P8_05'
[    8.617625] gpio-of-helper ocp:cape-universal: Allocated GPIO id=3 name='P8_06'
[    8.618067] gpio-of-helper ocp:cape-universal: Allocated GPIO id=4 name='P8_07'
[    8.618296] gpio-of-helper ocp:cape-universal: Allocated GPIO id=5 name='P8_08'
[    8.618586] gpio-of-helper ocp:cape-universal: Allocated GPIO id=6 name='P8_09'
[    8.618777] gpio-of-helper ocp:cape-universal: Allocated GPIO id=7 name='P8_10'
[    8.618955] gpio-of-helper ocp:cape-universal: Allocated GPIO id=8 name='P8_11'
[    8.619116] gpio-of-helper ocp:cape-universal: Allocated GPIO id=9 name='P8_12'
[    8.619379] gpio-of-helper ocp:cape-universal: Allocated GPIO id=10 name='P8_13'
[    8.619555] gpio-of-helper ocp:cape-universal: Allocated GPIO id=11 name='P8_14'
[    8.619720] gpio-of-helper ocp:cape-universal: Allocated GPIO id=12 name='P8_15'
[    8.619893] gpio-of-helper ocp:cape-universal: Allocated GPIO id=13 name='P8_16'
[    8.620081] gpio-of-helper ocp:cape-universal: Allocated GPIO id=14 name='P8_17'
[    8.620255] gpio-of-helper ocp:cape-universal: Allocated GPIO id=15 name='P8_18'
[    8.620421] gpio-of-helper ocp:cape-universal: Allocated GPIO id=16 name='P8_19'
[    8.620581] gpio-of-helper ocp:cape-universal: Allocated GPIO id=17 name='P8_20'
[    8.620756] gpio-of-helper ocp:cape-universal: Allocated GPIO id=18 name='P8_21'
[    8.620912] gpio-of-helper ocp:cape-universal: Allocated GPIO id=19 name='P8_22'
[    8.621082] gpio-of-helper ocp:cape-universal: Allocated GPIO id=20 name='P8_23'
[    8.621278] gpio-of-helper ocp:cape-universal: Allocated GPIO id=21 name='P8_24'
[    8.621471] gpio-of-helper ocp:cape-universal: Allocated GPIO id=22 name='P8_25'
[    8.621661] gpio-of-helper ocp:cape-universal: Allocated GPIO id=23 name='P8_26'
[    8.621819] gpio-of-helper ocp:cape-universal: Allocated GPIO id=24 name='P8_27'
[    8.621998] gpio-of-helper ocp:cape-universal: Allocated GPIO id=25 name='P8_28'
[    8.622166] gpio-of-helper ocp:cape-universal: Allocated GPIO id=26 name='P8_29'
[    8.622326] gpio-of-helper ocp:cape-universal: Allocated GPIO id=27 name='P8_30'
[    8.622593] gpio-of-helper ocp:cape-universal: Allocated GPIO id=28 name='P8_31'
[    8.622771] gpio-of-helper ocp:cape-universal: Allocated GPIO id=29 name='P8_32'
[    8.622939] gpio-of-helper ocp:cape-universal: Allocated GPIO id=30 name='P8_33'
[    8.623114] gpio-of-helper ocp:cape-universal: Allocated GPIO id=31 name='P8_34'
[    8.623288] gpio-of-helper ocp:cape-universal: Allocated GPIO id=32 name='P8_35'
[    8.623461] gpio-of-helper ocp:cape-universal: Allocated GPIO id=33 name='P8_36'
[    8.623632] gpio-of-helper ocp:cape-universal: Allocated GPIO id=34 name='P8_37'
[    8.623800] gpio-of-helper ocp:cape-universal: Allocated GPIO id=35 name='P8_38'
[    8.623973] gpio-of-helper ocp:cape-universal: Allocated GPIO id=36 name='P8_39'
[    8.624138] gpio-of-helper ocp:cape-universal: Allocated GPIO id=37 name='P8_40'
[    8.624314] gpio-of-helper ocp:cape-universal: Allocated GPIO id=38 name='P8_41'
[    8.624482] gpio-of-helper ocp:cape-universal: Allocated GPIO id=39 name='P8_42'
[    8.624643] gpio-of-helper ocp:cape-universal: Allocated GPIO id=40 name='P8_43'
[    8.624821] gpio-of-helper ocp:cape-universal: Allocated GPIO id=41 name='P8_44'
[    8.624978] gpio-of-helper ocp:cape-universal: Allocated GPIO id=42 name='P8_45'
[    8.625150] gpio-of-helper ocp:cape-universal: Allocated GPIO id=43 name='P8_46'
[    8.625326] gpio-of-helper ocp:cape-universal: Allocated GPIO id=44 name='P9_11'
[    8.625495] gpio-of-helper ocp:cape-universal: Allocated GPIO id=45 name='P9_12'
[    8.625691] gpio-of-helper ocp:cape-universal: Allocated GPIO id=46 name='P9_13'
[    8.625850] gpio-of-helper ocp:cape-universal: Allocated GPIO id=47 name='P9_14'
[    8.626024] gpio-of-helper ocp:cape-universal: Allocated GPIO id=48 name='P9_15'
[    8.626191] gpio-of-helper ocp:cape-universal: Allocated GPIO id=49 name='P9_16'
[    8.626351] gpio-of-helper ocp:cape-universal: Allocated GPIO id=50 name='P9_17'
[    8.626626] gpio-of-helper ocp:cape-universal: Allocated GPIO id=51 name='P9_18'
[    8.626832] gpio-of-helper ocp:cape-universal: Allocated GPIO id=52 name='P9_19'
[    8.627007] gpio-of-helper ocp:cape-universal: Allocated GPIO id=53 name='P9_20'
[    8.627183] gpio-of-helper ocp:cape-universal: Allocated GPIO id=54 name='P9_21'
[    8.627343] gpio-of-helper ocp:cape-universal: Allocated GPIO id=55 name='P9_22'
[    8.627523] gpio-of-helper ocp:cape-universal: Allocated GPIO id=56 name='P9_23'
[    8.627705] gpio-of-helper ocp:cape-universal: Allocated GPIO id=57 name='P9_24'
[    8.628164] gpio-of-helper ocp:cape-universal: Allocated GPIO id=58 name='P9_25'
[    8.628366] gpio-of-helper ocp:cape-universal: Allocated GPIO id=59 name='P9_26'
[    8.628538] gpio-of-helper ocp:cape-universal: Allocated GPIO id=60 name='P9_27'
[    8.628710] gpio-of-helper ocp:cape-universal: Allocated GPIO id=61 name='P9_28'
[    8.628890] gpio-of-helper ocp:cape-universal: Allocated GPIO id=62 name='P9_29'
[    8.629050] gpio-of-helper ocp:cape-universal: Allocated GPIO id=63 name='P9_30'
[    8.629226] gpio-of-helper ocp:cape-universal: Allocated GPIO id=64 name='P9_31'
[    8.629387] gpio-of-helper ocp:cape-universal: Allocated GPIO id=65 name='P9_41'
[    8.629563] gpio-of-helper ocp:cape-universal: Allocated GPIO id=66 name='P9_91'
[    8.629739] gpio-of-helper ocp:cape-universal: Allocated GPIO id=67 name='P9_42'
[    8.629901] gpio-of-helper ocp:cape-universal: Allocated GPIO id=68 name='P9_92'
[    8.629912] gpio-of-helper ocp:cape-universal: ready
dmesg | grep wlcore
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
END

and here is my uEnv.txt file:

#Docs: http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0

uname_r=5.10.168-ti-r71
#uuid=
#dtb=

###U-Boot Overlays###
###Documentation: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
###Master Enable
enable_uboot_overlays=1
###
###Overide capes with eeprom
uboot_overlay_addr0=/lib/firmware/BB-UART2-00A0.dtbo
uboot_overlay_addr1=/lib/firmware/BB-UART4-00A0.dtbo
uboot_overlay_addr2=/lib/firmware/BB-UART1-00A0.dtbo
#uboot_overlay_addr3=<file3>.dtbo
###
###Additional custom capes
#uboot_overlay_addr4=<file4>.dtbo
#uboot_overlay_addr5=<file5>.dtbo
#uboot_overlay_addr6=<file6>.dtbo
#uboot_overlay_addr7=<file7>.dtbo
###
###Custom Cape
#dtb_overlay=<file8>.dtbo
###
###Disable auto loading of virtual capes (emmc/video/wireless/adc)
#disable_uboot_overlay_emmc=1
#disable_uboot_overlay_video=1
#disable_uboot_overlay_audio=1
#disable_uboot_overlay_wireless=1
#disable_uboot_overlay_adc=1
###
###Cape Universal Enable
enable_uboot_cape_universal=1
###
###Debug: disable uboot autoload of Cape
#disable_uboot_overlay_addr0=1
#disable_uboot_overlay_addr1=1
#disable_uboot_overlay_addr2=1
#disable_uboot_overlay_addr3=1
###
###U-Boot fdt tweaks... (60000 = 384KB)
#uboot_fdt_buffer=0x60000
###U-Boot Overlays###

console=ttyS0,115200n8
cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet

#In the event of edid real failures, uncomment this next line:
#cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet video=HDMI-A-1:1024x768@60e

#Use an overlayfs on top of a read-only root filesystem:
#cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet overlayroot=tmpfs

##enable Generic eMMC Flasher:
#cmdline=init=/usr/sbin/init-beagle-flasher

Any help is greatly appreciated.

Those overlays currently listed are configured such that the Cortex-A8 will access the uart.

If you want the pru to use the usart, you need to configure the pinmux for that situation… So you’ll need to update the overlay’s pinmux.

Regards,

Any resources you could point me towards that show/explain this more in depth? I’ve tried assigning the pins to the pruss/pru targets but haven’t had success yet…