modm: a C++23 library generator for AVR and ARM Cortex-M devices
This release covers everything from 2024-01-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:
modm:tinyusb:config:device.dfu
option was renamed to
device.dfu_rt
to align with the TinyUSB naming.modm:tinyusb:speed
option was renamed to modm:tinyusb:max-speed
since it now has a different
meaning.hosted-rpi
Raspberry Pi target in favor of plain
hosted-linux
. Its GPIO implementation based on wiringPi is removed.Features:
Iwdg::initialize()
.Integrated Projects:
Fixes:
Rcc::enable()
for STM32H7 comparator.Iwdg
driver to modm::platform::Iwdg
namespace.New development boards:
modm:disco-f401vc
.modm:nucleo-g070rb
.modm:disco-f411ve
.New device drivers:
modm:driver:as5047
.Known bugs:
arm-none-eabi-gdb
TUI and GDBGUI interfaces are not supported on Windows.
See #591.\
that are not compatible with
Unix. See #310.lbuild build
and lbuild clean
do not remove all previously generated files
when the configuration changes. See #285.Many thanks to all our contributors. A special shoutout to first timers ๐:
PR #1153 -> 2024q1.
PR #1143 -> 734de07 and PR #1148 -> e1d8a17.
PR #1140 -> 1a89fbe.
Tested in hardware by @Javask.
PR #1134 -> a371df6.
Tested in hardware by @victorandrehc.
PR #1138 -> dbfd93b.
Tested in hardware by @hshose.
PR #1135 -> 009bb06.
Tested in hardware by @tomsaw.
Iwdg::initialize()
PR #1127 -> 23036e3.
Tested in hardware by @salkinium.
PR #1126 -> fe4cbc5.
Tested in hardware by @chris-durand.
PR #1125 -> 6de70ba.
Tested in hardware by @chris-durand.
PR #1115 -> 2e40ab4.
Tested in hardware by @chris-durand.
New targets with -arm64
suffix, -x86_64
is implicit for backwards
compatibility:
hosted-linux-arm64
hosted-darwin-arm64
Removed hosted-rpi
target, as wiringPi is deprecated and thus the target lost
its only peripheral.
PR #1113 -> 623a13b.
Tested in hardware by @salkinium (Apple Silicon M2) and @rleh (Raspberry Pi).
This previously lead to cryptic linking failures due to a missing heap
implementation. Now any use of printf
without including the modm:printf
module will lead to a linking failure with a proper error description.
PR #1120 -> 7318c28.
Tested by @salkinium.
PR #1116 -> 1f210c1.
Tested in hardware by @salkinium with high impact on TinyUSB configuration.
PR #1117 -> 2381c61.
Tested in hardware by @cajt.
PR #1114 -> 8bcbe25.
Tested in hardware by @chris-durand.
This release covers everything from 2023-10-01 and has been tested with avr-gcc v12.2.0 from Upstream and arm-none-eabi-gcc v12.2.1 from xpack.
Features:
Integrated Projects:
Fixes:
New device drivers:
modm:driver:bmi088
.Known bugs:
lbuild build
and lbuild clean
do not remove all previously generated files
when the configuration changes. See #285.\
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 ๐:
PR #1112 -> 2023q4.
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:
Integrated Projects:
Fixes:
.data
section in DMA-able memory on STM32H7.New device drivers:
modm:driver:ixm42xxx
.modm:driver:block.device:spi.stack.flash
.modm:driver:sx128x
.modm:driver:qmc5883l
.Known bugs:
lbuild build
and lbuild clean
do not remove all previously generated files
when the configuration changes. See #285.\
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 ๐:
PR #1088 -> 2023q3.
PR #1063 -> 7f30961.
Tested in hardware by @mbait.
PR #1066 -> c9e5227.
Tested in hardware by @chris-durand.
PR #1050 -> 517bd84.
Tested in hardware by @rasmuskleist.
PR #1054 -> ba23833.
Tested in hardware by @rasmuskleist.
Also adds support for injected conversions.
PR #1049 -> 4d69227.
Tested in hardware by @chris-durand.
PR #1053 -> 5d03d53.
Tested in hardware by @chris-durand.
PR #1051 -> a05cc62.
Tested in hardware by @klsc-zeat.
PR #1040 -> 8012d82.
Tested in hardware by @rasmuskleist.
.data
section into D1_SRAM on STM32H7PR #1048 -> 027811f.
Tested in hardware by @chris-durand.
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:
-fsingle-precision-constant
default compile flag has been removed.Timer::setPeriod(uint32_t)
in favor ofstd::chrono
units.Features:
Integrated Projects:
Fixes:
Timer::setPeriod
on STM32.New development boards:
modm:feather-m4
.New device drivers:
modm:driver:max31865
.modm:driver:cycle_counter
.modm:driver:mcp3008
.Known bugs:
lbuild build
and lbuild clean
do not remove all previously generated files
when the configuration changes. See #285.\
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 ๐:
PR #1044 -> 2023q2.
PR #1038 -> b05df3e.
Tested in hardware by @tarush53.
-fsingle-precision-constant
compile flagPR #1037 -> 2384756 with medium-impact in floating point variables.
Tested in hardware by @salkinium.
PR #1032 -> 81b86be.
Tested in hardware by @tarush53.
PR #1036 -> 768d749.
Tested in hardware by @chris-durand.
PR #1028 -> eda224e.
Tested in hardware by @chris-durand.
PR #1018 -> 45ae68a.
Tested in hardware by @ser-plu.
PR #1001 -> 45ae68a.
Tested in hardware by @salkinium.
PR #1017 -> 9d33843.
Tested in hardware by @ser-plu, @chris-durand, and @rleh.
PR #955 -> bfafcd3.
Tested in hardware by @rleh.
PR #1009 -> d772940.
Tested in hardware by Daniel Waldhรคusl.
PR #1010 -> 389a9c3.
Tested in hardware by @salkinium.
PR #993 -> 65bbccf.
Tested in hardware by @hshose.
PR #998 -> c7c4c57.
Tested in hardware by @chris-durand.
PR #987 -> 94580b4.
Tested in hardware by @chris-durand.
PR #994 -> 972b74b.
Tested in hardware by @chris-durand.
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:
Features:
Integrated Projects:
Fixes:
New development boards:
modm:nucleo-u575zi-q
.modm:board:same70-xplained
.New device drivers:
modm:driver:lsm6dso
.modm:driver:ms5837
.modm:driver:at24mac402
.Known bugs:
lbuild build
and lbuild clean
do not remove all previously generated files
when the configuration changes. See #285.\
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 ๐:
PR #995 -> 2023q1.
Fixes __cxa_guard_acquire
to construct a static member variable only once!
PR #995 -> 2023q1.
Tested in hardware by @salkinium.
Including an unittest and examples.
PR #954 -> d1938eb.
Tested in hardware by @chris-durand.
This also adds generic support for I2C eeproms with 8 bit addressing.
PR #954 -> d1938eb.
Tested in hardware by @chris-durand.
PR #982 -> 04ed0a5.
Tested in hardware by @victorandrehc.
PR #986 -> 589aea7.
Tested in hardware by @chris-durand.
PR #981 -> 740fd51.
Tested in hardware by @victorandrehc.
PR #969 -> a38feca.
Tested in hardware by @lgili.
PR #970 -> 2273bae.
Tested in hardware by @se-bi.
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.
PR #976 -> 08cd479.
Tested in hardware by @victorandrehc.
PR #965 -> 241b0d1.
Tested in hardware by @salkinium.
PR #967 -> 416ced6.
Tested in hardware by @strongly-typed.
PR #964 -> d982a85.
Tested in hardware by @strongly-typed.
PR #961 -> eb2748e.
Tested in hardware by @salkinium.
PR #940 -> 923f9c1.
Tested in hardware by @salkinium.
PR #960 -> 3cee015.
Tested in hardware by @mat-kie and @rleh.
PR #957 -> 190bc78.
Tested in hardware by @chris-durand.
PR #956 -> 95713ee.
Tested in hardware by @chris-durand.
PR #942 -> 8179e6b.
Tested in hardware by @lukh.
Also adds support for inverted pins in GpioSet.
PR #952 -> afdb5ba.
Tested in hardware by @chris-durand.
PR #882 -> e4b1a4a.
Tested in hardware by @rasmuskleist / @twast92.
PR #947 -> ba61a34 and PR #951 -> c347f00.
Tested in hardware by @chris-durand.
PR #950 -> 13ea578.
Tested in hardware by @rleh.
PR #944 -> 0f0505f.
Tested in hardware by @chris-durand.
PR #941 -> 4f50d00.
Tested in hardware by @chris-durand.
PR #938 -> c93dd2c.
Tested in hardware by @chris-durand.
PR #939 -> 0259ad2.
Tested in hardware by @chris-durand.
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:
Features:
Integrated Projects:
Fixes:
New development boards:
New device drivers:
Known bugs:
lbuild build
and lbuild clean
do not remove all previously generated files
when the configuration changes. See #285.\
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 ๐:
PR #937 -> 2022q4.
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 to Usart
on SAMG5 devices for consistency.GCLK
peripheral has been refactored for all SAM devices.Features:
Integrated Projects:
Fixes:
modm:build:make
module.setInput(InputType)
does not always reset to floating anymore.New development boards:
modm:board:feather-rp2040
.modm:board:thingplus-rp2040
.modm:board:samv71-xplained-ultra
.modm:board:same54-xplained-pro
.modm:board:samd21-xplained-pro
.New device drivers:
modm:driver:ads7828
.modm:driver:mcp990x
.modm:driver:st7789
.Known bugs:
lbuild build
and lbuild clean
do not remove all previously generated files
when the configuration changes. See #285.\
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 ๐:
PR #917 -> 2022q3.
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.
PR #902 -> 516b2b3.
Tested in hardware by @cocasema.
PR #900 -> 874c8d6.
Tested in hardware by @cocasema.
PR #899 -> 490e868.
Tested in hardware by @cocasema.
Also adds an option to set the flash size of the external flash chip.
PR #898 -> cceb801.
Tested in hardware by @cocasema.
PR #894 -> 0fd53a8.
Tested in hardware by @chris-durand.
PR #657 -> 6b5b4ce.
Tested in hardware by @lmoesch.
PR #887 -> 0cd2bc9.
Tested in hardware by @JKazem.
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:
Features:
SlaveModeTrigger::Internal0
/Internal3
for STM32F4.Integrated Projects:
Fixes:
buffer.tx
option not set.Rcc::disable()
on STM32 disabling unrelated clocks.GpioSampler
difference computation.New development boards:
modm:disco-f469ni:b-02
.New device drivers:
modm:driver:max31855
modm:driver:ads101x
modm:driver:ms5611
Known bugs:
lbuild build
and lbuild clean
do not remove all previously generated files
when the configuration changes. See #285.\
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 ๐:
PR #875 -> 2022q2.
PR #873 -> c949daf.
And reset()
function added.
PR #872 -> 7b5827f.
Tested by @TomSaw.
ITM was previously not working when buffer.tx option was not set.
PR #866 -> 90774be.
Tested in hardware by @xgzeng.
PR #864 -> 55d5911.
Tested by @TomSaw.
PR #862 -> 4885c53.
Tested in hardware by @se-bi, @rleh and @salkinium.
PR #861 -> 87b6405.
Tested in hardware by @strongly-typed.
SlaveModeTrigger::Internal0
/Internal3
for STM32F4PR #859 -> c7bd876.
PR #858 -> dab6c79.
PR #851 -> ab9bcee.
Tested in hardware by @rasmuskleist.
PR #856 -> 0e3d280.
Tested in hardware by @strongly-typed.
PR #854 -> 596eafa.
Tested in hardware by @JKazem.
PR #853 -> 6e7c12f.
Tested in hardware by @chris-durand.
PR #850 -> 2e34b11.
Tested in hardware by @rasmuskleist / @sarahvilete.
PR #848 -> 599e0ba.
Tested in hardware by @cocasema.
PR #846 -> 98a2483.
Tested in hardware by @cocasema.
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:
Features:
Integrated Projects:
Fixes:
New development boards:
modm:disco-f469ni:b-03
.modm:board:nucleo-l552ze-q
.modm:board:rp-pico
.New device drivers:
modm:driver:adis16470
.Known bugs:
lbuild build
and lbuild clean
do not remove all previously generated files
when the configuration changes. See #285.\
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 ๐:
PR #842 -> 2022q1.
PR #838 -> f7dff92.
Tested in hardware by @rasmuskleist.
PR #830 -> 21ba120.
Tested in hardware by @andryblack and @rleh.
PR #819 -> b18385c.
PR #823 -> f5cdf6a.
Tested in hardware by @mcbridejc.
PR #822 -> c868f59.
Tested in hardware by @mcbridejc.
PR #824 -> 845840e.
Tested in hardware by @mcbridejc.
PR #821 -> ac46099.
Tested in hardware by @mcbridejc.
PR #816 -> 3f3ff3d.
Tested in hardware by @rleh.
PR #805 -> b153186.
Tested in hardware by @rleh.
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.
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.
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:
modm:ide:vscode
.Integrated Projects:
Fixes:
New development boards:
modm:board:nucleo-l053r8
.New device drivers:
modm:driver:tmp12x
.modm:driver:encoder_input
.modm:driver:mcp7941x
.modm:driver:ads816x
.Known bugs:
lbuild build
and lbuild clean
do not remove all previously generated files
when the configuration changes. See #285.\
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 ๐:
PR #797 -> 2021q4.
PR #796 -> 3ba71c9.
Tested in hardware by @rleh.
PR #772 -> e3c0321.
Tested in hardware by @chris-durand.
PR #748 -> 5a9ad25.
Tested in hardware by @rleh.
PR #780 -> c0a8c51.
Tested in hardware by @TomSaw with high impact on API.
PR #773 -> fdbb45b.
Tested in hardware by @chris-durand.
PR #775 -> d46c09d.
Tested in hardware by @TomSaw.
You must enable the hidden repository option modm:__fibers
to use them.
PR #743 -> 3936a28.
Tested in hardware by @salkinium.
PR #764 -> 6b4d656.
Tested by @rleh and @salkinium.
PR #629 -> 5dcdf1d.
Tested in hardware by @rleh.
This fixes copying data sections with the wrong alignment.
PR #763 -> b78acd5.
Tested in hardware by @salkinium with high impact on .fastcode
section.
PR #753 -> 82bc4a9.
Tested in hardware by @mcbridejc.
PR #761 -> 6e9f000.
Tested in hardware by @mcbridejc.
PR #756 -> 0d6a937.
Tested in hardware by @salkinium.
PR #757 -> 624ce10.
Tested in hardware by @chris-durand.
Adds static allocation support when used without modm:platform:heap
module.
PR #750 -> 9e50a16.
Tested in hardware by @andryblack and @salkinium.
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.
PR #667 -> 2ef7a29.
Tested in hardware by @rleh and @salkinium.
PR #745 -> f4c7492.
Tested in hardware by @delphi.