modm: a C++23 library generator for AVR and ARM Cortex-M devices
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:
modm:platform:exti
module.<arm_math_local.h>
file.Features:
modm:target
option with /revN
suffix.modm_initialize_platform()
hook called right after startup.modm:platform:gpio
due to fewer files.modm:platform:exti
module for STM32 with optional IRQ handlers.Integrated Projects:
Fixes:
atexit
function.template< Peripheral _ >
signal
boilerplate.New development boards:
modm:board:nucleo-h743zi
.modm:board:nucleo-h723zg
.modm:board:srxe
.modm:board:samg55-xplained-pro
.modm:board:devebox-stm32h750vb
.New device drivers:
modm:driver:st7586s
.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 #742 -> 2021q3.
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.
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.
On custom hardware.
PR #681 -> 9036666.
Tested in hardware by @twasilczyk.
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)
.
PR #678 -> b4eddeb.
Tested in hardware by @hshose.
PR #680 -> f4d5d6c.
Tested in hardware by @mcbridejc.
PR #679 -> 93bba13.
Tested in hardware by @mcbridejc.
Also adds SAM G55 Xplained Pro board and example.
PR #676 -> c148bf8.
Tested in hardware by @mcbridejc.
PR #673 -> 2c22fae.
Tested in hardware by @twasilczyk.
Adds support for the ATmega128RFA1 and the Smart Response XE board.
PR #669 -> a173bde.
Tested in hardware by @twasilczyk.
Also adds NUCLEO-H743ZI and NUCLEO-H723ZG boards and examples.
PR #652 -> 80ed738.
Tested in hardware @chris-durand and @salkinium.
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:
<FreeRTOSConfigLocal.h>
and <FreeRTOSIPConfigLocal.h>
.modm::GraphicDisplay
API changed due to change in color management.Features:
modm::inplace_any
and modm::inplace_function
.Integrated Projects:
Fixes:
New development boards:
modm:board:nucleo-l031k6
.modm:board:nucleo-f072rb
.modm:board:nucleo-l496zg-p
.modm:board:nucleo-f091rc
.New device drivers:
modm:driver:sh1106
.modm:driver:stts22h
.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:
PR #644 -> 2021q2.
PR #642 -> cc15b1a.
Tested in hardware by @salkinium.
PR #632 -> 8896b5b.
Tested in hardware by @chris-durand.
PR #632 -> 9cbea26.
Tested in hardware by @chris-durand.
PR #616 -> a105072 with high impact on color types.
Tested by @TomSaw.
PR #614 -> 897579e.
Tested in hardware by @rleh.
PR #544 -> 9e7ec34.
Tested in hardware by @chris-durand.
PR #568 -> 98b1337 with high impact on CMake build systems.
Tested by @jasa and @salkinium.
PR #627 -> 7d7490d.
Tested in hardware by @TomSaw.
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.
PR #608 -> 8ca2f35.
Tested in hardware by @rleh.
PR #607 -> 2d2199b.
Tested in hardware by @chris-durand.
PR #610 -> 1375ff1.
Tested in hardware by @salkinium.
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.
PR #566 -> 1f5d06e.
Tested in hardware by @salkinium.
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.
PR #603 -> e0d1327.
Tested in hardware by @rleh and @salkinium.
Also adds NUCLEO-L031K6 board and example.
PR #600 -> 0cf1c65.
Tested in hardware @chris-durand.
This release covers everything from 2021-01-01 and has been tested with avr-gcc v10.1.0 from Upstream and arm-none-eabi-gcc 2020q4 from Arm.
Breaking changes:
Uart::initialize()
arguments and behaviour changed on STM32.Features:
Fixes:
New development boards:
modm:board:nucleo-f439zi
.modm:board:nucleo-f446ze
.modm:board:nucleo-f767zi
.modm:board:nucleo-l452re
.New device drivers:
modm:driver:mmc5603
.modm:driver:lan8720a
.modm:driver:stusb4500
.modm:driver:encoder_input.bitbang
.modm:driver:touch2046
.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 #597 -> 2021q1.
Also adds NUCLEO-L452RE board and example.
PR #600 -> b1e5588.
Tested by @rleh.
PR #557 -> df47974.
Tested by @salkinium.
PR #580 -> df47974.
Tested in hardware by @TomSaw.
Breaking changes: Entire API was rewritten.
PR #578 -> 850b554 with high impact on TCS34xx driver.
Tested in hardware by @TomSaw.
PR #574 -> 1a11b08.
Tested in hardware by @rleh.
PR #571 -> 165adf0.
Tested in hardware by @rleh.
Adds relative paths in ELF file.
PR #558 -> 1fc3805.
Tested by @salkinium.
Makes UART buffers individually optional by setting their size to zero. Breaking changes:
Uart::initialize(IrqPriority, Parity)
-> Uart::initialize(Parity, WordLength)
.UartHal::setLastBitClockPulse(LastBitClockPulse)
removed.UartHal::setSpiClock(SpiClock)
-> UartHal::setSpiClock(SpiClock, LastBitClockPulse)
.UartHal::{en,dis}ableOperation()
before modifying UartHal.PR #564 -> 62b63f5 with high impact on STM32 targets.
Tested in hardware by @salkinium.
Also adds NUCLEO-F767ZI board.
PR #466 -> d8be0a2.
Tested in hardware by @mikewolfram.
PR #556 -> fb2ff58.
Tested in hardware by @salkinium.
PR #526 -> 3ecad35 with low impact on STM32F0 targets.
Tested in hardware by @chris-durand.
PR #533 -> 02b1571.
Tested in hardware by @chris-durand.
PR #521 -> 8c322a2 with low impact on all targets.
Tested in hardware by all.
PR #535 -> 038657c with low impact on AVR targets.
Tested in hardware by @chris-durand.