Hello everyone. A typical work week. Let’s go over everything.
Use extlinux in Armbian images
Thanks to all the amazing work by Andrei Aldea, PocketBeagle 2 and other BeagleBoard.org boards support Armbian. By default, it seems Armbian uses the old uEnv.txt file to specify the boot entry. This is fine, but the newer extlinux.conf is much more powerful, and is already used in normal BeagleBoard.org Debian images.
There are a few reasons to use extlinux.conf:
- First-class support in U-boot.
- Allows multiple boot entries: Great when doing kernel development.
- Allows fallback to option 1 in case of boot failure.
I have created a PR to use extlinux.conf in PocketBeagle 2 as a start. I will expand to other boards soon.
Linux Kernel
I tried moving the needle forward regarding connector + addon-board setups upstream. Not much progress, but well, what else is new.
Send of_platform_populate abstractions patch series
Since I have decided to write the Beagle cape driver in Rust, I was trying to upstream some of the abstractions I need. As a part of this work, I tried sending abstractions for of_platform_populate
and of_platform_depopulate
in the following patch series. However, it seems like that function is semi-deprecated. Additionally, it seems like it would be better to send a driver patch with all the abstractions before trying to send the abstractions individually since it is an untested driver.
So the upstreaming rust abstractions are probably on hold for a while. I guess if someone else wants to pick up the abstractions for their drivers, they are in my tree.
Start discussion for connector + addon-board setups
I have mostly worked with the assumption that any connector + addon-board setup will need to only do manipulation of the tree inside the connector node, rather than the global tree. This was derived from some of the other discussions I have had in the past. However, it seems like not everyone agrees regarding that. So I have created a discussion thread to come to a consensus once and for all. I do not want to repeat the same discussion in every thread.
Hopefully, things get resolved soon one way or the other.
BeagleConnect Freedom
Enable watchdog timer in base devicetree
Since MicroPython now supports Zephyr v4.0.0, I was working on adding beagleplay/cc1352p7 support. However, it turns out, that BeagleConnect Freedom is currently broken in upstream MicroPython. This is due to a new requirement of MicroPython for a watchdog timer in devicetree. This was disabled in the upstream BeagleConnect Freedom devicetree. I have created a PR to enable it.
I should also probably create a weekly GitHub action to ensure that BeagleBoard boards do not break, similar to what I am doing for MicroBlocks. There are also plans for maintaining an upstream Zephyr tree specifically for BeagleBoard boards. Stay tuned for that.
Enable ADC Support in MicroPython
I have also enabled ADC support in upstream MicroPython for BeagleConnect Freedom now. Here is the PR.
Improve init format handling in BeagleBoard Imaging Utility
Last week, I introduced Zephyr SD Card images for PocketBeagle 2. These images are intended for running ZephyrRTOS on PocketBeagle 2 A53 cores instead of Linux and thus do not need rootfs. This also means that sysconf.txt based customization options are not useful for these images.
I added a hacky workaround for these images last week to get initial support in BeagleBoard Imaging Utility. But since I had some time, I have added proper support for specifying init_format
in the config.json. This is the same as the Rpi config, so things are still backward compatible.
The changeset can be found in the PR.
Ending Thoughts
This was it for this week. Hopefully, this helps bring transparency regarding where the development efforts are concentrated, and how the community can help. Look forward to next update.