Skip to content

Releases: modm-io/modm

2022q1 release

02 Apr 21:54
Compare
Choose a tag to compare

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
    as modm: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 and lbuild 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 🎉:

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

PR #819 -> b18385c.

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

01 Jan 14:01
Compare
Choose a tag to compare

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 and lbuild 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 🎉:

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

PR #745 -> f4c7492.
Tested in hardware by @Delphi.

2021q3 release

01 Oct 10:03
Compare
Choose a tag to compare

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 and lbuild 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 🎉:

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

01 Jul 14:27
Compare
Choose a tag to compare

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 and modm::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 and lbuild 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:

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.

2021q1 release

01 Apr 20:11
Compare
Choose a tag to compare

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 and lbuild 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 🎉:

PR #597 -> 2021q1.

Detailed changelog

2021-03-31: Add Touch2046/TSC2046 touchscreen controller

Also adds NUCLEO-L452RE board and example.

PR #600 -> b1e5588.
Tested by @rleh.

2021-03-26: Add Makefile build system generator

PR #557 -> df47974.
Tested by @salkinium.

2021-03-22: Add Bit-banged encoder input driver

PR #580 -> df47974.
Tested in hardware by @TomSaw.

2021-03-16: Rewrite TCS34xx color sensors

Breaking changes: Entire API was rewritten.

PR #578 -> 850b554 with high impact on TCS34xx driver.
Tested in hardware by @TomSaw.

2021-03-06: Add STUSB4500 USB-PD controller driver

PR #574 -> 1a11b08.
Tested in hardware by @rleh.

2021-03-06: Add NUCLEO-F439ZI board and example

PR #571 -> 165adf0.
Tested in hardware by @rleh.

2021-02-26: Refactor SCons build system

Adds relative paths in ELF file.

PR #558 -> 1fc3805.
Tested by @salkinium.

2021-02-23: Refactor UART HAL

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.

2021-02-18: Add Ethernet support via FreeRTOS-TCP and LAN8720a

Also adds NUCLEO-F767ZI board.

PR #466 -> d8be0a2.
Tested in hardware by @mikewolfram.

2021-01-14: Add MMC5603 compass driver

PR #556 -> fb2ff58.
Tested in hardware by @salkinium.

2021-01-14: Fix STM32F0 ADC temperature sensor

PR #526 -> 3ecad35 with low impact on STM32F0 targets.
Tested in hardware by @chris-durand.

2021-01-10: Add NUCLEO-F446ZE board and example

PR #533 -> 02b1571.
Tested in hardware by @chris-durand.

2021-01-10: Enable C++20

PR #521 -> 8c322a2 with low impact on all targets.
Tested in hardware by all.

2021-01-10: Update avr libstdc++ submodule to C++20 version

PR #535 -> 038657c with low impact on AVR targets.
Tested in hardware by @chris-durand.