Hi everyone,
I’d like to share EsyMcuPlatform, an Apache-2.0 licensed C11 library for applications built with C, CMake, and FreeRTOS.
The goal is to reuse common firmware infrastructure across MCU targets while keeping feature selection, resource ownership, and application startup explicit.
The library includes:
• Consistent hardware APIs across supported MCU backends.
• FreeRTOS wrappers for tasks, queues, synchronization, and supported native SMP ports.
• Static or caller-owned storage for library resources, including task stacks and control storage.
• Optional middleware for logging, diagnostics, protocols, storage, bootloader, OTA, and GUI integration.
• Module-owned host tests and reusable HAL/OS fakes.
The application selects the modules, supplies the required storage, and controls their lifecycle through CMake integration and public C APIs.
Current backends cover RP2040, RP2350 Arm, and selected STM32F4 devices, with partial support for classic ESP32. Peripheral availability follows the documented backend capability matrix.
I’ve also published three companion examples using the same application sources for Raspberry Pi Pico 2 and STM32F407:
• smp_hello: two static tasks pinned to separate cores on Pico 2, and the same task/logger APIs running on one core on STM32F407.
• bootloader: signed image verification, dual-slot selection, and trial boot with application-controlled confirmation.
• ota_update: signed image transfer over UART, Flash readback verification, reboot, and startup confirmation.
The update example uses one scheduled core on both targets; the Pico 2 updater keeps core 1 parked. The UART update example has been tested on both boards.
Library:
Examples and build instructions:
This is the initial v0.1.0 release. I’d appreciate feedback from anyone trying the examples or evaluating integration with an existing FreeRTOS project.
In particular, is the build integration straightforward, and are the resource ownership and lifecycle contracts clear enough for practical use?
Thanks for taking a look.