Skip to content

Releases: RIOT-OS/RIOT

Release-2024.07

31 Jul 07:55
2024.07
1a418cc
Compare
Choose a tag to compare

RIOT-2024.07 "StrikinglyCrowded" - Release Notes

RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.

About this release

The 2024.07 release, nicknamed "StrikinglyCrowded", includes many features and bug fixes.
Here are some of the highlights:

  • RIOT now boots on the Arduino Nano 33 BLE Sense (#20668)
  • To support boards with Ethernet plugs such as the Adafruit Ethernet FeatherWing, RIOT now ships a driver for the W5500 ethernet chip (#20301)
  • RIOT now leverages the ARMv8-M hardware support to enforce the stack size (#20633)
  • The PSA Crypto API implementation in RIOT now supports persistent key storage and additional hashing algorithms (#20099, #20598, #20698)
  • This release features several useful additions to the RIOT CoAP stacks: a coaps forward proxy for gcoap, delayed responses for nanocoap_sock, and the ability to mount a remote filesystem over CoAP (#20454, #20266, #20687)
  • Support of the 16-bit MSP430 MCU has been improving over the last few releases, with the addition of power management in this release as an example (#20613)
  • First steps towards enabling RIOT support of new Microchip SAM MCUs (#20708, #20710, #20713, #20714)
  • Compiling with BUILD_IN_DOCKER=1 will now by default use the exact container version the code was tested in the CI, fetching it from upstream if not locally present. (#20472)

175 pull requests, composed of 358 commits, have been merged since the
last release, and 5 issues have been solved. 36 people contributed with
code in 80 days. 650 files have been touched with 88156 (+) insertions and
3949 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core

  • core/assert: halt running thread instead of panic (#20627)
  • core/lib/assert: consistify output and cleanup documentation (#20701)
  • core/panic: make reboot on panic configurable (#20630)
  • core/thread: "fix" valgrind errors in thread_measure_stack_free() (#20726)

System Libraries

  • sys/event.h: Fixed documentation error by adding a type cast. (#20704)
  • sys/shell: add support for running a batch of commands from a file (#20651)
  • rust: bump rust-riot-{sys,wrappers} version (#20786)
  • shell/vfs: Handle print failure in genfile cmd gracefully (#20595)
  • sys/hashes: change SHA2 PAD type to const (#20729)
  • sys/psa_crypto: ed25519 private key {ex,im}port (#20334)
  • sys/psa_crypto: Implement persistent key storage (#20099)
  • sys/psa_crypto: remove keysize determination from Kconfig files (#20674)
  • sys/psa_crypto: SHA-{384,512/{224,256}} (#20598)
  • sys/psa_crypto: sha3 support (#20698)
  • sys/shell: Update cryptoauthlib shell commands (#20673)
  • sys/vfs: use atomic_utils rather C11 atomics (#20513)

Networking

  • gcoap: add coaps forward proxy (#20454)
  • gnrc, nanocoap: add optional work-arounds for buggy CoAP servers (#20564)
  • nanocoap_fs: add nanoCoAP as VFS backend (remote CoAP fs) (#20687)
  • nanocoap_sock: add nanocoap_get_blockwise_to_buf() (#20690)
  • nanocoap_sock: implement separate response (#20266)
  • driver/w5500: driver for the W5500 ethernet chip (#20301)
  • examples/gcoap: take full URI as input (#20554)
  • gnrc/ipv6: Check for overflow (#20771)
  • l2filter: mark module and related netopt options as experimental (#20634)
  • pkg/lwip: use sys/event for handling ISR and bhp (#18359)

Packages

  • pkg/tflite-micro: add proper options to flatc (#20703)
  • pkg/wakaama: implement IPSO sensor objects in LwM2M (#20652)
  • pkg/wamr: Added support for THUMB_VFP in wamr Makefile (#20628)
  • Makefile.include: creation of CACHEDIR.TAG as a dependency of pkg-
    prepare (#20689)
  • pkg/littlefs2: bump to v2.9.2 (#20591)
  • pkg/tflite-micro: Update tflite-micro to latest version. requires
    update of pkg/flatbuffers as well. (#20683)
  • pkg/wamr: updated package to WAMR 1.3.3 (#20691)

Boards

  • boards/arduino-nano-33-ble-sense: add support for arduino-
    nano-33-ble-sense (#20668)
  • boards/b-l072z-lrwan1: add missing adc feature (#20733)
  • boards/nucleo-f303ze: add pinout (#20717)
  • boards/nucleo-l452re: add ADC (#20778)
  • boards/sodaq-sara-sff: add status pin for SARA (#20279)
  • cpu/stm32: add ADC support for WB55 (#20773)
  • drivers/led: add LED_NUMOF and convenience inline functions (#20783)
  • drivers/ws281x: Add saul support (#20562)
  • boards/common/stm32: simplify ifdef logic (#20617)
  • boards/nRF52xx: correctly set JLINK_DEVICE (#20599)
  • boards/nucleo-l476rg & stm32l476g-disco: fix MCU table (#20751)
  • boards/stm32l0538-disco: enable cpy2remed (#20766)
  • boards/stm32l476g-disco: enable cpy2remed (#20734)
  • build system: clean up netif features (#20700)
  • cpu/{gd32v,stm32}/periph/adc: make ADC clock setable (#19630)

CPU

  • cpu/cortexm: add stack limit support for Cortex-M33 (#20633)
  • cpu/cortexm: rework bkpt instruction call on panic (#20616)
  • cpu/cortexm_common: print last active thread on stack corruption (#20709)
  • cpu/esp: Handle format print errors (#20596)
  • cpu/msp430: implement power management (#20613)
  • cpu/nrf5x: implement pm_off() for nRF53/9160 (#20590)
  • cpu/nrf5x_common: fix ztimer issue on warm-boot (#20665)
  • cpu/nrf5x_common: properly calibrate RC-based low-frequency clock (#20669)
  • cpu/sam0: Remove deprecated muxpos (#20525)
  • cpu/sam0_common: avoid bitfield usage (#20747)
  • cpu/samd21: avoid the use of bitfield (#20713)
  • cpu/samd5x: avoid the use of bitfields (#20714)
  • cpu/samd5x: handle CAN errors (#20667)
  • cpu/saml1x: avoid the use of bitfield in register calls (#20710)
  • cpu/saml21: avoid the use of bitfield in register call (#20708)
  • cpu/stm32/periph/stm32_eth: provide confirm_send (#18428)
  • cpu/stm32: de-duplicate ifdefs (#20609)
  • periph/flashpage: remove deprecated flashpage_*_free functions (#18093)
  • pkg/lwip: make use of confirm send (#18427)
  • Remove extraneous bitwise assignment operation on NRF5X_common gpio.c (#20737)
  • sam0_eth: implement .confirm_send() to fix fragmented sending (#20666)
  • tree wide: compilation fixes for native64 on musl systems (#20730)

Device Drivers

  • drivers/at24cxxx: Add M24C01 device and enhance documentation (#20588)
  • drivers/led: add LEDX_IS_PRESENT defines (#20637)
  • drivers/mtd: Add check for integer overflow (#20587)
  • Drivers: add MAX31855 thermocouple-to-digital converter (#20741)
  • drivers/at86rf215: port to new netdev API (#20672)
  • drivers/at: expose some internal API (#20702)

Documentation

  • boards/nucleo-c031c6: add pinout to doc (#20657)
  • boards/nucleo-l452re: add pinout to doc page (#20678)
  • boards/nucleo-l4r5zi and l496zg: add pinout to documentation page (#20707)
  • boards/nucleo144: add pinout diagrams to boards documentation (#20614)
  • doc/getting-started: add hint for correct access rights on serial
    device (#20600)
  • doc/terminals: add putty and sort terminals (#20611)
  • /README.md: match doc (#20740)
  • boards/doc: Adafruit Feather nRF52840 Sense is popular (#20597)
  • boards/nucleo-f429zi & f439zi: documentation improvements (#20594)
  • boards/nucleo-f722ze: doc update (#20671)
  • boards/stm32l0538-disco: doc improvements (#20767)
  • boards: Update SAM0-based documentation (#20621)
  • doc: fix links to GNRC master thesis (#20785)
  • doc/doxygen: remove default value for search form (#20681)

Build System / Tooling

  • .editorconfig: add EditorConfig (#20746)
  • pkg: Add script to check third party package version (#20662)
  • tools/dhcpv6-pd_ia: fix: Add explicit subnet id (#20776)
  • dist/tools/buildsystem_sanity_check: make shellcheck happy (#20721)
  • dist/tools/tapsetup: make compatible with doas (#20712)
  • Makefile.include: place compile_commands.json by rule target (#20716)
  • makefiles/docker.inc.mk: Pin riotbuild version with BUILD_IN_DOCKER=1 (#20472)
  • makefiles/docker: prevent recursive docker invocation (#20638)
  • makefiles/tools/serial.inc.mk: make use of pyterm session names (#20121)
  • makesfiles/jlink: fix exports for flashing (#20779)
  • tree-wide: Introduce netif feature and use it (#20682)

Examples

  • examples/psa_crypto: pass environment variable down to docker (#20663)

Testing

  • tests/drivers/at: add check if device is initialized before sending
    command (#20140)
  • check-labels.yml: bump to v1.1.2 (#20727)
  • ci: disable esp32-wroom-32 tests (#20715)
  • release-tests.yaml: remove (always failing) matrix notification (#20742)
  • test/sys/progress_bar: temporary printout to debug flaky test (#20763)
  • tests/drivers/pn532: fix init error handling and increase verbosity (#20750)
  • tests/sys/progress_bar: move configuration to app.config (#20764)
  • tests/sys/progress_bar: remove debug print (#20768)
  • tests/sys/psa_crypto*: remove test symlinks (#20545)
  • tests/sys/psa_crypto: increase timeout (#20612)
  • tests/sys/psa_crypto: test interleaved hash operations (#20606)
  • tests/sys/psa_crypto_ecdsa: fix stacksize determination (#20760)

API Changes

  • build system: rename ethernet feature into netif_ethernet (#20694)
  • cpu/native: fix build with musl (#18942)
  • pkg/monocypher: bump to 4.0.2 (#20670)

And 32 minor changes.

Deprecations (1)
====...

Read more

Release-2024.04

07 May 11:26
59956fd
Compare
Choose a tag to compare

RIOT-2024.04 "UwUtastic" - Release Notes

RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.

About this release

The 2024.04 release, nicknamed "UwUtastic", includes many features and bug fixes.
Here are some of the highlights:

  • RIOT boots on two newly added boards:
  • The documentation features a new guide to help you set up a RIOT develpoment environment on Windows (#20426)
  • To accommodate the ever growing RAM sizes in the IoT, RIOT can now monitor your malloc usage (#20363)
  • Dependency modelling via Kconfig is no longer part of RIOT. A big step forward towards having only one source of truth for configurations (#20438)

210 pull requests, composed of 446 commits, have been merged since the
last release, and 4 issues have been solved. 42 people contributed with
code in 82 days. 2409 files have been touched with 26218 (+) insertions and
29933 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core

  • core/lib/cib: add new functionality (#20464)
  • macros/utils: add LIMIT() and ABS() macros (#20352)
  • mbox: provide function to unset initialized mbox (#15485)

System Libraries

  • add error check of aes_encrypt() (#15576)
  • event_periodic_callback: add event_periodic_callback_create() (#20459)
  • shell/cmds: add udptty command (#19742)
  • sys/libc: add endian.h (#20310)
  • sys/shell/lwip: add IPv4 configuration to lwip ifconfig command (#19849)
  • tests: Add NULL pointer argument test for fmt_lpad/to_lower/str (#20344)
  • makefiles/cargo: Remove CARGO_CHANNEL, add make info-rust and simplify Cargo invocations (#20319)
  • Monitoring malloc usage (#20363)
  • rust: Increase Cargo.lock stability and usefulness (#18684)
  • sys/checksum: Remove deprecated crc16_ccitt functions (#20527)
  • sys/hashes: support for SHA-{384,512/{224,256}} (#20484)
  • sys/isrpipe/read_timeout: don't set up timer if data is available (#20558)
  • sys/newlib_syscalls_default: fix race condition in __sinit() (#20392)
  • sys/psa_crypto: use SHA256 CSPRNG as default (#20460)
  • sys/shell: Document that shell access means root access (#20546)
  • sys/suit: Remove deprecated suit_coap_run function (#20528)
  • sys/suit: return error when URL buffer is too small (#20559)
  • sys/tiny_strerror: fix compilation on LLVM (#20483)

Networking

  • gcoap: add some client-side observe handling (#20073)
  • nanocoap: add coap_build_reply_header() (#20284)
  • nanocoap: introduce coap_get_method() (#20191)
  • nanocoap_sock: add support for IPv4 (#20476)
  • net/sock_dtls: add public key verification (#20048)
  • pkg/wakaama: Notify resource updates when writing to resources (#20326)
  • sys/net/ipv4: add IPV4_ADDR_INIT() macro (#20354)
  • always use nanocoap_resources instead of manually assembling
    coap_resources[] (#20374)
  • cord_lc: Process truncated reads (#20547)
  • gnrc_ipv6_nib: Ignore PIO with on-link flag (#20418)
  • nanocoap/cache: Extend with option-only cache keygen (#20043)
  • pkg/tinydtls: enforce the default dtls user params to be configurable (#20478)
  • routing/rpl: Fixing styling & format (#20294)
  • sys/net/gnrc: Remove code duplication (#16502)

Packages

  • pkg/wakaama: add Light Control object implementation (#16204)
  • ci: support git-cache-rs (#20311)
  • Makefile.{include,base},pkg/nanopb: fix target deps & code generation (#20400)
  • pkg/flashdb: enhance FAL config (#20221)
  • pkg/uzlib: warn about memory leak during compression (#20293)

Boards

  • boards/cpu: Add GBA boot support to RIOT (#19519)
  • boards/nucleo-c031c6: add PWM configuration (#20520)
  • boards/nucleo-u575zi-q: Add support (#20444)
  • boards/weact-g030f6: add support for minimal break-out board (#20337)
  • cpu/rpx0xx: add initial pwm support (#20473)
  • cpu/stm32: add support for STM32C0 and NUCLEO-C031C6 (#20300)
  • boards/feather-nrf52840-sense: declare lsm6ds33 accelerometer (#20436)
  • boards/feather-nrf52840-sense: use generic lsm6dsxx (#20526)
  • cpu/msp430/f2xx: clean up periph_uart,periph_spi (#20357)
  • cpu/nrf9160: fix GPIOTE ISR (#20560)
  • cpu/samd5x write can driver (#19736)
  • cpu/stm32u5: Enable rtc support (#20521)

CPU

  • cpu/native: add gpio-mock (#20431)
  • cpu/native: Add support for periph_timer_query_freqs (#20306)
  • drivers/periph_gpio_ll: Implement API to switch direction (#20292)
  • stdio_dispatch: allow to select multiple stdio methods at the same
    time (#19738)
  • cpu/esp8266: allow arbitrary SPI clocks (#20410)
  • cpu/native/periph/uart: uart_poweroff() closes the file descriptor +
    extended baud-rate support on Linux (#20365)
  • cpu/native: Fix executable stack warning (#20307)
  • cpu/native: return error code on failed assertion (#20419)
  • cpu/stm32/periph/gpio: simplify condition code (#20479)
  • cpu/stm32/periph/usbdev_fs: avoid using ztimer when not needed (#20467)
  • cpu/stm32: Fix ifdefs in periph_gpio_ll (#20530)
  • cpu/stm32: remove redundant conditional compile block (#20495)
  • drivers/mtd_flashpage: allow to define AUX slot on flash (#18608)
  • sys/byteorder: clean up implementation (#20313)
  • sys/cpp_new_delete: always enable the module when C++ is used (#20348)
  • tests: exit native with error value on failure (#20445)
  • treewide: Rust updates (#20303)

Device Drivers

  • drivers/lsm6dsxx: Allow generic LSM6DSXX driver (#20504)
  • drivers/lsm6dsxx: refactoring Lsm6dsl into common driver Lsm6dsxx (#20170)
  • drivers/w5100: make use of netdev_eui48_get() (#20304)

Documentation

  • build system: add list of features for documentation and sanity
    checking (#20366)
  • doc: Add guide for dev setup on Windows (#20426)
  • doc: add terminal program configuration (#20493)
  • doc: doxygen: add "Topics" to menus (#20443)
  • doc: Move community processes and vision (import from Wiki) (#20496, #20491, #20498)
  • RDM: Naming boards (#18589, #20469)
  • boards/feather-nrf52840*: doc cleanup (#20422)
  • boards/nucleo-c031c6: fix ADC and enhance doc (#20502)
  • doc/roadmap: Make working 6LBR a goal (#20351)
  • doc: Allow resizing of doxygen side-nav (#20511)
  • README: Change Section titles from all caps to regular (#20405)

Build System / Tooling

  • build system: add --no-warn-rwx-segments to linker (#20381)
  • dist/tools/mspdebug: build from source (#20345)
  • Avoid using egrep (#20522)
  • build system: Improve failure mode for FEAUTRES_REQUIRED_ANY (#20408)
  • dist/tools/dhcpv6-pd_ia: recognize Debian correctly (#20487)
  • Enable compile_and_test_for_board to skip if nothing changed (#19546)
  • tools/openocd: define SWD_EN signal for tigard (#20507)
  • tree wide: accommodate RISC-V toolchain update (#20380)

Kconfig

  • Remove Kconfig dependency modelling (#20438)

Examples

  • examples/rust-gcoap: Add SAUL (#17554)
  • examples/filesystem: Update README and increase default stack size (#20439)
  • examples/psa_crypto: Fix modules to run ECDSA on SEs (#20461)
  • examples/wakaama: rename to lwm2m (#20327)

Testing

  • tests/shell: add test for preemption (#19005)
  • tests: Add cases to the scn_u32_hex unittest (#20463)
  • ci: disable some more flakey native tests (#20358)
  • examples, tests: disable native and native64 for more flaky tests (#20401)
  • make use of nanocoap_server_auto_init (#20378)
  • Refactor tests periph uart (#20281)
  • release-test.yml: return of the Matrix notification (#20424)
  • tests/pkg/lwip: include default-radio-settings.inc.mk (#20325)
  • tests/sys/shell: increase the stack size of periodic thread (#20548)
  • tests/sys/timer_overhead: disable test on native in CI (#20324)
  • tests/unittests/README: link to Supported Boards updated (wiki ->
    site) (#20500)
  • tests: 64-bit support preparations (#20276)
  • tests: Cover API of scn_u32_hex in the unittest (#20458)
  • tests: disable flaky tests on native in the CI (#20382)
  • unittests: Move at test to driver tests (#20540)

API Changes

  • drivers/at: fix URC handling and add better testing (#20423)
  • drivers/at: parse +CME/+CMS responses and save error value (#20289)
  • gcoap: make gcoap_req_send_tl() an alias of gcoap_req_send() (#20514)
  • gcoap_fileserver: rename to nanocoap_fileserver (#20030)
  • makefiles, treewide: Remove MCU variable (#20397)

Uncategorized

  • release-notes.txt: add 2024.01 release notes (#20350)
  • Roadmap: Add Home-Assistant integration on the roadmap (#20403)
  • vscode: Add hard-coded path to compile_commands.json (#20417)

And 59 minor changes.

Deprecations

Deprecations (3)

  • gnrc_mac / gnrc_lwmac / gnrc_gomach: Deprecate modules (#20512)
  • Deprecate MCU preprocessor defines (#20397)

Removals (4)

  • drivers/rgbled: Remove driver (#20407)
  • periph_usbdev: remove deprecated event flag (#20488)
  • treewide: remove deprecated modules (#20471)
  • treewide: remove deprecated shell_commands module (#20485)
  • gnrc_netif: remove deprecated CONFIG_GNRC_NETIF_LORAWAN_NETIF_HDR (#20515)
  • sys/phydat: Remove deprecated print...
Read more

Release-2024.01

08 Feb 16:58
2024.01
24cc8fc
Compare
Choose a tag to compare

RIOT-2024.01 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.

About this release

The 2024.01 release includes:

  • Breaking change for board definition due to XFA for pointers to defined MTD.
    This means users will need to:
    • remove the MTD_NUMOF definition from board.h
    • add MTD_XFA_ADD(<mtd_dev>, <idx>); to the definition of <mtd_dev>.
    • MTD_0, MTD_1, … defines are no longer needed. Use mtd_dev_get(0),
      mtd_dev_get(1), … instead.
  • Many fixes to peripherals due to the periph testing shield
  • The AVR-8 now has power management
  • The ESP32 family is now supported by the SDMMC peripheral driver
  • native now is supported in pyterm
  • tests/periph/uart_locate_pins helps discover which pins are where
  • the periph_timer API supports periph_timer_query_freqs
  • The GNRC boarder router application supports ZEP topology
  • Removal of Kconfig dependency modelling (but still configurations supported)

194 pull requests, composed of 475 commits, have been merged since the
last release, and 4 issues have been solved. 30 people contributed with
code in 64 days. 1083 files have been touched with 36196 (+) insertions and
4976 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core

  • core, sys, drivers: 64-bit support preparations (#20257)
  • core: Express -1 as ~0 in thread_status_t cast (#19976)

System Libraries

  • Fletcher32: Add incremental API (#19981)
  • sys/event/timeout: add event_timeout_is_pending() (#19963)
  • sys/hashes: add SHA-512 support (#19969)
  • sys/suit: introduce suit_worker_done_cb() (#20237)
  • riotboot: fix build errors (#20210)
  • sys/benchmark: fix integer overflow in benchmark_print_time() (#20220)
  • sys/psa_crypto: allow repeated initialization (#19990)
  • sys/shell/gnrc_netif: Fix a few blockers for sharing ifconfig shell (#19971)
  • sys/shell: fix getopt() support (#20209)
  • sys/busy_wait: add busy wait helper (#20241)

Networking

  • gnrc: make message queues static (#19998)
  • nanocoap: implement coap_find_uri_query() (#20273)
  • pkg/lwip: add support for slipdev (#20022)
  • coap: create typedef for CoAP methods (#20003)
  • gcoap_dns: Housekeeping with regards to draft status (#20015)
  • gnrc/ipv6/nib: allow for predictable static link-local addresses (#20224)
  • gnrc/nib: allow prefix to be on-link without being used for address (#20243)
  • nanocoap: fix incorrect uses of coap_get_code() (#20028)
  • nanocoap_sock: implement FETCH methods (#20238)
  • print: Missing size_t print format specifiers (#20249)

Packages

  • Bump nanopb to 0.4.8 (#20132)
  • mjson: Initial include of package (#20129)
  • pkg/ccn-lite: Bump version (#20248)
  • pkg/flashdb: bump to 2.1.0 (#20155)
  • pkg/nanocbor: Bump to latest commit (#19975)
  • pkg/tinydtls: bump version (#20159)
  • pkg: micropython: bump version (#20208)
  • pkg: 64-bit support preparations (#20271)

Boards

  • boards/feather-nrf52840-sense: Add bootloader info (#20034)
  • boards/gd32vf103c-start: new board (#20270)
  • boards/generic-cc2538-cc2592-dk: add board support (#20226)
  • boards/nucleo-l4r5zi : add PWM configuration (#20036)
  • boards/nucleo-l552ze: add PWM configuration (#20032)
  • boards/p-nucleo-wb55: add PWM configuration (#20120)
  • boards: add support for Adafruit Feather nRF52840 Sense (#20027)
  • drivers/include/periph: add FREQM peripheral driver (#20020)
  • drivers/ws281x: Add gpio_ll and timer based driver (#19891)
  • pyterm: add native support (#20172)
  • sys/shell: add firmware version to version cmd (#20244)
  • AVR-8: Implement Power Management (#19784)
  • boards/nrf52dk: Minimal Arduino pinout support (#20286)
  • boards/same54-xpro: configure pins for UART HW flow control &
    ethernet LED (#20183)
  • boards: remove extern mtd_dev_t *mtd<n> declarations from board
    definitions (#20104)
  • makefiles/tests/tests.inc.mk: use native term for tests (#20215)
  • treewise: typo "or RAM" (#20219)

CPU

  • cpu/msp430: rework MSP430 x1xx periph drivers (#19835)
  • cpu/nrf5x: clean up periph_uart (#20102)
  • cpu/stm32: FMC used for low-level LCD parallel interface (#19943)
  • cpu/esp32/periph: add low-level SDMMC peripheral driver for ESP32 and
    ESP32-S3 (#19786)
  • cpu/msp430: improve periph_timer (#20160)
  • cpu/stm32/periph: add low-level SDMMC peripheral driver (#19540)
  • cpu/*: implement periph_timer_query_freqs (#20142) (#20143) (#20144) (#20145)
    (#20146) (#20147) (#20148)
  • cpu/stm32: add ADCAL operation (#20044)
  • drivers/periph/uart: add periph_uart_tx_ondemand feature (#20108)
  • cpu/avr8_common: allow to build with !periph_pm (#20247)
  • cpu/avr8_common: fix build with !core_thread (#20240)
  • cpu/nrf5x_common: clean up UART implementation (#20111)
  • cpu/sam0/uart: implement uart_pin_cts()/uart_pin_rts() (#20171)
  • cpu/sam0_common: implement periph_gpio_ll and periph_gpio_ll_irq (#20189)
  • cpu/stm32/periph_spi: only perform DMA transfer above threshold (#20214)
  • cpu/stm32: uart: don't do DMA for small transfers (#20230)

Device Drivers

  • driver/mtd: mtd_init add documentation for return value (#20033)
  • drivers/periph_timer: add timer_query_freqs() (#16349)
  • drivers/mtd_flashpage: improve _write_page (#20173)
  • drivers/mtd: improve doc consistency (#20184)
  • drivers: make use of busy_wait() (#20258)

Documentation

  • boards/nucleo-l433rc: doc update - image and MCU table (#20098)
  • boards/nucleo-l452re: doc update (#20207)
  • boards/p-nucleo-wb55: documentation update (#20115)
  • doc/mainpage: don't claim to be a microkernel (#20246)
  • doc: Move and update roadmap in from the wiki (#20122, #20123)

Build System / Tooling

  • dist/testbed-support: Add openmote board (#19979)
  • dist/tools/riotboot_gen_hdr/genhdr: add update command (#20239)
  • Bump version of UF2 package (#20035)
  • examples/gnrc_border_router: enable setting ZEP topology (#20006)
  • make all: document targets for RIOT base module (#20187)
  • make help: show generate-Makefile.ci (#20186)
  • tools/zep_dispatch: enhancements and fixes (#19996)

Kconfig

  • tests/build_system: drop Kconfig tests (#20229)

Examples

  • examples/dtls-sock: Enable non 32-bit architectures (#20196)
  • examples/dtls-sock: make use of helper functions (#20125)

Testing

  • tests/periph/uart_locate_pins: new test/utility app (#20253)
  • tests/pkg/minmea: adding GGA, GSA and RMC sentences to test
    application (#20005)
  • tests/unittests: add a unit test for ztimer (#20011)
  • .murdock: drop Kconfig compile check (#20211)
  • ci: ensure "xxx succeeded" properly fail (#20288)
  • ci: make native tests show up in "tests" (#20269)
  • tests/drivers/at: fix device table overflow (#20025)
  • tests/net/gnrc_sixlowpan_frag_sfr_congure_impl: disable test on
    native (#20151)
  • tests/periph/uart: allow to set line ending (#20128)
  • tests/pkg/minmea: fixing RMC timestamp (#20018)
  • tests/sys/psa_crypto*: Fix failing tests (#20178)
  • tests/sys/psa_crypto_se_cipher: disable test on esp32-wroom-32 (#20152)
  • tests/sys/psa_crytpo_se: disable test on esp32-wroom-32 (#20150)
  • tests/unittests: blacklist LLVM on native (#19958)
  • tests: Slightly increase coverage of fmt unittests (#20272)

API Changes

  • print: Added size_t print format specifier (#20194)
  • drivers/mtd: use XFA for pointers to defined MTDs (#19465)
  • drivers/periph/gpio_ll: shrink gpio_conf_t (#20236)
  • hashes/sha2{24,56}: Remove static variables from sha256 (#20116)
  • nanocoap: defuse footgun in coap_get_uri_query() (#20195)
  • nanocoap: rename coap_get_code() -> coap_get_code_decimal() (#20004)

Uncategorized

  • Fix labeler action (#20137)
  • roadmap: extend peripheral drivers section (#20136)

And 52 minor changes.

Deprecations

None

Removals (1)

  • mtd/*: drop .write() if .write_page() is implemented (#15380)

Bug fixes (26)

  • dist/tools/uf2: add target to also copy families.json file (#20042)
  • backport_pr.py: increase entries per page for branches GET (#19985)
  • boards/esp32s3-usb-otg: fix the table of contents in documentation (#20156)
  • boards/native: only use pyterm wrapper with term target (#20264)
  • boards/nucleo-f413zh: Fix DMA mapping (#20225)
  • ci: fix murdock tests after dwq change (#20268)
  • cpu/cc2538: fix EUI provider (#20228)
  • cpu/cortexm_common: work around bug on WFI for STM32 (#20149)
  • cpu/stm32/periph_spi: Fix /CS handling (#20084)
  • cpu/stm32: fix periph_i2c for F1, F2, L1 and F4 families (#20100)
  • drivers/mtd: fix the order of entries in the MTD pointer XFA
    mtd_dev_xfa (#20113)
  • drivers/mtd_sdmmc: always enable the erase function (#20180)
  • drivers/slipdev: make use of chunked ringbuffer (#18066)
  • fatfs_vfs: fix the Memory leak: work (#20206)
  • gcoap: fix underflow when correcting ETag from cache (#19968)
  • gnrc/ipv6/nib: rejoin ipv6_addr_all_nodes_link_local on interface up (#20259)
  • gnrc_ipv6_nib: fix config for mixed 6lo/classic setup (#20167)
  • nanocoap: prevent integer underflow in coap_opt_put_uri_pathquery() (#19994)
  • net/gnrc/netif: set 6LN flag for ethernet if gnrc_sixloe...
Read more

Release-2023.10

21 Nov 08:38
2023.10
648e293
Compare
Choose a tag to compare

RIOT-2023.10 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.

About this release

The 2023.10 release includes:

  • PSA Crypto API implementation, one step closer to a secure IoT!
  • A bunch of default drivers for boards
  • Improved clang support

116 pull requests, composed of 318 commits, have been merged since the
last release, and 2 issues have been solved. 23 people contributed with
code in 95 days. 1109 files have been touched with 437877 (+) insertions and
3189 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

System Libraries

  • drivers/periph_sdmmc: define a High-level SDIO/SD/MMC API and low-
    level SDMMC peripheral driver interface (#19539)
  • sys/event: add event_is_queued() (#19966)
  • sys/shell/gnrc_netif: fix ifconfig set language issue (#19970)
  • sys/shell/gnrc_txtsnd: Move to separate module (#19973)
  • sys: PSA Crypto API implementation (#18547)

Networking

  • coap: add missing Content-Format definitions (#19875)
  • coap: add missing option numbers (#19874)
  • drivers/atwinc15x0: support dynamic scanning and connection to AP (#19387)
  • sys/net/sock: add sock_aux_ttl (#19836)
  • cmds_gnrc_netif: Support enabling/disabling lwIP netifs from
    gnrc_netif shell (#19972)

Packages

  • mcufont: Initial addition of MCUFont package (#19726)
  • pkg/driver_cryptocell_310: Fix Makefile (#19959)
  • pkg/flashdb: bump to 2.0.0 (#19863)
  • pkg/littlefs2: bump to v2.8 (#19942)
  • pkg/lvgl: bump to v8.3.9 (#19901)
  • lwip: bump to v2.2.0 (#19780)

Boards

  • boards/stm32f723e-disco: enable ST7789 display (#19939)
  • boards/stm32f769i-disco: enable FMC with SDRAM support (#19851)
  • boards/stm32l496g-disco: enable ST7789 display and touch panel (#19938)
  • boards: add Silabs EFM32 Giant Gecko GG11 Starter Kit (#19923)
  • boards: add support for ESP32-S3 WT32 SC01 Plus board (#19917)
  • boards/adafruit-itsybitsy-m4: configure littleFS on external flash (#19355)
  • boards/nucleo64: fix SPI Arduino mapping for most boards (#19935)
  • boards/sipeed_longan_nano: separate board definition for Sipeed
    Longan Nano TFT (#19824)
  • boards/stm32f469i-disco: enable FMC with SDRAM support (#19910)
  • boards: complete SD Card MTD definition for several bords (#19914)

CPU

  • cpu/stm32/periph: add FMC/FSMC support for STM32 (#19843)
  • cpu/sam0_common/periph: add low-level SDMMC peripheral driver for SDHC (#19760)
  • cpu/efm32/periph: add DAC support for EFM32 Series 1 (VDAC) (#19887)
  • cpu/atmega_common: hook up BAT LOW irq to power bus (#19822)
  • cpu/riscv_common: remove picolibc from blacklisting in CI (#19862)
  • cpu/stm32/periph/eth: Disable hardware checksums (#19952)
  • cpu/stm32: bump cmsis packages version (#19904)
  • cpu/stm32: fix ld script for SRAM4 (#19842)
  • dist/tools/esptools: upgrade ESP32x toolchains to GCC version 12.2 (#19452)
  • sys/psa_crypto: Ed25519 (EdDSA) support (#19954)

Device Drivers

  • drivers/ft5x06: introduce conversion for X and Y coordinates (#19867)
  • drivers/st77xx: introduce rotation defines (#19919)
  • drivers/lcd: add MCU 8080 16-bit parallel mode support (#19937)
  • drivers/lcd: add MCU-driven low-level parallel interface (#19941)
  • drivers/lcd: support MCU 8080 8-bit parallel mode (#19915)
  • drivers/touch_dev_gestures: add gesture recognition for touch devices (#19884)
  • drivers/ft5x06: use a pointer to config parameters instead of copying
    them (#19866)
  • drivers/sdmmc: store SDMMC device descriptor references in XFA (#19899)
  • drivers/stmpe811: changes for interrupt-driven touch handling and
    gesture recognition (#19885)

Documentation

  • tests/pkg/lwip: Add README.md (#19949)
  • drivers/periph: Add documentation on thread safety and initialization (#19794)
  • boards/sltb009a: complete and fix documentation (#19888)
  • doc: fix references and inches unit (#19948)

Build System / Tooling

  • compile_and_test_for_boards: Add no-compile flag (#19817)
  • dist/testbed-support: Add openmote board [backport 2023.10] (#19984)
  • dist/tools/jlink: fix DBG_PID assignment (#19960)
  • dist/tools/usb-serial: call ttys.py with its path (#19823)
  • make: COMPILE_COMMANDS_PATH adapt for external apps (#19869)

Examples

  • examples/gcoap: add saml11-xpro to CI boards with insufficient memory (#19933)

Testing

  • tests/drivers/touch_dev: allow to test a touch device in polling mode (#19882)
  • .github/test-on-iotlab: prefer Toulouse site for dwm1001 board (#19950)
  • .github: drop test-on-ryot workflow (#19847)
  • clang floating point handling fix (#19852)
  • gh-actions: remove reporting release tests to Matrix (#19879)
  • tests/gcoap_fileserver: only enable test with GCC (#19870)
  • tests/net/gcoap_fileserver: disable test on CI (#19898)
  • tests/net/gcoap_fileserver: Fix failing nightlies (#19856)
  • tests/pkg/relic: skip CI testing with samr21-xpro and llvm toolchain (#19902)

And 13 minor changes.

Bug fixes (37)

  • tree-wide: mixed box of compilation fixes with clang (#19634)
  • drivers/stmpe811: introduce conversion for X and Y coordinates (#19883)
  • pkg/tinyusb: add missing include (#19893)
  • release-test.yml: Add strasbourg creds [backport 2023.10] (#20013)
  • tests/gcoap_fileserver: add zep_dispatcher to TEST_DEPS (#19864)
  • boards/esp32-wt32-sc01-plus: fix I2C driver selection in Kconfig (#19945)
  • boards/esp32s3-wt32-sc01-plus: fix Kconfig (#19953)
  • boards/msb-430: Fix periph config & improve doc (#19922)
  • boards: fix documentation for GD32V boards and doxygen 1.9.4 (#19931)
  • cpu/efm32: fix DAC configuration (#19886)
  • cpu/esp32: fix heap definition for ESP32-S2 and ESP32-S3 (#19956)
  • cpu/esp32: fix Octal SPI RAM for ESP32-S3 (#19957)
  • cpu/esp32: fix RISC-V ISA for ESP32-C3 with GCC 12.2 (#19962)
  • cpu/sam0_common/periph/sdhc: busy waiting and clock fixes (#19815)
  • drivers/at86rf215: switch example config to use EXT3 on same54-xpro (#19912)
  • drivers/enc28j60: disable flow control (#19845)
  • drivers/ft5x06: fix initialization if callback function parameter is
    NULL (#19880)
  • drivers/ft5x06: fix vendor ID for FT6xx6 and FTxxxx register
    addresses (#19860)
  • drivers/mtd_default: fix for boards that define MTD_NUMOF (#19907)
  • drivers/mtd_spi_nor: fix init when only ztimer_msec is used (#19908)
  • drivers/st77xx: implement initialization (#19827)
  • drivers/stmpe811: fix initialization if callback function parameter
    is NULL (#19881)
  • drivers: rename st7735 to more generic st77xx (#19825)
  • gcoap: fix underflow when correcting ETag from cache [backport
    2023.10] (#19987)
  • gnrc_ipv6_nib: disable router advertisements on interface startup (#19920)
  • gnrc_ipv6_nib: fix for border router with non-6lo interfaces (#19900)
  • nanocoap: prevent integer underflow in coap_opt_put_uri_pathquery()
    [backport 2023.10] (#20038)
  • netdev/ieee802154_submac: support setting promiscuous mode option (#19906)
  • nib/_nib-6ln: bail out early if address is no longer assigned
    [backport 2023.10] (#20037)
  • pkg/nanocbor: Update for fixed nanocbor_skip_simple() [backport
    2023.10] (#19988)
  • pkg/tinydtls: allow to set buffer size from application again (#19892)
  • posix_sockets.c: Fix 2 byte int compilation errors (#19946)
  • sys/psa_crypto: Fix macro for public key max size and SE example
    [backport 2023.10] (#20039)
  • sys/shell/ping: fix ping packet size overflow (#19927)
  • tests/drivers/disp_dev: fix off by one in display area (#19844)
  • tests/pkg/lvgl*: fix the main thread stack size for ESPs (#19865)
  • ztimer/periodic: reinit remove from right clock and handle acquired
    ztimer (#19826)

Known issues

Network related issues (52)

  • 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
  • Address registration handling inappropriate (#15867)
  • app/netdev: application stops working after receiving frames with
    assertion or completely without error (#8271)
  • at86rf2xx: Dead lock when sending while receiving (#8242)
  • cpu/esp8266: Tracking open problems of esp_wifi netdev driver (#10861)
  • dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on
    PC (#14689)
  • driver/mrf24j40: blocks shell input with auto_init_gnrc_netif (#12943)
  • drivers/at86rf215: Incorrect channel number set for subGHz (#15906)
  • DTLS examples cannot send message to localhost (#14315)
  • Emcute cannot create a double-byte name (#12642)
  • ethernet: Missing multicast addr assignment (#13493)
  • ethos: fails to respond to first message. (#11988)
  • ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
  • example/gnrc_border_router cannot answer after some time (#19578)
  • examples/cord_ep: Dead lock when (re-)registering in callback
    function (#12884)
  • examples/gnrc_border_router: esp_wifi crashes on disconnect (#14679)
  • Forwarding a packet back to its link layer source should not be
    allowed (#5051)
  • gcoap example request on tap I/F fails with NIB issue (#8199)
  • gcoap: Suspected crosstalk between requests (possible NULL call) (#14390)
  • Global IPv6 addresses remain deprecated after receiving RA (#...
Read more

Release-2023.07

13 Aug 19:23
ae87208
Compare
Choose a tag to compare

RIOT-2023.07 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.

About this release

This release sees the addition of the openDSME IEEE 802.15.4 MAC.
So far it is limited to 2.4 GHz O-QPSK and drivers that have been converted
to the new sub-MAC architecture yet.

We also have two new supported MCUs: nRF53 and ATmega8. They share common
peripherals with their siblings, for nRF53 only the application core is
supported so far.

Finally, all tests live in subdirectories now, so the tests/ directory is much
more orderly.

288 pull requests, composed of 661 commits, have been merged since the
last release, and 35 issues have been solved. 26 people contributed with
code in 96 days. 6844 files have been touched with 251875 (+) insertions and
224148 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core

  • core/compiler_hints: add assume() hint (#19354)
  • core: add core_mutex_debug to aid debugging deadlocks (#18620)
  • core/lib: make the use of DEBUG_BREAKPOINT on assert optional (#19766)
  • gnrc/ipv6_auto_subnets: allow to configure minimal prefix length (#19656)

System Libraries

  • shell/cmds: add genfile command (#19401)
  • sys: add common imath module mv isin() form test/driver_dac_dds (#19378)
  • usbus: Add support for endpoint halt condition (#17090)
  • buildsystem: Always expose CPU_RAM_BASE & SIZE flags (#19746)
  • cpp11-compat: thread::sleep_for in microseconds (#19436)
  • Rust: Update dependencies (#19495)
  • SUIT: Prepared manifests (#19601)
  • sys /cpp11-compat: remove pseudo anonymous namespaces (#19477)
  • sys/isrpipe: Replace xtimer with ztimer_usec (#19645)
  • sys/posix/sockets: fix code style & set sin6_scope_id in
    _ep_to_sockaddr() (#19658)
  • sys: partly refactor make dependency resolution (#19492)
  • usbus: Implement USB_FEATURE_DEVICE_REMOTE_WAKEUP handling (#19800)
  • ztimer/periodic: remove timer on init if already running (#19806)

Networking

  • pkg/opendsme: add initial support for IEEE 802.15.4 DSME time-slotted
    MAC (#18156)
  • sys/string_utils: add memchk() (#19686)
  • drivers/sx127x: reduce use of floats (#19697)
  • gnrc/gnrc_netif_hdr_print: printout timestamp if enabled (#19589)
  • gnrc/ipv6/nib: fix 6Lo ND options on non 6Lo interface (#19604)
  • gnrc/rpl: fix incorrect addition overflow check (#19739)
  • gnrc_ipv6_nib: include RIO with all subnets in downstream RA (#19644)
  • nanocoap: allow to define CoAP resources as XFA (#19296)
  • nanocoap: clean up coap_iterate_option(), make it public (#19713)
  • nanocoap: implement extended tokens (RFC 8974) (#19487)
  • nanocoap_sock: defuse nanocoap_sock_get() API footgun (#19535)
  • pkg/openthread: remove deprecated functions (#19685)
  • semtech-loramac: extend list of supported radio with sx1261, sx1262
    and sx1268 (#19525)

Packages

  • pkg/littlefs2: bump version to 2.7 (#19812)
  • pkg/lvgl: bump to 8.3.7 (#19542)
  • pkg/lvgl: Change all references of LittlevGL to LVGL (#18788)
  • pkg/ndn-riot: drop unmaintained pkg (#19612)
  • pkg/qcbor: bump to v1.2 (#19494)

Boards

  • board: add Adafruit Grand Central M4 Express support (#19580)
  • boards,sys/arduino: major clean up (#19759)
  • boards/b_u585i_ iot02a/periph usbdev (#19796)
  • boards/nucleo-l432k: provide three periph_timer instances (#19677)
  • boards/olimex-msp430-h2618: add new board (#19706)
  • boards: add ESP32-S3-Box support (#19811)
  • boards: add ESP32-S3-USB-OTG support (#19808)
  • boards: add stm32l496g-disco support (#19576)
  • boards: support for Olimex MSP430-H1611 board (#19558)
  • cpu/gd32v: add riotboot support (#19411)
  • cpu/native: add host fs access via VFS (#19315)
  • cpu/nrf53: add I2C and SPI support (#19798)
  • cpu/nrf53: add initial support with nRF5340DK-APP board (#19769)
  • cpu/nrf53: add usbdev support (#19809)
  • cpu/nrf{53,9160}: add periph_rtt support (#19804)
  • cpu/nrf{53,9160}: add pwm support (#19781)
  • cpu/rpx0xx: add initial ADC support (#19516)
  • drivers/usbdev_synopsys_dwc2: add GD32V support (#19389)
  • boards/adafruit-clue: use shared usb_board_reset.mk for
    flash/reset/term targets (#19616)
  • boards/arduino-mkrwan1300: update board name to correct one (#19526)
  • boards/atmega8: new board (#19754)
  • boards/esp32: deduplication in common ESP32x board definitions (#19432)
  • boards/frdm-k22f: fixes long lines in periph_conf.h (#19774)
  • boards/nrf9160dk: use all available CC timer channels (#19771)
  • boards/nucleo-f429zi: Provide 2nd timer (#19447)
  • boards/rpi-pico: specify needed args when using jlink flasher (#19537)
  • boards/rpi-pico: update openocd.cfg file (#19717)
  • cpu/msp430: reorganize code (#19733)
  • cpu/nrf5x/periph/wdt: enable support for nRF53/nRF9160 (#19789)
  • cpu/nrf5x_common: rework LFCLK source selection (#19803)
  • cpu/rpx0xx: implement periph_spi (#19440)
  • cpu/rpx0xx: initial PIO support (#17425)
  • makefiles/tools/jlink.inc.mk: use ELF file for flashing (#19541)

CPU

  • cpu/avr8 common: added avr4.ld script (#19751)
  • cpu/riscv: Add PMP driver (#19712)
  • cpu/stm32/periph_dac: small improvements (#19573)
  • cpu/stm32/periph_pwm: support of complementary timer outputs (#19572)
  • debug: add DEBUG_BREAKPOINT() macro, set breakpoint on failed
    assertion (#19368)
  • build-system: Allow out of tree BUILD_DIR (#19600)
  • cpu/arm7: Fix undefined behavior based on invalid assembly (#19619)
  • cpu/atmega8: new cpu (#19753)
  • cpu/atmega_common: checking features instead of CPU models (#19752)
  • cpu/avr8_common: Prepare for rework ISR (#19777)
  • cpu/esp32: fix compilation issues with GCC 12.2 (#19450)
  • cpu/esp32: fix remaining compilation errors for GCC 12.2 (#19577)
  • cpu/nrf53: enable flashpage support (#19802)
  • cpu/nrf5x_common: reset all available CC channels (#19770)
  • cpu/nrf{52,9160}: remove duplicate sevonpend bit (#19773)
  • cpu/sam0_eth: interrupt based link detection/auto-negotiation (#19703)
  • cpu/samd5x: enable FDPLL1 at 200MHz (#19581)
  • cpu/stm32/periph/adc: fix setting ADC clock (#19629)
  • cpu/stm32/periph/dac: optimize setting DAC (#19529)
  • cpu/stm32: stm32f4 BRR from BSRR (#19670)
  • drivers/at86rf2xx: setting rx timestamp based on symbol counter for
    ATmega*RFR2 (#19605)
  • drivers/periph/rtc: improve doc on rtc_set_alarm (#19610)
  • Fix periph clk (#19628)
  • makefiles/arch/msp430.inc.mk: Fix compilation issues with GCC 12 (#19484)
  • native/syscalls: rename real_clock_gettime to clock_gettime (#19476)
  • pkg/cmsis: use unique package for CMSIS headers, DSP and NN modules (#18056)
  • pkg/tinydtls: allow build for AVR (#19346)

Device Drivers

  • drivers/mtd: add support for MTDs emulated in RAM (#19443)
  • drivers/mtd_default: add external declarations for mtd* (#19538)
  • driver/lc709203f: remove unnecessary use of float (#19662)
  • drivers/lcd: code deduplication for st7735 and ili9341 (#19816)
  • drivers/mpu9x50: clean up code (#19657)
  • drivers/mrf24j40: cleanup function (#19635)
  • drivers/pcf857x: allow to define PCF857x_BASE_ADDR at compile time (#19734)
  • drivers/sdcard_spi: small cleanup (#19527)

Documentation

  • doc: add board selection guide (#19606)
  • SUBSYSTEMD.md: add @kaspar030 to core, Rust, build system, CI &
    timers (#19727)
  • SUBSYSTEMS.md: add @maribu (#19732)
  • SUBSYSTEMS.md: add jia200x to subsystems (#19512)
  • README.md: Remove HiL Badge (#19453)
  • gnrc_sixlowpan_frag_sfr: mark as experimental + doc fixes (#19682)

Build System / Tooling

  • buildsystem: add target debug-client (#19725)
  • dist/tools/openocd: add OPENOCD_SERVER_ADDRESS variable (#19724)
  • dist/tools/openocd: add RTT port variable (#19723)
  • tools/build_system_sanity_check: add check to verify test
    applications are at the right place (#19673)
  • dist/testbed-support: remove obsolete boards from iotlab archi (#19514)
  • dist/tools/insufficient_memory: fix collection of app folders (#19598)
  • dist/tools/openocd: fix parsing of flash bank base (#19620)
  • dist/tools/openocd: start debug-server in background and wait (#19737)
  • dist/tools/usb-serial: call ttys.py with its path [backport 2023.07] (#19831)
  • dist/tools: Use /usr/bin/env to lookup Python. (#19448)
  • make/usb_board_reset: define {preflash,term}-delay when necessary (#19617)
  • Makefile.include: don't use target lstfile implicitly (#19797)
  • Makefile.include: Generate lst file using objdump (#19745)

Kconfig

  • pkg/libbase58: add kconfig support (#19623)
  • sys: add Kconfig support for clif (#19621)
  • sys: add some missing kconfig + adapt related tests when possible (#19622)
  • boards/esp32s3-pros3: Fix stdio kconfig model (#19708)
  • cpu/esp32: deduplication in Kconfig for ESP32x SoCs (#19433)
  • cpu/rpx0xx: Fix kconfig model (#19660)
  • drivers/nrf24l01p: model in kconfig (#19650)
  • periph/timer: fix Kconfig menu title (#17830)
  • pkg/micropython: model in Kconfig (#19672)
  • pkg/openthread: Fix Kconfig and broken example (#19700)
  • pkg/openthread: model in kconfig (#19671)
  • Remodel the USB in Kconfig (#19086)
  • sys/stdio_semihosting: model in Kconfig (#19651)
  • sys/usb/Kconfig: Fix default PID (#19701)
  • sys: model ecc, evtimer, pipe and shell_lock in kconfig (#1963...
Read more

Release-2023.04

28 Apr 06:34
8b689f4
Compare
Choose a tag to compare

RIOT-2023.04 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.

About this release

The 2023.04 release includes:

  • Mass Storage Class Support in USBUS
  • Initial support for libSCHC
  • FlashDB support
  • BLE downlink in GNRC Border Router
  • DTLS support for nanoCoAP in client mode
  • Congestion control for 6LoWPAN Selective Fragment Recovery
  • avr/flash_utils: strings (and other const data) no longer needs to be copied
    to RAM
  • New boards:
    • esp32c3-wemos-mini
    • esp32s2-lilygo-ttgo-t8
    • esp32s2-wemos-mini
    • esp32s3-pros3
    • rpi-pico-w
    • sipeed-longan-nano
  • New device drivers:
    • Black/white e-Paper/e-Ink display
    • RFID reader (MFRC522)
    • ST VL53L1X Time-of-Flight sensor

280 pull requests, composed of 595 commits, have been merged since the
last release, and 3 issues have been solved. 27 people contributed with
code in 83 days. 1246 files have been touched with 177090 (+) insertions and
36429 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core

  • core/compiler_hints: add likely() / unlikely() hints (#19156)
  • core/xfa: disable asan on llvm (#19271)
  • pkg/libfixmath: bump version (#19182)

System Libraries

  • drivers/wdt: add periph_wdt_auto_start for early watchdog (#18257)
  • fuzzing: Add uri_parser setup (#19057)
  • Revert "sys/pm_layered: pm_(un)block add attribute optimize(3)" (#19155)
  • sys/coding: add XOR based coding module (#17045)
  • sys/event: add event sources (#18758)
  • sys/irq: Add C++ wrapper using RAII (#17066)
  • sys/phydat: add functions for Unix time conversion to phydat (#19080)
  • sys/trickle: cleanup deps (#19404)
  • sys/vfs: add force option to vfs_umount() (#19320)
  • usbus/msc: add CONFIG_USBUS_MSC_AUTO_MTD option to create LUNs on
    init (#19356)
  • usbus/msc: add initial Mass Storage Class support (#19242)
  • USBUS: Add URB support (#17091)
  • ztimer: add ztimer_stopwatch convenience functions (#19343)
  • bootloaders: fix bootloader button logic (#19365)
  • makefiles/suit: make it possible to accept multiple SUIT keys (#18459)
  • sys/bitfield: don't touch unrelated bits in bf_{set, clear}_all() (#19400)
  • sys/cpp11-compat: Remove xtimer deps (#19369)
  • sys/fmt: optimize scn_u32_dec scn_u32_hex (#19027)
  • sys/fmt: use fflush(); stdio_write() instead of fwrite() (#19250)
  • sys/shell_lock: do not call strlen, less jumpy (#19157)
  • sys/tiny_strerror: make use of flash_utils.h (#19332)
  • test_utils/print_stack_usage: use thread.h API (#19226)
  • usbus/dfu: do not create alt interface if NUM_SLOTS=1 (#19386)

Networking

  • gcoap/fileserver: add event callbacks (#18414)
  • gnrc_sixlowpan_frag_sfr_congure: optional congestion control support
    (#16171, #16159, #16170, #16158)
  • gnrc_static: add static network configuration (#18477)
  • nanocoap_link_format: add helper function to parse Link Format (#18134)
  • pkg/tinyusb: add tinyUSB netdev driver (#18903)
  • cord: bump reference from draft to rfc (#19367)
  • cord: convert to ztimer (#19391)
  • gnrc_ipv6_nib: clean up _resolve_addr() (#18939)
  • nanocoap_sock: ensure response address is the same as request address (#19361)
  • nanocoap_sock: implement DTLS socket (#18724)
  • nanocoap_sock: implement nanocoap_sock_delete() (#18738)
  • nanocoap_sock: store message ID in nanocoap_sock_t (#19178)
  • pkg/tinydtls: Reduce default verbosity, increase default sizes when CoAP is
    used (#19331)
  • shell/cmds: GNRC: replace puts() with printf() (#19327)
  • shell/gnrc_icmpv6_echo: separate ICMPv6 echo sending / parsing from
    shell command (#18934)
  • sock_dtls: move common code into sock_dtls_establish_session() (#19142)
  • sys/net/gnrc/netif: fixing no global address wait (#19402)
  • sys/net/grnc/netreg: avoid creating an infinite loop (#19238)

Packages

  • libschc: initial import as package (#18515)
  • pkg/arduino_adafruit_sensor: add Adafruit Unified Sensor Driver as
    package (#17460)
  • pkg/wolfssl: Update wolfSSL to 5.5.4 and add DTLS 1.3 support (#19302)
  • pkg: add FlashDB (#17612)
  • pkg/fatfs: bump to r0.15 (#19347)
  • pkg/lz4: bump version to 1.9.4 (#19180)
  • pkg/minmea: bump version (#19183)
  • pkg/nanopb: bump version to 0.4.7 (#19179)
  • pkg/tinydtls: bump version (#19184)
  • pkg/tinydtls: drop libc_gettimeofday dependency (#19247)
  • pkg/tinyusb: bump to 0.15 (#19276)
  • pkg/u8g2: bump version (#19285)
  • pkg/wolfssl: Fix memory leaks in wolfSSL sock_tls (#19190)
  • tests/pkg_nanors: use static allocation (#19382)
  • pkg/tinyusb: add GD32VF103 support (#19256)
  • pkg/lwext4: add lightweight implementation of the ext2/3/4 filesystem (#18682)

Boards

  • boards/esp32c3-wemos-mini: add support for Wemos ESP32-C3 mini (#19417)
  • boards/esp32s2-mini: add definition for ESP32 S2 Mini (#18863)
  • boards/nucleo64: Add pinout diagrams from UM1724 (#19406)
  • boards/seeedstudio-gd32: add mtd_sdcard_default (#19293)
  • boards/seeedstudio-gd32: complete and improve board definition (#19166)
  • boards/sipeed-longan-nano: add BOOT as user button (#19419)
  • boards/sipeed-longan-nano: add definition for the Sipeed Longan Nano
    GD32VF103 board (#19170)
  • boards: add esp32s3-pros3 support (#19088)
  • boards: support for the LILYGO TTGO T8 ESP32-S2 board (#19284)
  • cpu/native: implement periph_rtc_ms (#19340)
  • drivers/mrf24j40: add support for IEEE 802.15.4 Radio HAL (#18472)
  • drivers/mtd_sdcard: add mtd_sdcard_default module (#19216)
  • makefiles/tools/serial.inc.mk: Allow detection of debug adapter (#19119)
  • boards/adafruit-itsybitsy-m4: turn off APA102 LED on startup (#19357)
  • boards/esp*: complete SD Card MTD config (#19255)
  • boards/esp32: enable RGB LED support (#19408)
  • boards/gd32v: improve board definitions (#19249)
  • boards/rpi-pico-w: fix too large board image (#19159)
  • boards/rpi-pico-w: initial support for rpi pico W board (#19071)
  • boards/sipeed-longan-nano: default to flashing via DFU (#19204)
  • boards/stm32f4discovery: default to stdio via CDC ACM (#19259)
  • boards: common: stdio_cdc_acm: let tests wait a bit for serial port (#19128)
  • cpu/rpx0xx/cmsis: Update vendor header files (#19416)

CPU

  • bootloaders/riotboot: add tinyUSB DFU support (#19010)
  • core/init: add early_init() (#19082)
  • cpu/esp32: add periph_flashpage support (#19079)
  • cpu/gd32v: add periph_adc support (#19188)
  • cpu/gd32v: add periph_dac support (#19248)
  • cpu/gd32v: add periph_gpio_irq support (#19185)
  • cpu/gd32v: add periph_gpio_ll and periph_gpio_ll_irq support (#19243)
  • cpu/gd32v: add periph_i2c support (#19201)
  • cpu/gd32v: add periph_pwm support (#19209)
  • cpu/gd32v: add periph_rtc support (#19186)
  • cpu/gd32v: add periph_rtc_mem support (#19254)
  • cpu/gd32v: add periph_rtt support (#19202)
  • cpu/gd32v: add periph_spi support (#19214)
  • cpu/gd32v: add pm_layered support in periph_pm (#19187)
  • cpu/stm32/periph: Add GPIO LL IRQ support for STM32F1 (#19412)
  • cpu/stm32/periph: Implement GPIO LL for STM32F1 without IRQ support
    (yet) (#19407)
  • picolibc: add support for picolibc >= 1.8 (#19341)
  • sys/stdio_udp: add stdio over UDP (#19081)
  • cpu/esp32: cleanup of ESP-IDF interface API (module esp_idf_api) (#19426)
  • cpu/esp_common: use generic WIFI_SSID/WIFI_PASS defines (#19286)
  • cpu/gd32v/periph_i2c: interrupt based driver (#19269)
  • cpu/native: Switch to ztimer for gettimeofday (#19349)
  • cpu/riscv_common: convert to uword_t usage (#19345)
  • cpu/sam0_common: adc: implement 16 bit mode by oversampling (#19165)
  • cpu/stm32/periph/i2c: export PERIPH_I2C_MAX_BYTES_PER_FRAME (#19279)
  • cpu/stm32/periph/timer: don't stop counter (#19263)
  • cpu/stm32/periph/timer: fix clobered IRQ flag (#19385)
  • cpu/stm32/usbdev_fs: fix ep registration and EP_REG assignments
    [backport 2023.04] (#19462)
  • drivers/at24cxxx: implement _mtd_at24cxxx_read_page (#19270)
  • Fix stm32 timer periodic (#19363)
  • sam0/usbdev: partial revert of #17086 (#19384)
  • sys/usbus: check for the number of required and provided EPs in
    static configurations (#19371)

Device Drivers

  • black/white e-Paper/e-Ink display driver (#12509)
  • drivers/mfrc522: add new driver (#16782)
  • drivers/servo: reimplement with high level interface (#18392)
  • drivers/usbdev_synopsys_dwc2: add ESP32x power management (#19399)
  • drivers: add driver for ST VL6180X ranging and ambient light sensor (#10462)
  • drivers/at24cxxx: merge mtd driver with at24cxxx.c (#19281)
  • drivers/periph_common/flashpage: fix silent error (#19175)
  • drivers/slipdev: implement sleep states (#17810)
  • drivers/ws281x: improve timing for ESP32x (#19422)
  • drivers/ws281x: add RMT hardware support for ESP32x SoCs (#19424)

Documentation

  • doc: Add out of tree RIOT app documentation (#19324)
  • blobs: include documentation in doxygen (#19200)
  • doc/porting-boards.md: fix code snippets in md view (#19206)
  • Doc: document generate-makefile.ci (#19239)
  • doccheck: avoid generating dot or html (#19228)

Build Sy...

Read more

Release-2023.01

31 Jan 15:06
2023.01
c5fe52f
Compare
Choose a tag to compare

RIOT-2023.01 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.

About this release

We are proud to announce the release of RIOT 2023.01, marking the tenth
anniversary of the project. Over the past decade, RIOT has become a thriving
open-source community, delivering cutting-edge technology for Internet of
Things (IoT) devices. This release builds on top of the hard work and
dedication of our developers, users, and contributors, and we would like to
extend a heartfelt thank you to everyone who has been a part of our journey.
Here's to another decade of innovation and growth!

Noteworthy changes the 2023.01 release includes, among many fixes and little
things:

  • ztimer_ondemand: The next step towards seamless and automatic power management.
  • The Rust examples now default to stable Rust.

187 pull requests, composed of 570 commits, have been merged since the
last release, and 13 issues have been solved. 37 people contributed with
code in 58 days. 1248 files have been touched with 516544 (+) insertions and
12047 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core

  • core/lib: define MAYBE_UNUSED (#18884)
  • core/marco: fix DIV_ROUND (#18858)

System Libraries

  • congure_abe: initial import of TCP Alternative Backoff with ECN for
    CongURE (#15968)
  • congure_quic: initial import of QUIC congestion control (#15952)
  • pkg/tinyusb: add common USB descriptors implementation (#18835)
  • sys/bitfield: add bf_find_first_{set, unset}() (#18833)
  • sys/bitfield: add bf_popcnt() (#18879)
  • sys/malloc_tracing: add module to trace dyn memory management (#18912)
  • sys/stdio_uart: add stdio_uart_onlcr (pseudo-) module (#18731)
  • sys/tiny_strerror: add tiny_strerror_minimal (#18768)
  • ztimer: add ztimer_ondemand module for implicit power management (#17607)
  • rust: Use stable Rust (#18839)
  • suit: start worker thread on demand, make suit_handle_url() public (#18551)
  • sys/pm_layered: align pm_blocker_t for speed (#18846)
  • sys/print_stack_usage: update MIN_SIZE (#18917)
  • sys/shell: drop ping6 alias (#18931)
  • sys: preprocessor successor module (#18299)
  • tests/pbkdf2: de-flanky-fy test (#18932)
  • usbus/hid: fix buffer overflow in hid_io (#18860)

Networking

  • examples/gcoap: add IPv4 support (#17763)
  • gnrc/ipv6_auto_subnets: add CONFIG_GNRC_IPV6_AUTO_SUBNETS_STATIC
    option (#17429)
  • gnrc_sixlowpan_frag_sfr: add support for queue-based ECN (#16175)
  • gnrc_sixlowpan_frag_sfr: provide CongURE support (#16156)
  • nanocoap: add support for no-response option (#18154)
  • sys/net/nanocoap: introduce Accept option helper (#18772)
  • sys/net: add Size1 and Size2 option numbers (#18799)
  • drivers/at86rf2xx: migrate to ztimer (#18822)
  • gnrc: make pseudo-modules explicit + documentation improvements (#18727)
  • gnrc_sock_udp: accept response from any address if remote is
    multicast (#18854)
  • gnrc_udp: use small stack-size (#18709)
  • net/nanocoap: remove coap_pkt token ptr (#17983)
  • paho: use GNRC instead of lwip (#18982)
  • sys/include: remove kernel_defines.h where not needed (#18887)

Packages

  • pkg/arduino_sdi_12: bump version, fix patches (#18796)
  • pkg/lvgl: bump to 8.3.3 (#18794)
  • pkg/tinyusb: support for multiple configuration descriptors (#18983)
  • pkg/wamr: Update to WAMR-1.1.1 (#18994)

Boards

  • boards/cc1350: add info concerning shell access (#18808)
  • boards/dwm1001: add saul_gpio support (#18818)
  • boards/lora-e5-dev: add arduino feature (#18792)
  • boards/nucleo-l496zg: add ADC support (#18940)
  • boards: add support for EFM32GG12 Thunderboard Kit (SLTB009A) (#18755)
  • cpu/efm32: add periph_adc support for Gecko Series 2 (#18933)
  • cpu/efm32: add periph_uart_modecfg support for Gecko Series 2 (#18946)
  • drivers/usbdev_synopsys_dwc2: add support for internal UTMI HS PHY (#18714)
  • EFM32: add cpu family EFR32ZG23 and board xG23-PK6068A (#18780)
  • pkg/tinyusb: add nrf52 support (#18781)
  • pkg/tinyusb: add STM32 USB FS device driver (#18786)
  • pkg/tinyusb: add ULPI and UTMI+ HS PHY support for STM32 USB OTG HS
    ports (#18776)
  • boards/blxxxpill-128kib: default to CDC ACM for stdio (#18743)
  • boards/common/nrf52: improve default clock config (#18811)
  • boards/im880b: refactor code (#18451)
  • boards/nucleo-f207zg: support for ADC (#18847)
  • boards/nucleo-l* and g*: update doc concerning Vbat (#18984)
  • cpu/stm32: Fix stm clock configuration (#18797)

CPU

  • cpu/saml21: add interaction with pm_layered for peripheral drivers (#18821)
  • cpu/stm32: add unused backup RAM as extra heap (#18921)
  • debug_irq_disable: add module to debug time spent in irq_disable (#18795)
  • boards/native: Remove macOS as native target (#18735)
  • cpu/efm32: preparing introduction of Gecko Series 2 (#18764)
  • cpu/saml21/pm: allow blocking IDLE mode (#18825)
  • cpu/stm32: improvement of USB device driver selection (#18787)
  • makefiles/cflags.inc.mk: don't include absolute path in FILE
    macro (#18913)
  • makefiles/gnu.inc.mk: set flags based on compiler version (#18935)
  • pkg/gecko_sdk: Bump to version 4.1.2 (#18739)
  • pkg/tinyusb: implement stdio via CDC ACM (#18804)
  • sam0/rtc_rtt: optimizations to get around the painful long syncwaits (#18920)
  • socket_zep: make use of crc16_ccitt_false_update() (#18779)
  • treewide: replace RIOT_FILE_RELATIVE with FILE (#18936)

Device Drivers

  • drivers/at: add a function read a response plus the OK (#18753)
  • matrix_keypad: Add matrix-style keypad module (#18733)
  • drivers/at86rf2xx: isolate netdev logic (#18988)
  • drivers/sdcard_spi: make use of crc16_ccitt_false_update() (#18778)

Documentation

  • boards/cc13xx_cc26xx: remove broken HTML links and headings in doc (#18809)
  • boards/nucleo-l4r5zi: doc improvements (#18747)
  • docs/kconfig: "not longer" -> "no longer" typo (#18922)
  • pkg/tinyusb: update doc for tusb_app_config.h and common descriptor
    handling (#18901)

Build System / Tooling

  • .vscode: import initial RIOT-OS style (#18945)
  • build-system: add capability to execute scripts with custom executor (#18770)
  • dist/tools: add "RESET_PIN" value for the dwm1001 (#18815)
  • examples/gnrc_border_router: add option to re-use existing TAP
    interface (#18836)
  • makefiles/tools/serial.inc.mk: add support for bootterm (#18749)
  • tapsetup: add --loss & --delay option (#18885)
  • tools/cpy2remed: add support for NOD_xxxx removable media (#18824)
  • build system: fix compilation with LLVM (#18845)
  • CI: can_fast_ci_build.py unittests fix (#18996)
  • dist/tools/pyterm: avoid deprecated .setDaemon (#18754)
  • utils/uncrustify: display warning instead of error (#18877)

Kconfig

  • pkg/tinyusb: add Kconfig support for stdio_tinyusb_cdc_acm (#19007)

Examples

  • examples/gcoap: replace _parse_endpoint by sock_udp_name2ep (#17870)
  • examples/timer_periodic_wakeup: switch to ztimer (#19001)
  • examples: Remove macOS references in README (#18850)

Testing

  • tests/pkg_tinyusb*: add a BOARD to make make build (#18888)
  • CI: drop obsolete murdock note (#18905)
  • CI: update murdock yml (#19022)
  • test/unittest: cleanup most vera++ complains (#18807)
  • tests/bitarithm_timings: shorten timeout from 5s to 200ms (#18894)
  • tests/periph_timer: also test for spurious IRQs (#18963)
  • unittests/uri_parser: Rework tests to be more verbose (#18734)

API Changes

  • nanocoap: add request context to coap_handle_req() (#18816)

Uncategorized

  • release-notes.txt: add 2022.10 release notes (#18947)
  • .drone: Remove unmaintained .drone file (#18832)
  • README.md: update CI badge (#18685)
  • README.md: update features (#18777)

And 38 minor changes.

Bug fixes (44)

  • pkg/tinyusb: add usb_board_reset support (#19006)
  • boards/common/blxxxpill: Fix pin conflicts in periph_conf (#18785)
  • boards/common/nrf52: fix timer config (#18948)
  • boards/dwm1001: use lis2dh12_i2c instead of lis2dh12_spi (#18857)
  • bootloaders/riotboot_dfu: fixes including sys/usb/usbus/dfu (#18964)
  • core/mbox: fix race condition (#18955)
  • cpu/atmega_common/periph_timer: fix spurious IRQs (#18978)
  • cpu/efm32/pm: fix blocking EM1 (#18775)
  • cpu/efm32/timer_series2: fix interaction with pm_layered (#18814)
  • cpu/esp32: set bootloader XTAL frequency configuration to automatic (#18829)
  • cpu/esp{32,8266}/periph_timer: allow changing callback or freq (#18971)
  • cpu/nrf5x/timer: fix high current consumption in powered off state (#18953)
  • cpu/nrf5x/uart: run STOPTX task after finished tx (#18954)
  • cpu/nrf5x_common/periph_timer: fix spurious IRQs (#18970)
  • cpu/qn908x: use bitarithm_test_and_clear() & fix cb (#18989)
  • cpu/stm32/periph_timer: fix spurious IRQs and race conditions (#18969)
  • cpu/stm32: fix periph_dma (#18711)
  • cpu/stm32: fix RAM_LEN for F427, F429, F437, F439 models (#18919)
  • dist/tools/usb-serial: fix exception on missing entries (#19011)
  • drivers/atwinc15x0: don't disable interrupts (#18800)
  • drivers/ethos: Fix off-by-one bug (#18823)
  • drivers/slipdev: fix off-by-one error in _recv() (#18826)
  • drivers/usbdev_synopsys_dwc2: small f...
Read more

Release-2022.10

02 Dec 15:31
2022.10
f1873d8
Compare
Choose a tag to compare

RIOT-2022.10 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.

About this release

The 2022.10 release includes, among many many bug fixes and improvements, the
following prominent contributions:

Security Fixes

The GNRC network stack has received a number of security fixes. All users of
GNRC are advised to update to the new release. Given that no user facing
breaking API changes are included, we are hopeful that the update is painless
and quickly possible.

ESP32 family

RIOT has been ported to the ESP32-C3, ESP32-S2, and the ESP32-S3 MCUs. In
addition driver support for the integrated BLE transceiver of the ESP32 MCUs
has been added.

Major CI Upgrade

While the CI is developed in an independent repository, it is still a noteworthy
change that our CI software, Murdock, was updated since the last release. In
addition to changes under the hood the web front end got a major revamp. You
will directly notice the improvements in page load time and clarity/structure of
the interface. If you haven't already, please check out https://ci.riot-os.org
to take a look.

Support for Priority Inheritance in core_mutex

If a shared resource guarded by a mutex is used by a high priority and a low
priority thread, the high priority thread may end up waiting on the low priority
thread to return the resource. If medium priority threads now interrupt the
low priority thread while working with the shared resource, the high priority
thread ends up waiting on both medium and low priority threads. This effect is
called priority inversion.

Priority inversion can in most cases be solved by carefully assigning priorities
and resources. In some cases however, this cannot be avoided: Let's consider
a scenario in which an I2C temperature sensor and an I2C IMU are used. Since
temperature changes are slow in frequency, the temperature readings are
assigned the lowest priority, while the IMU readings are assigned the highest
priority. The sensible approach here is to have both sensors on distinct I2C
buses. However, if e.g. only a single I2C bus is available by the hardware
priority inversion cannot be prevented by careful resource and priority
assignment alone. In these cases the module core_mutex_priority_inheritance
can be used to lend the low priority thread the priority of the high priority
thread while the high priority thread is waiting for the mutex hold by the
low priority thread.

After RIOT has already been launched into space
it is now ready to for
Mars.

USB Support for STM32F1 MCUs

While RIOT has longstanding USB support for many STM32 MCU families, the F1
family was not supported due to some peculiarities in the memory layout. The
driver has now been extended to handle them correctly. With this, the popular
STM32F103 bluepill board now supports stdio via USB, which however still
has to be manually enabled e.g. by:

USEMODULE=stdio_cdc_acm BOARD=bluepill make -C examples/default

Support for podman

Just add an export DOCKER=podman to your ~/.profile (or ~/.bashrc, or ...)
and an make BUILD_IN_DOCKER=1 will use podman instead of
docker to run the RIOT build container. Two major advantages of using podman
over docker is the support of rootless containers and not depending on a
central background daemon.

Support for Sharing nRF52 combined I2C/SPI Peripherals

The nRF52 MCUs have a limited number of combined I2C/SPI peripherals.
Previously, each such peripheral could either provide a single I2C or a
single SPI bus. A board configuration that used the same combined peripheral
to provide both an SPI and an I2C bus previously resulted in bad surprises at
run-time.

The I2C/SPI drivers have now been reworked so that they can be shared in
round-robin fashion between multiple I2C and SPI buses. This is especially
useful for the upcoming support of the Bangle.js 2 watch that uses more I2C
buses than combined I2C/SPI peripherals available on the used nRF52840 MCU.
Thanks to the sharing of peripherals, all I2C buses can now be provided by a
single peripheral.

Support for GCC 12.2.0

Many fixes for compilation and runtime issues that only started to surface
with GCC 12.2.0 have been fixed. This allows our users to confidentially choose
the current release with little to no fear that toolchain updates in the near
future will break the precious projects. In addition, we hope that the next
CI update will also cause less friction.

Release Statistics

312 pull requests, composed of 819 commits, have been merged since the
last release, and 29 issues have been solved. 47 people contributed with
code in 84 days. 1799 files have been touched with 56827 (+) insertions and
108634 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core

  • core/macros: add math helper macros (#17702)
  • core/mutex: fix typo in docs (#18605)
  • core: implement core_mutex_priority_inheritance (#17040)
  • core: Treat stack overflows as an unrecoverable error (#18448)

System Libraries

  • doc: add deprecation notice on deprecated pseudo-modules (#18698)
  • event_periodic_callback: add convenience wrapper for periodic
    callbacks (#18598)
  • shell/cord_ep: Add user guidance & prevent accidental crash (#18053)
  • sys/bhp_*: add initial support for generic Bottom Half Processor (#18435)
  • sys/bhp_msg: add IPC based implementation of Bottom Half Processor (#18464)
  • sys/checksum: add CRC-16 implementation without lookup table (#18701)
  • sys/checksum: add CRC-32 checksum (#18686)
  • sys/checksum: Adding three new crc16 variations (#18516)
  • sys/string_utils: add strscpy() (#18621)
  • sys/ztimer: add LPTIMER auto init (#17654)
  • vfs: introduce vfs_format_by_path() (#18447)
  • doccheck: make the file pattern more match riot.doxyfile (#18431)
  • event_periodic_callback: remove unnecessary dependency (#18610)
  • fmt: unify and align wording regarding characters, digits, and bytes (#18315)
  • littlefs: make block size configurable at compile time (#18141)
  • makefiles/tools/serial.inc.mk: Improve PORT selection when RIOT's USB
    CDC ACM is used for stdio (#18525)
  • makefiles: Rust fixes and info extensions (#18630)
  • rust: Update dependencies (#18642)
  • rust: Update dependencies, build and test more on stable (#18678)
  • security: Reference CPE used for RIOT (#18574)
  • suit: rename worker thread functions (#18549)
  • sys/shell/vfs: make output of vfs df human readable (#18550)
  • USBUS/cdc_ecm: register with netdev (#18603)
  • vfs: drop unused abs_path parameter (#18672)

Networking

  • dns: provide generic dns_query() function (#18378)
  • gcoap/fileserver: add file and directory creation and deletion (#18133)
  • gcoap: add remote sock_udp_ep_t to coap_request_ctx_t (#18519)
  • gcoap_dns: Add DNS cache support (#18329)
  • gnrc/lorawan: add basic LoRaWAN 1.1 features (#17884)
  • gnrc_netif_lorawan: add support for LINK_UP/_DOWN events (#18699)
  • nanocoap_sock: add nanocoap_sock_put() (#18514)
  • net/gnrc_netif: add support for priority queues (#18496)
  • net/sock/dtls: introduce sock_dtls_sendv_aux() (#18363)
  • pkg/lwip: add support for HAL radios that require IRQ offloading (#18465)
  • sock_dodtls: Initial import of a DNS over DTLS client (#16861)
  • sys/net/gnrc_netif: Make use of confirm send (#18139)
  • sys/net/network_layer/ipv4/addr: add ipv4_addr_print function (#18694)
  • sys/shell: ncput: add option to read from stdin (#18639)
  • sys/uri_parser: Adding the port as uint16_t (#18096)
  • codespell: fix remaining issues (#18604)
  • dhcpv6: don't treat zero option as an end-of-payload marker (#18625)
  • gcoap: accept resources in any order (#18651)
  • gcoap: Forego IP address comparison in memo finding of multicasts (#17978)
  • gcoap: move tl_type to coap_request_ctx_t (#18313)
  • gcoap_dns: implement Max-Age-based TTL calculation (#18443)
  • gcoap_forward_proxy: send empty ACK when response takes too long (#18386)
  • gnrc_ipv6_nib: handle iface_up/iface_down in IPv6 thread (#18708)
  • pkg/lwip: fix netdev concurrency issues (#18479)
  • pkg/nimble: Replace double quotes with single quotes for two CFLAGS (#18376)
  • pkg/nimble:derive peer address type from peer address (#18474)
  • sock_dns_cache: move to dns_cache (#18318)
  • sys/net: include misplacement inside linkage-specification (#18587)
  • treewide: s/gnrc_pktbuf_cmd/shell_cmd_gnrc_pktbuf/ (#18640)

Packages

  • Add package tiny-vcdiff (#17797)
  • pkg/cryptoauthlib: Pass ATCA_NO_HEAP Flag to library (#18705)
  • pkg/esp32_sdk: additional patches required for ESP32-C3 (#18339)
  • pkg/esp32_sdk: additional patches required for ESP32-S3 (#18408)
  • lvgl/contrib: allow for SDL display driver height/width to be
    adjusted (#18463)
  • pkg/libhydrogen: bump version (#18564)
  • pkg/lvgl: bump version to 8.3.1 (#18366)
  • pkg/nanocbor: bump version (#18543)
  • pkg/tinydtls: bump version (#18368)
  • remove version comment fixing build issue (#18489)
  • pkg/tinyusb: add tinyUSB as packa...
Read more

Release-2022.07

29 Aug 13:47
2022.07
72b14ac
Compare
Choose a tag to compare

RIOT-2022.07 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.

About this release

The 2022.07 release includes many changes, some highlights of which are:

GPIO Low-level drivers

A new API, gpio_ll, has been introduced for highly efficient access to GPIO
pins grouped in ports.

The API is limited to internal use for the time being, but still paves the way
towards using port multipliers like local GPIO pins, and for improved
bit-banging implementations (e.g. around WS281x-style LEDs).

Improved serial port selection

When using multiple boards simultaneously, a new serial port selection
algorithm can be activated by setting MOST_RECENT_PORT=1. Of all serial ports
whose metadata matches the board's known properties, it selects the most
recently connected one.

ESP support

The ESP IDF (IoT Development Framework; the vendor's provided tools) has been
upgraded to version 4.4, and many peripheral drivers are now implemented using those.

343 pull requests, composed of 767 commits, have been merged since the
last release, and 5 issues have been solved. 38 people contributed with
code in 107 days. 1684 files have been touched with 43451 (+) insertions and
82174 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core

  • provide dummy implementation of thread and mutex for riotboot (#17959)
  • kernel_defines: drop CONST definition (#18212)

System Libraries

  • sys/event: Add documentation and enforce waiter on wait (#17952)
    sha256sum shell commands (#18040)
  • sys/shell: new module shell_lock (#13082)
  • Fido2: Enhance flash persistence (#17096)
  • pkg/fatfs, shell: enable RTC support if rtt_rtc is used (#17912)
  • pm: don't (un)block IDLE mode (#17974)
  • sys/posix/include/arpa: use __restrict instead of restrict (#18034)
  • sys/quad_math: remove unused module for quad arithmetic (#18032)
  • sys/shell: drop _builtin_cmds define (#18075)
  • sys/shell_commands: convert to SHELL_COMMAND() (#18152)
  • sys/ztimer: no log for stdio_rtt/semihosting (#18176)

SUIT

  • suit/transport/vfs: add VFS as source for firmware updates (#18045)
  • sys/sc_suit: add seq_no command (#17941)
  • examples/suit_update/test: use 'suit seq_no' to get version (#17973)
  • sys/suit/storage/vfs: initial import (#17943)
  • sys/suit/storage: change log to LOG_DEBUG (#18020)
  • sys/suit: avoid installing payload twice (#17984)
  • sys/suit: save seq_number when parsing manifest (#17939)

VFS

  • sys/shell/vfs: add umount, rmount and mkdir commands (#18112)
  • sys/vfs: add vfs_unmount_by_path() (#18109)
  • sys/vfs_util: add VFS helper functions (#18038)
  • sys/vfs_util: add vfs_file_() functions and md5sum, sha1sum and

Rust

  • Add some Rust library building infrastructure (#16833)
  • makefiles/rust: Err early on setup issues, provide suggestions (#18220)
  • rust: Build from git branches (#18151)
  • rust: Explicitly select nightly (#18243)
  • rust: Update versions (#18181)

Networking

  • congure_reno: initial import of TCP Reno congestion control (#15953)
  • drivers/sx1280: add driver for SX1280 transceiver v2 (#18033)
  • gnrc/ipv6_auto_subnets: init RPL root when adding a prefix (#17350)
  • ieee802154: add default max frame retransmissions config (#18264)
  • pkg/lwip: Add basic version of netif_get/set_opt (#18069)
  • pkg/lwip: Add netif_t struct, register all netifs (#16974)
  • pkg/nimble/autoadv: add support for ext_adv (#17774)
  • sys/iolist: add helper functions (#18044)
  • sys/net/gnrc: add gnrc_tx_sync for gnrc_sixlowpan_frag_sfr (#16090)
  • sys/net/gnrc_pktbuf_static: add use-after-free detection (#18227)
  • sys/net/netif: add convenience functions for getting/printing IPv6
    addresses (#18161)
  • gnrc/ipv6_auto_subnets: allow to join multiple subnets (#17547)
  • gnrc_ipv6_nib: fix inconsistent ABR valid lifetime representation (#18126)
  • gnrc_netif: make auto-config of compression context optional (#17678)
  • gnrc_netif: use event loops by default to process ISR (#16748)
  • gnrc_sock: implicitly set netif if there is only a single one (#18065)
  • gnrc_sock: warn about non-zero receive timeouts with sock_async (#17691)
  • net/ble/skald: make advertising interval configurable per context (#17834)
  • net/gnrc: Fixing whitespace in the documentation (#18036)
  • net/sock/udp: designated initializer, C++ compatibility (#18035)
  • sock_dns: implement DNS cache (#17680)
  • sock_dns_cache: move to dns_cache (#18318)
  • sock_dns_cache: move to dns_cache [backport 2022.07] (#18327)
  • sys/include/net/af: fix doc comment (#17946)
  • sys/net/gnrc_pktbuf_static: fix documentation of use-after-free
    detection (#18244)
  • tests: rework ieee802154 drivers (#17838)

GCoAP

  • Add file server (#17956)
  • add helper function to get request header from a request memo (#18095)
  • add nanocoap_cache support for clients (#17888)
  • DNS: initial import of a DNS over CoAP (DoC) client (#16705)
  • Forward prxy: provide cache validation mechanism (#17801)
  • ensure response address is the same as request address (#18026)
  • small dependencies fixes (#17944)

Nanocoap

  • add coap_get_token() (#17976)
  • Add handler for resource-based subtrees (#13698)
  • cache for CoAP responses (#13889)
  • add nanocoap_sock_block_request() (#17958)
  • add nanocoap_sock_url_connect() (#17960)
  • add nanocoap_vfs_get() (#17937)
  • add nanocoap_vfs_put() (#17962)
  • follow-up fixes (uncontroversial parts) (#17977)
  • clean up state management (#18047)
  • deprecate coap_pkt token ptr (#18013)
  • refactor to remove work-buffer requirement (#17509)

Packages

  • drivers/atwinc15x0: add timeout to init (#18214)
  • pkg/libcose: add RIOT as crypto backend (#17701)
  • pkg/pkg: add GIT_QUIET (#17987)
  • tests/pkg_cmsis-dsp: add kconfig configuration + cleanup package
    modules (#18001)
  • makesystem: speedup pkg cloning if no git-cache is available (#16316)
  • pkg/littlefs2: bump version to 2.5.0 (#18049)
  • pkg/lv_drivers: cleanup Makefile (#18302)
  • pkg/lvgl: bump to v8.3.0 (#18301)
  • pkg/minmea: bump version (#18166)
  • pkg/nanopb: bump version to 0.4.6 (#18149)
  • pkg/pkg.mk: silence info if QUIETER (#18031)
  • pkg/uwb-core: adjust holdoff time when rxdiag_enabled (#17999)
  • pkg/uwb-core: reduce default stacksize (#18022)
  • pkg/uwb-core: remove uwbcfg (#17998)
  • pkg/uwb-dw1000: fix default group delay, use OTP values when possible (#18000)
  • pkg/wamr: update to tagged release WAMR-05-18-2022 (#18119)

Boards

  • boards/nucleo-f401re: add riotboot (#17948)
  • boards/stm32f7508-dk: add support (#17954)
  • cpu/samd5x: add SD Host Controller implementation (#17863)
  • boards/adafruit-pybadge: enable ST7735 display (#17903)
  • boards/common/arduino-atmega: fix issue with wrong port for LED0 (#18245)
  • boards/esp32: cleanup board_init_common (#18238)
  • boards/esp32: cleanup CI compilation for esp_wifi_enterprise (#18218)
  • boards/nucleo-X: enable cpy2remed programmer (#18057)
  • boards/stm32f469i-disco: enable cpy2remed programmer (#18039)
  • boards/{thingy52,ruuvitag}: allow OpenOCD as programmer (#18237)
  • build system: improve serial port selection (#18167)
  • cpu/esp32: Upgrade to ESP-IDF v4.4 (#17601)
  • cpu/esp32: use ESP-IDF i2c HAL for ESP32 periph/i2c (#18279)
  • cpu/esp32: use ESP-IDF ledc HAL for periph/pwm (#18276)
  • drivers/lcd: rework rotation management and enable it for st7735 (#17930)
  • drivers/lcd: slightly rework params to expose offset values to
    ili9341 driver (#17925)
  • periph_can,candev: socketcan pkg for native, candev test cleanup (#17533)
  • pkg/cryptoauthlib: Update package to latest version (#18137)
  • unittests: enable ASAN on native (#18099)

CPU

  • netdev_tap: make 'wired' property configurable (#17709)
  • pkg/nimble: version bump to NimBLE 1.5.0 RC1 (#18029)

AVR

  • atmega_common: implement periph/gpio_ll{,_irq} (#17982)

Cortex-M

  • cortexm_common: allow to overwrite nmi_handler (#18232)
  • cortexm_common: enable FPU on cortexm33 (#18064)
  • cortexm_common: remove breakpoint from hard_fault_handler (#17781)
  • efm32: Minimal support for gpio_ll (#18023)
  • nrf5x_common: implement periph/gpio_ll{,_irq} (#17980)
  • stm32: Implement periph/gpio_ll{,_irq} except for STM32F1 (#17981)
  • sam0_common: adc: Automatically configure external reference pin (#18042)
  • stm32: support for B subfamily of g0 to determine the ram length (#18296)

ESP32

  • use ESP-IDF ...
    • adc/dac HAL for periph/adc and periph/dac (#18271)
    • function esp_efuse_mac for CPU ID (#18273)
    • gpio HAL for periph/gpio (#18270)
    • interrupt HAL for periph/uart (#18274)
    • interrupt handling API (#18261)
    • random API for ESP32 (#18277)
    • sleep API for periph/pm (#18280)
    • spi HAL for periph/spi (#18281)
    • spli_flash_* funcs in periph/flash (#18250)
    • startup function (#18268)
    • timer HAL for system timer and watchdog (#18267)
    • timer/interrupt HAL for periph/timer (#18282)
    • twai HAL for periph/can (#18278)
  • ESP32x SoC variant independent syscalls (#18266)
  • always include libc_gettimeofday (#18027)
  • ESP32 SoCx variant independent bootloader makefile (#18246)
  • ESP32x SoC varian...
Read more

Release-2022.04

09 May 12:04
2022.04
ea4bc38
Compare
Choose a tag to compare

RIOT-2022.04 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.

About this release

The 2022.04 release includes the following new features and improvements:

Core:

The scheduler allows for changing the priority of a thread at runtime.

System libraries:

The module ztimer64_xtimer_compat was added, providing the complete xtimer
API on top of ztimer64_usec. This is now the default implementation when using
the xtimer module.
Most modules use ztimer instead of xtimer now.

The sequence of modules during auto initialization can be customized via
statically assigned numbers now. This feature is experimental, so use it with
caution. Priorities may change in the future.

SenML implementation: supports CBOR encoding, Phydat to SenML encoding and
basic SAUL integration.

Various improvements have been made to the file system modules:
VFS supports automatic mount (and formatting) at startup and reliable disk
enumeration, and mount_by_path. Default mount points can be provided by the
board configuration. exFAT support was added to FATFS.

Using Rust in RIOT no longer requires a nightly version of Rust, but can be
built on the latest stable on Rust instead.

Boards:

Boards no longer have to provide a board_init() function. LEDs are
initialized automatically if they follow the LED<x>_PIN naming scheme.

Networking:

gcoap now provides a simple forward-proxy and allows for switching between
plain CoAP and CoAP-over-DTLS at runtime.

The NimBLE module supports the new PHY modes that have been introduced with
Bluetooth 5.

A Telnet server module is available now.

Packages:

The build system now allows for package directories to reside outside the RIOT
tree.

Various new packages have been added:

  • the C++ Embedded Template Library (ETL)
  • nanors, a tiny, performant implementation of reed solomon codes
  • tflite-micro as a replacement for tensorflow-lite
  • WAMR adds Web assembly (WASM) support

Hardware support:

New support for the boards Adafruit-PyBadge and STM32 Nucleo-F439ZI as well as
for the LPS22CH nano pressure sensor and MCP47xx DAC. The DOSE bus now supports
baud rates of 1 MHz and above.

Summary:

328 pull requests, composed of 810 commits, have been merged since the
last release, and 6 issues have been solved. 40 people contributed with
code in 83 days. 1851 files have been touched with 50235 (+) insertions and
18701 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core

  • core/sched: add sched_change_priority() (#17093)
  • core: add functionality to check queue state of another thread (#16174)
  • core: split out library code (#17652)
  • core/rmutex: use atomic utils (#16919)

System Libraries

  • drivers: migrate xtimer64 and xtimer/ticks users to ztimer (#17367)
  • drivers/mtd_flashpage: add mtd_flashpage_t type (#17627)
  • sys/bitfield: add support for bit-wise bitfield operations (#17710)
  • sys/senml: add SenML modules (#16384)
  • sys/vfs: add vfs_mount_by_path() (#17661)
  • sys/xtimer: introduce xtimer_is_set() (#17630)
  • sys/ztimer: add ztimer64_xtimer_compat complete xtimer replace module (#17670)
  • vfs: Introduce reliable disk enumeration (#17660)
  • rust: test on stable (#17805)
  • sc_vfs: print file size (#17622)
  • sys/auto_init: custom auto-initialization sequence (simple) (#17794)
  • sys/event/timeout: remove alternative xtimer implementation (#17689)
  • sys/evtimer: remove deprecated evtimer_now_min (#17655)
  • sys/fido2: use ztimer instead of xtimer (#17753)
  • sys/posix/pthread: newlib compatibility (#17734)
  • sys/test_utils/print_stack_usage: work with small stacks (#17891)
  • sys/vfs: add file-system auto-mount (#17341)
  • sys/vfs: provide vfs_fsync() (#17621)
  • sys/xtimer: make xtimer_ztimer_compat default backend (#17721)
  • sys/ztimer doc: List prerequisites for successful use of ztimer_now (#17614)
  • sys/ztimer64/util.c: fix ztimer64_set_timeout_flag (#17561)
  • sys/ztimer: add auto_adjust module (#17633)
  • sys/ztimer: cleanup xtimer_compat.h for 32Bit only (#17690)
  • sys/ztimer: Name callback types (#17758)
  • sys: some simple xtimer->ztimer conversions (#17892)
  • sys/*timer: rework dependencies to ease backend switch, prefer
    ztimer_xtimer_compat over xtimer_on_ztimer (#17811)
  • sys/syscalls: make gettimeofday() implementation optional (#17733)
  • sys/ztimer: auto-select ztimer_no_periph_rtt only for samd21 (#17786)
  • sys: sort out ztimer_xtimer_compat and ztimer64_xtimer_compat depes (#17732)
  • tests: add stack usage metrics (#17706)
  • {examples,tests}/rust: Rust updates (-sys/-wrappers version, stable) (#17761)

Networking

  • gcoap: add simple forward-proxy (#13790)
  • gnrc_pktbuf_cmd: add od dependency with gnrc_pktbuf_static (#17228)
  • nanocoap: add nanocoap_get_blockwise_url_to_buf() function (#17833)
  • nanocoap: introduce coap_opt_remove() (#17881)
  • nimble/netif: add support for BT5 PHY modes (#16860)
  • sys,examples,tests,fuzzing: add missing includes (#17714)
  • sys/net/application_layer/sock_dns: add pseudomodule
    auto_init_sock_dns (#17493)
  • sys/net/application_layer/sock_dns_mock: add module for mocking
    sock_dns (#17871)
  • sys/net/application_layer: add telnet server module & example (#16723)
  • sys/net/dsm: add missing dependencies (#17685)
  • sys/net/nanocoap: introduce nanocoap_sock_*(), use in
    suit/transport/coap (#17474)
  • sys/net/netutils: add netutils_get_ipv4() (#17764)
  • sys/net/sock: add sock_udp_sendv() API (#17485)
  • sys/net/sock_util: add sock_tl_name2ep() to optionally perform DNS
    lookups (#17510)
  • sys/stdio_nimble: add new stdio module using nimble (#12012)
  • drivers/encx24j600: define default parameters (#17747)
  • gcoap: multi-transport support (#16688)
  • gnrc/ipv6nib: remove the need for evtimer-minutes (#17411)
  • gnrc/netif: convert to ztimer (#17354)
  • ipv6/nib: bugfix of 6CO length checking (#17850)
  • ipv6/nib: fix memcpy() bug in _handle_rtr_timeout() (#17741)
  • lwip: enable LWIP_SO_RCVTIMEO if sock layer is used (#17779)
  • pkg/lwip: use ztimer_msec instead of xtimer (#17115)
  • pm: don't (un)block IDLE mode (#17975)
  • sys/gnrc/sixlowpan/frag/fb: guard sfr_types.h header include (#17730)
  • sys/net/gnrc/sock: use ztimer_usec or xtimer for timeout (#17852)
  • sys/net/gnrc/sock_types: guard tcp.h header inclusion (#17743)
  • sys/net/gnrc: ztimer_no_periph_rtt if gomach (#17729)
  • sys/net/gnrc_sixlowpan_frag_sfr: use xtimer_set (#17668)
  • sys/net/link_layer/csma_sender: use public xtimer_now() (#17731)
  • sys/net/sock_util: fix compilation for IPv4-only mode (#17766)

Packages

  • buildsystem: add EXTERNAL_PKG_DIRS functionality (#17211)
  • pkg/etl: Add the embedded template library (etl) (#17477)
  • pkg/lvgl: add extra widget dependency (#17760)
  • pkg/nanors: add reed solomon codec implementation (#17703)
  • pkg/tflite-micro: add support and deprecate tensorflow-lite (#17908)
  • pkg/tinydtls: add IPv4 support (#17765)
  • pkg/uwb-dw1000: add patch for rf_txctrl value (#17724)
  • pkg/wamr: add WAMR to provide WASM support in RIOT (#15329)
  • buildsystem/pkg: expand packages from USEPKG early as path into
    PKG_PATHS (#17551)
  • make: pkg.mk: don't call git am if there are no patches (#17858)
  • pkg/edhoc-c: bump version (#17777)
  • pkg/fatfs: fatfs_vfs: wire up format() (#14430)
  • pkg/fatfs: enable exFAT support (#17798)
  • pkg/fatfs: implement statvfs() (#17634)
  • pkg/littlefs2: bump version to 2.4.2 (#17837)
  • pkg/lv_drivers: initial commit (#17713)
  • pkg/lvgl: bump to 8.2.0 (#17681)
  • pkg/lvlgl: allow cusomizing LV_MEM_SIZE (#17759)
  • pkg/mbedtls: initial pkg import to use entropy module (#15671)
  • pkg/mynewt-core: fix semaphore (#17771)
  • pkg/semtech-loramac: enable setting channels mask (#17824)
  • pkg/tinycbor: bump version (#17604)
  • pkg/tinydtls/sock_dtls: use ztimer_usec (#17677)
  • pkg/tinydtls: migrate to ztimer64_msec (#17564)

Boards

  • boards/adafruit-pybadge: add support (#17807)
  • boards/b-l475e-iot01a: Add SPI2 and SPI3 buses (#17885)
  • boards/nucleo-f429zi: add support for ethernet (#17828)
  • boards: add support for nucleo-f439zi (#17827)
  • cpu/esp32: update to Espressif's precompiled ESP32 vendor toolchain
    with gcc 8.4.0 (#17769)
  • cpu/stm32: add backup battery monitoring (VBAT) (#16989)
  • sys/auto_init: add auto_init_leds, drop LED init code from boards (#17584)
  • sys/board_common: add generic board_init() function (#17008)
  • sys/vfs: add vfs_default, configure default fs for same54-xpro (#17643)
  • tests/external-boards: add esp compile test boards (#17525)
  • vfs_default: add compile test and add default mount for more boards (#17656)
  • boards/native: select MTD defaults for FAT (#17653)
  • boards/nucleo-f334r8 f429zi and f446ze: enable cpy2remed programmer (#17708)
  • boards/nucleo-f767zi: fix adc_config indentation (#17682)
  • boards/same54-xpro: support for board variation with SST26VF064B
    flash (#17613)
  • boards/stm32mp157c-dk2: Overwrite mpu_stack_guard in kconfig (#17629)
  • boards: drop board_init() from board.h (#17707)
  • boards: fix ztimer adjust values for arduino-mega2560...
Read more