Best Kernel release to use with remoteproc, PRUs, C on PRU.

We’re currently using Beaglebone Black Wireless systems and running 4.19.94-ti-r68 (version.sh output is below.)

Our solution runs C-based code on PRU0 and the main ARM and uses remoteproc. We are very far along in our development and prefer not to change our base configuration choices (prefer to stick with remoteproc) and cannot afford any significant time lost from an upgrade creating any substantial incompatibilities.

We do, however think we need the latest compatible version of the TI PRU-Software-Support-Package that runs on 4.19 (TI says this is likely 5.6 and we’re probably on 5.2) to address what we think are some problems with remoteproc that have been fixed by TI. And, we also suspect there are some bugs in TI’s C tools for the PRU that might be fixed in an upgrade.

But I don’t know if I should stay with 4.19, upgrade to a 5.x version or just install updated packages. apt doesn’t show any available package updates for the PRU for 4.19 (and I admit I am a novice on this so maybe I didn’t run the command correctly to find them).

I also don’t know how to just pull in the latest supported PRU-Software-Support-Package if that’s the right approach initially.

Our solution uses GPIOs, I2C, DS3231 RTC, TSC ADC, PRU0 and wi-fi. We may also offer BT support.

Thanks for any help you can provide.

debian@beaglebone:/var/lib/cloud9$ sudo /opt/scripts/tools/version.sh
git:/opt/scripts/:[e4e4854ef8ff9ada5c85553376043ee7679167ca]
eeprom:[A335BNLTBWA52027BBWG0227]
model:[TI_AM335x_BeagleBone_Black_Wireless]
dogtag:[BeagleBoard.org Debian Buster IoT Image 2021-02-15]
bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot SPL 2019.04-00002-gc9b3922522 (Aug 24 2020 - 16:42:18 -0500)]:[location: dd MBR]
bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot 2019.04-00002-gc9b3922522]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-boneblack-uboot-univ.dts]
UBOOT: Loaded Overlay:[AM335X-PRU-RPROC-4-19-TI-00A0.kernel]
UBOOT: Loaded Overlay:[BB-ADC-00A0.kernel]
UBOOT: Loaded Overlay:[BB-BBBW-WL1835-00A0.kernel]
UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0.kernel]
UBOOT: Loaded Overlay:[BB-I2C2-RTC-DS3231]
UBOOT: Loaded Overlay:[BB-W1-P9.24-00A0.bb.org-overlays]
kernel:[4.19.94-ti-r68]
nodejs:[v10.23.1]
/boot/uEnv.txt Settings:
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[uboot_overlay_addr4=/lib/firmware/BB-W1-P9.24-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr5=/lib/firmware/BB-I2C2-RTC-DS3231.dtbo]
uboot_overlay_options:[disable_uboot_overlay_video=1]
uboot_overlay_options:[disable_uboot_overlay_audio=1]
uboot_overlay_options:[uboot_overlay_pru=AM335X-PRU-RPROC-4-19-TI-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.20210809.0-0~buster+20210816]
pkg:[bb-customizations]:[1.20210810.1-0~buster+20210810]
pkg:[bb-usb-gadgets]:[1.20200504.0-0~buster+20200504]
pkg:[bb-wl18xx-firmware]:[1.20200813.1-0~buster+20200813]
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 i2c gpio admin spi iio docker tisdk weston-launch xenomai cloud9ide pwm eqep remoteproc]
cmdline:[console=ttyO0,115200n8 bone_capemgr.uboot_capemgr_enabled=1 root=/dev/mmcblk1p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]
dmesg | grep remote
[   57.039596] Bluetooth: hci0: change remote baud rate command in firmware
[   74.967267] remoteproc remoteproc0: wkup_m3 is available
[   75.143382] remoteproc remoteproc0: powering up wkup_m3
[   75.143416] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
[   75.143911] remoteproc remoteproc0: remote processor wkup_m3 is now up
[   78.411784] remoteproc remoteproc1: 4a334000.pru is available
[   78.428855] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pru
[   78.411784] remoteproc remoteproc1: 4a334000.pru is available
[   78.411982] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully
[   78.428855] remoteproc remoteproc2: 4a338000.pru is available
[   78.429014] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully
dmesg | grep pinctrl-single
[    1.028944] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
[    1.042066] gpio-of-helper ocp:cape-universal: ready
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
END

4.19.x-ti is a really supported branch, I’ve mostly locked Debian Buster (10.x) to stay on 4.19.x-ti… you can change this with:

But most of the userspace will assume v4.19.x-ti…

Where as with Debian (11.x) Bullseye, everything is setup for 5.10.x-ti…

So grab a spare microSD, try Debian 11.x with 5.10.x-ti here:

to see if it’s fixed any of the odd pru/remotproc issues you saw…

Regards,

Thanks! I’ll get to work on this and let you (and the community) know if/when it fixes any of the issues we’re currently having.

I put am335x-debian-11.5-iot-armhf-2022-10-10-4gb.img.xz on a microSD card and booted a BBB wireless with it. I can connect from a Windows 10 machine to the wifi from this BeagleBone, but I can’t ping 192.168.7.2 and can’t get Cloud9 up or attach with puTTY either. Has the IP address changed? What are the next steps to get this going?

I was able to get am335x-debian-11.5-iot-armhf-2022-10-10-4gb.img.xz onto a microSD and booted a BeagleBone Black Wireless with it. The wifi network is visible and can be connected to my Windows 10 PC, but I could not access anything at 192.168.7.2 with either Chrome or puTTY. But, I booted it using a USB connection to my computer and could get to that IP with ‘Unidentified Network’. I went through the configuration steps listed in @RobertCNelson’s post and even got VSCode to open, created a new folder, put some of our code (not PRU code) in there, and tried to run it. It compiled but doesn’t run all the way and doesn’t give any errors. Making the transition to VSCode from Cloud9 will take some time (we don’t have a lot of that to spare right now).

I ran
clpru --compiler_revision and confirmed that the compiler is 2.3.2
I also checked and the kernel is [5.10.140-ti-r52]
I cd’ to /usr/lib/ti and found directory “Pru-software-support-package-v6.0”

So it looks like the updated tools are all in place. I just have to figure out how to get the wifi working on this image. Any help would be appreciated. I’ve probably missed a step somewhere and didn’t notice an error message.

@RobertCNelson I repeated the wifi configuration steps and got it to work. In your instructions, where you have these lines

set_network 1 ssid “BeagleBone”
set_newtwork 1 psk “BeagleBone”

I did not realize that I should replace “BeagleBone” with the wifi that the device would be connecting to and replace the passkey with the passkey for that network. I tried it this second go around and it connected.

However, I don’t have internet access. I’m used to using connmanctl to configure internet access via wifi. What’s the new method?

Edit…

 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf

Regards,