Mbed CE Roadmap #298
Replies: 7 comments 15 replies
-
This is great to read. I hope to contribute. Let's hope the EOL announcement is a new beginning. |
Beta Was this translation helpful? Give feedback.
-
Just read email this morning and although I wasnt active user of Mbed for few years it was sad to see its EoL. But when I got to the end of email with mention on Mbed CE - that was such a relief! Glad this project wasnt fully abandoned, so keep it up 👍🏻 |
Beta Was this translation helpful? Give feedback.
-
This is great stuff! I actually have been in contact with Reinhard Keil regarding MbedOS over the past years, and I was imploring him to turn Mbed in to a community supported thing like Zephyr, since it was clear that ARM wasn't going to spend another penny on it. I doubt he really listened to me, but I think I got what I wanted here. I have been in the bowls of this OS, and have made customizations for my needs in the past and am more than willing to do that here. My immediate thought was to streamline the OS to be more like the "bare metal" flavor by default, and then allow the user to include the features as they are needed. This is more in line with how Arduino works, and would speed up first builds significantly (which happens every time you change mbed_app.json) |
Beta Was this translation helpful? Give feedback.
-
Hello! |
Beta Was this translation helpful? Give feedback.
-
@multiplemonomials Just an Idea, if |
Beta Was this translation helpful? Give feedback.
-
Does mbed-ce have plans to support more processors, such as risc-v? |
Beta Was this translation helpful? Give feedback.
-
I wonder what's the best way to contribute drivers for external ICs connected by I2C, SPI, UART etc. We have many of those and like to contribute to keep the project going. Does it make sense to add those inside this repo and adding them using e.g. COMPONENT_ADD or should these provided as external repos? |
Beta Was this translation helpful? Give feedback.
-
Hi all! With the official EoL announcement from Mbed OS, I expect that more people will be attempting to try out and (hopefully) contribute to Mbed CE soon! So, I'd like to share some details about where I think that Mbed CE can & will go over the next 6-12 months. For the warm fuzzies, I'll also include some highlights of the progress we've already made in the first two years (wow! two years already! how the time does fly).
Major Efforts
CI System
This project's goal is to create an equivalent for Mbed CE to ARM's Mbed device farm and continuous integration system. This will let us test incoming PRs automatically, and hopefully with more rigor than even ARM had.
✅ CI board designed, enabling automatic testing for a variety of different interfaces that Mbed supports
🔵 CI board testing is in progress. V2 R2 board is working pretty well! Currently I2C master, I2C slave, SPI master, PWM, and ADC tests are nearly good to go but I haven't started on UART or SPI slave tests.
🔵 Setup is also in progress (by @VictorWTang) for a Github Actions-based runner system that can test on real hardware via a device farm
⚪ Once we have a verified working design for the boards, we can build a larger number, potentially via a PCB assembly service!
⚪ After that, the main job will be building out the device farm to include representative devices from all sorts of target families.
Documentation
Efforts to produce better documentation of the features and APIs available in Mbed. Official documentation had always been a mixed bag, and I'd really like to improve that state of affairs.
✅ Set up CI job to publish Doxygen documentation to a public webpage
✅ Write basic webpage generator to publish a list of supported targets, features/drivers, and test runs
⚪ Webpage generator could still use lots more polish, such as importing content written for the wiki into the generated webpages.
⚪ Still need to set up some kind of pipeline to publish the handwritten, non-Doxygen docs (https://github.com/ARMmbed/mbed-os-5-docs).
Arduino IDE Support
I stand by my decisions regarding Mbed CE's build system changes. Embracing CMake fully, without any Python wrappers, makes programming with Mbed much more similar to standard C++ projects. Additionally, making Mbed CE primarily target CLion and VS Code as IDEs for development (plus a command line option as well) introduces a lot more developer freedom and lets folks take advantage of battle-tested dev tools.
However, with the impending shutdown of Mbed Studio and Keil Studio Cloud (I think?), we also need an IDE option that requires little to no up-front setup, even if it ends up being a bit more limited in terms of the use cases it supports. This is especially important for teachers and students who use Mbed in class, as it's not desirable to spend lots of time and effort setting up the toolchain on each student's computer.
To this end, Mbed CE is working towards becoming compatible with the Arduino IDE. This compatibility would mean that you could install support for Mbed board through the Arduino library manager, and ideally they would work just like any other Arduino board. Since Mbed OS is already used as part of a number of arduino boards, this is well on its way to being a supported option.
✅ Contact Arduino and understand process for becoming listed in the Arduino package management system (we have to host a JSON index file and send them the URL)
✅ Create system to export Mbed compiler flags & compiled libraries in a format that the Arduino IDE can understand
🔵 Create CI job to automatically build Arduino cores for each board and publish an index of the compiled cores
⚪ Create a way to add even Mbed board that aren't arduinos into this system (as in, some way to auto generate or stub out the needed header files without manually writing them for each target)
⚪ Publish libraries in the Arduino IDE index
New Targets
Target devices that Mbed CE has added support for
✅ Teensy 4.0 and 4.1 supported, and MIMXRT1060 EVK as well (via extending the preexisting MIMXRT1050 MCU support)
✅ Arduino Nano 33 BLE supported (via existing nRF52840 support)
✅ Arduino Nicla Sense ME supported (via existing nRF52833 support)
✅ Raspberry Pi Pico supported (completely new vendor & device to Mbed, adapted & completed the in-progress PR from Arduino)
🔵 STM32H5 family port in progress (by @JohnK1987)
🔵 Arduino Giga & Portenta in the process of being added (by @multiplemonomials)
⚪ Arduino Nicla Vision board was donated by Arduino and will be ported at some point
Improvements and Bugfixes
Grab bag of sorely needed bugfixes and improvements that Mbed CE made and is making to Mbed OS.
✅ Removed tens of obsolete & unbuyable target boards from the Mbed codebase
✅ Significantly extended min & max PWM frequency limits on RPi Pico and all STM32 targets -- you can now have frequencies of up to 1MHz and as as low as 10Hz.
✅ Enabled floating point printf by default and increased default serial baudrate to 115200
✅ Fixed lots of non-API-compliant SPI & I2C behavior on LPC1768 and STM32 targets
✅ Added DMA SPI support for STM32 targets
✅ Wrote pages of new documentation for the SPI and I2C classes
✅ Updated the JSON parsing code to allow writing config files in JSON5, with comment support!
✅ Working on restoring the memory bank information features from Mbed CLI 1
🔵 Working on rewriting and fixing the (rather broken) STM32H7 Ethernet MAC code
⚪ Update the build system to build for either mbed-baremetal or mbed-os, not both. The current build system compiles most .a libraries against baremetal but then can link them with baremetal or mbed-os, which causes some subtle issues (e.g. linker errors with cellular). This should be fixed by adding a new CMake or JSON option (or both?) to select whether baremetal or Mbed OS is wanted for a project.
⚪ Add a system for defining "capabilities" of different MCUs and boards, e.g. "what are the max and min PWM frequencies this MCU can support" or "are zero-length I2C transactions supported" or "does async SPI support DMA", etc.
Anyway, I hope that this provides a bit more of a look into what we are working on at Mbed CE, and what this project has already managed to do so far!
And remember, Mbed CE is a community edition for a reason! We are committed to accepting PRs from the community, and the more help we have, the more we can make Mbed OS into what it always should have been. If you have any suggestions, please leave a comment here or create an issue or a PR! Or, if you are interested in maintaining some part of Mbed, please let us know! We badly need maintainers for lots of the device families, and we really need people familiar with Bluetooth, USB, and other protocols used by Mbed!
Beta Was this translation helpful? Give feedback.
All reactions