Hello! I know it’s been a while, just wanted to provide some updates about the current state of Mbed CE.
Over the last few months, it feels like the pace of the project has been picking up! I’m super stoked to have some new contributors from the community who have added some new features and bug fixes. We continue to accumulate more upload method configurations, and there’s been some cool new features and fixes added for STM32U5 and RASPBERRY_PI_PICO. Plus, DMA SPI is now supported on every STMicro target other than STM32U5 (where there’s still one issue that needs to get looked into).
Another thing that’s happened lately is I’ve spoken a bit with Martino Facchin from Arduino – he’s one of the devs responsible for maintaining the Mbed OS Arduino core and its giant pile of patches that Arduino couldn’t merge into mainline Mbed. I talked to him about Mbed CE, and he said that Arduino could be interested in providing Mbed CE as a core option through Arduino IDE! However, they do not have much dev time to spare, so we’d have to do the work of formatting Mbed as an arduino core and creating the correct index files to make it available on the Arduino package index. I managed to complete the first half of that job here. And it DOES work! I’m able to use the generated core files with Arduino IDE to compile & upload Mbed CE projects in one step!
This is pretty cool because it means there’s a much easier development environment option available if people want to use Mbed CE for Arduino boards without going through the manual setup. Also, since Arduino IDE can work with OpenOCD upload methods, there’s no reason we couldn’t add virtually every Mbed board to the Arduino IDE over time.
The remaining part, though, is that in order for the Arduino people to list us in the package index, we need to create a CI job which generates a package.json file and hosts it and the package files via some sort of permanent storage. Github Pages has been suggested as a possible option. The template package.json is here and Arduino pointed me to this ESP32 script which does something similar to use as a reference. Unfortunately I am not a web developer so this is a bit out of my comfort zone… I’d really appreciate if someone could take this on.
Which brings me to the last topic, which is what am I working on? Well, I feel like with the project picking up, we are going to see more and more PRs being submitted and more demand for testing stuff on a daily basis. As you may or may not know, for some time now I’ve been working on building a new CI test system to replace the old FPGA Test Shield system that ARM used, and I am also working on a device farm to run these tests automatically. Well, I have made a fair amount of progress! The basic device farm (with STM32U5, STM32L4, STM32H7, NRF52840, LPC1768, and RASPBERRY_PI_PICO) is online, and I have developed a new test shield PCB which can test SPI, I2C, UART, PWM, AnalogIn, and more. Also, I have developed some fairly torturous test cases which run various SPI and I2C transactions and verify that the results are correct, via a logic analyzer built right into the test shield. There’s no “transfer one byte and call it a day” here – these tests are complicated and they will only get even more detailed over time.
However, there is still a lot to do to get this project running, and as I have a day job I cannot be counted on to make progress consistently and quickly – it’s a question of when I have time and energy. I realized I was feeling a bit stressed with all the stuff going on with the project, because it was hard to determine how to divide my time. But logically, there’s a clear answer – we need to get testing automated now before it becomes a huge limiting factor later on. So, I am going to have to be a bit more strict here. For the next couple months, I am going to have to focus my time on test system development rather than new features and bug fixes. I will still be approving PRs, but I will not write anything myself other than stuff for the test system. I know that this means certain bug fixes will be delayed, and I’m sorry, but I have to put my foot down and focus on this or I will never get it done.
I’m hoping that by approximately summer I will have the new system up and running and then we can take another look at where things will go from there! In the meantime, I have created a new project board to track what work still needs to get done for this project. Feel free to check it out!