XM10 Extension Module SDK v2.4.1¶
Release date: 2026-07-24 | Target HW: Rev 2.0 only | KIT H10 FW: v2.3.0+
At a Glance¶
A patch release that fixes the C standard library on Rev 2.0. Floating-point printf("%f", ...) and dynamic malloc(), which previously failed silently, now work. No new examples or API changes.
- Float
printf(%f) andmalloc()now work — previouslymalloc()and the floatprintfthat uses it internally produced no output. (e.g.printf("cur=%.2f\n", value);) - Safe from multiple tasks — concurrent
malloc/printfcalls from several tasks no longer cause problems. - Same build result everywhere — building with STM32CubeIDE or with CMake now produces the same firmware.
- USB log decoder is now an installable executable — replaced by XM10 Log Decoder, which needs no Python install (see below).
What Changed — Float printf / malloc (core)¶
On Rev 2.0, malloc() — along with the float printf (%f, %e, %g) that relies on it — produced no output. This release fixes that, so the following now works:
float value = 3.14f;
printf("cur=%.2f\n", value); // now prints "cur=3.14" (previously empty/garbled)
char *buf = malloc(64); // now returns a valid pointer
- Rev 1.1 is unaffected — this problem only occurred on Rev 2.0. The Rev 1.1 SDK is unchanged from v2.3.1.
- Thread-safe standard library — alongside the fix,
malloc/free/printfare now safe to call concurrently from multiple tasks. Nothing extra to do on your side.
USB Log Decoder — XM10 Log Decoder¶
The tool that converts USB mass-storage (MSC) log files (.bin) into CSV is now an installable executable.
- Instead of the Python scripts under
PythonDecoder/(MSC · Legacy), downloadXM10LogDecoder_Setup_*.exefrom the Releases page and install it. No Python install required. - It auto-detects the log format version (new/legacy) and expands any log structure you define into CSV (column titles = your own field names).
- If you want to write code that receives USB-CDC data in real time, the
PythonDecoder/CDC/Python samples remain in place.
Full usage: see
PythonDecoder/README.md.
Downloads¶
| File | Target board |
|---|---|
| Rev2.0.zip 🆕 | XM10 Rev 2.0 (latest board with Ethernet / RTC) — new in v2.4.1 |
| Rev1.1.zip | XM10 Rev 1.1 (early development board) — same as v2.3.1 |
| *XM10LogDecoder_Setup_.exe 🆕 | USB log decoder (installer, no Python needed) |
Download the ZIP matching your board revision. RJ45 Ethernet port present → Rev 2.0; absent → Rev 1.1.
Note for Rev 1.1 users: this v2.4.1 fix (float
printf/malloc) addresses a problem that only occurred on Rev 2.0, so it is Rev 2.0 only.Rev1.1.zipis identical to v2.3.1, so there is nothing new to download for Rev 1.1.
Release attachments¶
The bootloader, KIT H10 firmware, and content files are identical to v2.3.0, and are attached again to the v2.4.1 release for convenience (
AGR_Bootloader.bin/SUIT_H10_Binary_20260716.zip/SUIT_ContentsFiles.zip). If you already installed/updated at v2.3.0/v2.3.1, no further action is needed.
Prerequisites¶
The final build step (generating the upload .bin) uses Python. If you haven't installed it, follow Software setup to install Python 3.10+ (PATH registration required).
Details¶
Standard library (core)¶
- Float
printf/mallocfixed — float format specifiers (%f, etc.) and dynamic allocation now work. - Thread-safe — concurrent
malloc/printfcalls from multiple tasks no longer cause problems.
SDK build¶
- CMake · CubeIDE parity — builds made with CMake were missing the float-
printfsettings; corrected so both build methods produce the same firmware.
Tools · docs¶
- USB log decoder as an installer — see USB Log Decoder above.
- Debug-halt guidance — clarified in troubleshooting that halting at
main()and theBreak at address "0x0800xxxx" ... no debug informationpopup (bootloader region) are normal. Just pressResume(F8).
Compatibility¶
| Item | Impact |
|---|---|
User code (Control_Setup / Control_Loop) |
No changes — just rebuild; float printf/malloc now work |
| API signatures | No changes |
| Rev 1.1 SDK | Same as v2.3.1 — not part of this release |
| KIT H10 firmware / content files | Same as v2.3.0 — no update needed |
| Bootloader | Same as v1.1.0 — no reinstall needed |
| USB log decoder | Python scripts → installable executable (Releases). Real-time CDC samples retained |
| User data (USB log files, etc.) | Unchanged — data format compatible |