Skip to content

Releases: RIOT-OS/RIOT

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

Release-2022.01

01 Feb 11:43
2022.01
5265213
Compare
Choose a tag to compare

RIOT-2022.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 2022.01 release brings support for new packages, new boards and drivers,
as well as several package upgrades and bug fixes. Among others, this release
improves the RIOT codebase with:

Rust support

RIOT now offers convenient integration of Rust application programming, with
wrappers interfacing to RIOT modules such as timers, network stack.

Improved timers

Many modules have migrated from using xtimer to our more power-efficient
alternative ztimer. Also, ztimer64 was introduced, which enables
a drop-in replacement for all of xtimer features.

Kconfig support

Kconfig modeling coverage is significantly extended. Nearly all supported
boards are now modeled with Kconfig.

Summary:

436 pull requests, composed of 1159 commits, have been merged since the
last release, and 11 issues have been solved. 43 people contributed with
code in 88 days. 2475 files have been touched with 44925 (+) insertions and
14687 deletions (-).

Notations used below

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

New features and changes

Full list available at https://github.com/RIOT-OS/RIOT/milestone/37?closed=1

Core

  • core/include/kernel_defines.h: add index_of() macro (#17142)
  • core: Add IS_CT_CONSTANT() (#17273)
  • core: add WITHOUT_PEDANTIC() and DECLARE_CONSTANT() (#17176)
  • core: Warn about using irq_enable (#17433)
  • core: make SCHED_TEST_STACK boolean and default to 1 with DEVELHELP (#17132)

System Libraries

  • sys/architecture: add HAS_ALIGNMENT_OF() helper (#17177)
  • sys/arduino: add assertion to gpio handling (#17443)
  • sys/atomic_utils: add atomic_{load,store}_ptr() (#17256)
  • sys/include/event/periodic: add count (#17276)
  • sys/isrpipe: add isrpipe_write (#17336)
  • sys/sched_rr: Add a round robin scheduler module (#16126)
  • sys/stdio: add optional function stdio_available (#17446)
  • sys/test_utils/result_output: add sort to multiple output check (#17269)
  • sys/tsrb: add peek functions (#17266)
  • sys/tsrb: add tsrb_clear (#17337)
  • sys/ztimer: add 'ztimer_no_periph_rtt' (#17284)
  • sys/ztimer: add some best practices (#17370)
  • sys/ztimer: ztimer_now() add warning regarding comparing now() values (#17404)
  • usb/hid: Add HID report descriptor defines (#17242)
  • sys/arduino: add Serial over stdio support (#17447)
  • sys: introduce sysclk function to retrieve core clock frequency (#17342)
  • sys/new_delete: add malloc/free based new/delete implementation (#17464)
  • event/timeout: remove forced ZTIMER_USEC dependency (#16958)
  • riotboot_dfu: use ztimer instead of xtimer (#17051)
  • riotboot_serial: enter bootloader mode by pin (#17248)
  • schedstatistics: Convert to ztimer (#17216)
  • stdio_rtt: Convert to ztimer (#17122)
  • stdio_semihosting: Convert to ztimer (#17123)
  • sys/can: migrate to ztimer (#17366)
  • sys/cpp11-compat: use new/delete operators from sys/cpp_new_delete (#17475)
  • sys/evtimer: use now returned by set (#17394)
  • sys/fmt: make fmt_s32_dfp() string based (#17106)
  • sys/Makefile.dep: fix event periodic dependency (#17318)
  • sys/picolibc_syscalls_default: support new picolibc stdio globals (#17001)
  • sys/random: default to musl LCG instead of TinyMT (#17188)
  • sys/suit: adjust dependencies for CoAP transport (#17182)
  • sys/test_utils/result_output/json: optional space after symbol (#17034)
  • sys/turo: Allow default selection of json (#17039)
  • sys/ztimer/xtimer2ztimer.cocci: extend and fix api replacements (#17234)
  • sys/ztimer64: default select ztimer64_init (#17414)
  • sys/ztimer64: make _del_entry_from_list() safe for uninit ztimer64_t (#17368)
  • sys/ztimer: remove double ztimer indirection (#17272)
  • sys/ztimer: ztimer_remove report success (#17408)
  • usbus/cdc_acm: Return stall on line coding not supported (#17085)
  • usbus/hid: fix ep_out readiness (#17230)
  • usbus/hid: fix ep_out readiness (#17245)
  • usbus: Bind extra USB config (#17380)
  • usbus: check received setup request data amount (#17203)
  • sys/ztimer64: initial PR (#16928)

Networking

  • gnrc_pktbuf_cmd: add od dependency with gnrc_pktbuf_static (#17228)
  • sys/net/dhcpv6: Add stateless DHCPv6 (#16731)
  • sys/net: Add ipv4/ipv6 pseudomodules (#16966)
  • sys/shell/sc_nimble_netif: add ping subcommand (#16539)
  • dsm: rename DTLS_PEER_MAX and make it dependent on
    CONFIG_DTLS_PEER_MAX (#16967)
  • gcoap_dtls: destroy session in _tl_send only on connection errors (#16963)
  • gnrc_dhcpv6_client / uhcp: delay router advertisements until prefix
    was received (#16755)
  • gnrc_gomach: adapt duty recording parameters' namings. (#8954)
  • gnrc_netif: move netdev initialization to ops->init (#16918)
  • lwip: bump to v2.1.3 (#16774)
  • net/gcoap: port to ztimer (#17141)
  • nimble/statconn: use errno return values (#17344)
  • pkg/lwip: Don't control IPv6 via IPv4 flag (#17175)
  • pkg/lwip: Fix dualstack build when only using 6lowpan (#17174)
  • pkg/openthread: bump version to 20200818 + adapt to use CMake to
    configure the build (#16948)
  • pkg/openthread: migrate to ztimer (#17120)
  • pkg/paho-mqtt: migrate to ztimer (#17143)
  • pkg/semtech-loramac: fix get/set dr command (#17117)
  • sys/evtimer,ztimer: do not depend on ztimer_now64 (#17357)
  • sys/net/gnrc: fix compilation with -Wcast-align (#17157)
  • sys/shell/gnrc_netif: Allow 'ifconfig help' (#17006)
  • test/ieee802154_hal: general cleanup and cosmetic fixes (#16913)
  • tests/lwip_sock: Take lock before calling etharp (#17145)
  • socket_zep: port to radio HAL (#16932)
  • ieee802154/hal: adapt to latest changes of #13943 (#16946)

Packages

  • pkg/lz4: add support for LZ4 compression/decompression (#17178)
  • pkg/uzlib: add support for zlib compression/decompression (#17179)
  • pkg: add support for Elk Tiny Javascript engine (#16887)
  • pkg: add support for FreeRTOS coreJSON library (#16997)
  • pkg/arduino_sdi_12: add SDI-12 for Arduino as package (#16587)
  • hacl: Switch git address to RIOT-OS-pkgmirror (#16941)
  • make: support package mirrors (#16927)
  • pkg/emlearn: bump to 0.12 (#16937)
  • pkg/jerryscript: bump to 2.4.0 (#16938)
  • pkg/mynewt-core/patches: silence cast-align (#17397)
  • pkg/qr-code-generator: bump to 1.7.0 (#16939)
  • pkg/uwb-core: fix wrong header include (#17345)
  • pkg/uwb-core: enable frame filtering, allow usage of common event thread (#17264)
  • pkg/wakaama: use ztimer (#17103)
  • pkg/arduino_sdi_12: support the remote-revb board (#17119)
  • pkg/fatfs: bump version to r0.14b (#16412)
  • Update tiny-asn1 package (#16936)
  • pkg/lvgl: use ztimer instead of xtimer (#17031)
  • pkg: migrate some packages to ztimer (#17309)

Boards

  • boards/feather-m0: add arduino feature (#17401)
  • boards/iotlab-m3: add MTD definition (#17339)
  • boards/nrf9160dk: add riotboot support (#17226)
  • boards/nucleo-g431rb: added PWM configuration (#17030)
  • boards/p-l496g-cell02: add riotboot feature (#17463)
  • boards/stm32f469i-disco: Add DAC (#17214)
  • boards/stm32g031-disco,examples,tests: Added STM32G031-DISCO board (#16959)
  • boards: add board support for Alientek Pandora (#17259)
  • boards: add support for stm32f746g-disco (#17198)
  • boards/common/microbit: fix doxygen grouping (#17440)
  • boards/esp* and cpu/esp: feature definition cleanup (#17438)
  • boards/lora-e5-dev: enable 3.3V and 5V output by default (#17158)
  • boards/lora-e5-dev: fix default DARWIN port (#17373)
  • boards/stm32f469i-disco: Create board (#16898)
  • boards/{calliope-mini,microbit*}: factorize common microbit module,
    use ztimer (#17124)
  • boards: cpu: replace GPIO_UNDEF by SPI_CS_UNDEF in SPI configuration (#17468)
  • boards: model nrf52 boards (#17299)
  • boards: unify user button defines (#17428)
  • tools/elf2uf2: addition of new PROGRAMMER for RPi-pico (#17348)

CPU

  • Add some Rust building infrastructure and example (#16274)
  • cpu/esp32: add clear bus during init to the I2C software
    implementation (#17346)
  • cpu/nrf9160: add periph_flashpage support (#17225)
  • cpu/stm32: Add hardening changes to stm32 (#16979)
  • nimble_scanner: rework to enable scanning BLE5 PHYs and extended
    advertisements (#16843)
  • nrf5x_common: Add qdec peripheral implementation (#17201)
  • cpu/esp32: Add openocd programming support (#16911)
  • cpu/stm32: add driver for the LTDC peripheral (#17437)
  • cpu/stm32: add new usbdev FS support (#17281)
  • cpu/stm32: add support for U5 family (#17410)
  • boards/common/esp8266: Set RTS and DTR to 0 on pyterm. (#16305)
  • cc2538_rf: remove RX Busy detection in request_set_trx_state (#16821)
  • cpu/arm7_common: suppress false positives of cppcheck (#17218)
  • cpu/atmega_common: make cppcheck happy (#17219)
  • cpu/atmega_common: Remember CTC mode with timer_periodic (#17387)
  • cpu/atxmega/include/cpu_conf: ztimer64 arithmetic idle stack fix (#17362)
  • cpu/cortexm_common: make CI happy (#17220)
  • cpu/esp32: make CI happy (#17221)
  • cpu/esp32: place freertos and periph in IRAM (#17087)
  • cpu/esp32: support CPU clocks 2 MHz and 40 MHz (#17413)
  • cpu/esp: change dynamic SSID option handling (#17415)
  • cpu/esp: migrate to ztimer (#17386)
  • cpu/kinetis/include: fix xtimer backend t...
Read more

Release-2021.10

28 Oct 12:48
2021.10
1a7b170
Compare
Choose a tag to compare

RIOT-2021.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, softreal-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 2021.10 release includes:

The last three months again brought many new features, fixes and improvements to the RIOT codebase.
There is new hardware support, new helper functions and many new modules that help with building IoT applications.

Some of the new features are:

GCOAP DTLS (#15549)

The GCOAP CoAP library now supports transport encryption via tinyDTLS.
This is a compile-time toggle, so either all requests are encrypted or none.
There is already a PR (#16688) that will allow to mix encrypted and unencrypted requests.

FIDO2 support (#16489)

We now have an implementation of the Fast Identity Online 2 (FIDO2) specification.
With this you can use any RIOT device with USB support as an authentication token similar to the YubiKey.

RPL-over-BLE (#16364)

The 6LoWPAN over Bluetooth Low Energy module has gained support for the RPL routing protocol.
With this it's now possible to set up IPv6 based mesh networks over BLE on chips supported by the Nimble Bluetooth stack.

GNRC TCP (#16494)

RIOT's native GNRC network stack now has support for the TCP protocol via the socket API.
Now you can switch between LWIP and GNRC without changing your application.

DHCPv6 relay agent (#16606)

The DHCP module can now act as a relay, forwarding DHCPv6 requests for multihop-operation.

DHCPv6 IA_NA support (#16228)

The DHCPv6 client can now also request non-temporary addresses as an alternative to Stateless Access Autoconfiguration (SLAAC) that is used by default.
The feature can be enabled by selecting the dhcpv6_client_ia_na module.

gnrc_ipv6_auto_subnets (#16536, #16750)

This new module allows to split a large IPv6 prefix into smaller ones that can be used to configure downstream interfaces with a prefix.
The process can be repeated recursively for a cascading subnet topology.

This can be a lightweight alternative to DHCPv6 that only relies on router advertisements.

For more details on this, see the talk at the 2021 RIOT summit.

UDP benchmark (#16710)

The examples section has gained a UDP benchmark.
This can be used as a network stress test and is accompanied by a host tool (dist/tools/benchmark_udp) that acts as the benchmark server to which the benchmark clients will connect.

URI template processor (#16702)

URI templates up to level 3 (according to RFC 6570) can now be parsed with this tool.

riotboot serial flasher (#15493)

RIOT's native bootloader has gained the ability to load a firmware via UART.
This allows to program a board without the need for external programmers, a serial console is enough.

RTC mem for sam0 and STM32 (#16758)

Many real-time clocks have the ability to store a few bytes in their memory as user data. This memory is retained across reboots and deep sleep.

We now have an interface for this feature and implemented it on SAM L21, SAM D5x/E5x and STM32.

LWIP improvements (#16162, #16761, #16636, #16762)

The alternative LWIP network stack can now make use of multiple interfaces.
Initialisation is done using the new XFA (cross-file array) feature so new drivers can be added by only adding a single file.

Advanced topologies in ZEP dispatcher (#15773)

With socket_zep and the ZEP dispatcher it is possible to simulate a virtual IEEE 802.15.4 network with native nodes.
ZEP dispatcher has now gained support for lossy connections that make this simulation behave closer to reality.

There are also PRs pending to automatically generate such topologies (#16889)
and to hook up the ZEP dispatcher to the foren6 network visualizer (#16879).

RIOT_VERSION_CODE macro (#16765)

We have added a RIOT_VERSION_CODE macro that can be used by external modules / boards to check against which RIOT version it is compiled.

This allows to react to API changes if the module is built against different versions of RIOT.

gnrc_netif_ipv6_wait_for_global_address() (#16824)

For apps that want to connect to a remote server, send some data and then go back to sleep, there is now the new gnrc_netif_ipv6_wait_for_global_address() function.

This function blocks until a global address has been configured (e.g. via router advertisement) or a timeout happens.
So no more guessing if a connection can yet be established or if the interface is not configured yet.

This feature depends on the gnrc_netif_bus module.

netutils_get_ipv6() (#16634)

This simple function can parse a IPv6 address from a string.
But that's not all - if the sock_dns module is enabled, the string can also be a hostname which will then be resolved.

This provides a small and simple alternative to getaddrinfo() that can be used by shell commands and applications alike.

gnrc_icmpv6_echo corruption detection (#15622)

On Linux the ping command from iputils has the neat feature that it fills the payload with of the ICMP echo request with a pattern that is then echoed back by the receiver.

That means it can detect if the payload got corrupted on the way, e.g. by broken fragmentation or other errors.

The RIOT ping command now also implements this feature that lets you easily detect if something broke along the way.

New Hardware Support

In this cycle we have seen the addition of three new MCU families!
Our latest additions are the Raspberry Pi RP2040 (#16609) and the GD32VF103 RISC-V MCU from GigaDevice (#16036).

Both only have very basic support so far (only GPIO, UART and timers), which still leaves many low hanging fruits for adding peripheral drivers. (#15822, #16935)
Patches welcome!

The nRF9160 is closer to it's nRF52 siblings (#16650), but brings GPS and LTE-M/NB-IoT peripherals. While we are not there yet, there is ongoing work to also support these in RIOT.

The ATxmega family of 8-bit MCUs can now make use of the EBI interface to use external memory. (#16288) The new XMEGA-A1 Xplained already makes use of this feature. (#15758)

On the STM32 side we have now support for the nucleo-wl55jc and it's LoRa transceiver.
The IEEE 802.15.4 / BLE radio on the STM32WB family is however still waiting for a driver.

The common LM75 family of temperature drivers is now supported by RIOT. (#16678)

The Ethernet driver for the SAM E5x line of MCUs is now stable. (#16683)

The sub-MAC layer that implements common MAC features for IEEE 802.15.4 radios has again seen many improvements.
It is currently used by the nRF52 and CC2538 line of MCUs.

API changes

The spi_acquire() no longer returns an error code but will throw an assertion
if called with the wrong parameters.
This allows to speed up SPI operations a bit as SPI parameters are usually fixed
at compile time.

The gnrc_netdev_default was replaced by the network stack agnostic
netdev_default module.

For now gnrc_netdev_default remains an alias for netdev_default, but it will
be removed in a future release.

Summary

263 pull requests, composed of 590 commits, have been merged since the
last release, and 14 issues have been solved. 36 people contributed with
code in 98 days. 1756 files have been touched with 138909 (+) insertions and
12027 deletions (-).

Notations used below

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

New features and changes

Core (3)

  • core/sched: add runq_callback hook and runq inspection functions (#16463)
  • core: add irq_is_enabled() function to irq interface (#11117)
  • core/msg doc: Clarify; elaborating on interaction with queue (#16794)

System Libraries (12)

  • riotboot: implement serial flasher (#15493)
  • FIDO2 support in RIOT (#16489)
  • test_utils: add UDP benchmark (#16710)
  • uri_parser: provide function to split query (#16695)
  • usbus/hid_io: add missing header file, add RX callback function (#16689)
  • ut_process: initial import of a URI template processor (#16702)
  • sys/picolibc_syscalls_default: support new picolibc stdio globals
    [backport 2021.10] (#17020)
  • sys/random/fortuna: change interval ressed to ms (#16594)
  • sys/shell/commands/gnrc_icmpv6_echo: test for ICMPv6 reply corruption (#15622)
  • sys/shell/commands: gnrc_icmpv6_echo: use msg_avail() (#16611)
  • uri_parser: constify result (#16707)
  • sys/credman: add key load functions (#16263)

Networking (49)

  • dhcpv6_relay: initial i...
Read more