Project Updates Jul 2025 #481
multiplemonomials
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hi all! It's been an eventful six months of work on Mbed! While progress might feel slow on a day to day basis, looking back to January it's hard not to feel a bit proud of how much we've done since then.
A lot of my work lately has been obtaining and testing boards with some of the wider range of MCUs that Mbed supports, such as LPC546xx, Nuvoton M48x, and Ambiq Apollo3. I'm happy to report that I've done a full checkout of these MCUs via the Mbed test suite and the CI test shield. While there are still some remaining failures, I am confident that these chips now have much more reliable and standardized behavior for features like PWM and SPI. I also implemented new ADC and PWM drivers for Apollo3, as shockingly these had not been implemented yet!
Meanwhile, Jan (@JohnK1987) has been hard at work on expanding STM32 support. He added support for the new STM32U0 family, and I verified it on the test shield to ensure that its drivers were operating properly. Currently only one board is supported, but we would love submissions of additional boards if people can test code on them! He has also put together a new example repo for I2C, showing some more advanced ways to use I2C and I2CSlave.
Speaking of the test shield, I finally finished the next revision, which adds proper support for testing UART RTS/CTS lines and CAN bus (via a CAN to SPI converter chip that can be a link partner for the MCU). The parts are here, and I should be able to build it within the coming weeks. However, it's not all smooth sailing -- sadly, the Cypress FX2LP chip that the board uses as a USB logic analyzer has been discontinued by Infineon, with less than a year's notice and no easy upgrade path. This chip was old, expensive, and never worked as well as it should have in terms of sample rate, but it did get us this far. From my research it seems like the best alternative is the RPi Pico logic analyzer firmware, though this does bring some of its own challenges (much lower USB speed, though it does implement compression). So, I will continue to work on a fourth revision of the CI shield with an RP2040 chip.
Meanwhile, our new contributor Wang (@wdx04) has done some stellar work with some of the newer STM32 targets. He's implemented watchdog, TRNG, CRC, FlashIAP, and CAN drivers for STM32H5, and he updated the QSPI driver to use DMA to copy bytes, making it several times faster (though it's still synchronous only, for now). He's also in the final stages of adding a new CAN FD extension API to Mbed and implementing it on several STM32 families, so look forward to that soon if you like sending longer and faster CAN messages!
I had the chance, also, to tackle a longstanding issue with Mbed: the internal Python packages, and how they were a huge pain to run. Previously, if you wanted to run one of the Python packages, you had to activate the right venv, then do something like
Now we have a pyproject.toml file using Hatchling, so the python packages can actually be installed like a normal python project. Then, you can execute them from anywhere once you activate the venv! This makes it way easier to run these scripts for debugging and Mbed development. There are some breaking changes with this, however, if you do not use the venv -- you will need to change the pip install command after cloning Mbed. See the PR for details.
Last but not least, I am proud to announce the launch of our new documentation site, mbed-ce.dev! With the upcoming end of life of ARM Mbed, the documentation site that we know and love (?) is likely going to go down at some point, and Mbed CE needs to provide an alternative. We do have access to the source code to that site. However, I've never really been happy with the high level layout of that site. It has some good doc pages, like the one on FileHandle. However, the documentation pages for specific drivers, that people are likely to find by googling, are much more barebones -- see the doc page for BufferedSerial, which doesn't even link to the page about file handles, which you need to read to understand how to printf to a serial port! (also it doesn't explain flow control even a tiny bit) What I'd like to do is rewrite this information as a series of more top-down tutorials. I've written one already about I2C, and more will be coming! I think that top-down tutorials plus good class & function documentation will help new people figure out how to use Mbed a lot more effectively than the patchwork of doc pages that ARM put together.
Aside from the tutorial, I've also migrated about 75% of the wiki pages to the new site. This should make them easier and cleaner to read (and I also did an editing pass on some of em to clean them up and update them). If you'd like to edit any of the pages, you can still do that! Just submit a PR to https://github.com/mbed-ce/mbed-ce-dot-dev !
That's about all I got for now, but please let me know if you have any comments or questions! And as always, we welcome your contributions, both to the docs and to Mbed itself.
Beta Was this translation helpful? Give feedback.
All reactions