The purpose of this changelog is to give a good overview of the changes in modm. It is an editorialized version of the git history, with features, PRs and fixes chosen for their importance to modm users as judged by the maintainers. This means that not every small commit makes it in here.
Changelog format
The release summaries are formatted as:
Breaking changes: [list]
Features: [list]
Fixes: [list]
New development boards: [list]
New device drivers: [list]
Known bugs: [list]
Contributors: [list]PR #[GitHub] -> [release tag].
With a more detailed changelog below with this format:
[detailed summary]
PR #[GitHub] -> [sha1] (with [level] impact (on [scope])).
Tested in hardware by [contributor].
Note that -> [sha1]
means "all changes up to and including this commit" which
needs to be interpreted in the context of the git history.
This usually corresponds to the changes in the Pull Request on GitHub though.
This changelog also labels the changes with an impact and usually also scopes them to the relevant subset of modm code or targets. This describes the anticipated impact of these changes on users of modm and has four levels:
- No impact mentioned: No influence. Adds new features and does not touch existing code.
- Low impact: No expected influence. Modifies modm in a backwards compatible way.
- Medium impact: Likely influence. Modifies modm in a non-backwards compatible way.
- High impact: Definite influence. Breaks the API within the scope.
High impact changes are explicitly called out in the release notes for you to pay attention to. Medium impact changes are also worth looking at.
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)
Detailed changelog
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.- Complete rewrite of TCS34xx color sensor driver.
Features:
- Update AVR libstdc++ to C++20.
- Enable C++20 with GCC10.
- Ethernet support via FreeRTOS-TCP and LAN8720a.
- STM32: optional UART buffers per direction.
- Using relative paths in ELF files to easier archiving.
- Dark mode for Doxypress documentation.
- Makefile build system generator.
- Better Windows installation instructions.
Fixes:
- STM32F4/F7: Overdrive mode.
- STM32G4: TIM2 and TIM5 as 32-bit timer.
- STM32F0: ADC temperature calibration.
- STM32G4: ADC clock.
- SAMD21 Mini BSP fixes.
- Windows: Uploading via AvrDude.
New development boards:
- NUCLEO-F439ZI as
modm:board:nucleo-f439zi
. - NUCLEO-F446ZE as
modm:board:nucleo-f446ze
. - NUCLEO-F767ZI as
modm:board:nucleo-f767zi
. - NUCLEO-L452RE as
modm:board:nucleo-l452re
.
New device drivers:
- MMC5603 compass as
modm:driver:mmc5603
. - LAN8720a ethernet transceiver as
modm:driver:lan8720a
. - STUSB4500 USB-PD controller as
modm:driver:stusb4500
. - Bit-banged encoder input as
modm:driver:encoder_input.bitbang
. - Touch2046/TSC2046 touchscreen controller as
modm:driver:touch2046
.
Known bugs:
- C++20 is not fully implemented by GCC10 yet, however modm does not use all features yet anyways. See #326.
- Nanosecond delay may be inaccurate. See #495.
- 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 🎉:
- Cerem Cem ASLAN (@ceremcem) 🎉
- Christopher Durand (@chris-durand)
- David Hebbeker (@dhebbeker)
- Jacob Schultz Andersen (@jasa) 🎉
- Mike Wolfram (@mikewolfram)
- Nicolai Bruhn (@nicoBruhn) 🎉
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
- Sascha Schade (@strongly-typed)
- Thomas Sommer (@TomSaw) 🎉
- Vivien Henry (@lukh)
Detailed changelog
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)
.- Word length is not automatically set to 9-bits when setting parity anymore.
UartHal::setLastBitClockPulse(LastBitClockPulse)
removed.UartHal::setSpiClock(SpiClock)
->UartHal::setSpiClock(SpiClock, LastBitClockPulse)
.- You must now manually call
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.
This is a virtual release only for reference that covers everything from 2020-10-01.
Breaking changes:
- SAMD GPIO connector API is rewritten.
Features:
- Added a
.clang-format
for automated code styling. - Update FatFS from v0.09 to v0.13.
Fixes:
- STM32F3: Fix missing HsiDiv2 in PllSource.
- FreeRTOS: Fix SystemCoreClock linking.
- Proper lookup of all IOStream
operator<<
overloads.
New development boards:
- NUCLEO-F334R8 as
modm:board:nucleo-f334r8
. - NUCLEO-G431KB as
modm:board:nucleo-g431kb
. - NUCLEO-G431RB as
modm:board:nucleo-g431rb
.
No new device drivers.
Known bugs:
- Nanosecond delay may be inaccurate. See #495.
- 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.
Many thanks to all our contributors:
- Christopher Durand (@chris-durand)
- Erik Henriksson (@henrikssn)
- Jeff McBride (@mcbridejc)
- Mike Wolfram (@mikewolfram)
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
- Sascha Schade (@strongly-typed)
Detailed changelog
PR #490 -> 195f7e1.
Tested in hardware by @rleh.
PR #499 -> 276f5b3.
Tested in hardware by @mcbridejc.
PR #497 -> 7df2e7d with medium impact on all targets.
Tested in hardware by @salkinium.
PR #482 -> dc56af2 with high impact on SAMD targets.
Tested in hardware by @henrikssn.
This is a virtual release only for reference that covers everything from 2020-07-01.
No breaking changes.
Features:
- SAMD21 support with GPIO, UART, External Interrupt.
- A rewritten AMNB protocol.
- RaspberryPi support with GPIO (via Linux/WiringPi).
- Better Windows support incl. CI.
- Compliance with CMSIS SystemCoreClock interface.
- TinyUSB integration!
Fixes:
- STM32F3: Fix
Adc::isConversionFinished()
. - STM32: Add missing BDTR register to TIM14.
- STM32: Fix RCC clock enable for Ethernet.
- STM32L1: Fix CMSIS Header selection for -A variants.
- STM32F0/G0: Add support for remapped pins.
- FreeRTOS: Make malloc thread-safe.
New development boards:
- NUCLEO-F334R8 as
modm:board:nucleo-f334r8
. - Feather-M0 as
modm:board:feather-m0
. - SAMD21 Mini as
modm:board:samd21-mini
. - Raspberry Pi v3 as
modm:board:raspberrypi
. - DevEBox STM32F4xx as
modm:board:devebox-stm32f4xx
. - STM32_F32VE as
modm:board:stm32_f32ve
.
New device drivers:
- LSM6DS33 compass and gyroscope as
modm:driver:lsm6ds33
. - LIS3MDL compass as
modm:driver:lis3mdl
. - GPIO Sampler (STM32-only) as
modm:driver:gpio-sampler
. - IS31FL3733 LED matrix driver as
modm:driver:is31fl3733
. - ILI9341 Parallel/SPI display driver as
modm:driver:ili9341
.
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.
Many thanks to all our contributors. A special shoutout to first timers 🎉:
- Benjamin Carrick (@nesos)
- Christopher Durand (@chris-durand)
- delphi (@delphi)
- Erik Henriksson (@henrikssn) 🎉
- Lukas Güldenstein (@gueldenstone) 🎉
- Mike Wolfram (@mikewolfram)
- Niklas Hauser (@salkinium)
- Pavel Pletenev (@ASMfreaK)
- Raphael Lehmann (@rleh)
- Sascha Schade (@strongly-typed)
- Vivien Henry (@lukh)
Detailed changelog
PR #478 -> 3072005.
Tested in hardware by @salkinium.
PR #437 -> 43f32e6.
Tested in hardware by @mikewolfram and @delphi.
PR #475 -> cb82eec with low impact in ARM Cortex-M targets.
Tested in hardware by @strongly-typed and @salkinium.
PR #471 -> 48d73dc with low impact on STM32 targets.
Tested in hardware by @chris-durand and @salkinium.
PR #462 -> 8082f69.
Tested in hardware by @strongly-typed.
Wraps <wiringPi.h>
for GPIO driver.
PR #444 -> d3496a3.
Tested in hardware by @henrikssn.
PR #448 -> 821677b.
Tested in hardware by @mikewolfram.
PR #445 -> 9b6aeee.
Tested in hardware by @salkinium.
PR #96 -> 9d8bbfa.
Tested in hardware by @salkinium.
PR #395 -> 8820d6b.
Tested in hardware by @salkinium.
PR #436 -> cbce428.
Tested in hardware by @henrikssn.
PR #430 -> 04688bc.
Tested in hardware by @henrikssn.
PR #428 -> 0994a55.
Tested in hardware by @nesos.
Also adds Feather-M0 and SAMD21 Mini BSPs.
PR #194 -> d2d38a0.
Tested in hardware by @salkinium and @henrikssn.
This is a virtual release only for reference that covers everything from 2020-04-01.
Breaking changes:
- Move FCPU option to
modm:platform:core:f_cpu
lbuild option. modm::Clock
reimplemented usingstd::chrono
.- ZeroMQ support removed as ZeroMQ is unmaintained.
- STM32 DMA driver rewritten for only STM32L4.
Features:
modm::delay()
is nowstd::chrono
compatible.modm::PreciseClock
with microsecond resolution.- Containers derive from
std::iterator
to work with STL algorithms. - Simple (stateless) CRC8, CRC16, CRC32 implementations.
.ramcode
linker section for Cortex-M.- Use linkerscript via lbuild option.
- Simple Flash driver for STM32G0/F4.
- Basic DAC driver for STM32F4.
Fixes:
- Fix
<cmath>
in AVR libstdc++. - Cortex-M: Explicitly set the stack pointer on startup, since some bootloaders forget to load the stackpointer from the image.
- TLSF
free()
ignores null pointers. - STM32F0/F3: Correct Pll Source selection.
New development boards:
- NUCLEO-F303RE as
modm:board:nucleo-f303re
. - Mega 2560 PRO as
modm:board:mega-2560-pro
.
New device drivers:
- LP503x LED driver as
modm:driver:lp503x
. - Sx1276 LoRa Modem as
modm:driver:sx1276
. - Bit-bang encoder output as
modm:driver:encoder.output
.
Known bugs:
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.
Many thanks to all our contributors. A special shoutout to first timers 🎉:
- Benjamin Carrick (@nesos) 🎉
- Christopher Durand (@chris-durand)
- Felix Petriconi (@FelixPetriconi) 🎉
- Jeff McBride (@mcbridejc) 🎉
- Kaelin Laundry (@WasabiFan)
- Mike Wolfram (@mikewolfram)
- Niklas Hauser (@salkinium)
- Pavel Pletenev (@ASMfreaK)
- Philipp Graf (@luxarf) 🎉
- Raphael Lehmann (@rleh)
- Sascha Schade (@strongly-typed)
- Vivien Henry (@lukh) 🎉
Detailed changelog
PR #420 -> 78d18f6.
Tested in hardware by @mcbridejc.
PR #153 -> 21af57b.
Tested in hardware by @rleh.
PR #418 -> 7d1f7cc.
Tested in hardware by @nesos.
PR #417 -> 9e285db.
Tested in hardware by @salkinium.
PR #366 -> 6e5ebf4.
Tested in hardware by @chris-durand.
PR #396 -> c38550a.
Tested in hardware by @FelixPetriconi.
PR #396 -> c38550a.
Tested in hardware by @FelixPetriconi.
PR #400 -> 80a9c66 with low impact on STM32 targets.
Tested in hardware by @mikewolfram.
The previous DMA implementation is replaced by a new STM32L4-only one.
PR #371 -> 0217a19 with high impact on STM32 targets.
Tested in hardware by @mikewolfram.
PR #382 -> 11ffe92.
Tested in hardware by @chris-durand.
PR #376 -> 141aa71.
Tested in hardware by @luxarf.
Highly efficient implementation via SysTick on Cortex-M and TC0 on AVR. Breaking changes:
modm::Clock
now usingstd::chrono
compatible interface.
PR #217 -> c63a536 with high impact on AVR and STM32 targets.
Tested in hardware by @salkinium.
PR #374 -> b010775 with low impact on all targets.
Tested in hardware by @salkinium.
This is a virtual release only for reference that covers everything from 2020-01-01.
Breaking changes:
modm_assert()
arguments, behavior and assertion handler arguments.- STM32:
Rcc::enablePll(PllFactors&)
arguments.
Features:
- Doxypress support for API docs generation.
- Support for C11/C++11 atomics on ARMv6-M.
- Make heap module optional with linker failure when accidentally calling malloc.
Fixes:
- I2C NACK handling on STM32.
- Static initialization guard for C++.
No new development boards.
New device drivers:
- CAT24AAxx I2C EEPROM as
modm:driver:cat24aa
.
Known bugs:
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.
Many thanks to all our contributors:
- Christopher Durand (@chris-durand)
- David Hebbeker (@dhebbeker)
- Mike Wolfram (@mikewolfram)
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
- Sascha Schade (@strongly-typed)
Detailed changelog
PR #372 -> d21e991.
Tested in hardware by @strongly-typed.
modm:platform:heap
is optional and will cause the linker to fail if malloc is
called without this module.
PR #364 -> b8648be with medium impact on Cortex-M targets.
Tested in hardware by @salkinium.
Breaking changes:
- Single arguments of
Rcc::enable()
now passed as struct.
PR #361 -> e3ba913 with high impact on STM32 targets.
Tested in hardware by @rleh.
Breaking changes:
modm_assert
signature.- Additional
modm_assert_*
functions with new behaviors. - Assertion handler signature and arguments.
PR #351 -> 23ec952 with high impact on all targets.
Tested in hardware by @salkinium.
PR #346 -> 5332765.
Tested in hardware by @salkinium.
As lbuild options in the modm:stdc++
module.
PR #343 -> 4ff604f.
Tested in hardware by @salkinium.
PR #321 -> b721551.
Tested in hardware by @mikewolfram.
This is a virtual release only for reference that covers everything from 2019-10-01.
Breaking changes:
modm:target
option requires extended identifiers.
Features:
- STM32G4 support!
- DFU programmer support.
- STM32G0: Add ADC driver.
Fixes:
- NUCLEO-F303K8: SystemClock for USART1 and I2C1.
- STM32: I2C NACK interrupt.
New development boards:
- NUCLEO-G474RE as
modm:board:nucleo-g474re
. - Black Pill F401 as
modm:board:mini-f401
- Black Pill F411 as
modm:board:mini-f411
New device drivers:
- SK9822 LED driver (via APA102) as
modm:driver:sk9822
.
Known bugs:
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.
Many thanks to all our contributors. A special shoutout to first timers 🎉:
- Benjamin Weps (@nesos)
- Mike Wolfram (@mikewolfram) 🎉
- Niklas Hauser (@salkinium)
- Raphael Lehmann (@rleh)
Detailed changelog
PR #318 -> fb21f62.
Tested in hardware by @salkinium.
Breaking changes: modm:target
option requires longer identifier, however, it
will give you a list of ambiguous targets to choose from.
PR #306 -> 62ccc26 with high impact in all targets.
Tested in hardware by @salkinium.
PR #302 -> 64d177a with low impact in STM32 targets.
Tested in hardware by @rleh.
Also adds NUCLEO-G474RE board and examples.
PR #287 -> afaea7f with low impact in STM32 targets.
Tested in hardware by @rleh.
This is a virtual release only for reference that covers everything from 2019-07-01.
Breaking changes:
- Modularized CMSIS-DSP integration.
- Refactored CMake build script generator.
- Refactored NRF24 radio driver.
- Removal of deprecated TIPC XPCC backend.
- Removal of deprecated SDL display driver.
Features:
- Remove hardcoded OpenOCD programmer for some boards.
- AVR: size reporting.
- CMake: Support multi-repository builds.
HARDWARE_INIT
helper macro for linker section.
Fixes:
- STM32: Acknowledge external interrupt flags.
- STM32: Shared ADC interrupt.
New device drivers:
- BNO055 IMU driver as
modm:driver:bno055
. - TLC594x PWM driver as
modm:driver:tlc594x
. - APA102 RGB LED driver as
modm:driver:apa102
. - SK6812 RGB LED driver as
modm:driver:sk6812
.
Known bugs:
lbuild build
andlbuild 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 🎉:
- Benjamin Weps (@nesos)
- Carl Treudler (@cajt)
- Jörg Hoffmann (@19joho66) 🎉
- Kaelin Laundry (@WasabiFan) 🎉
- Linas Nikiperavicius (@linasnikis) 🎉
- Niklas Hauser (@salkinium)
- Pavel Pletenev (@ASMfreaK)
- Sascha Schade (@strongly-typed)
Detailed changelog
PR #267 -> 72d5ae9.
Tested in hardware by @salkinium.
PR #253 -> 22867e0.
Tested in hardware by @danielk.
PR #254 -> 00471ca.
Tested in hardware by @salkinium.
PR #242 -> b570d07.
Tested in hardware by @linasnikis.
PR #191 -> a8edbe8.
Tested in hardware by @salkinium.
Breaking changes: You need to choose the required submodules.
PR #241 -> 022a60a.
Tested in hardware by @salkinium.
PR #240 -> afbd533.
Tested in hardware by @salkinium.
This is a virtual release only for reference that covers everything from 2019-04-01.
Breaking changes:
- Upgrade to AWS a:FreeRTOS v10 with generic port to all Cortex-M devices.
modm::endl
does not flush the IOStream anymore.
Features:
- New printf implementation with better overall syntax support.
- Simple CRC32 implementation.
- Cortex-M: CrashCatcher integration for post-mortem debugging of HardFaults.
- Cortex-M: ITM driver with UART interface.
- Cortex-M: GNU Build ID integration.
Fixes:
- AVR: UART driver for some devices.
New development boards:
- Arduino NANO as
modm:board:arduino-nano
. - NUCLEO-F446RE as
modm:board:nucleo-f446re
.
New device drivers:
- WS2812 RGB LED driver as
modm:driver:ws2812
.
Many thanks to all our contributors:
- Antal Szabó (@Sh4rK)
- Niklas Hauser (@salkinium)
- Pavel Pletenev (@ASMfreaK)
- Sascha Schade (@strongly-typed)
- Sebastian Birke (@se-bi)
Detailed changelog
PR #228 -> 9381fd0.
Tested in hardware by @se-bi.
PR #219 -> a607613.
Tested in hardware by @salkinium.
PR #218 -> 47adfd6.
Tested in hardware by @salkinium.
Removes previous hard fault LED toggling in favor of much better solution.
PR #210 -> 4ab28fe with low impact on STM32 targets.
Tested in hardware by @salkinium.
Breaking changes: Previous port only worked on STM32F4 with our own patches.
PR #198 -> 66c0868 with high impact on STM32F4 targets.
Tested in hardware by @salkinium.
PR #199 -> 4ce1a47 with low impact on all targets.
Tested in hardware by @salkinium.
PR #190 -> a6b4186.
Tested in hardware by @salkinium.
This is a virtual release only for reference that covers everything from 2019-01-01.
Breaking changes:
- All inheritable lbuild board configs are moved from
modm:board:*
tomodm:*
. - Split
modm:platform:core
module intomodm:platform:cortex-m
module. - Refactor SysTick and RCC module.
Features:
- Black Magic Probe upload support.
- STM32: RCC driver with enable()/disable() functions for clocks.
- Cortex-M: Add option to link with flash offset for bootloaders.
- STM32G0 support!
Fixes:
- HD44780: 4-bit initialization.
- NUCLEO-F303K8: Fix SystemClock for CAN.
New device drivers:
- PAT9125EL motion sensor driver as
modm:driver:pat9125el
. - MAX7219 LED matrix driver as
modm:driver:max7219
.
Many thanks to all our contributors. A special shoutout to first timers 🎉:
- Christopher Durand (@chris-durand)
- Fabian Greif (@dergraaf)
- Niklas Hauser (@salkinium)
- Patrick Servello (@patrick--) 🎉
- Pavel Pletenev (@ASMfreaK) 🎉
- Raphael Lehmann (@rleh)
- Sascha Schade (@strongly-typed)
- Sebastian Birke (@se-bi)
- Thomas Figueroa (@OperativeF) 🎉
- Zawadniak Pedro (@PDR5) 🎉
Detailed changelog
PR #187 -> 5dd598c.
Tested in hardware by @dergraaf.
PR #187 -> 5dd598c.
Tested in hardware by @dergraaf.
PR #167 -> 399a533.
Tested in hardware by @salkinium.
Breaking changes:
modm:platform:clock.cortex
->modm:platform:systick
.Rcc::setFlashLatency(Frequency);
->Rcc::setFlashLatency<Frequency>();
.
PR #180 -> c7b35ca with high impact on STM32 targets.
Tested in hardware by @salkinium.
PR #177 -> 4a82a94 with low impact on STM32 targets.
Tested in hardware by @salkinium.
Breaking changes: Some options move to modm:platform:cortex-m
module.
PR #176 -> dee5ea2 with high impact on STM32 targets.
Tested in hardware by @salkinium.
Breaking changes: Config inheritance renamed from modm:board:*
to modm:*
.
PR #171 -> 564effa with high impact on all targets.
Tested by @salkinium.
PR #136 -> 4f25cdf.
Tested in hardware by @chris-durand.
This is a virtual release only for reference that covers everything from 2018-10-01.
No breaking changes.
Features:
- SCons: Multi-repository build script generation.
- AVR: Add libstdc++
- Doxygen: Refactor Doxygen groups to match lbuild structure.
- STM32F0/F3/F7/L0: Add I2C driver.
- STM32L4: Add SPI (via USART) driver.
- STM32F0: Add ADC driver.
Fixes:
- STM32: Timer dead time register mask.
- STM32L4: ADC driver fixed for L4x2.
New device drivers:
- PCA9548A I2C multiplex driver as
modm:driver:pca9548a
.
Many thanks to all our contributors. A special shoutout to first timers 🎉:
- Antal Szabó (@Sh4rK)
- Benjamin Weps (@nesos) 🎉
- Carl Treudler (@cajt)
- Christopher Durand (@chris-durand)
- Fabian Greif (@dergraaf)
- Jörg Hoffmann (@19joho66) 🎉
- Kaelin Laundry (@WasabiFan) 🎉
- Linas Nikiperavicius (@linasnikis) 🎉
- Mike Wolfram (@mikewolfram) 🎉
- Niklas Hauser (@salkinium)
- Niklas Meyer (@Zweistein885) 🎉
- Patrick Servello (@patrick--) 🎉
- Pavel Pletenev (@ASMfreaK) 🎉
- Raphael Lehmann (@rleh)
- Sascha Schade (@strongly-typed)
- Sebastian Birke (@se-bi)
- Thomas Figueroa (@OperativeF) 🎉
- Zawadniak Pedro (@PDR5) 🎉
Detailed changelog
PR #81 -> 77ae899.
Tested in hardware by @strongly-typed.
PR #132 -> af2b352.
Tested in hardware by @cajt.
PR #122 -> 544f6d3.
Tested in hardware by @chris-durand.
PR #118 -> e46e7df.
Tested in hardware by @chris-durand.
PR #102 -> feb1f3c.
Tested by @salkinium.
PR #82 -> eba68a4.
Tested in hardware by @chris-durand.
This is a virtual release only for reference that covers everything from 2018-07-01.
Breaking changes:
- Move build script generator modules from
modm:build.*
tomodm:build:*
. - Move XPCC generator to own module
modm:communication:xpcc:generator
.
Features:
- Generate LED tables via lbuild.
- STM32F3/L4: Add comparator driver.
- Enable lbuild module for SAB2.
- OpenOCD customization via
openocd.cfg
file. - Improved GDB TUI debugging with automatic background OpenOCD start/stop.
- A new Homepage!
- A lot of new module documentation.
Fixes:
- STM32: Compilation of ADC driver.
- ELF debug section cleanup.
New development boards:
- NUCLEO-F042K6 as
modm:board:nucleo-f042k6
.
Many thanks to all our contributors. A special shoutout to first timers 🎉:
- Amarok McLion (@amarokmclion) 🎉
- Antal Szabó (@Sh4rK)
- Benjamin Weps (@nesos) 🎉
- Carl Treudler (@cajt)
- Christopher Durand (@chris-durand)
- Fabian Greif (@dergraaf)
- Jörg Hoffmann (@19joho66) 🎉
- Kaelin Laundry (@WasabiFan) 🎉
- Linas Nikiperavicius (@linasnikis) 🎉
- Niklas Hauser (@salkinium)
- Niklas Meyer (@Zweistein885) 🎉
- Patrick Servello (@patrick--) 🎉
- Pavel Pletenev (@ASMfreaK) 🎉
- Raphael Lehmann (@rleh)
- Sascha Schade (@strongly-typed)
- Sascha Schade (strongly-typed) 🎉
- Sebastian Birke (@se-bi) 🎉
- Thomas Figueroa (@OperativeF) 🎉
- Zawadniak Pedro (@PDR5) 🎉
Detailed changelog
PR #58 -> cbbf3f6.
Tested by @salkinium.
The predecessor to modm was xpcc, please check the xpcc changelog for releases up to 2018q2.
During the transition from xpcc to modm from 2016 to 2018 there were many breaking changes with an overview available in the porting guide from xpcc to modm.
Please note that contributions from xpcc were continuously ported to modm.