Releases: modm-io/modm
2023q3 release
This release covers everything from 2023-07-01 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc v12.2.1 from xpack.
Features:
- STM32G0 FD-CAN driver.
- Redirect printf to logger in BSPs that support it.
Integrated Projects:
- CMSIS-DSP upgraded to v1.15.0.
- ETL upgraded to v20.38.2.
- LVGL upgraded to v8.3.10.
- STM32C0 headers upgraded to v1.1.0.
- STM32H5 headers upgraded to v1.1.0.
- STM32L4 headers upgraded to v1.7.3.
- STM32U5 headers upgraded to v1.3.0.
Fixes:
- Place
.data
section in DMA-able memory on STM32H7. - Correct identification register indices for HMC58x3 drivers.
- Fix spurious EXTI interrupt with shared IRQ.
New device drivers:
- IIM-42652 IMU family driver as
modm:driver:ixm42xxx
. - Stacked SPI Flash driver as
modm:driver:block.device:spi.stack.flash
. - SX128x LoRa driver as
modm:driver:sx128x
. - QMC5883L magnetometer driver as
modm:driver:qmc5883l
.
Known bugs:
- STM32F7: D-Cache not enabled by default. See #485.
lbuild build
andlbuild clean
do not remove all previously generated files
when the configuration changes. See #285.- Generating modm on Windows creates paths with
\
that are not compatible with
Unix. See #310. arm-none-eabi-gdb
TUI and GDBGUI interfaces are not supported on Windows.
See #591.
Many thanks to all our contributors.
A special shoutout to first timers 🎉:
- Alexander Solovets (@mbait) 🎉
- Christopher Durand (@chris-durand)
- Klaus Schnass (@klsc-zeat) 🎉
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
- Rasmus Kleist (@rasmuskleist)
PR #1088 -> 2023q3.
Detailed changelog
2023-09-11: Add QMC5883L magnetometer driver
PR #1063 -> 7f30961.
Tested in hardware by @mbait.
2023-09-02: Fix EXTI interrupts
PR #1066 -> c9e5227.
Tested in hardware by @chris-durand.
2023-08-15: Add SX128x LoRa driver
PR #1050 -> 517bd84.
Tested in hardware by @rasmuskleist.
2023-08-13: Add Stacked SPI Flash driver
PR #1054 -> ba23833.
Tested in hardware by @rasmuskleist.
2023-07-27: Add ADC driver for STM32H7
Also adds support for injected conversions.
PR #1049 -> 4d69227.
Tested in hardware by @chris-durand.
2023-07-26: Fix ADC driver for STM32G0
PR #1053 -> 5d03d53.
Tested in hardware by @chris-durand.
2023-07-21: Add CAN driver for STM32G0
PR #1051 -> a05cc62.
Tested in hardware by @klsc-zeat.
2023-07-19: Add IIM-42652 IMU driver
PR #1040 -> 8012d82.
Tested in hardware by @rasmuskleist.
2023-07-10: Place .data
section into D1_SRAM on STM32H7
PR #1048 -> 027811f.
Tested in hardware by @chris-durand.
2023q2 release
This release covers everything from 2023-04-05 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc v12.2.1 from xpack.
Breaking changes:
- GCC12 requirement for C++23.
-fsingle-precision-constant
default compile flag has been removed.- Removed deprecated
Timer::setPeriod(uint32_t)
in favor ofstd::chrono
units.
Features:
- SAMx7x DAC, ADC, DMA, and CAN drivers.
- Enabled C++23 and C23.
- STM32 IWDG driver.
- Fibers are now backward compatible with protothreads and resumable functions.
- Support for STM32G0B/C devices with shared interrupts.
Integrated Projects:
- LVGL upgraded to v8.3.7.
- Pico-SDK upgraded to v1.5.1.
- STM32F1 headers upgraded to v4.3.4.
- STM32F2 headers upgraded to v2.2.6.
- STM32L1 headers upgraded to v2.3.3.
- CMSIS-DSP upgraded to v1.14.4.
- SAMx7x upgraded to v3.0.
- TinyUSB upgraded to v0.15.0.
Fixes:
- Moving average type selection.
- SysTick clock access from both cores on RP2040.
- FDCAN driver on STM32 tx message queue.
- STM32 I2C NACK flag is acknowledged for instances >1.
- Fix arithmetic overflow in
Timer::setPeriod
on STM32. - Validate calculated CRC on MS5611 driver.
New development boards:
- Adafruit Feather-M4 as
modm:feather-m4
.
New device drivers:
- MAX31865 temperature sensor as
modm:driver:max31865
. - Internal cycle counter as
modm:driver:cycle_counter
. - MCP3008 ADC driver as
modm:driver:mcp3008
.
Known bugs:
- STM32F7: D-Cache not enabled by default. See #485.
lbuild build
andlbuild clean
do not remove all previously generated files
when the configuration changes. See #285.- Generating modm on Windows creates paths with
\
that are not compatible with
Unix. See #310. arm-none-eabi-gdb
TUI and GDBGUI interfaces are not supported on Windows.
See #591.
Many thanks to all our contributors.
A special shoutout to first timers 🎉:
- Christopher Durand (@chris-durand)
- Daniel Waldhäusl 🎉
- Henrik Hose (@hshose)
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
- Rasmus Kleist (@rasmuskleist)
- Sascha Schade (@strongly-typed)
- Sergey Pluzhnikov (@ser-plu)
- Thomas Rush (@tarush53)
- Victor Costa (@victorandrehc)
- Vivien Henry (@lukh)
PR #1044 -> 2023q2.
Detailed changelog
2023-06-20: Extend support for ELF2UF2 tool to STM32 and SAM
PR #1038 -> b05df3e.
Tested in hardware by @tarush53.
2023-06-09: Remove -fsingle-precision-constant
compile flag
PR #1037 -> 2384756 with medium-impact in floating point variables.
Tested in hardware by @salkinium.
2023-06-08: Add Adafruit Feather-M4 board support
PR #1032 -> 81b86be.
Tested in hardware by @tarush53.
2023-06-07: Add support for STM32G0B/C devices
PR #1036 -> 768d749.
Tested in hardware by @chris-durand.
2023-06-01: Add MCP3008 ADC driver
PR #1028 -> eda224e.
Tested in hardware by @chris-durand.
2023-05-19: Add complementary channels to TIM driver on STM32
PR #1018 -> 45ae68a.
Tested in hardware by @ser-plu.
2023-05-15: Implement Protothreads/Resumables using Fibers
PR #1001 -> 45ae68a.
Tested in hardware by @salkinium.
2023-05-13: Fix FDCAN transmission queue on STM32
PR #1017 -> 9d33843.
Tested in hardware by @ser-plu, @chris-durand, and @rleh.
2023-05-09: Add MCAN driver for SAMx7x
PR #955 -> bfafcd3.
Tested in hardware by @rleh.
2023-05-05: Add IWDG driver for STM32
PR #1009 -> d772940.
Tested in hardware by Daniel Waldhäusl.
2023-05-03: Fix RP2040 multicore access to modm::Clock
PR #1010 -> 389a9c3.
Tested in hardware by @salkinium.
2023-05-02: Add MAX31865 temperature sensor
PR #993 -> 65bbccf.
Tested in hardware by @hshose.
2023-04-19: Add ADC driver for SAMx7x
PR #998 -> c7c4c57.
Tested in hardware by @chris-durand.
2023-04-12: Add DAC and DMA driver for SAMx7x
PR #987 -> 94580b4.
Tested in hardware by @chris-durand.
2023-04-08: Fix STM32 SPI configuration while running
PR #994 -> 972b74b.
Tested in hardware by @chris-durand.
2023q1 release
This release covers everything from 2023-01-01 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc 12.2.rel1 from Arm.
Breaking changes:
- SAMV71 Xplained Ultra button polarity.
Features:
- External main clock on SAMx7x.
- SAMx7x SPI driver.
- SAM GpioInverted.
- CANFD large frame support.
- SAM SoftwareGpioPort.
- SAMx7x Timer/counter driver.
- SAMx7x PWM generator driver.
- GCC 12.
- Ability to coredump from GDB directly.
- JLink support.
- Support for STM32U5 devices.
- Repetition Counter on STM32 Advanced Control Timers.
- ADC scan mode, DMA mode and external trigger for STM32F1/F2/F37/F4/F7/L1.
- SAMx7x I2C driver.
Integrated Projects:
- ETL upgraded to v20.35.14.
Fixes:
- Multiple fixes for I²C NACK handling on STM32.
- On Nucleo-F103RB GpioB4 is now usable.
- Systick frequency on SAMx7x.
- Fix static member variable initialization.
New development boards:
- Nucleo-U575ZI-Q as
modm:nucleo-u575zi-q
. - SAME70 Xplained as
modm:board:same70-xplained
.
New device drivers:
- LSM6DSO imu as
modm:driver:lsm6dso
. - MS5837 pressure/temperature sensor as
modm:driver:ms5837
. - AT24MAC402 I2C Eeprom as
modm:driver:at24mac402
.
Known bugs:
- STM32F7: D-Cache not enabled by default. See #485.
lbuild build
andlbuild clean
do not remove all previously generated files
when the configuration changes. See #285.- Generating modm on Windows creates paths with
\
that are not compatible with
Unix. See #310. arm-none-eabi-gdb
TUI and GDBGUI interfaces are not supported on Windows.
See #591.
Many thanks to all our contributors.
A special shoutout to first timers 🎉:
- Christopher Durand (@chris-durand)
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
- Victor Costa (@victorandrehc) 🎉
- Sascha Schade (@strongly-typed)
- Vivien Henry (@lukh)
- Luiz Gili (@lgili) 🎉
- Mattis Kieffer (@mat-kie) 🎉
- Rasmus Kleist (@rasmuskleist)
- Sebastian Birke (@se-bi)
PR #995 -> 2023q1.
Detailed changelog
2023-04-08: Fix static member variable initialization
Fixes __cxa_guard_acquire
to construct a static member variable only once!
PR #995 -> 2023q1.
Tested in hardware by @salkinium.
2023-04-06: Add SAMx7x I2C driver
Including an unittest and examples.
PR #954 -> d1938eb.
Tested in hardware by @chris-durand.
2023-04-06: Add AT24MAC402 I2C EEPROM driver
This also adds generic support for I2C eeproms with 8 bit addressing.
PR #954 -> d1938eb.
Tested in hardware by @chris-durand.
2023-04-01: Add ADC DMA mode and external trigger for STM32F1/F2/F37/F4/F7/L1
PR #982 -> 04ed0a5.
Tested in hardware by @victorandrehc.
2023-03-27: Fix systick frequency on SAMx7x
PR #986 -> 589aea7.
Tested in hardware by @chris-durand.
2023-03-19: Add support for Repetition Counter on STM32 Advanced Control Timers
PR #981 -> 740fd51.
Tested in hardware by @victorandrehc.
2023-03-14: Add BSP for SAM E70 Xplained with multiple examples
PR #969 -> a38feca.
Tested in hardware by @lgili.
2023-03-14: Separate the rx handling part of the XPCC dispatcher
PR #970 -> 2273bae.
Tested in hardware by @se-bi.
2023-03-13: Add STM32U5 support
Support for all devices of the new STM32U5 family with Cortex-M33 core.
UART and RCC platform drivers are adapted and a BSP for the Nucleo-U575ZI-Q
is also included.
PR #843 -> 8a3a20b.
Tested in hardware by @rleh.
2023-03-13: Add ADC scan mode supprot for STM32F1/F2/F37/F4/F7/L1
PR #976 -> 08cd479.
Tested in hardware by @victorandrehc.
2023-03-06: Refactor tooling and add JLink support
- Refactor modm_tools module and debug tooling
- Add JLink debug probe support
- Add ITM and RTT on NUCLEO-64 board
PR #965 -> 241b0d1.
Tested in hardware by @salkinium.
2023-03-06: Enable GpioB4 on Nucleo-F103RB
PR #967 -> 416ced6.
Tested in hardware by @strongly-typed.
2023-02-28: Always inline DMA IRQ handler to reduce IRQ latency on STM32
PR #964 -> d982a85.
Tested in hardware by @strongly-typed.
2023-02-20: Add ability to coredump from GDB directly
PR #961 -> eb2748e.
Tested in hardware by @salkinium.
2023-02-18: GCC 12 update
- Adapt code and build system to GCC12
- Split AVR Mega Pro unittests into three
- Fix function call in ADC examples
PR #940 -> 923f9c1.
Tested in hardware by @salkinium.
2023-02-15: Add Nucleo-H723ZG OpenOCD config
PR #960 -> 3cee015.
Tested in hardware by @mat-kie and @rleh.
2023-02-07: Add support for PWM generator on SAMx7x
PR #957 -> 190bc78.
Tested in hardware by @chris-durand.
2023-02-06: Add support for timer/counter on SAMx7x
PR #956 -> 95713ee.
Tested in hardware by @chris-durand.
2023-02-05: Add MS5837 pressure/temperature sensor driver
PR #942 -> 8179e6b.
Tested in hardware by @lukh.
2023-02-04: Add support for SoftwareGpioPort on SAM
Also adds support for inverted pins in GpioSet.
PR #952 -> afdb5ba.
Tested in hardware by @chris-durand.
2023-02-04: Add CANFD large frame support
PR #882 -> e4b1a4a.
Tested in hardware by @rasmuskleist / @twast92.
2023-02-04: Multiple fixes for I²C on STM32
- Fix stm32-extended I2C driver NACK handling
- Start next I2C transaction also when previous failed with NACK
- Do not set invalid I2C_CR1_NOSTRETCH bit in master mode
PR #947 -> ba61a34 and PR #951 -> c347f00.
Tested in hardware by @chris-durand.
2023-02-01: Add ST LSM6DSO imu driver
PR #950 -> 13ea578.
Tested in hardware by @rleh.
2023-01-16: Add PLL disable function on STM32
PR #944 -> 0f0505f.
Tested in hardware by @chris-durand.
2023-01-12: Add support for GpioInverted on SAM
PR #941 -> 4f50d00.
Tested in hardware by @chris-durand.
2023-01-12: Add SPI support for SAMx7x
PR #938 -> c93dd2c.
Tested in hardware by @chris-durand.
2023-01-03: Add external main clock support on SAMx7x
PR #939 -> 0259ad2.
Tested in hardware by @chris-durand.
2022q4 release
This release covers everything from 2022-10-01 and has been tested with avr-gcc
v10.2.0 from Upstream and arm-none-eabi-gcc 10.3-2022.07 from Arm.
Breaking changes:
- None.
Features:
- Basic ADC support for SAMx7x devices.
Integrated Projects:
- printf upgraded to v6.1.0.
- CMSIS-DSP upgraded to v1.14.2.
- TinyUSB upgraded to v0.14.0.
- FreeRTOS upgraded to 202212.
- FatFS upgraded to v0.15.
- LVGL upgraded to v8.3.4.
- NanoPB upgraded to v0.4.7.
- ETL upgraded to v20.35.6.
- STM32L5 headers upgraded to v1.12.0.
- STM32H7 headers upgraded to v1.10.3.
Fixes:
- STM32G4 ADC channel mapping.
- Initialize frame buffer memory in MonochromeGraphicDisplay.
- Only configure BDTR register for timers with complementary PWM.
- Fix SAMx7x b-variant USART defines.
New development boards:
- None.
New device drivers:
- None.
Known bugs:
- C++20 is not fully implemented by GCC10 yet, however modm does not use all
features yet anyways. See #326. - STM32F7: D-Cache not enabled by default. See #485.
lbuild build
andlbuild clean
do not remove all previously generated files
when the configuration changes. See #285.- Generating modm on Windows creates paths with
\
that are not compatible with
Unix. See #310. arm-none-eabi-gdb
TUI and GDBGUI interfaces are not supported on Windows.
See #591.
Many thanks to all our contributors.
A special shoutout to first timers 🎉:
- Christopher Durand (@chris-durand)
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
- Sergey Pluzhnikov (@ser-plu) 🎉
PR #937 -> 2022q4.
Detailed changelog
2022-12-04: Add basic SAMx7x ADC driver
PR #935 -> 7330500.
Tested in hardware by @chris-durand.
2022q3 release
This release covers everything from 2022-07-01 and has been tested with avr-gcc
v10.2.0 from Upstream and arm-none-eabi-gcc 10.3-2022.07 from Arm.
Breaking changes:
Uart
peripheral renamed toUsart
on SAMG5 devices for consistency.GCLK
peripheral has been refactored for all SAM devices.
Features:
- RP2040 external flash size option.
- RP2040 ADC driver.
- Resolution configuration for DS18B20 driver.
- Use GPIO signal to configure STM32 Timers.
- Support for SAMx5x and SAMx7x devices.
Integrated Projects:
- printf upgraded to v6.0.0.
- LVGL upgraded to v8.3.2.
- ETL upgraded to v20.34.0.
- Pico-SDK upgraded to v1.4.0.
- STM32G0 headers upgraded to v1.4.2.
- STM32F7 headers upgraded to v1.2.8.
Fixes:
- SpiMaster compilation with GCC11.
- Using RTT with multiple channels.
- Relocation of lbuild outpath in
modm:build:make
module. - Deadlock RP2040 DMA driver due to counter overflow.
- Fix compilation of moving average for floating-point type.
- SAMD
setInput(InputType)
does not always reset to floating anymore.
New development boards:
- Feather-RP2040 as
modm:board:feather-rp2040
. - ThingPlus-RP2040 as
modm:board:thingplus-rp2040
. - SAMV71 Xplained Ultra as
modm:board:samv71-xplained-ultra
. - SAME54 Xplained Pro as
modm:board:same54-xplained-pro
. - SAMD21 Xplained Pro as
modm:board:samd21-xplained-pro
.
New device drivers:
- ADS7828 ADC as
modm:driver:ads7828
. - MCP9902/3/4 temperature sensor as
modm:driver:mcp990x
. - ST7789 display driver as
modm:driver:st7789
.
Known bugs:
- C++20 is not fully implemented by GCC10 yet, however modm does not use all
features yet anyways. See #326. - STM32F7: D-Cache not enabled by default. See #485.
lbuild build
andlbuild clean
do not remove all previously generated files
when the configuration changes. See #285.- Generating modm on Windows creates paths with
\
that are not compatible with
Unix. See #310. arm-none-eabi-gdb
TUI and GDBGUI interfaces are not supported on Windows.
See #591.
Many thanks to all our contributors.
A special shoutout to first timers 🎉:
- Artiom (@Artiom9) 🎉
- Christopher Durand (@chris-durand)
- Jonas Kazem Andersen (@JKazem)
- Lucas Mösch (@lmoesch)
- Niklas Hauser (@salkinium)
- Nikolay Semenov (@cocasema)
- Raphael Lehmann (@rleh)
- Sascha Schade (@strongly-typed)
- Steven Macías (@StevenMacias)
PR #917 -> 2022q3.
Detailed changelog
2022-09-30: Add SAMx5x/x7x device support
Also adds SAMV71 Xplained Ultra and SAME54 Xplained Pro board support packages
and examples. For consistency with other SAM devices, the SAMG Uart
peripheral
has been renamed to Usart
in a breaking change. The GCLK
peripheral has been
refactored for consistency across and to remove hard-coded design choices.
PR #827 -> 8230fef.
Tested in hardware by @chris-durand with high impact on SAM devices.
2022-08-23: Add ST7789 display driver
PR #902 -> 516b2b3.
Tested in hardware by @cocasema.
2022-08-18: Add ThingPlus-RP2040 BSP
PR #900 -> 874c8d6.
Tested in hardware by @cocasema.
2022-08-18: Add RP2040 ADC driver
PR #899 -> 490e868.
Tested in hardware by @cocasema.
2022-08-17: Add Feather-RP2040 BSP
Also adds an option to set the flash size of the external flash chip.
PR #898 -> cceb801.
Tested in hardware by @cocasema.
2022-08-09: Add MCP9902/3/4 temperature sensor
PR #894 -> 0fd53a8.
Tested in hardware by @chris-durand.
2022-07-23: Add Nanopb with SCons integration
PR #657 -> 6b5b4ce.
Tested in hardware by @lmoesch.
2022-07-17: Add ADS7828 ADC driver
2022q2 release
This release covers everything from 2022-04-01 and has been tested with avr-gcc
v11.2.0 from upstream and arm-none-eabi-gcc 10.3-2021.10 from Arm.
Breaking changes:
- None.
Features:
- Custom OpenOCD binary path.
- IRQ handlers for RP2040.
- Expose transmission complete flag on STM32 UART.
- Half transfer handler for STM32 DMA.
- Timer
SlaveModeTrigger::Internal0
/Internal3
for STM32F4. - UI Button group refactoring.
- MovingAverage filter refactoring.
- Support for std::chrono in STM32 timer API.
Integrated Projects:
- ETL upgraded to v20.29.3.
- CrashCatcher updated to latest version.
Fixes:
- Fix STM32F7 linker script issue causing memory corruption on some devices.
- STM32H7 RCC clock output.
- CAN system clock frequencies for Nucleo-F446RE/Nucleo-F446ZE boards.
- Cortex-M ITM when
buffer.tx
option not set. Rcc::disable()
on STM32 disabling unrelated clocks.- Fix
GpioSampler
difference computation. - Fix missing DMAable capability for DTCM RAM on STM32F7.
New development boards:
- Support for revision B-02 of the DISCO-F469NI development board as
modm:disco-f469ni:b-02
.
New device drivers:
- MAX31855 thermocouple-to-digital converter as
modm:driver:max31855
- ADS101X ADC as
modm:driver:ads101x
- MS5611 pressure sensor as
modm:driver:ms5611
Known bugs:
- Cannot set breakpoints on specific lines in debug profile. See #777.
- C++20 is not fully implemented by GCC10 yet, however modm does not use all
features yet anyways. See #326. - STM32F7: D-Cache not enabled by default. See #485.
lbuild build
andlbuild clean
do not remove all previously generated files
when the configuration changes. See #285.- Generating modm on Windows creates paths with
\
that are not compatible with
Unix. See #310. arm-none-eabi-gdb
TUI and GDBGUI interfaces are not supported on Windows.
See #591.
Many thanks to all our contributors.
A special thank you to our first timers 🎉:
- Christopher Durand (@chris-durand)
- Jonas Kazem Andersen (@JKazem) 🎉
- Niklas Hauser (@salkinium)
- Nikolay Semenov (@cocasema) 🎉
- Raphael Lehmann (@rleh)
- Rasmus Kleist (@rasmuskleist)
- Sarah Vilete (@sarahvilete) 🎉
- Sascha Schade (@strongly-typed)
- Sebastian Birke (@se-bi)
- Sebastian Tibor Bakonyvari (@twast92) 🎉
- Thomas Rush (@tarush53) 🎉
- Thomas Sommer (@TomSaw)
- Vivien Henry (@lukh)
- xgzeng 🎉
PR #875 -> 2022q2.
Detailed changelog
2022-06-31: Add support for std::chrono in STM32 timer API
2022-06-08: MovingAverage filter refactoring
And reset()
function added.
PR #872 -> 7b5827f.
Tested by @TomSaw.
2022-05-31: Fix Cortex-M ITM
ITM was previously not working when buffer.tx option was not set.
PR #866 -> 90774be.
Tested in hardware by @xgzeng.
2022-05-21: UI Button group refactoring
PR #864 -> 55d5911.
Tested by @TomSaw.
2022-05-11: Add support for revision b-02 of DISCO-F469NI development board
PR #862 -> 4885c53.
Tested in hardware by @se-bi, @rleh and @salkinium.
2022-05-08: Fix missing CAN system clock frequencies for Nucleo-F446RE/Nucleo-F446ZE boards
PR #861 -> 87b6405.
Tested in hardware by @strongly-typed.
2022-05-07: Add Timer SlaveModeTrigger::Internal0
/Internal3
for STM32F4
2022-05-04: Add half transfer handler for STM32 DMA
2022-05-03: Add MS5611 pressure sensor driver
PR #851 -> ab9bcee.
Tested in hardware by @rasmuskleist.
2022-05-01: Expose transmission complete flag on STM32 UART
PR #856 -> 0e3d280.
Tested in hardware by @strongly-typed.
2022-05-01: Add ADS101X ADC driver
PR #854 -> 596eafa.
Tested in hardware by @JKazem.
2022-04-30: Fix STM32H7 RCC clock output
PR #853 -> 6e7c12f.
Tested in hardware by @chris-durand.
2022-04-22: Add MAX31855 thermocouple-to-digital converter driver
PR #850 -> 2e34b11.
Tested in hardware by @rasmuskleist / @sarahvilete.
2022-04-18: Implement IRQ handlers for RP2040
PR #848 -> 599e0ba.
Tested in hardware by @cocasema.
2022-04-13: Add support for custom OpenOCD binary path
2022q1 release
This release covers everything from 2022-01-01 and has been tested with avr-gcc
v11.2.0 from upstream and arm-none-eabi-gcc 10.3-2021.10 from Arm.
Breaking changes:
- Removed all functions marked deprecated for >1 year.
Features:
- STM32L5 support.
- Raspberry Pi RP2040 support.
- Microchip SAM timer driver.
- Improved project and Doxygen documentation.
- STM32G4 internal flash driver.
- TinyUSB on STM32G4.
Integrated Projects:
- ETL upgraded to v20.27.1.
- TinyUSB upgraded to v0.13.0.
- LVGL upgraded to v8.2.0.
Fixes:
- Issues when using TinyUSB and FreeRTOS together solved.
- Fix TinyUSB crash when reading device descriptor.
- TinyUSB correctly chooses fullspeed port on STM32 by default.
- Fix SPI bug in handling of CPHA/CPOL on Microchip SAM.
- Read unique ID correctly on SAMG55.
- Fix GPIO peripheral connect method on Microchip SAM.
- Heap allocator defaults to Newlib on devices with one continuous RAM section.
- FreeRTOS now always supports static allocation.
New development boards:
- Support for newer revision (B-03) of the DISCO-F469NI development board
asmodm:disco-f469ni:b-03
. - Nucleo-L552ZE-Q as
modm:board:nucleo-l552ze-q
. - RP-PICO as
modm:board:rp-pico
.
New device drivers:
- ADIS16470 inertial measurement unit driver as
modm:driver:adis16470
.
Known bugs:
- Cannot set breakpoints on specific lines in debug profile. See #777.
- C++20 is not fully implemented by GCC10 yet, however modm does not use all
features yet anyways. See #326. - STM32F7: D-Cache not enabled by default. See #485.
lbuild build
andlbuild clean
do not remove all previously generated files
when the configuration changes. See #285.- Generating modm on Windows creates paths with
\
that are not compatible with
Unix. See #310. arm-none-eabi-gdb
TUI and GDBGUI interfaces are not supported on Windows.
See #591.
Many thanks to all our contributors.
A special thank you to our first timers 🎉:
- Andrey Kunitsyn (@andryblack)
- Christopher Durand (@chris-durand)
- Jeff McBride (@mcbridejc)
- Kaelin Laundry (@WasabiFan)
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
- Rasmus Kleist (@rasmuskleist) 🎉
- Steven Macías (@StevenMacias)
- Thomas Sommer (@TomSaw)
PR #842 -> 2022q1.
Detailed changelog
2022-03-17: Enable flash driver for STM32G4
PR #838 -> f7dff92.
Tested in hardware by @rasmuskleist.
2022-02-28: I²C driver for RP2040
PR #830 -> 21ba120.
Tested in hardware by @andryblack and @rleh.
2022-02-14: Add configuration version for DISCO-F469NI
2022-02-09: Add driver for SAMG timer channels
PR #823 -> f5cdf6a.
Tested in hardware by @mcbridejc.
2022-02-09: Fix GPIO peripheral connect method on Atmel SAM
PR #822 -> c868f59.
Tested in hardware by @mcbridejc.
2022-02-08: Read unique ID correctly for SAMG55
PR #824 -> 845840e.
Tested in hardware by @mcbridejc.
2022-02-08: Fix SPI bug in handling of CPHA/CPOL
PR #821 -> ac46099.
Tested in hardware by @mcbridejc.
2022-01-31: Fix issues when using TinyUSB and FreeRTOS together
PR #816 -> 3f3ff3d.
Tested in hardware by @rleh.
2022-01-24: Add ADIS16470 inertial measurement unit driver
PR #805 -> b153186.
Tested in hardware by @rleh.
2022-01-24: Add Raspberry Pi RP2040 support
Support for the Raspberry Pi microcontroller RP2040 with two ARM Cortex M0+
cores.
This includes support platform drivers for clock, DMA, GPIO, UART, SPI,
USB (TinyUSB) and a board support package for the Raspberry Pi Pico
development board.
PR #806 -> 1c9c0b6.
Tested in hardware by @andryblack, @rleh and @salkinium.
2022-01-19: Add STM32L5 support
Support for all devices of the new STM32L5 family with Cortex-M33 core.
ADC, DMA, FreeRTOS and RCC platform drivers are adapted and a BSP for the
Nucleo-L552ZE-Q is also included.
PR #800 -> 187ddd8.
Tested in hardware by @chris-durand.
2021q4 release
This release covers everything from 2021-10-01 and has been tested with avr-gcc
v10.2.0 from Upstream and arm-none-eabi-gcc 10.3-2021.10 from Arm.
Breaking changes:
modm:driver:encoder_input.bitbang
has changed its API.modm::Saturated
class has been completely refactored.
Features:
- STM32F1 internal flash driver.
- Use FreeRTOS with static memory by default.
- SAMG UART driver.
- SAMG ADC driver.
- STM32F4 Ethernet support via FreeRTOS+TCP.
- STM32F4 and STM32F7 DMA support.
- VSCode IDE support via
modm:ide:vscode
. - Experimental support for fibers.
- Vector table remap into SRAM on Cortex-M0+ and STM32F0.
- STM32H7 DMA driver.
Integrated Projects:
- ETL added at v20.22.0.
- TinyUSB upgraded to v0.12.0.
- FreeRTOS upgraded to 202112.00.
- LVGL upgraded to v8.1.0.
Fixes:
- Remove heap dependency for static virtual destructors.
- Correct STM32G4/L4+ voltage scaling and boost mode.
- Move main stack to DMA-able memory for STM32F4.
- Linkerscript alignment issues for copy sections.
- Zero SRAM after uploading to prevent false positive RTT identifier.
- Off-by-One error in EXTI IRQ handler.
- DMA data fixes for STM32G0, L4, H7 and WL.
- Do not reset STM32 Advanced Timer RCR during configuration.
New development boards:
- NUCLEO-L053R8 as
modm:board:nucleo-l053r8
.
New device drivers:
- TMP12{1,3,5} temperature sensor as
modm:driver:tmp12x
. - Encoder Input via STM32 Timer as
modm:driver:encoder_input
. - MCP7941X RTC driver with EUI-48/64 and EEPROM as
modm:driver:mcp7941x
. - ADS816X ADC driver as
modm:driver:ads816x
.
Known bugs:
- Cannot set breakpoints on specific lines in debug profile. See #777.
- C++20 is not fully implemented by GCC10 yet, however modm does not use all
features yet anyways. See #326. - STM32F7: D-Cache not enabled by default. See #485.
lbuild build
andlbuild clean
do not remove all previously generated files
when the configuration changes. See #285.- Generating modm on Windows creates paths with
\
that are not compatible with
Unix. See #310. arm-none-eabi-gdb
TUI and GDBGUI interfaces are not supported on Windows.
See #591.
Many thanks to all our contributors.
A special thank you to our first timers 🎉:
- Andrey Kunitsyn (@andryblack) 🎉
- Christopher Durand (@chris-durand)
- Jacob Schultz Andersen (@Jasa)
- Jeff McBride (@mcbridejc)
- Kaelin Laundry (@WasabiFan)
- Niklas Hauser (@salkinium)
- Odin Holmes (@odinthenerd) 🎉
- Pavel Pletenev (@ASMfreaK)
- Raphael Lehmann (@rleh)
- Sebastian Birke (@se-bi)
- Steven Macías (@StevenMacias) 🎉
- Thomas Sommer (@TomSaw)
PR #797 -> 2021q4.
Detailed changelog
2021-12-31: Add ADS816X ADC driver
PR #796 -> 3ba71c9.
Tested in hardware by @rleh.
2021-12-31: Add STM32H7 DMA driver
PR #772 -> e3c0321.
Tested in hardware by @chris-durand.
2021-12-19: Add MCP7941X RTC driver
PR #748 -> 5a9ad25.
Tested in hardware by @rleh.
2021-12-14: Refactor modm::Saturated
PR #780 -> c0a8c51.
Tested in hardware by @TomSaw with high impact on API.
2021-11-18: Add vector table remap on Cortex-M0+ and STM32F0
PR #773 -> fdbb45b.
Tested in hardware by @chris-durand.
2021-11-15: Add encoder input driver via STM32 timers
PR #775 -> d46c09d.
Tested in hardware by @TomSaw.
2021-10-29: Add basic support for fibers
You must enable the hidden repository option modm:__fibers
to use them.
PR #743 -> 3936a28.
Tested in hardware by @salkinium.
2021-10-29: Add VSCode IDE integration
PR #764 -> 6b4d656.
Tested by @rleh and @salkinium.
2021-10-28: Add DMA driver for STM32F4 and STM32F7
PR #629 -> 5dcdf1d.
Tested in hardware by @rleh.
2021-10-25: Fix linkerscript alignment issues
This fixes copying data sections with the wrong alignment.
PR #763 -> b78acd5.
Tested in hardware by @salkinium with high impact on .fastcode
section.
2021-10-23: Add SAMG ADC driver
PR #753 -> 82bc4a9.
Tested in hardware by @mcbridejc.
2021-10-22: Add SAMG UART driver
PR #761 -> 6e9f000.
Tested in hardware by @mcbridejc.
2021-10-21: Add NUCLEO-L053R8 board and example
PR #756 -> 0d6a937.
Tested in hardware by @salkinium.
2021-10-21: Add TMP12x temperature sensor driver
PR #757 -> 624ce10.
Tested in hardware by @chris-durand.
2021-10-19: FreeRTOS with static memory
Adds static allocation support when used without modm:platform:heap
module.
PR #750 -> 9e50a16.
Tested in hardware by @andryblack and @salkinium.
2021-10-14: Weak operator delete
Static virtual C++ destructors can emit operator delete, this marks the
operators as weak which prevents pulling in Newlib.
PR #747 -> 387a625.
Tested in hardware by @Delphi and @salkinium.
2021-10-12: Add ETL module
PR #667 -> 2ef7a29.
Tested in hardware by @rleh and @salkinium.
2021-10-10: Add STM32F1 flash driver
2021q3 release
This release covers everything from 2021-07-01 and has been tested with avr-gcc
v10.2.0 from Upstream and arm-none-eabi-gcc 10.3-2021.07 from Arm.
Breaking changes:
- STM32 EXTI configuration moved into separate
modm:platform:exti
module. - STM32F3 ADC flags API made consistent with rest of ADC implementations.
- AVR SPI mode 1/2 was swapped.
- Interface SPI mode 3/4 was swapped.
- Configuration of CMSIS-DSP module is now done via
<arm_math_local.h>
file.
Features:
- STM32H7 support.
- SAMG55 support with USB and SPI drivers.
- SAMV70 support.
- STM32F1 ADC calibration.
- Adding silicon revision to
modm:target
option with/revN
suffix. modm_initialize_platform()
hook called right after startup.- Strict IRQ name validation: Never wonder again why your IRQ isn't called!
- Much faster lbuild generation of
modm:platform:gpio
due to fewer files. - New
modm:platform:exti
module for STM32 with optional IRQ handlers.
Integrated Projects:
- LVGL upgraded to v8.0.2.
- TinyUSB upgraded to v0.11.0.
- FreeRTOS upgraded to 202107.
- CMSIS-DSP upgraded to v5.8.0.
Fixes:
- Longer modm::delay_ms implementation.
- Lower C++ binary size due to not using
atexit
function. - SPI mode 3/4 was swapped in interface, mode 1/2 swapped on AVR.
- Enable FPU in assembly before startup script.
- Fix inconsistent flags API for STM32F3 ADC.
- Refactored GpioConnector to remove
template< Peripheral _ >
signal
boilerplate.
New development boards:
- NUCLEO-H743ZI as
modm:board:nucleo-h743zi
. - NUCLEO-H723ZG as
modm:board:nucleo-h723zg
. - Smart Response XE as
modm:board:srxe
. - SAM G55 Xplained Pro as
modm:board:samg55-xplained-pro
. - DevEBox STM32H750VB as
modm:board:devebox-stm32h750vb
.
New device drivers:
- ST7586S display as
modm:driver:st7586s
.
Known bugs:
- C++20 is not fully implemented by GCC10 yet, however modm does not use all
features yet anyways. See #326. - STM32F7: D-Cache not enabled by default. See #485.
lbuild build
andlbuild clean
do not remove all previously generated files
when the configuration changes. See #285.- Generating modm on Windows creates paths with
\
that are not compatible with
Unix. See #310. arm-none-eabi-gdb
TUI and GDBGUI interfaces are not supported on Windows.
See #591.
Many thanks to all our contributors.
A special shoutout to first timers 🎉:
- Christopher Durand (@chris-durand)
- Daniel Krebs (@daniel-k)
- Henrik Hose (@hshose) 🎉
- Jakob Riepler (@XDjackieXD) 🎉
- Jeff McBride (@mcbridejc)
- Niklas Hauser (@salkinium)
- Thomas Sommer (@TomSaw)
- Tomasz Wasilczyk (@twasilczyk) 🎉
- Valeriy Osipov (@SgtPepperFTW) 🎉
PR #742 -> 2021q3.
Detailed changelog
2021-09-30: Upgrade CMSIS-DSP to v5.8.0
The :cmsis:dsp
module options were removed in favor of letting the user
define them freely using a <arm_math_local.h>
config file.
PR #742 -> 12bb41b.
Tested in hardware by @salkinium with medium impact on config.
2021-09-29: Refactor GPIO implementations
New implementation generates fewer files, which speeds up lbuild build
significantly for devices with many pins. EXTI implementation was moved into
its own module with an optional IRQ handler abstraction. Refactored signals
implementation to remove dragging around template< Peripheral _ >
boilerplate.
PR #686 -> 30e24e6.
Tested in hardware by @salkinium with high impact on EXTI code.
2021-09-22: Add SAMV70 support
On custom hardware.
PR #681 -> 9036666.
Tested in hardware by @twasilczyk.
2021-09-17: Strict IRQ name validation
Validates MODM_ISR(name)
at compile time to you never declare the wrong
IRQ that won't get called.
PR #685 -> 6057873.
Tested in hardware by @salkinium with low impact on MODM_ISR(name)
.
2021-09-16: Add DevEBox STM32H750VB board and example
PR #678 -> b4eddeb.
Tested in hardware by @hshose.
2021-09-10: Add SAMG55 SPI driver
PR #680 -> f4d5d6c.
Tested in hardware by @mcbridejc.
2021-09-09: Add SAMG55 USB driver via TinyUSB
PR #679 -> 93bba13.
Tested in hardware by @mcbridejc.
2021-09-09: Add SAMG55 support
Also adds SAM G55 Xplained Pro board and example.
PR #676 -> c148bf8.
Tested in hardware by @mcbridejc.
2021-09-07: Add ST7586S display driver
PR #673 -> 2c22fae.
Tested in hardware by @twasilczyk.
2021-08-23: Smart Response XE board and example
Adds support for the ATmega128RFA1 and the Smart Response XE board.
PR #669 -> a173bde.
Tested in hardware by @twasilczyk.
2021-07-15: Add STM32H7 support
Also adds NUCLEO-H743ZI and NUCLEO-H723ZG boards and examples.
PR #652 -> 80ed738.
Tested in hardware @chris-durand and @salkinium.
2021q2 release
This release covers everything from 2021-04-01 and has been tested with avr-gcc
v10.1.0 from Upstream and arm-none-eabi-gcc 2020q4 from Arm.
Breaking changes:
- TinyUSB updated from v0.8.0 to v0.10.1 with breaking changes to their APIs.
- FreeRTOS configuration must be done by the user via the headers
<FreeRTOSConfigLocal.h>
and<FreeRTOSIPConfigLocal.h>
. modm::GraphicDisplay
API changed due to change in color management.- New color types and API.
- New CMake build system has different API without top-level Makefile.
Features:
- STM32L0 support.
- Real-Time Transport (RTT) support via OpenOCD v0.11.
- FDCAN driver for STM32G4 (only for standard messages).
- DMA support for all STM32 devices, except F2/F4/F7.
- Better graphical display and color support.
- New CMake build system for better IDE integration.
- Top-level build scripts relicensed as BSD to allow easier adaptation.
- LPUART driver for STM32.
- DAC driver with DMA support for STM32.
- Non-allocating util classes
modm::inplace_any
andmodm::inplace_function
.
Integrated Projects:
- LVGL added at v8.0.1.
- Petit FatFs added at v0.03a.
- FatFs upgraded to v0.14b.
- TinyUSB upgraded to v0.10.1.
- FreeRTOS upgraded to 202012 LTS.
Fixes:
- OpenOCD ITM configuration for logging.
- Much more accurate nanosecond delay.
- realloc with NULL pointer calls malloc when using TLSF allocator.
New development boards:
- NUCLEO-L031K6 as
modm:board:nucleo-l031k6
. - NUCLEO-F072RB as
modm:board:nucleo-f072rb
. - NUCLEO-L496ZG-P as
modm:board:nucleo-l496zg-p
. - NUCLEO-F091RC as
modm:board:nucleo-f091rc
.
New device drivers:
- SH1106 display as
modm:driver:sh1106
. - STTS22H thermometer as
modm:driver:stts22h
.
Known bugs:
- C++20 is not fully implemented by GCC10 yet, however modm does not use all
features yet anyways. See #326. - STM32F7: D-Cache not enabled by default. See #485.
lbuild build
andlbuild clean
do not remove all previously generated files
when the configuration changes. See #285.- Generating modm on Windows creates paths with
\
that are not compatible with
Unix. See #310. arm-none-eabi-gdb
TUI and GDBGUI interfaces are not supported on Windows.
See #591.
Many thanks to all our contributors:
- Christopher Durand (@chris-durand)
- Jacob Schultz Andersen (@Jasa)
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
- Sascha Schade (@strongly-typed)
- Thomas Sommer (@TomSaw)
PR #644 -> 2021q2.
Detailed changelog
2021-06-16: More accurate modm::delay implementation
PR #642 -> cc15b1a.
Tested in hardware by @salkinium.
2021-06-07: Extend DMA driver for even more STM32 devices
PR #632 -> 8896b5b.
Tested in hardware by @chris-durand.
2021-06-06: Add DAC driver with DMA support
PR #632 -> 9cbea26.
Tested in hardware by @chris-durand.
2021-05-20: Refactor color implementation
PR #616 -> a105072 with high impact on color types.
Tested by @TomSaw.
2021-05-10: Add LPUART driver for STM32
PR #614 -> 897579e.
Tested in hardware by @rleh.
2021-05-08: Add STTS22H temperature driver
PR #544 -> 9e7ec34.
Tested in hardware by @chris-durand.
2021-05-08: New CMake build system
PR #568 -> 98b1337 with high impact on CMake build systems.
Tested by @Jasa and @salkinium.
2021-05-07: Add SH1106 display driver
PR #627 -> 7d7490d.
Tested in hardware by @TomSaw.
2021-04-22: Specialize modm::GraphicDisplay for monochrome and color
To enable optimizations for different color formats, the graphic display base
classes are refactored into monochrome and color classes.
PR #604 -> 295dbc3 with medium impact on display drivers and graphics code.
Tested in hardware by @TomSaw.
2021-04-14: Adapt DMA driver for more STM32 devices
PR #608 -> 8ca2f35.
Tested in hardware by @rleh.
2021-04-13: Add FDCAN driver for STM32G4
PR #607 -> 2d2199b.
Tested in hardware by @chris-durand.
2021-04-12: Add RTT support via OpenOCD
PR #610 -> 1375ff1.
Tested in hardware by @salkinium.
2021-04-11: Upgrade FreeRTOS to 202012 LTS
The default configuration modm provides changed, and now only provides the bare
minimum config and the remainder needs to be user-provided via the headers
<FreeRTOSConfigLocal.h>
and <FreeRTOSIPConfigLocal.h>
PR #566 -> 1375ff1 with high impact on configuration management.
Tested in hardware by @salkinium.
2021-04-06: Integrate Petit FatFs v0.03a and upgrade FatFs to v0.14a
PR #566 -> 1f5d06e.
Tested in hardware by @salkinium.
2021-04-06: Upgrade TinyUSB to v0.9.0
TinyUSB is breaking their own API quite often, so existing applications must be
adapted. Any modm wrapper APIs are unaffected. See module docs for additional
customization via the <tusb_config_local.h>
header.
PR #566 -> 1f5d06e with high impact on TinyUSB API.
Tested in hardware by @salkinium.
2021-04-06: Integrate LVGL v7.11 for Cortex-M
PR #603 -> e0d1327.
Tested in hardware by @rleh and @salkinium.
2021-04-02: Add STM32L0 support
Also adds NUCLEO-L031K6 board and example.
PR #600 -> 0cf1c65.
Tested in hardware @chris-durand.