In development · Hardware and firmware
STM32 Platform
A firmware platform with no vendor code in the build. You can read every layer that touches the silicon.
PLINK · one request, byte for byte, on each transport
Link frame 10 bytes · CRC 0x8172
1004410300018F827281
Read one parameter: count 1, then id 0x828F, little-endian.
UART · USB CDC COBS, then 00 · 12 bytes
051004410306018F82728100
15 dst src ch · 3 frames
| FF | 1501FE00 | 100A100441030001 |
|---|---|---|
| FC | 15FE0100 | 300000 |
| CF | 1501FE00 | 218F827281 |
- Title
- STM32 Platform
- Dwg no.
- Q1-001
- Rev
- 2026.1
- Status
- In development
- Drawn by
- DWMM Holdings
Notes
What it does.
A full firmware platform for STM32 G4, L4 and H7 chips. It provides the HAL, the kernel, the host tools and the wire protocol, so an application repository only needs its own source files and a YAML config.
- 01
A hand-written HAL and kernel, with no vendor code running on the chip
- 02
Fetches the toolchain and builds with CMake, driven by a device database generated from CMSIS-SVD
- 03
A wire protocol over UART, CAN and USB, plus a desktop app that speaks it and flashes boards
- 04
A CANopen stack tested against python-canopen on real hardware
- 05
Over 1,400 commits, the biggest single codebase in the portfolio
What’s in the repository
Every layer, written here.
The specification (docs/STM32_PLATFORM_SPEC.md) decides what the code does. Each area has a section in it and a folder in the tree. There’s no tagged release yet.
| Area | Spec | Where |
|---|---|---|
| Toolchain fetch and CMake build | §3 | cmake/, tools/sp/toolchain.py |
| Device database: G473, H743, L432, L476 | §4 | devices/db/ |
| Hardware config, clock solver, GUI editor | §5 | tools/sp/hwcfg/, tools/sp/gui/ |
| Board ID by voltage divider | §6 | core/platid/ |
| HAL | §7 | core/hal/ |
| Kernel, LITE and FULL | §8 | core/os/ |
| DAQ annotations and runtime | §10, §12 | tools/sp/daqgen/, core/daq/ |
| PLINK on UART, CAN and USB | §11 | core/plink/ |
| Display app | §13 | tools/sp/display/ |
| Bootloader | §14 | core/boot/ |
| Host CLI and MCP server | §15, §16 | tools/sp/cli.py, tools/sp/mcp/ |
| CAN message database, CANopen | §17 | core/cancom/ |
An application
Your code, your YAML, and the platform as a submodule.
An app repository holds its own code, an app.yaml, and one YAML file per board. The platform comes in as a git submodule at platform/, and two small frozen files hand the build over to it. A config mistake stops the build with a file, line and column.
my-app/ ├── CMakeLists.txt # frozen, three lines ├── CMakePresets.json # frozen, includes the platform’s ├── app.yaml # name, chip, sources, kernel, PLINK ├── configs/ │ └── default.yaml # pins, clocks, peripherals ├── src/main.c └── platform/ # this repository $ cmake --preset debug && cmake --build --preset debug $ sp flash $ sp display --connect serial:COM5
Specification
What it’s built with, and when.
Pulled from the repository each time this site is built.
- State
- In development
- Discipline
- Hardware systems
- Shape
- Hardware and firmware
- Started
- Aug 2026
- Last change
- Sep 2026
- Commits
- 1,430
- C
- Python
- CMake
- CMSIS
- Rust
- Tauri
- ARM Cortex-M
- Python 66%
- C 28%
Related work
Built alongside STM32 Platform
Next
Build on STM32 Platform
Ask about licensing the platform, bringing up a board, or contract firmware work.