Repository navigation
Releases: modm-io/modm
Release list
2026q3 release
This release covers everything from 2026-07-01 and has been tested with avr-gcc
v14.2.0 from upstream and arm-none-eabi-gcc v14.2.1 from xpack.
Breaking changes:
modm::math::crc8_ccitt discarded the MSB of every input byte on non-AVR
targets and now computes the correct CRC. This changes the AMNB header CRCs on
the wire, so AMNB nodes must be updated together.
Features:
- RP2040 PIO driver with compile-time assembler.
- RP2040 flash driver.
- STM32H7 flash driver with single and dual bank support.
- CMSIS-DAPv2 integration to turn any USB-capable board into a debug probe.
- CRC-8/Maxim implementation.
Integrated Projects:
- CMSIS-DAP added at v2.1.2.
Fixes:
- Fix PSPLIM triggering during fiber context switch on ARMv8-M.
- 32-bit timer counter size for TIM2 and TIM5 on STM32H5.
- Compilation of STM32 GPIO module with GCC15.
- Flash memory detection for aliased and banked flash on Cortex-M.
- Windows compatibility of TinyUSB descriptors.
New device drivers:
- LTC2497 ADC as
modm:driver:ltc2497. - LTC2499 ADC as
modm:driver:ltc2499. - MCP23008/MCP23S08 IO expander as
modm:driver:mcp23x08. - PCAL6524 IO expander as
modm:driver:pcal6524. - MAX14661 analog multiplexer as
modm:driver:max14661. - MC33XS2410 power switch as
modm:driver:mc33xs2410. - AT21CSx1 single-wire EEPROM as
modm:driver:at21csx1.
Known bugs:
- OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
arm-none-eabi-gdbTUI and GDBGUI interfaces are not supported on Windows.
See #591.- Generating modm on Windows creates paths with
\that are not compatible with
Unix. See #310. lbuild buildandlbuild cleando not remove all previously generated files
when the configuration changes. See #285.
Many thanks to all our contributors:
- Andrey Kunitsyn (@andryblack)
- Christopher Durand (@chris-durand)
- Henrik Hose (@hshose)
- Matthias Schuller (@maschull106) 🎉
- Niklas Hauser (@salkinium)
- TudorFanaru18 (@TudorFanaru18) 🎉
PR #1383 -> 2026q3.
Detailed changelog
2026-09-20: Add AT21CSx1 EEPROM and MC33XS2410 power switch drivers
PR #1378 -> 434ca5c.
Tested in hardware by @salkinium.
2026-08-07: Add ADC, IO expander and analog MUX drivers
PR #1372 -> 3db0a3d.
Tested in hardware by @salkinium.
2026-07-14: Add STM32H7 flash driver
PR #1345 -> cb9cff4.
Tested in hardware by @hshose.
2026-07-12: Add CMSIS-DAPv2 integration
PR #1360 -> 42ae970.
Tested in hardware by @salkinium.
2026-07-05: Add RP2040 flash driver
PR #1362 -> 4d55600.
Tested in hardware by @andryblack.
2026-07-04: Add RP2040 PIO driver with compile-time assembler
PR #1358 -> a50e1cc.
Tested in hardware by @andryblack.
2026q2 release
This release covers everything from 2026-04-19 and has been tested with avr-gcc
v14.2.0 from upstream and arm-none-eabi-gcc v14.2.1 from xpack.
Features:
- Support for watchdog timer on nRF51, nRF52 and nRF53 device families.
Fixes:
- Fix
GenericTimeout::wait()to wait while timer is armed. - Reset fiber stop token on fiber restart.
- Avoid double counting secure memories on ARMv8-M devices in size reporting.
- Update compilation database generation for build system changes.
New development boards:
- NUCLEO-H563ZI as
modm:nucleo-h563zi.
Known bugs:
- OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
arm-none-eabi-gdbTUI and GDBGUI interfaces are not supported on Windows.
See #591.- Generating modm on Windows creates paths with
\that are not compatible with
Unix. See #310. lbuild buildandlbuild cleando not remove all previously generated files
when the configuration changes. See #285.
Many thanks to all our contributors:
- Christopher Durand (@chris-durand)
- Marin Dötterer (@marinauterion) 🎉
- Niklas Hauser (@salkinium)
PR #1361 -> 2026q2.
Detailed changelog
2026-06-28: Add NUCLEO-H563ZI board support and STM32H5 follow-up fixes
PR #1356 -> 8515ab5.
Tested in hardware by @salkinium.
2026-05-12: Add watchdog timer implementation for NRF5x
PR #1354 -> 16385fa.
Tested in hardware by @salkinium.
2026-05-11: Fix GenericTimeout::wait() behavior
2026-04-24: Reset stop token on fiber restart
2026-04-19: Update compilation_db for build system changes
2026q1 release
This release covers everything from 2026-01-01 and has been tested with avr-gcc
v14.2.0 from upstream and arm-none-eabi-gcc v14.2.1 from xpack.
Breaking changes:
The RCC APIs for STM32C0, F0, F1, F2, F3, F4, G0, L0 and U5 have been migrated
to the new naming and configuration API. Existing clock setup code on these
families must be updated.
Features:
- Support for nRF51, nRF52 and nRF53 device families.
- Support for STM32H5, STM32U0 and STM32U3 device families.
- Support for CMSIS-DSP on hosted Linux.
Integrated Projects:
- nrfx added at v4.1.0.
Fixes:
- Support and use both flash banks of STM32 devices for linkerscript.
boost::systemdeprecation on hosted Linux.- PLL3 configuration for NUCLEO-H743ZI.
- CDC port readiness checks in TinyUSB.
- Add NT35510 display driver for newer DISCO-F469NI revisions.
New device drivers:
- BMP581 pressure sensor as
modm:driver:bmp581. - BMI270 IMU as
modm:driver:bmi270. - TI IWR6843AOP radar as
modm:driver:iwr6843aop.
New development boards:
- NUCLEO-F207ZG as
modm:nucleo-f207zg. - NUCLEO-F722ZE as
modm:nucleo-f722ze. - NUCLEO-H503RB as
modm:nucleo-h503rb. - NUCLEO-H533RE as
modm:nucleo-h533re. - NUCLEO-H743ZI2 as
modm:nucleo-h743zi2. - NUCLEO-H753ZI as
modm:nucleo-h753zi. - NUCLEO-U083RC as
modm:nucleo-u083rc. - NUCLEO-U385RG-Q as
modm:nucleo-u385rg-q. - nRF51422-DK as
modm:nrf51422-dk. - nRF52840-DK as
modm:nrf52840-dk. - nRF5340-DK as
modm:nrf5340-dk. - WeAct-H503CB as
modm:weact-h503cb. - WeAct-H503RB as
modm:weact-h503rb. - WeAct-H523CE as
modm:weact-h523ce. - WeAct-H562RG as
modm:weact-h562rg. - WeAct-U585CI as
modm:weact-u585ci.
Known bugs:
- OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
arm-none-eabi-gdbTUI and GDBGUI interfaces are not supported on Windows.
See #591.- Generating modm on Windows creates paths with
\that are not compatible with
Unix. See #310. lbuild buildandlbuild cleando not remove all previously generated files
when the configuration changes. See #285.
Many thanks to all our contributors:
- Hannes Ellinger (@el-han)
- Henrik Hose (@hshose)
- Joël Schulz-Andres (@joelsa) 🎉
- Michael Jossen (@Javask)
- Niklas Hauser (@salkinium)
PR #1347 -> 2026q1.
Detailed changelog
2026-03-09: Add Bosch BMI270 IMU driver
PR #1340 -> cf1ad9c.
Tested in hardware by @hshose.
2026-03-08: Add support for nRF51, nRF52, nRF53
PR #1333 -> 911d4a9.
Tested in hardware by @salkinium.
2026-03-08: Move STM32F4 RCC to new API
PR #1332 -> 08a6a20.
Tested in hardware by @salkinium.
2026-01-27: Move STM32F3 RCC to new API
PR #1327 -> 131aab2.
Tested in hardware by @salkinium.
2026-01-25: Move STM32F2 RCC to new API
PR #1326 -> aa3d258.
Tested in hardware by @salkinium.
2026-01-25: Move STM32F1 RCC to new API
PR #1324 -> 45f0685.
Tested in hardware by @salkinium.
2026-01-24: Move STM32L0 RCC to new API
PR #1323 -> a9e4bc2.
Tested in hardware by @salkinium.
2026-01-19: Move STM32F0 RCC to new API
PR #1322 -> 36130b9.
Tested in hardware by @salkinium.
2026-01-18: Move STM32C0 RCC to new API
PR #1321 -> 20ed534.
Tested in hardware by @salkinium.
2026-01-17: Move STM32G0 RCC to new API
PR #1318 -> 9d4cf91.
Tested in hardware by @salkinium.
2026-03-07: Add NUCLEO-H533RE board support
PR #1341 -> 06a1618.
Tested in hardware by @salkinium.
2026-03-03: Add BMP581 pressure sensor driver
PR #1339 -> d0fcb0d.
Tested in hardware by @joelsa.
2026-03-03: Add TI IWR6843 AOP radar driver
PR #1336 -> 20a9705.
Tested in hardware by @hshose and @joelsa.
2026-02-23: Allow CMSIS-DSP on hosted Linux
2026-02-10: Fix STM32U5 memory map and RCC
2026-02-08: Move STM32U5 RCC to new API
PR #1329 -> 7173477.
Tested in hardware by @salkinium.
2026-01-18: Add STM32U3 support
PR #1320 -> acaa7ff.
Tested in hardware by @salkinium.
2026-01-11: Add STM32U0 support
PR #1317 -> 96eb252.
Tested in hardware by @salkinium.
2026-01-10: Add STM32H5 support
PR #1239 -> 20890c5.
Tested in hardware by @salkinium.
2025q4 release
This release covers everything from 2025-10-01 and has been tested with avr-gcc
v14.2.0 from upstream and arm-none-eabi-gcc v14.2.1 from xpack.
Features:
- libeigen integration added.
- Support for precision() and width() added to IOStream.
Integrated Projects:
- CMSIS Core upgraded from v6.1.0 to v6.2.0.
- Eigen added at v5.0.1.
- ETL upgraded from v20.40.0 to v20.44.1.
- FatFS upgraded from v0.15a_p1 to v0.16.
- LVGL upgraded from v9.2.2 to v9.4.0.
- RTT upgraded from v8.54 to v8.56a.
- STM32F4 headers upgraded from v2.6.10 to v2.6.11.
- STM32F7 headers upgraded from v1.2.9 to v1.2.10.
- STM32L4 headers upgraded from v1.7.4 to v1.7.5.
- STM32L5 headers upgraded from v1.0.6 to v1.0.7
- TinyUSB upgraded from v0.18.0 to v0.20.0.
Fixes:
- Compilation of PCB9535 driver.
- Compatibility with Python 3.14.
- PLL configuration for STM32G0, G4, L4, L5 families.
- TinyUSB integration for STM32G0.
- Fix recursive header dependency issue in assert implementation.
New device drivers:
- VL53L5CX distance sensor as
modm:driver:vl53:vl53l5cx. - VL53L7/VL53L8 distance sensor as
modm:driver:vl53:vl53lmz.
New development boards:
- NUCLEO-F071RB as
modm:board:disco-g071rb. - WeAct-G0B1CB as
modm:board:weact-g0b1cb.
Known bugs:
- OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
arm-none-eabi-gdbTUI and GDBGUI interfaces are not supported on Windows.
See #591.- Generating modm on Windows creates paths with
\that are not compatible with
Unix. See #310. lbuild buildandlbuild cleando not remove all previously generated files
when the configuration changes. See #285.
Many thanks to all our contributors:
- Alex Evers (@Tecnologic)
- Henrik Hose (@hshose)
- Niklas Hauser (@salkinium)
PR #1311 -> 2025q4.
Detailed changelog
2025-12-24: Add WeAct-G0B1CB board
PR #1306 -> 10eff63.
Tested in hardware by @salkinium.
2025-12-04: Add VL53L5/7/8 drivers
PR #1296 -> a40f206.
Tested in hardware by @hshose.
2025-11-16: Add NUCLEO-F071RB board
PR #1300 -> 584f5e3.
Tested in hardware by @salkinium.
2025q3 release
This release covers everything from 2025-07-01 and has been tested with avr-gcc
v14.2.0 from upstream and arm-none-eabi-gcc v14.2.1 from xpack.
Breaking changes:
-
Protothreads and Resumables are removed!
They were announced as deprecated in 2024q4 and now all usage of them has
been removed from modm's code base. The modules are still available in the
source code, but nothing in modm uses them anymore. The modules will be
deleted in the future. Please port your code to use fibers instead. Consult
themodm:processing:fibermodule docs for more information. -
RTT IODevice has been re-implemented as a static template class:
Rtt rtt(0); modm::IODeviceObjectWrapper< Rtt, modm::IOBuffer::DiscardIfFull > rtt_device(rtt); // has been replaced with modm::IODeviceWrapper< Rtt<0>, modm::IOBuffer::DiscardIfFull > rtt_device;
-
The class
Qmc5883lhas been properly namespaced intomodm::Qmc5883l. -
The MCP2515 driver has been re-implemented to be compatible with fibers.
The API has changed slightly. Please consult the module documentation for
details.
Features:
- Support for blocking IODevice in fibers.
- Use of RTT for boards without serial connections.
- Fiberize all UART drivers to yield in blocking calls.
- Add option to automatically watermark fiber stacks.
- Add external triggers and offset for the STM32F3/G4/L4/H7 ADC driver.
Integrated Projects:
- Segger RTT added at v8.54.
Fixes:
- Use HSE as RTC clock source instead of LSI for boards when possible.
New device drivers:
- ADS868x ADC as
modm:driver:ads868x.
Known bugs:
- OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
arm-none-eabi-gdbTUI and GDBGUI interfaces are not supported on Windows.
See #591.- Generating modm on Windows creates paths with
\that are not compatible with
Unix. See #310. lbuild buildandlbuild cleando not remove all previously generated files
when the configuration changes. See #285.
Many thanks to all our contributors:
- Alex Evers (@Tecnologic) 🎉
- Nick Fiege (@kikass13) 🎉
- Niklas Hauser (@salkinium)
- Vivien Henry (@lukh)
PR #1293 -> 2025q3.
Detailed changelog
2025-09-27: Add external triggers and offsets to STM32 ADC driver
PR #1275 -> 9c6d656.
Tested in hardware by @Tecnologic and @chris-durand.
2025-09-08: Refactor MCP2515 driver
2025-09-07: Add ADS868x ADC driver
2025-09-03: Add automatic fiber stack watermarking
PR #1290 -> 5f8a558.
Tested in hardware by @salkinium.
2025-08-24: Remove all Protothread and Resumable code
PR #1285 -> 211f24e.
Tested in hardware by @salkinium.
2025-08-17: Fiberize all UART drivers
PR #1284 -> 93c4805.
Tested in hardware by @salkinium.
2025-08-15: Use HSE as RTC clock when possible
PR #1282 -> aeee675.
Tested in hardware by @salkinium.
2025-08-11: Integrate Segger RTT code
PR #1281 -> 89f387f.
Tested in hardware by @salkinium.
2025-08-03: Implement blocking IODevice for fibers
It blocks until a newline character has been sent.
PR #1279 -> 7d9070d.
Tested in hardware by @salkinium.
2025q2 release
This release covers everything from 2025-04-01 and has been tested with avr-gcc
v14.2.0 from upstream and arm-none-eabi-gcc v14.2.1 from xpack.
Features:
- Support for GCC14.
- Support for 48 more STM32 devices.
Integrated Projects:
- ETL upgraded from v20.39.4 to v20.40.0.
- FatFS upgraded from v0.15a to v0.15a_p1.
- JSON upgraded from v3.11.3 to v3.12.0.
- LVGL upgraded from v9.2.0 to v9.2.2.
- NanoPB upgraded from v0.4.9 to v0.4.9.1.
- STM32C0 headers upgraded from v1.2.0 to v1.3.0.
- STM32G4 headers upgraded from v1.2.4 to v1.2.5.
- STM32H5 headers upgraded from v1.3.0 to v1.4.0.
- STM32H7 headers upgraded from v1.10.4 to v1.10.6.
- STM32L0 headers upgraded from v1.9.3 to v1.9.4.
- STM32L1 headers upgraded from v2.3.3 to v2.3.4.
- STM32U0 headers upgraded from v1.1.0 to v1.2.0.
- STM32U5 headers upgraded from v1.4.0 to v1.4.1.
- TinyUSB upgraded from v0.17.0 to v0.18.0.
Fixes:
- DW3110 initialization on fast CPUs.
- Support for STM32F723 HS USB PHY.
- Only disable previously enabled caches on Cortex-M7.
New development boards:
- DISCO-F723IE as
modm:board:disco-f723ie.
Known bugs:
- OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
arm-none-eabi-gdbTUI and GDBGUI interfaces are not supported on Windows.
See #591.- Generating modm on Windows creates paths with
\that are not compatible with
Unix. See #310. lbuild buildandlbuild cleando not remove all previously generated files
when the configuration changes. See #285.
Many thanks to all our contributors:
- Michael Jossen (@Javask)
- Niklas Hauser (@salkinium)
PR #1274 -> 2025q2.
Detailed changelog
2025-05-17: Add DISCO-F723IE board
Adds support for internal HS USB PHY on STM32.
PR #1264 -> 4fdd2a1.
Tested in hardware by @salkinium.
2025q1 release
This release covers everything from 2025-01-01 and has been tested with avr-gcc
v13.2.0 from upstream and arm-none-eabi-gcc v13.2.1 from xpack.
Features:
- Add missing HSI48-related functionality for some STM32.
- Enable Cortex-M7 I/D-Cache via lbuild.
- Speed up startup copying and zeroing of data sections.
Fixes:
- Fix wrong CMake program target
*.elfpath.
Known bugs:
- STM32F723 is missing support to use built-in USB HS PHY. See #1171.
- OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
arm-none-eabi-gdbTUI and GDBGUI interfaces are not supported on Windows.
See #591.- Generating modm on Windows creates paths with
\that are not compatible with
Unix. See #310. lbuild buildandlbuild cleando not remove all previously generated files
when the configuration changes. See #285.
Many thanks to all our contributors.
A special shoutout to first timers 🎉:
- Joshua (@JeyRunner) 🎉
- Niklas Hauser (@salkinium)
- dokee (@dokee39) 🎉
PR #1260 -> 2025q1.
Detailed changelog
2025-01-29: Enable Cortex-M7 I/D-Cache via lbuild
PR #1255 -> 13e35ea.
Tested in hardware by @salkinium.
2025-01-05: STM32: Add missing HSI48-related functionality
Added for STM32G0/G4/L0/H7/H5/U0
2024q4 release
This release covers everything from 2024-10-01 and has been tested with avr-gcc
v13.2.0 from Upstream and arm-none-eabi-gcc v13.2.1 from xpack.
Breaking changes:
Protothreads and Resumables are deprecated! Please use Fibers instead!
Note that you can disable the deprecation by resetting the option
modm:processing:protothread:use_fiber to false, however, you will be limited
to using GCC12 as GCC13 and newer does not compile our implementation anymore.
A shim is provided to allow the use of Protothreads and Resumables with Fibers
without any significant modification of the existing code. However you must
replace the main loop calling all protothreads with the fiber scheduler:
int main()
{
/*
while(true)
{
protothread1.update();
protothread2.update();
}
*/
modm::fiber::Scheduler::run();
return 0;
}The modm:processing:protothread and modm:processing:resumable modules will
be removed by the end of 2025. Please port your code to use fibers instead.
Consult the modm:processing:fiber module docs for more information.
Features:
- Add efficient stack overflow check in fiber yield function.
- Enable D-Cache for Cortex-M7 if DMA is not used.
- Support for GCC13 which was blocked on deprecating Resumables and Protothreads.
- Add RTC driver for STM32.
- Enable low speed clock input on all STM32 boards.
Integrated Projects:
- CMSIS-Core upgraded to v6.1.0.
- CMSIS-DSP upgraded to v1.16.2.
- STM32L4 headers upgraded to v1.7.4.
- STM32F1 headers upgraded to v4.3.5.
- LVGL upgraded to v9.2.0.
- TinyUSB upgraded to v0.17.
- printf upgraded to v6.2.0.
- ETL upgraded to v20.39.4.
- nanopb upgraded to v0.4.9.
Fixes:
- Make AMNB usable in Fibers.
- Reset AVRs on abandonment.
- Prevent RX FIFO overflow in STM32 SPI master.
- Fix
Timeout::wait()implementation not waiting. - Fix IWDG prescaler computation on STM32.
- Support Python 3.13 in modm_tools.
New device drivers:
- DW3310 Ultra-Wide Band driver as
modm:driver:dw3110.
New development boards:
- WeAct Studio STM32C011F6 as
modm:board:weact-c011f6.
Known bugs:
- STM32F723 is missing support to use built-in USB HS PHY. See #1171.
- OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
arm-none-eabi-gdbTUI and GDBGUI interfaces are not supported on Windows.
See #591.- Generating modm on Windows creates paths with
\that are not compatible with
Unix. See #310. lbuild buildandlbuild cleando not remove all previously generated files
when the configuration changes. See #285.
Many thanks to all our contributors.
A special shoutout to first timers 🎉:
- Andrey Kunitsyn (@andryblack)
- Christopher Durand (@chris-durand)
- Elias H. 🎉
- Frank Altheim (@frnktank) 🎉
- Jan-Gerd Meß (@jgmess-dlr) 🎉
- Kaelin Laundry (@WasabiFan)
- Michael Jossen (@Javask)
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
- Rasmus Kleist (@rasmuskleist)
- Vishwanath Martur (@vishwamartur) 🎉
PR #1248 -> 2024q4.
Detailed changelog
2025-01-01: Add WeAct Studio STM32C011F6 board
PR #1249 -> 7ba2fbb.
Tested in hardware by @salkinium.
2024-12-30: Add RTC peripheral driver for STM32
PR #1242 -> f402893.
Tested in hardware by @salkinium.
2024-12-01: Deprecate Protothreads and Resumable Functions
PR #1232 -> e92dc1d.
Tested in hardware by @salkinium.
2024-11-10: Add stack overflow check to fibers
Stack overflows lead to abandonment with the fbr.stkof assertion.
PR #1219 -> ae74049.
Tested in hardware by @salkinium.
2024-11-05: Add driver for DW3110
PR #1210 -> e579250.
Tested in hardware by @Javask and @rleh.
2024q3 release
This release covers everything from 2024-07-01 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc v12.2.1 from xpack.
Breaking changes:
- Deprecate
modm::allocator::Dynamicin favor ofstd::allocator. - STM32 FDCAN queue mode is switched from queue to FIFO mode.
Features:
- Add empty polyfill for fibers when module is not selected.
- Replace modm containers implementation with libstdc++.
- Add support for a custom allocator in the
modm:uimodule. - Add IWDG driver for STM32H7.
- Add FDCAN driver for STM32H7.
- Support for STM32C0 devices.
Integrated Projects:
- ETL upgraded to v20.38.17.
- STM32F3 headers upgraded to v2.3.8.
- STM32F7 headers upgraded to v1.2.9.
- STM32F4 headers upgraded to v2.6.10.
- STM32G4 headers upgraded to v1.2.4.
- STM32C0 headers upgraded to v1.2.0.
- STM32U0 headers added at v1.1.0.
Fixes:
- Fix
modm::GraphicDisplay::clearPixel()implementation. - Fix wrong ADC channel selection on STM32C0/G0/F0.
- Fix fiber poll timeout when yield takes too long.
- Fix infinite loop in fiber poll when duration is 0.
- Ensure fiber poll minimum duration is 1µs/1ms.
- Add missing device definitions to CMSIS-DSP headers.
- Fix zero initialization of FDCAN message RAM leading to wrong CAN filters.
New development boards:
- NUCLEO-C031C6 as
modm:board:nucleo-c031c6.
Known bugs:
- STM32F723 is missing support to use built-in USB HS PHY. See #1171.
- OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
- Compiling Protothreads and Resumable Functions is broken on GCC13. See #1012.
arm-none-eabi-gdbTUI and GDBGUI interfaces are not supported on Windows.
See #591.- STM32F7: D-Cache not enabled by default. See #485.
- Generating modm on Windows creates paths with
\that are not compatible with
Unix. See #310. lbuild buildandlbuild cleando not remove all previously generated files
when the configuration changes. See #285.
Many thanks to all our contributors.
A special shoutout to first timers 🎉:
- Caleb Chalmers (@calebchalmers) 🎉
- Christopher Durand (@chris-durand)
- Jörg Ebeling (@Apehaenger) 🎉
- Kaelin Laundry (@WasabiFan)
- Marco Miralles (@minco3) 🎉
- Matthew Arnold (@MatthewMArnold) 🎉
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
PR #1209 -> 2024q3.
Detailed changelog
2024-09-26: Add support for STM32C0
PR #1188 -> a7cfe65.
Tested in hardware by @Apehaenger and @salkinium.
2024-09-25: Add FDCAN driver for STM32H7
Queue Mode will send CAN frames in priority order according to their
arbitration ID. This is inconsistent with modm's software-managed queue
which is a strict FIFO. To make the behavior of the driver consistent
with an end-to-end FIFO order, we disable Queue Mode by default.
There is a new lbuild option, tx_hw_queue_mode, which allows the user
to opt back into the old behavior if desired. This is mostly intended
for if they also set buffer.tx to zero and optionally increase
message_ram.tx_fifo_elements.
PR #1206 -> 3614dc0.
Tested in hardware by @WasabiFan and @chris-durand.
2024-08-22: Add IWDG driver for STM32H7
PR #1204 -> 5ae26dd.
Tested in hardware by @salkinium.
2024-08-13: Fix fiber poll functions
PR #1196 -> 6a6802a.
Tested in hardware by @salkinium.
2024-08-08: Add custom allocator to modm:ui module
Add support for custom allocators to all related classes.
PR #1184 -> 31bbf48.
Tested by @MatthewMArnold.
2024-07-21: Replace modm containers with libstdc++
Backwards compatible wrapping of standard containers:
modm::Pair->std::pair.modm::DynamicArray->std::vector.modm::DoublyLinkedList->std::list.modm::LinkedList->std::list.
PR #1195 -> 5fcd015.
Tested by @chris-durand.
2024-07-07: Fiber polyfill
Empty implementations for modm::this_fiber::yield() and
modm::this_fiber::get_id().
PR #1172 -> 6a6802a.
Tested in hardware by @salkinium.
2024q2 release
This release covers everything from 2024-04-01 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc v12.2.1 from xpack.
Breaking changes:
- The STM32 UART peripheral moves the buffer configuration from lbuild to C++.
- Renames
modm::fiber::yield()tomodm::this_fiber::yield(). - Renames
modm::fiber::sleep()tomodm::this_fiber::sleep_for().
Features:
- Added
:platform:cortex-m:linkerscript.flash_reservedoption to reserve space
at the end of FLASH. - Add DMA capabilities to STM32F0/G0 ADC.
- Implement full atomics interface for AVR and STM32.
- Implement C++ concurrency interface for fibers.
- Add fiber stack overflow detection on ARMv8-M.
Integrated Projects:
- nlohmann/json added at v3.11.3.
Fixes:
- Communicate
:platform:cortex-m:linkerscript.flash_offsetto dfu-util tool. - Fix flash section erasing on STM32G4.
- Fix static initialization guard implementation.
New device drivers:
- AS5600 absolute encoder driver as
modm:driver:as5600.
Known bugs:
- STM32F723 is missing support to use built-in USB HS PHY. See #1171.
- OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
- Compiling Protothreads and Resumable Functions is broken on GCC13. See #1012.
arm-none-eabi-gdbTUI and GDBGUI interfaces are not supported on Windows.
See #591.- STM32F7: D-Cache not enabled by default. See #485.
- Generating modm on Windows creates paths with
\that are not compatible with
Unix. See #310. lbuild buildandlbuild cleando not remove all previously generated files
when the configuration changes. See #285.
Many thanks to all our contributors.
A special shoutout to first timers 🎉:
- Akos Becsey (@becseya) 🎉
- Christopher Durand (@chris-durand)
- Daniel Waldhäusl
- Dima Barsky (@kapacuk)
- Hannes Ellinger (@el-han) 🎉
- Henrik Hose (@hshose)
- Niklas Hauser (@salkinium)
- Thomas Sommer (@TomSaw)
PR #1175 -> 2024q2.
Detailed changelog
2024-06-24: Move buffer configuration from lbuild to C++ for STM32
The buffer configuration is now implemented in C++.
Please replace any modm::platform::U(s)artN type with:
using namespace modm::platform;
// Using only hardware buffers for Tx and Rx (both 1 symbol)
using UartN = BufferedUart<U(s)artHalN>;
// using only TX software buffer
using UartN = BufferedUart<U(s)artHalN, UartTxBuffer<512>>;
// using only RX software buffer
using UartN = BufferedUart<U(s)artHalN, UartRxBuffer<256>>;
// using both TX and RX software buffers
using UartN = BufferedUart<U(s)artHalN, UartTxBuffer<512>, UartRxBuffer<256>>;PR #1156 -> cf7769b.
Tested in hardware by @kapacuk and @salkinium.
2024-06-17: Add AS5600 absolute encoder driver
PR #1166 -> 55c88ba.
Tested in hardware by @TomSaw.
2024-06-16: Add fiber stack overflow detection on ARMv8-M
PR #1168 -> 6be3199.
Tested in hardware by @salkinium.
2024-05-20: Implement concurrency interface for fibers
PR #1026 -> 39a9f4d.
Tested in hardware by @salkinium.
2024-05-20: Implement all atomics for AVR and STM32
PR #1164 -> 8a924f9.
Tested in hardware by @salkinium.
2024-05-19: Add DMA capabilities to STM32F0/G0 ADC
PR #1136 -> 901a3dc.
Tested in hardware by @victorandrehc.