STM32 Platform Get in touch

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

CAN 29-bit ID 15 dst src ch · 3 frames
FF1501FE00100A100441030001
FC15FE0100300000
CF1501FE00218F827281
Real frames from the platform’s golden test vectors, which the C firmware and the Python host are both tested against. The UART and CAN encodings are worked out with the spec’s rules, in your browser.
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.

  1. 01

    A hand-written HAL and kernel, with no vendor code running on the chip

  2. 02

    Fetches the toolchain and builds with CMake, driven by a device database generated from CMSIS-SVD

  3. 03

    A wire protocol over UART, CAN and USB, plus a desktop app that speaks it and flashes boards

  4. 04

    A CANopen stack tested against python-canopen on real hardware

  5. 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.

AreaSpecWhere
Toolchain fetch and CMake build§3cmake/, tools/sp/toolchain.py
Device database: G473, H743, L432, L476§4devices/db/
Hardware config, clock solver, GUI editor§5tools/sp/hwcfg/, tools/sp/gui/
Board ID by voltage divider§6core/platid/
HAL§7core/hal/
Kernel, LITE and FULL§8core/os/
DAQ annotations and runtime§10, §12tools/sp/daqgen/, core/daq/
PLINK on UART, CAN and USB§11core/plink/
Display app§13tools/sp/display/
Bootloader§14core/boot/
Host CLI and MCP server§15, §16tools/sp/cli.py, tools/sp/mcp/
CAN message database, CANopen§17core/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%

Next

Build on STM32 Platform

Ask about licensing the platform, bringing up a board, or contract firmware work.

This site isn't finished. Anything on it may still change, and none of it is binding until the site is live.