PolyMCU - An open framework for micro-controller software

All semiconductor vendors provide SDK and tools - generally for free - to enable makers to quickly write software for their hardware platforms.
Specifications such as ARM CMSIS or vendor independent SDK such as ARM mbed have been trying to enable makers to easily move their code from one platform vendor to another one.
PolyMCU - a new open-source micro-controller framework - aims to combine all the advantages of all existing solutions into a single open-source project.

IoT Software Foundation

Micro-controllers are the most deployed processors in the world. New IoT companies are announced every single day. But what about the software foundation of these projects? Even if most MCU vendors provide source code for their SDK, is the micro-controller world really open and easily allow to move project from one platform to another one?

PolyMCU Design

PolyMCU has been designed from the beginning to be as flexible as possible: host OS independent (support Linux, Windows, MacOS), support any toolchain (GCC, LLVM), any RTOS (ARM RTX, FreeRTOS, RIOT), any micro-controller vendor SDK (Nordic Semiconductor, NXP, Freescale).
Enabling such flexibility provides by the same time better software quality by testing the same piece of software in various configurations.

The framework is based on CMake. It provides some examples to build baremetal and RTOS-based projects.

Lab A Part added CMSIS RTOS support to FreeRTOS. To ensure our implementation is conformed to the CMSIS RTOS requirements, we wrote a CMSIS RTOS Conformance.

In opposition to ARM mBed that provides its own library, PolyMCU used Newlib.
No new interface layout has been introduced in the framework. The abstraction layout for ARM architecture is driven by ARM CMSIS v3.0.

PolyMCU Build & Test Framework

No software quality without an appropriate quality flow.
PolyMCU comes without a complete build and test framework. Tests can be written in Python and executing on the micro-controller platform as part of the test execution.

Non-intrusive analysis can be done on the target. Information such as RTOS tasks and stack consumption can be retrieved during the testing phase (support ARM RTX and FreeRTOS).

The project is open source and hosted on github at https://github.com/labapart/polymcu.