“We are pleased to announce the release of Mbed OS 5.15 today.
One of our primary focus areas over the past three months has been updating the underlying compiler infrastructure that we support in order to benefit from the performance optimizations and language enhancements those compilers bring to the Mbed ecosystem. Further, work continues to improve our support for Python 3 and many of our basic tools have been updated to support this version. For Mbed itself, we have added support in a backward compatible way for “static pin map tables” to further reduce memory consumption in scenarios where runtime modification is not needed and not required.
GCC Compiler 9 Support
Earlier this year, in our 5.13 release, we updated two of the three compilers we supported, Arm Compiler 6 and IAR Embedded Workbench. In this release, we’ve updated our support for the GCC compiler, from version 6 to version 9. This gives developers and Partners access to the latest compiler optimizations that GCC offers. It also means we now support the v8-M Arm architecture for all three compilers we use in Mbed.
Arm Compiler 6.13 Support
Our colleagues in Arm’s Developer Services Group have also released a new version of the Arm Compiler, version 6.13, which delivers important new functionality, especially around Link Time Optimization (LTO), which can provide image size savings between 1.5% and 10%. Mbed OS now supports version 6.13 as the default.
Since we introduced support for version 6 of the Arm Compiler, we’ve also supported the previous version, Arm Compiler 5, alongside it. This comes at a significant cost to our development team, so we’re giving advance warning now that we expect to drop support for Arm Compiler 5 in the next release of Mbed OS.
Python 3 Support
Many of the tools we provide use Python as the underlying scripting language. In 5.15, we’ve added Python 3 support in the following tools:
Mbed OS tools.
Mbed OS repository.
Mbed OS CI scripts.
Mbed OS CI.
Mbed OS testing tools (Greentea, HTrun, Mbed test, Mbed LS).
Python 2 will be deprecated early next year. We’ve timed our changes to ensure our tools, and our Partner’s tools, can take advantage of the later version of Python.
Support for static pin map tables
In modern MCUs, peripherals often can be mapped to different pins, and each pin can have multiple functions. Mbed OS supports dynamic pin mapping, meaning pins can be reconfigured at run time for different drivers to use. This feature provides great flexibility. As a platform focused on the developer experience, it was a feature we wanted to offer. However, there’s a nontrivial ROM cost to maintain the pin map tables and infrastructure to parse it, so as part of our ongoing work to provide meaningful memory optimizations in Mbed, we’ve added support for static pin map tables.
Often pin configuration is frozen at the hardware design stage and doesn’t require run time modification. Supporting static pin map tables and moving this configuration to compile time allows us to make small but significant memory savings.
This new feature has been implemented in a backward compatible way and doesn’t affect existing code. We’ve introduced this functionality to many of our silicon Partners and given them access to the feature branch ahead of this release, so we expect to see more development boards supporting this feature in the coming months.
You can find more documentation on this feature and how to use it in our porting guide.”