mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-13 08:40:26 +01:00
16261 lines
678 KiB
Plaintext
16261 lines
678 KiB
Plaintext
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 (#19846)
|
|
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
|
|
* gnrc_border_router stops routing after a while (#16398)
|
|
* gnrc_border_router: Kconfig and C disagree about number of addresses
|
|
per interface (#19947)
|
|
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer (#12565)
|
|
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address (#4527)
|
|
* gnrc_netif_pktq leaks memory (#17924)
|
|
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
|
|
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
|
|
* gnrc_rpl: old routes are not deleted (#19423)
|
|
* gnrc_rpl: takes unusually long time to start routing packets (#19147)
|
|
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
|
|
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
|
|
* gomach: Resetting netif with cli doesn't return (#10370)
|
|
* ieee802154_submac: IPv6 fragmentation broken (#16998)
|
|
* LoRaWan node ISR stack overflowed (#14962)
|
|
* LWIP TCP Communication Error (#19676)
|
|
* lwip_sock_tcp / sock_async: received events before calling
|
|
sock_accept() are lost due to race condition. (#16303)
|
|
* Missing drop implementations in netdev_driver_t::recv (#10410)
|
|
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
|
|
* netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address (#10380)
|
|
* nrf52: Not able to add global or ULA address to interface (#13280)
|
|
* nrfmin: communication not possible after multicast ping with no
|
|
interval (#11405)
|
|
* ping6 is failing when testing with cc2538dk (#13997)
|
|
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
|
|
* pkg/tinydtls: DTLS handshake does not work (#19595)
|
|
* samr30 xpro doesn't seem to use its radio ok (#12761)
|
|
* scan-build errors found during 2019.07 testing (#11852)
|
|
* stale border router does not get replaced (#12210)
|
|
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
|
|
behavior (#18097)
|
|
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
|
|
* two nodes livelock sending neighbor solicitations back and forth
|
|
between each other (#16670)
|
|
* xbee: setting PAN ID sometimes fails (#10338)
|
|
|
|
Timer related issues (7)
|
|
------------------------
|
|
|
|
* misc issues with tests/trickle (#9052)
|
|
* MSP430: periph_timer clock config wrong (#8251)
|
|
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
|
|
* periph_timer: systematic proportional error in timer_set (#10545)
|
|
* saml21 system time vs rtc (#10523)
|
|
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
|
|
* sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time. (#9187)
|
|
|
|
Drivers related issues (12)
|
|
---------------------------
|
|
|
|
* at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported (#4876)
|
|
* cpu/msp430: GPIO driver doesn't work properly (#9419)
|
|
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
|
|
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
|
|
* fail to send data to can bus (#12371)
|
|
* mdt_erase success, but vfs_format resets board (esp32-heltec-
|
|
lora32-v2) (#14506)
|
|
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
|
|
software CS (#6567)
|
|
* periph: GPIO drivers are not thread safe (#4866)
|
|
* PWM: Single-phase initialization creates flicker (#15121)
|
|
* STM32: SPI clock not returning to idle state and generating
|
|
additional clock cycles (#11104)
|
|
* TCP client cannot send read only data (#16541)
|
|
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
|
|
|
|
Native related issues (4)
|
|
-------------------------
|
|
|
|
* examples/micropython: floating point exception while testing on
|
|
native (#15870)
|
|
* native getchar is blocking RIOT (#16834)
|
|
* native not float safe (#495)
|
|
* native: tlsf: early malloc will lead to a crash (#5796)
|
|
|
|
Other platforms related issues (16)
|
|
-----------------------------------
|
|
|
|
* Failing tests on FE310 (Hifive1b) (#13086)
|
|
* boards/hifive1: flashing issue (#13104)
|
|
* cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash (#14929)
|
|
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
|
|
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
|
|
* examples/gnrc_border_router: esp_wifi_init failed with return value
|
|
257 on ESP32-C3 with nimble_rpble (#19319)
|
|
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
|
|
* Interrupt callback function is instantly called on samd51 after
|
|
setting it from within interrupt callback function (#19861)
|
|
* MPU doesn't work on cortex-m0+ (#14822)
|
|
* newlib-nano: Printf formatting does not work properly for some
|
|
numeric types (#1891)
|
|
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
|
|
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
|
|
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
|
|
after __WFI() (#14015)
|
|
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
|
|
* sys/riotboot/flashwrite: unaligned write when skipping
|
|
`RIOTBOOT_MAGIC` on stm32wb (#15917)
|
|
|
|
Build system related issues (7)
|
|
-------------------------------
|
|
|
|
* `buildtest` uses wrong build directory (#9742)
|
|
* Build dependencies - processing order issues (#9913)
|
|
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
|
|
1.89 (#12771)
|
|
* EXTERNAL_MODULE_DIRS silently ignores non-existent entries (#17696)
|
|
* make: ccache leads to differing binaries (#14264)
|
|
* make: use of immediate value of variables before they have their
|
|
final value (#8913)
|
|
* missing build dependencies in the rust build (#19714)
|
|
|
|
Other issues (67)
|
|
-----------------
|
|
|
|
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
|
|
through shell after flashing with J-Link (#13044)
|
|
* `make term` no longer works with JLinkExe v6.94 (#16022)
|
|
* at86rf215 stops receiving until sending a packet (#19653)
|
|
* b-l072z-lrwan1: tests/ztimer_overhead: test failure (#19224)
|
|
* backport_pr: Only works for when fork is in user (not in
|
|
organization) (#18486)
|
|
* benchmark_udp: hammering with low interval causes issues (#16808)
|
|
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
|
|
* Builds fail when different execstack options are around in objects (#18522)
|
|
* Can't build relic with benchmarks or tests (#12897)
|
|
* CC2538-CC2592EM has a very weak transmit power (#17543)
|
|
* CC2538DK board docs: broken links (#12889)
|
|
* cpp: Exception handling undefined (#17523)
|
|
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
|
|
* doc/boards: information concerning access to RIOT shell (#17453)
|
|
* doc/LOSTANDFOUND: not rendered as expected (#17063)
|
|
* edbg: long lines flooded over serial become garbled (#14548)
|
|
* examples / tests: LoRa tests fail on platforms that don't support
|
|
LoRa (#14520)
|
|
* examples/gcoap: client broken (#19379)
|
|
* feather-m0: `make flash` reports "device unsupported" (#17722)
|
|
* flashing issue on frdm-k64f (#15903)
|
|
* frdm-k22f failing tests/periph_flashpage (#17057)
|
|
* frdm-k22f fails tests/periph_timer (#19543)
|
|
* Freeze into semtech_loramac_send call (pkg/semtech-loramac) (#18790)
|
|
* gcoap: gcoap_req_send and related should return negative for errors (#19393)
|
|
* gnrc_ipv6_nib: Neighbor Solicitation ping-pong (#18164)
|
|
* I2C not working under RIOT with U8G2 pkg (#16381)
|
|
* ieee802154_security: Nonce is reused after reboot (#16844)
|
|
* kconfiglib.py choice override of menuconfig bug (#19069)
|
|
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
|
|
disconnect (#17209)
|
|
* lwip: invalid state transition on ieee802154_submac users (#17208)
|
|
* Making the newlib thread-safe (#4488)
|
|
* mcuboot: flashes but no output (#17524)
|
|
* MTD is confusing (#17663)
|
|
* nanocoap: incomplete response to /.well-known/core request (#10731)
|
|
* Order of auto_init functions (#13541)
|
|
* periph_rtt: rtt_set_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
|
|
* pkg/tinydtls: Multiple issues (#16108)
|
|
* Potential race condition in compile_and_test_for_board.py (#12621)
|
|
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
|
|
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
|
|
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
|
|
gracefully (#17874)
|
|
* rust-gcoap example is incompatible with littlefs2 (#17817)
|
|
* Samr30/gpio: Erasing then write mux can generate spurious IRQ (#19993)
|
|
* samr34-xpro: some tests failing (#19223)
|
|
* sock_dtls: unable to send big messages (#17996)
|
|
* spurious IRQs in `periph_timer` (#18976)
|
|
* stdio_ethos: infinite shell loop (#17972)
|
|
* stdio_tinyusb_cdc_acm hangs with picolibc (#19277)
|
|
* STM32 Nucleo boards improperly clocked (#19778)
|
|
* sys/riotboot: documentation issues (#11243)
|
|
* tests/lwip target board for python test is hardcoded to native (#6533)
|
|
* tests/periph_flashpage: failing on stm32l475ve (#17280)
|
|
* tests/pkg/relic is failing on samr21-xpro when built using llvm (#19903)
|
|
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM (#15066)
|
|
* tests/pkg_libschc: Failing test_reassemble_success_ack_always (#19445)
|
|
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
|
|
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
|
|
* tests: some tests don't work with `newlib` lock functions. (#12732)
|
|
* Types in `byteorder.h` need a cleanup (#14737)
|
|
* USB identifiers with funny characters create mojibake (#17776)
|
|
* usbus/msc: wrong error handling and behavior after usb reset (#19478)
|
|
* Use of multiple CAN bus on compatible boards (#14801)
|
|
* ztimer is incompatible with real-time requirements (#18883)
|
|
|
|
There are 161 known issues in this release
|
|
|
|
|
|
Fixed Issues since the last release (2023.07)
|
|
=============================================
|
|
|
|
- at86rf215 stops receiving when sam0_eth is in use (#19911)
|
|
- drivers/st7735: faulty driver initialization (#19818)
|
|
|
|
2 fixed issues since last release (2023.07)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
|
|
Matrix and Forum
|
|
================
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
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 (#19636)
|
|
|
|
Examples
|
|
--------
|
|
|
|
* examples/suit_update: some test fixes (#19643)
|
|
|
|
Testing
|
|
-------
|
|
|
|
+ tests/net/gnrc_mac_timeout: add automated test (#19639)
|
|
+ tests/README.md: Add directory overview (#19587)
|
|
* tests: move all periph applications to their own periphs/ folder (#19552)
|
|
* tests: move all pkg applications to their own pkgs/ folder (#19551)
|
|
* treewide: fix remaining broken paths to test applications (#19592)
|
|
* tests/drivers: move all driver tests into own folder (#19435)
|
|
* tests: move all bench applications to their own tests/bench/ folder (#19564)
|
|
* tests: move build system applications to tests/build_system (#19567)
|
|
* tests: move core related applications to their own tests/core/ folder (#19565)
|
|
* tests: move cpu related applications to tests/cpu (#19583)
|
|
* tests: move net related applications to test/net (#19586)
|
|
* tests: move nimble and lwip related to test applications to tests/pkg (#19582)
|
|
* tests: move sys related applications to their own tests/sys/ folder (#19566)
|
|
* treewide: replace occurrences of tests/driver_ with new path (#19555)
|
|
* tests/core: remove Makefile.sys_common copy past mistake (#19783)
|
|
* tests/drivers_at24cxxx: make it easier to select other EEPROMS (#19457)
|
|
* tests/lua_loader: move to tests/pkg/lua_loader (#19569)
|
|
* tests/periph_rtt: Fix for tick conversion test (#19522)
|
|
* tests/pkg/lvgl: avoid using floats (#19698)
|
|
* tests/unittests: remove old workaround for SAML1X and gcc9.X bug (#19687)
|
|
* tests: move leftover sys related tests to test/sys + move
|
|
tests/sys/candev to tests/drivers (#19585)
|
|
* tests: move remaining driver related applications to tests/drivers (#19568)
|
|
|
|
And 65 minor changes.
|
|
|
|
Removals (6)
|
|
------------
|
|
|
|
- makefiles/pseudomodules: remove deprecated event_thread_lowest module (#19627)
|
|
- nanocoap_sock: remove nanocoap_get() (#19553)
|
|
- pkg/tensorflow-lite: remove deprecated package (#19624)
|
|
- sys/gnrc_lorawan: remove deprecated tx port option (#19626)
|
|
- sys/hashes: remove deprecated aes cmac hashing (#19625)
|
|
- usbus: remove deprecated USBUS_HANDLER_FLAG_TR_FAIL flag (#19488)
|
|
|
|
Bug fixes (53)
|
|
==============
|
|
|
|
* cpu/stm32/periph_adc: fixes and improvements for L4 support (#19571)
|
|
* all/gnrc: fix null pointer dereference (#19756)
|
|
* boards/esp32: small documentation fixes (#19810)
|
|
* boards/esp32s2-lilygo-ttgo-t8: fix display configuration (#19807)
|
|
* boards/iotlab-m3: enable l3g4200d_ng (#19523)
|
|
* boards/qn9080dk: fix periph conflict (#19730)
|
|
* boards/sipeed-longan-nano: fix TFT display config and documentation (#19793)
|
|
* boards/sipeed-longan-nano: revert default to variant with TFT (#19814)
|
|
* boards/z1: fix broken clock configuration (#19705)
|
|
* boards: fix documentation for GD32V boards (#19790)
|
|
* buildsystem: fix kconfig mismatches (#19813)
|
|
* core/lib: drop read only XFA's `const volatile` modifiers (#19544)
|
|
* core: fix null pointer dereference (#19757)
|
|
* cpu/cc26x0_cc13x0: Drop feature cortexm_mpu (#19507)
|
|
* cpu/esp32: define RAM_START_ADDR and RAM_LEN (#19763)
|
|
* cpu/esp8266: fix region overflow with '*periph' directory in app path (#19785)
|
|
* cpu/msp430: fix for ti's msp430-gcc-opensource package ld version (#19782)
|
|
* cpu/qn908x/periph_i2c: allow internal pull-up on SCL (#19729)
|
|
* cpu/stm32/periph_gpio: reset PU/PD for ADC channels (#19574)
|
|
* cpu/stm32/usbdev_fs: fix ep registration and EP_REG assignments (#19460)
|
|
* cpu/stm32: Fix periph_gpio_ll_irq (#19446)
|
|
* cpu/stm32: fix riotboot settings for L4 and WB (#19618)
|
|
* drivers/at86rf2xx: fix default page being ignored (#19467)
|
|
* drivers/dht: busy wait reimplementation (#19718)
|
|
* drivers/enc28j60: fix ISR routine and bth (#19461)
|
|
* drivers/hih6130: avoid using floats (#19695)
|
|
* drivers/periph_usbdev: fix set device address (#19471)
|
|
* drivers/servo: Fix missing dep (#19515)
|
|
* drivers/slipdev: fix logic bug (#19633)
|
|
* drivers/usbus_synopsys_dwc2: fix interrupt handling in DMA mode (#19459)
|
|
* gnrc/ipv6/nib: reset rs_sent counter also for not-6LN interfaces (#19747)
|
|
* gnrc_sixlowpan_frag_rb: fix OOB write in _rbuf_add (#19680)
|
|
* gnrc_sixlowpan_frag_sfr: fix ARQ scheduler race-condition (#19679)
|
|
* gnrc_sixlowpan_iphc: fix NULL pointer dereference (#19678)
|
|
* gnrc_sixlowpan_iphc: prefix bits outside context must be zero (#19649)
|
|
* ipv6/nib: 6LBR should not send RS on their downstream interface (#19335)
|
|
* makefiles/arch/riscv.inc.mk: speed up toolchain detection (#19791)
|
|
* makefiles/tools/serial.inc.mk: Handle new miniterm versions (#19444)
|
|
* nrf5x_common: Clear I2C periph shorts (#19735)
|
|
* pkg/openthread: set event callback before netdev init (#19547)
|
|
* sys/color: extend unittest and fix module (#19693)
|
|
* sys/net/rpl: fix missing assignment operator (#19749)
|
|
* sys/net/rpl: fix possible NULL dereference (#19611)
|
|
* sys/shell: fix missing generic lora settings in ifconfig (#19466)
|
|
* sys/usb/usbus_msc: fix typo in C expression (#19637)
|
|
* sys/usbus/msc: fix EP sizes for USB HS and buffer alignment in DMA-
|
|
mode (#19458)
|
|
* sys/xtimer: improve documentation (#19681)
|
|
* tests/build_system/external_board_dirs: fix broken symlinks (#19584)
|
|
* tests/drivers/l3gxxxx: fix used sensor version for iotlab boards (#19550)
|
|
* tools/mspdebug: fix `make debug` and `make debugserver` (#19556)
|
|
* tools/openocd: Fix handling of OPENOCD_CMD_RESET_HALT (#19506)
|
|
* usbus/msc: fixes for synopsys dwc2 driver (#19455)
|
|
* usbus: don't trigger assertion in usbus_urb_submit() (#19664)
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Network related issues (51)
|
|
---------------------------
|
|
|
|
* 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 (#19846)
|
|
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
|
|
* gnrc_border_router stops routing after a while (#16398)
|
|
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer (#12565)
|
|
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address (#4527)
|
|
* gnrc_netif_pktq leaks memory (#17924)
|
|
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
|
|
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
|
|
* gnrc_rpl: old routes are not deleted (#19423)
|
|
* gnrc_rpl: takes unusually long time to start routing packets (#19147)
|
|
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
|
|
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
|
|
* gomach: Resetting netif with cli doesn't return (#10370)
|
|
* ieee802154_submac: IPv6 fragmentation broken (#16998)
|
|
* LoRaWan node ISR stack overflowed (#14962)
|
|
* LWIP TCP Communication Error (#19676)
|
|
* lwip_sock_tcp / sock_async: received events before calling
|
|
sock_accept() are lost due to race condition. (#16303)
|
|
* Missing drop implementations in netdev_driver_t::recv (#10410)
|
|
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
|
|
* netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address (#10380)
|
|
* nrf52: Not able to add global or ULA address to interface (#13280)
|
|
* nrfmin: communication not possible after multicast ping with no
|
|
interval (#11405)
|
|
* ping6 is failing when testing with cc2538dk (#13997)
|
|
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
|
|
* pkg/tinydtls: DTLS handshake does not work (#19595)
|
|
* samr30 xpro doesn't seem to use its radio ok (#12761)
|
|
* scan-build errors found during 2019.07 testing (#11852)
|
|
* stale border router does not get replaced (#12210)
|
|
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
|
|
behavior (#18097)
|
|
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
|
|
* two nodes livelock sending neighbor solicitations back and forth
|
|
between each other (#16670)
|
|
* xbee: setting PAN ID sometimes fails (#10338)
|
|
|
|
Timer related issues (7)
|
|
------------------------
|
|
|
|
* misc issues with tests/trickle (#9052)
|
|
* MSP430: periph_timer clock config wrong (#8251)
|
|
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
|
|
* periph_timer: systematic proportional error in timer_set (#10545)
|
|
* saml21 system time vs rtc (#10523)
|
|
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
|
|
* sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time. (#9187)
|
|
|
|
Drivers related issues (13)
|
|
---------------------------
|
|
|
|
* at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported (#4876)
|
|
* cpu/msp430: GPIO driver doesn't work properly (#9419)
|
|
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
|
|
* drivers/st7735: faulty driver initialization (#19818)
|
|
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
|
|
* fail to send data to can bus (#12371)
|
|
* mdt_erase success, but vfs_format resets board (esp32-heltec-
|
|
lora32-v2) (#14506)
|
|
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
|
|
software CS (#6567)
|
|
* periph: GPIO drivers are not thread safe (#4866)
|
|
* PWM: Single-phase initialization creates flicker (#15121)
|
|
* STM32: SPI clock not returning to idle state and generating
|
|
additional clock cycles (#11104)
|
|
* TCP client cannot send read only data (#16541)
|
|
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
|
|
|
|
Native related issues (4)
|
|
-------------------------
|
|
|
|
* examples/micropython: floating point exception while testing on
|
|
native (#15870)
|
|
* native getchar is blocking RIOT (#16834)
|
|
* native not float safe (#495)
|
|
* native: tlsf: early malloc will lead to a crash (#5796)
|
|
|
|
Other platforms related issues (15)
|
|
-----------------------------------
|
|
|
|
* Failing tests on FE310 (Hifive1b) (#13086)
|
|
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
|
|
* boards/hifive1: flashing issue (#13104)
|
|
* cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash (#14929)
|
|
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
|
|
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
|
|
* examples/gnrc_border_router: esp_wifi_init failed with return value
|
|
257 on ESP32-C3 with nimble_rpble (#19319)
|
|
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
|
|
* MPU doesn't work on cortex-m0+ (#14822)
|
|
* newlib-nano: Printf formatting does not work properly for some
|
|
numeric types (#1891)
|
|
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
|
|
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
|
|
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
|
|
after __WFI() (#14015)
|
|
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
|
|
* sys/riotboot/flashwrite: unaligned write when skipping
|
|
`RIOTBOOT_MAGIC` on stm32wb (#15917)
|
|
|
|
Build system related issues (7)
|
|
-------------------------------
|
|
|
|
* `buildtest` uses wrong build directory (#9742)
|
|
* Build dependencies - processing order issues (#9913)
|
|
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
|
|
1.89 (#12771)
|
|
* EXTERNAL_MODULE_DIRS silently ignores non-existent entries (#17696)
|
|
* make: ccache leads to differing binaries (#14264)
|
|
* make: use of immediate value of variables before they have their
|
|
final value (#8913)
|
|
* missing build dependencies in the rust build (#19714)
|
|
|
|
Other issues (64)
|
|
-----------------
|
|
|
|
* [TRACKING] sys/shell refactoring. (#12105)
|
|
* [tracking] unnecessary use of floating point arithmetic (#19614)
|
|
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
|
|
through shell after flashing with J-Link (#13044)
|
|
* `make term` no longer works with JLinkExe v6.94 (#16022)
|
|
* at86rf215 stops receiving until sending a packet (#19653)
|
|
* b-l072z-lrwan1: tests/ztimer_overhead: test failure (#19224)
|
|
* backport_pr: Only works for when fork is in user (not in
|
|
organization) (#18486)
|
|
* benchmark_udp: hammering with low interval causes issues (#16808)
|
|
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
|
|
* Builds fail when different execstack options are around in objects (#18522)
|
|
* Can't build relic with benchmarks or tests (#12897)
|
|
* CC2538-CC2592EM has a very weak transmit power (#17543)
|
|
* CC2538DK board docs: broken links (#12889)
|
|
* cpp: Exception handling undefined (#17523)
|
|
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
|
|
* doc/boards: information concerning access to RIOT shell (#17453)
|
|
* doc/LOSTANDFOUND: not rendered as expected (#17063)
|
|
* edbg: long lines flooded over serial become garbled (#14548)
|
|
* examples / tests: LoRa tests fail on platforms that don't support
|
|
LoRa (#14520)
|
|
* examples/gcoap: client broken (#19379)
|
|
* feather-m0: `make flash` reports "device unsupported" (#17722)
|
|
* flashing issue on frdm-k64f (#15903)
|
|
* frdm-k22f failing tests/periph_flashpage (#17057)
|
|
* frdm-k22f fails tests/periph_timer (#19543)
|
|
* Freeze into semtech_loramac_send call (pkg/semtech-loramac) (#18790)
|
|
* gcoap: gcoap_req_send and related should return negative for errors (#19393)
|
|
* gnrc_ipv6_nib: Neighbor Solicitation ping-pong (#18164)
|
|
* I2C not working under RIOT with U8G2 pkg (#16381)
|
|
* ieee802154_security: Nonce is reused after reboot (#16844)
|
|
* kconfiglib.py choice override of menuconfig bug (#19069)
|
|
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
|
|
disconnect (#17209)
|
|
* lwip: invalid state transition on ieee802154_submac users (#17208)
|
|
* Making the newlib thread-safe (#4488)
|
|
* mcuboot: flashes but no output (#17524)
|
|
* MTD is confusing (#17663)
|
|
* nanocoap: incomplete response to /.well-known/core request (#10731)
|
|
* Order of auto_init functions (#13541)
|
|
* periph_rtt: rtt_set_alarm() blocks IRQ for 80 plus usec on STM32 (#19520)
|
|
* pkg/tinydtls: Multiple issues (#16108)
|
|
* Potential race condition in compile_and_test_for_board.py (#12621)
|
|
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
|
|
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
|
|
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
|
|
gracefully (#17874)
|
|
* rust-gcoap example is incompatible with littlefs2 (#17817)
|
|
* samr34-xpro: some tests failing (#19223)
|
|
* sock_dtls: unable to send big messages (#17996)
|
|
* spurious IRQs in `periph_timer` (#18976)
|
|
* stdio_ethos: infinite shell loop (#17972)
|
|
* stdio_tinyusb_cdc_acm hangs with picolibc (#19277)
|
|
* STM32 Nucleo boards improperly clocked (#19778)
|
|
* sys/riotboot: documentation issues (#11243)
|
|
* tests/lwip target board for python test is hardcoded to native (#6533)
|
|
* tests/periph_flashpage: failing on stm32l475ve (#17280)
|
|
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM (#15066)
|
|
* tests/pkg_libschc: Failing test_reassemble_success_ack_always (#19445)
|
|
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
|
|
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
|
|
* tests: some tests don't work with `newlib` lock functions. (#12732)
|
|
* Types in `byteorder.h` need a cleanup (#14737)
|
|
* USB identifiers with funny characters create mojibake (#17776)
|
|
* usbus/msc: wrong error handling and behavior after usb reset (#19478)
|
|
* Use of multiple CAN bus on compatible boards (#14801)
|
|
* ztimer is incompatible with real-time requirements (#18883)
|
|
|
|
There are 161 known issues in this release
|
|
|
|
Fixed Issues since the last release (2023.04)
|
|
=============================================
|
|
|
|
- Not able to flash binary on samr21-xpro boards choosing serial number (#19805)
|
|
- STM32F4-discovery + mrf24j40 not working (#19711)
|
|
- Deprecated documentation? (#19667)
|
|
- usbus_cdc_ecm: failed assertion when host reboots (#19663)
|
|
- Bug: _ep_to_sockaddr() does not update in6_addr->sin6_scope_id (#19486)
|
|
- SPI access in LoRa-e5 and im880b? (#19025)
|
|
- qn9080 I2C driver spins in endless loop (#19021)
|
|
- pkg_libhydrogen tests fail / update libhydrogen (#18508)
|
|
- [gcoap-dtls] Posting a message yields a stack overflow on the
|
|
`samr21-xpro` with ECC (#18292)
|
|
- driver/sx126x:sx1268 spreading factor support LORA_SF5 (#17861)
|
|
- Bug: BUILD_IN_DOCKER=1 doesn't work when running make compile-
|
|
commands (#17507)
|
|
- newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
|
|
- cpu/stm32/periph/rtc overflow error (#16574)
|
|
- `make -j flash` fails due to missing make dependencies or `make
|
|
flash-only` rebuilds the .elf (#16385)
|
|
- Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
|
|
- Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
|
|
- build: info-build doesn't work with boards without port set (#15185)
|
|
- Two bugs may lead to NULL dereference. (#15006)
|
|
- tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
|
|
- BUILD_IN_DOCKER ignores USEMODULE (#14504)
|
|
- adc is not a ADC-Driver but a analog pin abstraction (#14424)
|
|
- ethos: Unable to choose global source address. (#13745)
|
|
- Potential security and safety race conditions on attached devices (#13444)
|
|
- Cannot use LLVM with Cortex-M boards (#13390)
|
|
- Sleep mode for Arduino (#13321)
|
|
- Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
|
|
- Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
|
|
- floats and doubles being used all over the place. (#12045)
|
|
- send data with UDP at 10HZ, the program die (#11860)
|
|
- Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation (#10850)
|
|
- sys/stdio_uart: dropped data when received at once (#10639)
|
|
- CC2538 RF overlapping PIN usage (#8779)
|
|
- doxygen: riot.css modified by 'make doc' (#8122)
|
|
- cpu/native: timer interrupt issue (#6442)
|
|
- macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
|
|
|
|
35 fixed issues since last release (2023.04)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
|
|
Matrix and Forum
|
|
================
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
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 System / Tooling
|
|
----------------------
|
|
|
|
+ tools/compile_like_murdock: Add features (#19351)
|
|
+ tools/doccheck: add simple exclude to doccheck (#19240)
|
|
+ tools/renode: add support for target reset (#19375)
|
|
* build system: Fix linker feature test with newlib 4.3.0 (#19232)
|
|
* ci/print_versions: print all ESP32 toolchains (#19309)
|
|
* dist/tools/doccheck: Fix grep warning (#19220)
|
|
* dist/tools/insufficient_memory: Improve and clean up script (#19291)
|
|
* esptools/install.sh: Fix shellcheck issues (#19325)
|
|
* Fix `compile_like_murdock.py` when board is empty (#19370)
|
|
* make: pass make jobserver to cargo (#19203)
|
|
* Makefile.dep: pull in FEATURES_REQUIRED for periph (#19234)
|
|
* toolchain/gnu.inc.mk: don't check version if CC is not installed (#19137)
|
|
|
|
Kconfig
|
|
-------
|
|
|
|
* drivers/sx126x: make MODULE_SX126X_RF_SWITCH hidden in kconfig (#19194)
|
|
* Fix SX126X-STM32WL module in Kconfig (#19191)
|
|
|
|
Examples
|
|
--------
|
|
|
|
+ examples/gnrc_border_router: add BLE as downlink option (#19321)
|
|
|
|
Testing
|
|
-------
|
|
|
|
+ bors.yaml: re-activate labels check + add block_labels (#19161)
|
|
+ CI: re-add "synchronize" event to check-labels (#19136)
|
|
+ gh-actions: report release-tests result to Matrix (#19102)
|
|
* CI: .murdock: fix bors fast build (#19241)
|
|
* CI: .murdock: use build checkout for ccache tmp (#19274)
|
|
* CI: separate check-labels and check-commits workflows (#19120)
|
|
* CI: update check-labels-action (#19101)
|
|
* test/periph_rtc: reset struct tm time between tests (#19344)
|
|
* tests/gnrc_rpl: Disable CI test for native (#19171)
|
|
* tests/periph_flashpage_unittest: enable periph_flashpage (#19215)
|
|
|
|
API Changes
|
|
-----------
|
|
|
|
+ usbdev: Add dedicated stall functions (#17086)
|
|
* drivers/mtd_flashpage: implement pagewise API, don't use raw
|
|
addresses (#19258)
|
|
* gcoap: Finish the gcoap_get_resource_list_tl ->
|
|
gcoap_get_resource_list renaming (#19295)
|
|
+ drivers/servo: reimplement with high level interface (#18392)
|
|
* cpu/esp_common: use generic WIFI_SSID/WIFI_PASS defines (#19286)
|
|
+ sys/vfs: add force option to vfs_umount() (#19320)
|
|
|
|
Uncategorized
|
|
-------------
|
|
+ MAINTAINING.md: add some notes on Bors (#19329)
|
|
+ RDM: The 802.15.4 Radio HAL (#13943)
|
|
* SECURITY: Describe that declassification is an option (#19149)
|
|
* SUBSYSTEMS.md: migrate subsystem list from wiki (#19060)
|
|
|
|
And 57 minor changes.
|
|
|
|
|
|
Bug fixes (53)
|
|
==============
|
|
|
|
* boards/common: add common timer config for GD32VF103 boards (#19205)
|
|
* cpu/esp_common: Add missing disconnect reasons (#19381)
|
|
* Make: Add generate-Makefile.ci (#19244)
|
|
* usbus: Add support for full speed with high speed phy (#19438)
|
|
* boards/common/cc26xx cc13xx: clean up and fix flash configs (#19050)
|
|
* boards/esp32s2-lilygo-ttgo-t8: fix STDIO selection in Kconfig (#19287)
|
|
* boards/remote-*: drop custom led_init() (#19348)
|
|
* boards/seeedstudio-gd32: fix HXTAL clock in Kconfig (#19129)
|
|
* boards/stm32f4discovery: use default port to access stdio via cdc acm (#19376)
|
|
* boards: fix USB configuration for stm32f429i-disco (#19437)
|
|
* cord: include gcoap_req_send returning 0 in error (#19383)
|
|
* cpu/esp32: fix and improve UART initialization (#19146)
|
|
* cpu/esp32: fix stdio_usb_serial_jtag for ESP32-C3 (#19415)
|
|
* cpu/esp32: fixes for boot issues and crashes on ESP32 (#19192)
|
|
* cpu/esp32: use ets_printf instead of puts in startup (#19420)
|
|
* cpu/gd32v: fix gpio_read in periph_gpio (#19418)
|
|
* cpu/gd32v: move board dependent RTT configs to board config (#19211)
|
|
* cpu/stm32: Fix periph_spi operation in non-DMA mode (#19431)
|
|
* dist/tools/esptools/export.sh: fixes IDF_TOOLS_PATH default setting (#19125)
|
|
* dist/tools/openocd: fix problems with riotboot caused by _flash_addr
|
|
function for OpenOCD v0.12 (#19409)
|
|
* driver/usbdev_synopsys_dwc2: use correct number of EPs (#19380)
|
|
* drivers/at86rf2xx: fix default page being ignored [backport 2023.04] (#19473)
|
|
* drivers/usbdev_synopsys_dwc2: disable DMA mode (#19388)
|
|
* drivers/usbdev_synopsys_dwc2: fix and re-enable DMA mode (#19397)
|
|
* drivers/usbus_synopsys_dwc2: fix interrupt handling in DMA mode
|
|
[backport 2023.04] (#19472)
|
|
* efm32/dac: Shift instead of masking (#19318)
|
|
* gcoap: Do not send responses from multicast addresses (#19272)
|
|
* gh-actions: check-labels: move to upstream fix (#19160)
|
|
* gnrc_netif: set lower bound for IEEE802154_STACKSIZE_DEFAULT (#19339)
|
|
* gnrc_static: don't parse address as prefix (#19313)
|
|
* makefiles/boards/stm32: fix DFU_USB_ID handling (#19374)
|
|
* makefiles/tools/serial.inc.mk: Handle new miniterm versions [backport
|
|
2023.04] (#19489)
|
|
* matrix keypad: Fix memcpy bug in initialization (#19162)
|
|
* nanocoap_sock: don't include token in empty ACK response (#19366)
|
|
* native/stdio: Explicitly provide getchar (#19330)
|
|
* pkg/esp8266_sdk: fix version string generation (#19123)
|
|
* pkg/nimble/autoadv: fix flag comparisons (#19235)
|
|
* pkg/tinyusb: fix default VID/PID configuration (#19377)
|
|
* release-tests: fix PASSED chat message (#19145)
|
|
* security fixes [backport 2023.04] (#19497)
|
|
* shell/gnrc_icmpv6_echo: acquire ZTIMER_USEC clock for time
|
|
measurement (#19055)
|
|
* socket_zep: only report size of single datagram (#19121)
|
|
* sys/clif: Fixing out of bounds read under certain conditions (#18746)
|
|
* sys/net/dhcpv6: include IA Prefix Option in SOLICIT (#19225)
|
|
* sys/phydat: Fix unit confusion (#19292)
|
|
* sys/shell: don't include suit command by default (#19294)
|
|
* sys/suit: Ensure previous thread is stopped before reusing its stack (#19199)
|
|
* sys/usbus/cdc/ecm: fix High-Speed mode (#19358)
|
|
* sys/usbus: handle exceeding number of endpoints (#19362)
|
|
* sys/ztimer: ztimer_mock: guard ztimer_ondemand static functions (#19118)
|
|
* tests/driver_dac_dds: fix output of sine and saw functions (#19251)
|
|
* tests/{sys_fido2_ctap/usbus_board_reset}: fix stdio_usb_serial_jtag
|
|
dependency (#19261)
|
|
* usbus/msc: fixes for synopsys dwc2 [backport 2023.04] (#19456)
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Network related issues (52)
|
|
---------------------------
|
|
|
|
* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
|
|
* [gcoap-dtls] Posting a message yields a stack overflow on the
|
|
`samr21-xpro` with ECC (#18292)
|
|
* 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)
|
|
* CC2538 RF overlapping PIN usage (#8779)
|
|
* 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 choose global source address. (#13745)
|
|
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
|
|
* 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)
|
|
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
|
|
* gnrc_border_router stops routing after a while (#16398)
|
|
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer (#12565)
|
|
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address (#4527)
|
|
* gnrc_netif_pktq leaks memory (#17924)
|
|
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
|
|
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
|
|
* gnrc_rpl: takes unusually long time to start routing packets (#19147)
|
|
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
|
|
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
|
|
* gomach: Resetting netif with cli doesn't return (#10370)
|
|
* ieee802154_submac: IPv6 fragmentation broken (#16998)
|
|
* LoRaWan node ISR stack overflowed (#14962)
|
|
* lwip_sock_tcp / sock_async: received events before calling
|
|
sock_accept() are lost due to race condition. (#16303)
|
|
* Missing drop implementations in netdev_driver_t::recv (#10410)
|
|
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
|
|
* netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address (#10380)
|
|
* nrf52: Not able to add global or ULA address to interface (#13280)
|
|
* nrfmin: communication not possible after multicast ping with no
|
|
interval (#11405)
|
|
* ping6 is failing when testing with cc2538dk (#13997)
|
|
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
|
|
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
|
|
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
|
|
* samr30 xpro doesn't seem to use its radio ok (#12761)
|
|
* scan-build errors found during 2019.07 testing (#11852)
|
|
* send data with UDP at 10HZ, the program die (#11860)
|
|
* stale border router does not get replaced (#12210)
|
|
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
|
|
behavior (#18097)
|
|
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
|
|
* two nodes livelock sending neighbor solicitations back and forth
|
|
between each other (#16670)
|
|
* xbee: setting PAN ID sometimes fails (#10338)
|
|
|
|
Timer related issues (9)
|
|
------------------------
|
|
|
|
* cpu/native: timer interrupt issue (#6442)
|
|
* misc issues with tests/trickle (#9052)
|
|
* MSP430: periph_timer clock config wrong (#8251)
|
|
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
|
|
* periph_timer: systematic proportional error in timer_set (#10545)
|
|
* saml21 system time vs rtc (#10523)
|
|
* Sleep mode for Arduino (#13321)
|
|
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
|
|
* sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time. (#9187)
|
|
|
|
Drivers related issues (16)
|
|
---------------------------
|
|
|
|
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
|
|
* at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported (#4876)
|
|
* cpu/msp430: GPIO driver doesn't work properly (#9419)
|
|
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
|
|
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
|
|
* fail to send data to can bus (#12371)
|
|
* floats and doubles being used all over the place. (#12045)
|
|
* mdt_erase success, but vfs_format resets board (esp32-heltec-
|
|
lora32-v2) (#14506)
|
|
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
|
|
software CS (#6567)
|
|
* periph: GPIO drivers are not thread safe (#4866)
|
|
* Potential security and safety race conditions on attached devices (#13444)
|
|
* PWM: Single-phase initialization creates flicker (#15121)
|
|
* STM32: SPI clock not returning to idle state and generating
|
|
additional clock cycles (#11104)
|
|
* TCP client cannot send read only data (#16541)
|
|
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
|
|
* Two bugs may lead to NULL dereference. (#15006)
|
|
|
|
Native related issues (4)
|
|
-------------------------
|
|
|
|
* examples/micropython: floating point exception while testing on
|
|
native (#15870)
|
|
* native getchar is blocking RIOT (#16834)
|
|
* native not float safe (#495)
|
|
* native: tlsf: early malloc will lead to a crash (#5796)
|
|
|
|
Other platforms related issues (16)
|
|
-----------------------------------
|
|
|
|
* Failing tests on FE310 (Hifive1b) (#13086)
|
|
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
|
|
* boards/hifive1: flashing issue (#13104)
|
|
* Cannot use LLVM with Cortex-M boards (#13390)
|
|
* cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash (#14929)
|
|
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
|
|
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
|
|
* examples/gnrc_border_router: esp_wifi_init failed with return value
|
|
257 on ESP32-C3 with nimble_rpble (#19319)
|
|
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
|
|
* MPU doesn't work on cortex-m0+ (#14822)
|
|
* newlib-nano: Printf formatting does not work properly for some
|
|
numeric types (#1891)
|
|
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
|
|
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
|
|
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
|
|
after __WFI() (#14015)
|
|
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
|
|
* sys/riotboot/flashwrite: unaligned write when skipping
|
|
`RIOTBOOT_MAGIC` on stm32wb (#15917)
|
|
|
|
Build system related issues (11)
|
|
--------------------------------
|
|
|
|
* `buildtest` uses wrong build directory (#9742)
|
|
* `make -j flash` fails due to missing make dependencies or `make
|
|
flash-only` rebuilds the .elf (#16385)
|
|
* Build dependencies - processing order issues (#9913)
|
|
* build: info-build doesn't work with boards without port set (#15185)
|
|
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
|
|
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
|
|
1.89 (#12771)
|
|
* doxygen: riot.css modified by 'make doc' (#8122)
|
|
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
|
|
* make: ccache leads to differing binaries (#14264)
|
|
* make: use of immediate value of variables before they have their
|
|
final value (#8913)
|
|
* Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation (#10850)
|
|
|
|
Other issues (48)
|
|
-----------------
|
|
|
|
* 2023.04 release bug tracking (#19469)
|
|
* [TRACKING] sys/shell refactoring. (#12105)
|
|
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
|
|
through shell after flashing with J-Link (#13044)
|
|
* `make term` no longer works with JLinkExe v6.94 (#16022)
|
|
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
|
|
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
|
|
* Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
|
|
* Can't build relic with benchmarks or tests (#12897)
|
|
* CC2538DK board docs: broken links (#12889)
|
|
* cpu/stm32/periph/rtc overflow error (#16574)
|
|
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
|
|
* doc/LOSTANDFOUND: not rendered as expected (#17063)
|
|
* edbg: long lines flooded over serial become garbled (#14548)
|
|
* examples / tests: LoRa tests fail on platforms that don't support
|
|
LoRa (#14520)
|
|
* feather-m0: `make flash` reports "device unsupported" (#17722)
|
|
* flashing issue on frdm-k64f (#15903)
|
|
* frdm-k22f failing tests/periph_flashpage (#17057)
|
|
* I2C not working under RIOT with U8G2 pkg (#16381)
|
|
* ieee802154_security: Nonce is reused after reboot (#16844)
|
|
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
|
|
disconnect (#17209)
|
|
* lwip: invalid state transition on ieee802154_submac users (#17208)
|
|
* Making the newlib thread-safe (#4488)
|
|
* mcuboot: flashes but no output (#17524)
|
|
* nanocoap: incomplete response to /.well-known/core request (#10731)
|
|
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
|
|
* Order of auto_init functions (#13541)
|
|
* pkg/tinydtls: Multiple issues (#16108)
|
|
* pkg_libhydrogen tests fail / update libhydrogen (#18508)
|
|
* Potential race condition in compile_and_test_for_board.py (#12621)
|
|
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
|
|
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
|
|
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
|
|
gracefully (#17874)
|
|
* rust-gcoap example is incompatible with littlefs2 (#17817)
|
|
* SPI access in LoRa-e5 and im880b? (#19025)
|
|
* stdio_ethos: infinite shell loop (#17972)
|
|
* stdio_tinyusb_cdc_acm hangs with picolibc (#19277)
|
|
* sys/riotboot: documentation issues (#11243)
|
|
* sys/stdio_uart: dropped data when received at once (#10639)
|
|
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
|
|
* tests/lwip target board for python test is hardcoded to native (#6533)
|
|
* tests/periph_flashpage: failing on stm32l475ve (#17280)
|
|
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM (#15066)
|
|
* tests/pkg_libschc: Failing test_reassemble_success_ack_always (#19445)
|
|
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
|
|
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
|
|
* tests: some tests don't work with `newlib` lock functions. (#12732)
|
|
* usbus/msc: wrong error handling and behavior after usb reset (#19478)
|
|
* Use of multiple CAN bus on compatible boards (#14801)
|
|
|
|
There are 156 known issues in this release
|
|
|
|
Fixed Issues since the last release (2023.01)
|
|
=============================================
|
|
|
|
- bootloader: BTN_BOOTLOADER_INVERTED doesn't work as expected. (#19364)
|
|
- Race condition in SUIT around threads terminating (#19195)
|
|
- socket_zep: fragmentation broken if destination is multicast /
|
|
ACK_REQ not set (#19117)
|
|
|
|
3 fixed issues since last release (2023.01)
|
|
|
|
Boards tested during this release
|
|
=================================
|
|
|
|
- `esp32-wroom-32` PASS
|
|
- `nrf52840dk` PASS
|
|
- `nucleo-f429zi` PASS
|
|
- `samr21-xpro` PASS
|
|
- `arduino-mega2560` FAIL
|
|
- `b-l072z-lrwan1` FAIL
|
|
- `b-l475e-iot01a` FAIL
|
|
- `dwm1001` FAIL
|
|
- `frdm-kw41z` FAIL
|
|
- `iotlab-m3` FAIL
|
|
- `nrf52dk` FAIL
|
|
- `nucleo-l452re` FAIL
|
|
- `nucleo-wl55jc` FAIL
|
|
- `remote-revb` FAIL
|
|
- `saml10-xpro` FAIL
|
|
- `samr34-xpro` FAIL
|
|
|
|
See the release tracking issue (#19469) for more details.
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
|
|
Matrix and Forum
|
|
================
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
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 reuse 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 fixes (#18759)
|
|
* Fix kconfig mismatch breaking nightlies (#18805)
|
|
* gnrc: Fix unused function error when using LLVM (#18852)
|
|
* gnrc_sixlowpan: Various hardening fixes (#18817)
|
|
* makefiles/libc/picolibc.mk: fix compilation with modern binutils (#18893)
|
|
* nanocoap_sock: don't store entire sock in coap_block_request_t (#18827)
|
|
* nanocoap_sock: only re-transmit CON messages (#18819)
|
|
* pkg/nimble: signal LINK_UP on initialisation (#18979)
|
|
* pkg/tinyusb: fix the reset of the USB connection for STM32 boards
|
|
without internal D+ pullup (#18992)
|
|
* pkg/utensor: fix uninitialized variable (#18862)
|
|
* sam0_common: use size_t len for I2C transfers (fixes #19008) (#19009)
|
|
* sys/clif: Fixing out of bounds read under certain conditions (#18744)
|
|
* sys/net/gnrc/pkt: fix gnrc_pkt_delete() (#18874)
|
|
* sys/net/grnc/netreg: avoid freeing wild pointers (#18951)
|
|
* sys/stdio_uart: fix undefined behavior (#18774)
|
|
* sys/uri_parser: fixing potential out of bounds read when consuming
|
|
ports (#19016)
|
|
* sys/ztimer: model ztimer_periph_lptimer for Kconfig (#18783)
|
|
* test-on-iotlab: several fixes to make it runnable again (#18722)
|
|
* tests/congure_abe: reset node before starting terminal (#18769)
|
|
* tests/pkg_utensor: increase main threads stack size (#18952)
|
|
* tests/shell: fix failure on samr21-xpro (#18891)
|
|
* tests: set netdev `event_callback` before calling init (#18745)
|
|
* tools/backport_pr: finally fix running outside of repo's root (#18881)
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Network related issues (52)
|
|
---------------------------
|
|
|
|
* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
|
|
* [gcoap-dtls] Posting a message yields a stack overflow on the
|
|
`samr21-xpro` with ECC (#18292)
|
|
* 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)
|
|
* CC2538 RF overlapping PIN usage (#8779)
|
|
* 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 choose global source address. (#13745)
|
|
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
|
|
* 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)
|
|
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
|
|
* gnrc_border_router stops routing after a while (#16398)
|
|
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer (#12565)
|
|
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address (#4527)
|
|
* gnrc_netif_pktq leaks memory (#17924)
|
|
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
|
|
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
|
|
* gnrc_rpl: takes unusually long time to start routing packets (#19147)
|
|
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
|
|
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
|
|
* gomach: Resetting netif with cli doesn't return (#10370)
|
|
* ieee802154_submac: IPv6 fragmentation broken (#16998)
|
|
* LoRaWan node ISR stack overflowed (#14962)
|
|
* lwip_sock_tcp / sock_async: received events before calling
|
|
sock_accept() are lost due to race condition. (#16303)
|
|
* Missing drop implementations in netdev_driver_t::recv (#10410)
|
|
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
|
|
* netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address (#10380)
|
|
* nrf52: Not able to add global or ULA address to interface (#13280)
|
|
* nrfmin: communication not possible after multicast ping with no
|
|
interval (#11405)
|
|
* ping6 is failing when testing with cc2538dk (#13997)
|
|
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
|
|
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
|
|
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
|
|
* samr30 xpro doesn't seem to use its radio ok (#12761)
|
|
* scan-build errors found during 2019.07 testing (#11852)
|
|
* send data with UDP at 10HZ, the program die (#11860)
|
|
* stale border router does not get replaced (#12210)
|
|
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
|
|
behavior (#18097)
|
|
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
|
|
* two nodes livelock sending neighbor solicitations back and forth
|
|
between each other (#16670)
|
|
* xbee: setting PAN ID sometimes fails (#10338)
|
|
|
|
Timer related issues (9)
|
|
------------------------
|
|
|
|
* cpu/native: timer interrupt issue (#6442)
|
|
* misc issues with tests/trickle (#9052)
|
|
* MSP430: periph_timer clock config wrong (#8251)
|
|
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
|
|
* periph_timer: systematic proportional error in timer_set (#10545)
|
|
* saml21 system time vs rtc (#10523)
|
|
* Sleep mode for Arduino (#13321)
|
|
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
|
|
* sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time. (#9187)
|
|
|
|
Drivers related issues (16)
|
|
---------------------------
|
|
|
|
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
|
|
* at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported (#4876)
|
|
* cpu/msp430: GPIO driver doesn't work properly (#9419)
|
|
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
|
|
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
|
|
* fail to send data to can bus (#12371)
|
|
* floats and doubles being used all over the place. (#12045)
|
|
* mdt_erase success, but vfs_format resets board (esp32-heltec-
|
|
lora32-v2) (#14506)
|
|
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
|
|
software CS (#6567)
|
|
* periph: GPIO drivers are not thread safe (#4866)
|
|
* Potential security and safety race conditions on attached devices (#13444)
|
|
* PWM: Single-phase initialization creates flicker (#15121)
|
|
* STM32: SPI clock not returning to idle state and generating
|
|
additional clock cycles (#11104)
|
|
* TCP client cannot send read only data (#16541)
|
|
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
|
|
* Two bugs may lead to NULL dereference. (#15006)
|
|
|
|
Native related issues (4)
|
|
-------------------------
|
|
|
|
* examples/micropython: floating point exception while testing on
|
|
native (#15870)
|
|
* native getchar is blocking RIOT (#16834)
|
|
* native not float safe (#495)
|
|
* native: tlsf: early malloc will lead to a crash (#5796)
|
|
|
|
Other platforms related issues (15)
|
|
-----------------------------------
|
|
|
|
* Failing tests on FE310 (Hifive1b) (#13086)
|
|
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
|
|
* boards/hifive1: flashing issue (#13104)
|
|
* Cannot use LLVM with Cortex-M boards (#13390)
|
|
* cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash (#14929)
|
|
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
|
|
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
|
|
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
|
|
* MPU doesn't work on cortex-m0+ (#14822)
|
|
* newlib-nano: Printf formatting does not work properly for some
|
|
numeric types (#1891)
|
|
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
|
|
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
|
|
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
|
|
after __WFI() (#14015)
|
|
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
|
|
* sys/riotboot/flashwrite: unaligned write when skipping
|
|
`RIOTBOOT_MAGIC` on stm32wb (#15917)
|
|
|
|
Build system related issues (11)
|
|
--------------------------------
|
|
|
|
* `buildtest` uses wrong build directory (#9742)
|
|
* `make -j flash` fails due to missing make dependencies or `make
|
|
flash-only` rebuilds the .elf (#16385)
|
|
* Build dependencies - processing order issues (#9913)
|
|
* build: info-build doesn't work with boards without port set (#15185)
|
|
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
|
|
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
|
|
1.89 (#12771)
|
|
* doxygen: riot.css modified by 'make doc' (#8122)
|
|
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
|
|
* make: ccache leads to differing binaries (#14264)
|
|
* make: use of immediate value of variables before they have their
|
|
final value (#8913)
|
|
* Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation (#10850)
|
|
|
|
Other issues (44)
|
|
-----------------
|
|
|
|
* [TRACKING] sys/shell refactoring. (#12105)
|
|
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
|
|
through shell after flashing with J-Link (#13044)
|
|
* `make term` no longer works with JLinkExe v6.94 (#16022)
|
|
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
|
|
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
|
|
* Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
|
|
* Can't build relic with benchmarks or tests (#12897)
|
|
* CC2538DK board docs: broken links (#12889)
|
|
* cpu/stm32/periph/rtc overflow error (#16574)
|
|
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
|
|
* doc/LOSTANDFOUND: not rendered as expected (#17063)
|
|
* edbg: long lines flooded over serial become garbled (#14548)
|
|
* examples / tests: LoRa tests fail on platforms that don't support
|
|
LoRa (#14520)
|
|
* feather-m0: `make flash` reports "device unsupported" (#17722)
|
|
* flashing issue on frdm-k64f (#15903)
|
|
* frdm-k22f failing tests/periph_flashpage (#17057)
|
|
* I2C not working under RIOT with U8G2 pkg (#16381)
|
|
* ieee802154_security: Nonce is reused after reboot (#16844)
|
|
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
|
|
disconnect (#17209)
|
|
* lwip: invalid state transition on ieee802154_submac users (#17208)
|
|
* Making the newlib thread-safe (#4488)
|
|
* mcuboot: flashes but no output (#17524)
|
|
* nanocoap: incomplete response to /.well-known/core request (#10731)
|
|
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
|
|
* Order of auto_init functions (#13541)
|
|
* pkg/tinydtls: Multiple issues (#16108)
|
|
* pkg_libhydrogen tests fail / update libhydrogen (#18508)
|
|
* Potential race condition in compile_and_test_for_board.py (#12621)
|
|
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
|
|
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
|
|
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
|
|
gracefully (#17874)
|
|
* rust-gcoap example is incompatible with littlefs2 (#17817)
|
|
* SPI access in LoRa-e5 and im880b? (#19025)
|
|
* stdio_ethos: infinite shell loop (#17972)
|
|
* sys/riotboot: documentation issues (#11243)
|
|
* sys/stdio_uart: dropped data when received at once (#10639)
|
|
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
|
|
* tests/lwip target board for python test is hardcoded to native (#6533)
|
|
* tests/periph_flashpage: failing on stm32l475ve (#17280)
|
|
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM (#15066)
|
|
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
|
|
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
|
|
* tests: some tests don't work with `newlib` lock functions. (#12732)
|
|
* Use of multiple CAN bus on compatible boards (#14801)
|
|
|
|
There are 151 known issues in this release
|
|
|
|
Fixed Issues since the last release (2022.10)
|
|
=============================================
|
|
|
|
- Race condition in SUIT around threads terminating (#19195)
|
|
- socket_zep: fragmentation broken if destination is multicast /
|
|
ACK_REQ not set (#19117)
|
|
- sam0_sdhc: SDXC cards are not detected / handled properly (#18458)
|
|
- semtech_loramac_init blocking (#17907)
|
|
- tests/thread_float: crashes on avr-rss2 (#16908)
|
|
- esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
|
|
- SIGFPE on native architecture when printing double floats on Ubuntu
|
|
21.04 (#16282)
|
|
- I found stm32 DMA periph driver bugs! when I tested stm32l431rc
|
|
board. (#16242)
|
|
- pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
|
|
- Unclear how Router Solicitations are (or should be) handled (#15926)
|
|
- examples/ccn-lite: floating point exception while testing on native (#15878)
|
|
- usb-serial/list-ttys.sh: Broken when a debugger offers multiple
|
|
serial ports (#15814)
|
|
- tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32 (#13133)
|
|
|
|
13 fixed issues since last release (2022.10)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
|
|
Matrix and Forum
|
|
================
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
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](https://github.com/thingsat)
|
|
it is now ready to for
|
|
[Mars](https://www.cs.unc.edu/~anderson/teach/comp790/papers/mars_pathfinder_long_version.html).
|
|
|
|
### 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:
|
|
|
|
```sh
|
|
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](https://podman.io/) 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 package (#18592)
|
|
|
|
Boards
|
|
------
|
|
|
|
+ boards/nucleo-f446ze: add support for ADC (#18647)
|
|
+ boards/nucleo-f767zi: add PWM config (#18393)
|
|
+ boards/samr21-xpro: add a note about EDBG UART limitation (#18567)
|
|
+ boards/stm32f746g-disco: add LD1 as LED0 definition (#18673)
|
|
+ boards: add support for the Waveshare nRF52840 Eval Kit (#13860)
|
|
+ cpu/esp32: add support for ESP32-C3 (#18345)
|
|
+ cpu/esp32: add support for ESP32-S2 (#18506)
|
|
+ cpu/esp32: add support for ESP32-S3 (#18421)
|
|
+ cpu/stm32/periph/usbdev_fs: add support for STM32F3 family (#18680)
|
|
+ drivers/usbdev_synopsys_dwc2: add USB OTG HS peripheral support for
|
|
external ULPI HS PHYs (#18679)
|
|
+ drivers: add driver for Synopsys DWC2 that is used as USB OTG
|
|
peripheral on STM32 and ESP32x SoCs (#18644)
|
|
+ pkg/tinyusb: add support for SAM0-based boards (#18689)
|
|
* boards/blxxxpill: configure usbdev_fs (#17812)
|
|
* boards/common/stm32: clean up LED definitions (#18415)
|
|
* boards/nucleo-l4r5zi: support for ADC (#18676)
|
|
* boards/remote-revb: define default MTD device (#18611)
|
|
* boards/samr34-xpro: configure SPI NOR flash (#18492)
|
|
* cpu/atxmega: fix building with avr-libc 2.1.0 (#18626)
|
|
* cpu/esp32: use CPU_FAM and CPU_ARCH for ESP32x SoC variant dependent
|
|
compilation (#18316)
|
|
* cpu/mips: Remove all mips (#18562)
|
|
* cpu/{esp8266,esp32}: cleanup of SPI Flash configuration (#18387)
|
|
* doc: fix unbalaced grouping (#18444)
|
|
|
|
CPU
|
|
---
|
|
|
|
+ cpu/avr8_common: add strings.h for compatibility (#18623)
|
|
+ cpu/esp32: add Bluetooth LE and NimBLE host support (#18439)
|
|
+ cpu/esp32: add ESP32-C3 support in makefiles (#18341)
|
|
+ cpu/esp32: add ESP32-S2 support to makefiles (#18503)
|
|
+ cpu/esp32: add ESP32-S3 support to makefiles (#18410)
|
|
+ cpu/esp32: add linker scripts for ESP32-C3 (#18340)
|
|
+ cpu/esp32: add linker scripts for ESP32-S2 (#18509)
|
|
+ cpu/esp32: add linker scripts for ESP32-S3 (#18409)
|
|
+ cpu/esp32: add platform code for RISC-V based ESP32x SoCs (#18260)
|
|
+ cpu/esp32: add some sanity checks in peripheral drivers (#18332)
|
|
+ cpu/esp32: enable BLE and NimBLE host support for ESP32-S3 (#18517)
|
|
+ cpu/esp32: extend file names of CPU specific files by CPU family (#18326)
|
|
+ cpu/esp32: implement periph/gpio_ll and periph/gpio_ll_irq (#17442)
|
|
+ cpu/esp32: split cpu_conf.h into ESP32x common and ESP32 specific
|
|
parts (#18323)
|
|
+ cpu/esp32: split periph_cpu.h into ESP32x common and ESP32 specific
|
|
parts (#18324)
|
|
+ cpu/esp32: split sdkconfig.h into ESP32x common and ESP32 specific
|
|
parts (#18322)
|
|
+ cpu/sam0_common: adc: add support for differential mode (#18146)
|
|
+ cpu/stm32/periph_eth: Add stm32_eth_tracing (#18418)
|
|
+ pkg/nimble: add feature ble_adv_ext and cleanup ble_* features (#18449)
|
|
+ sys/tiny_strerror: add tiny `strerror()` implementation (#18571)
|
|
* core/mutex: clean up (#18619)
|
|
* cpu/cortexm: clear FPU state in `cpu_switch_context_exit()` (#18697)
|
|
* cpu/esp*: cleanups mainly to reduce the vera++ warnings (#18333)
|
|
* cpu/esp32: cleanup of esp_log_write (#18335)
|
|
* cpu/esp32: enable BLE and NimBLE host support for ESP32-C3 (#18510)
|
|
* cpu/esp32: extend GPIO wake-up from deep sleep (#18405)
|
|
* cpu/esp32: implement periph_spi_reconfigure (#18710)
|
|
* cpu/esp32: make esp_hw_counter feature dependent on ESP32x SoC family (#18317)
|
|
* cpu/esp32: move common ESP-IDF configurations to common files (#18406)
|
|
* cpu/esp32: move linker scripts to a ESP32x variant specific directory (#18325)
|
|
* cpu/esp: improve thread safety in newlib locking functions (#18544)
|
|
* cpu/esp_common: MODULE_XTENSA has to depend on HAS_ARCH_ESP_XTENSA (#18319)
|
|
* cpu/native: get mtd size from file size (#18669)
|
|
* cpu/nrf5x: allow multiple I2C and SPI buses on a shared periph (#18478)
|
|
* cpu/sam0/timer: supply all clocks before accessing any regs (#18527)
|
|
* cpu/sam0_common: spi: limit clock to source clock (#18223)
|
|
* cpu/stm32/periph/usbdev_fs: support for STM32F1 family (#18729)
|
|
* cpu/stm32/periph_eth: optimize IRQ handler (#18417)
|
|
* cpu: cpu_print_last_instruction() -> cpu_get_caller_pc() (#18226)
|
|
* cpu: make use of `cortexm.ld` (#18636)
|
|
* gnrc_netif: handle NETDEV_EVENT_LINK_UP/DOWN events (#17893)
|
|
* pkg/lwip: Set netdev callback before driver init (#18548)
|
|
* socket_zep: ignore packets sent on the wrong radio channel (#18594)
|
|
* sys/net/gnrc/netif: allow checking if a netdev is legacy or new API (#18426)
|
|
* treewide: Ubuntu jammy build fixes (#18652)
|
|
|
|
Device Drivers
|
|
--------------
|
|
|
|
* drivers/wx281x: fix DEBUG format string for ESP32x SoCs (#18336)
|
|
* usbdev_synopsys_dwc2: Mask RX FIFO irq when using DMA (#18726)
|
|
|
|
Documentation
|
|
-------------
|
|
|
|
+ cpu/esp32: add ESP32-S2 support in documentation (#18505)
|
|
+ cpu/esp32: add ESP32-S3 support to documentation (#18412)
|
|
+ cpu/esp32: split the doc into ESP32x common and ESP32 specific parts (#18321)
|
|
+ cpu/esp32: update documentation for ESP32-C3 (#18350)
|
|
+ doc: Add high-level documentation on flashing boards (#18455)
|
|
* boards/nucleo64: doc update - usage of cpy2remed programmer and short
|
|
board overview (#18419)
|
|
* boards/remote-revb: fix pinout image in doc.txt (#18615)
|
|
* dist/tools/edbg: bump version (and update SAML11 documentation) (#18384)
|
|
* doc/doxygen: use DuckDuckGo for search (#18358)
|
|
* doc: change protocol for git clone in docs (#18531)
|
|
* gnrc/ipv6_auto_subnets: improve documentation about subnet generation
|
|
and RIO (#18398)
|
|
* tests/doc: some additions and reorganization of doc page (#18190)
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
|
|
+ Add podman support (#18671)
|
|
+ codespell: add false positives for v2.2.1 (#18675)
|
|
+ dist/tools/esptools: add ESP32-C3 toolchain (#18337)
|
|
+ dist/tools/esptools: add ESP32-S2 toolchain support to
|
|
{install,export}.sh (#18502)
|
|
+ dist/tools/esptools: add ESP32-S3 toolchain support to
|
|
{install,export}.sh (#18407)
|
|
+ dist/tools/esptools: add macOS support to install/export scripts (#18385)
|
|
+ dist/tools: add DOSE Linux tool (#18163)
|
|
+ makefiles/tools/dfu-util: add option to pass DFU_SERIAL id (#18521)
|
|
+ makefiles: Add openocd-rtt (#18526)
|
|
+ tools/openocd: add generic FTDI adapter (#18628)
|
|
+ tools/zep_dispatch: add Wireshark capture support (via
|
|
mac802154_hwsim) (#18230)
|
|
* .circleci: remove directory (#18674)
|
|
* dist/tools/suit: encrypt an existing key (#18499)
|
|
* doccheck: remove exclude_patterns not needed (#18597)
|
|
* makefiles/arch/avr8.inc.mk: Fix compilation with GCC 12.2.0 (#18533)
|
|
* makefiles/boards/stm32.inc.mk: improve stm32flash support (#18452)
|
|
* makefiles: Select suitable terminal when stdio_rtt is used (#18528)
|
|
* pseudomodules: document gnrc_netif_cmd_lora as deprecated (#18706)
|
|
|
|
Kconfig
|
|
-------
|
|
|
|
+ cpu/esp32: add ESP32-S2 support in Kconfig (#18504)
|
|
+ cpu/esp32: add ESP32-S3 support in Kconfig (#18411)
|
|
+ cpu/esp32: split Kconfig into ESP32x common and ESP32 specific parts (#18320)
|
|
+ drivers: model IEEE 802.15.4 devices in Kconfig (#17789)
|
|
+ drivers: model kconfig for Ethernet drivers (#17739)
|
|
+ Kconfig/ieee802154: fix typo in HAL selector and add missing radios (#18430)
|
|
* .murdock: disable hash checks of kconfig/make (#18423)
|
|
* cpu/esp_{common,32,8266}: improve Kconfig submenu structure (#18314)
|
|
* drivers/kw2xrd/Kconfig: fix kconfig model (#18497)
|
|
* Fix kconfig models breaking nightlies (#18718)
|
|
|
|
Examples
|
|
--------
|
|
|
|
+ examples/gcoap_dtls: Add coap-client example (#18660)
|
|
* examples/filesystem: drop manual mounts (#18495)
|
|
* examples: Move in RIOT/applications (#18602)
|
|
|
|
Testing
|
|
-------
|
|
|
|
+ .murdock.yml: Add preview link to documentation to comment (#18677)
|
|
+ release-tests: add capability to run on PR comment (#18713)
|
|
+ Revert "release-tests: add capability to run on PR comment" (#18736)
|
|
+ tests/external_boards: add esp32c3-ci board for optional modules (#18404)
|
|
+ tests/external_boards: add esp32s2-ci board for optional modules (#18507)
|
|
+ tests/external_boards: add esp32s3-ci board for optional modules (#18422)
|
|
+ tests/gcoap_fileserver: add integration test for GCoAP fileserver (#18199)
|
|
* CI: improve makefile broken handling (#18595)
|
|
* ci: teach github-labeler about .murdock.yml (#18666)
|
|
* gh-actions: move actions/checkout to main (#18730)
|
|
* murdock: honour RUN_TESTS setting (#18546)
|
|
* murdock: make available boards instance dependent (#18659)
|
|
* riotctrl_shell.cord_ep: remove regif parameter (#18716)
|
|
* tests/ieee802154_*: fix tx_done handler on ACK_TIMEOUT and improve
|
|
tests (#18382)
|
|
* tests/periph_gpio_ll: drop core dump merged by accident (#18541)
|
|
* tests/periph_timer_short_relative_set: clarify outcome (#18513)
|
|
* tests/pkg_lvgl_touch: randomize button position on click (#18481)
|
|
* tests/pkg_tinyvcdiff: Initialize mtd->write_size (#18529)
|
|
* tests/thread_priority_inversion: blacklist esp32 (#18535)
|
|
* tests/ztimer_periodic: improve output and relax on native (#18491)
|
|
* tests/{periph_gpio_ll,pkg_fff}: change CPU_FAM to MCU for ESP32x SoCs (#18356)
|
|
|
|
API Changes
|
|
-----------
|
|
|
|
+ drivers/kw2xrf: add support for IEEE 802.15.4 Radio HAL (#18383)
|
|
- Applications using the proper network stack APIs (such as the SOCK API or
|
|
POSIX sockets) will not notice any chances, except for e.g. the better
|
|
packet reception rate
|
|
+ sys/shell: make cmds submodules and add KConfig modeling (#18355)
|
|
- Shell commands can now be individually selected by using the corresponding
|
|
`shell_cmd_<name>` module. What previously was called `shell_commands` now
|
|
is `shell_cmds_default` and will automagically select shell commands based
|
|
on the set of modules used. Users can keep using `shell_commands` for now,
|
|
but the build system will inform them that `shell_commands` is deprecated.
|
|
* cpu/sam0_common: adc: drop pin from adc_conf_chan_t (#18658)
|
|
- Application developers will not have to change their code. However, out of
|
|
tree SAM0 boards that contain an ADC configuration will need to remove the
|
|
`.pin` member and rename the existing `.muxpos` member to `.inputctrl`
|
|
* hashes_cmac: rename to hashes_aes128_cmac (#18539)
|
|
- Existing C call sides will continue to work due to compatibility wrappers.
|
|
However, applications should migrate before the deprecated wrappers are
|
|
dropped.
|
|
* nanocoap_sock: constify remote (#18588)
|
|
- This will not break any existing C call sides
|
|
* gnrc_netreg: Use locks around netreg (#18740)
|
|
- calls to `gnrc_netreg_lookup()` and `gnrc_netreg_getnext()` now need to be
|
|
guarded
|
|
* sys/hash/pbkdf2: Accept passwd as `void *` instead of `uint8_t *` (#18941)
|
|
- This is not breaking any existing C call sides, but new code no longer
|
|
needs to cast `char *` to `uint8_t *`
|
|
|
|
Uncategorized
|
|
-------------
|
|
+ .murdock.yml: add footer comment about production stage (#18667)
|
|
+ .murdock.yml: add new Murdock configuration (#18084)
|
|
+ pkg/lwip: add missing initialization for async_cb (#18693)
|
|
* bootloader/riotboot_dfu: move ztimer_init() prior to usbus start (#18538)
|
|
* murdock: fix bors branch name (testing -> trying) (#18665)
|
|
* Release notes 2022.07 (#18512)
|
|
|
|
And 40 minor changes.
|
|
|
|
Deprecations
|
|
============
|
|
|
|
- The module `shell_commands` is now deprecated. User should use
|
|
`shell_cmds_default`. For now, `shell_commands` is an alias of
|
|
`shell_cmds_default`
|
|
- Shell commands that were individually selectable even before this release were
|
|
renamed to match the pattern `shell_cmd_<name>`, while they previously where
|
|
often called `<name>_cmd`. The previous names are aliases of the new names
|
|
and the build system will list any deprecated modules used.
|
|
- Users of `hashes_cmac` should update to `hashes_aes128_cmac` before the legacy
|
|
wrappers now in place for backward compatibility will be removed.
|
|
|
|
|
|
Bug fixes (107)
|
|
==============
|
|
|
|
* .murdock: Fix kconfig hash check (#18364)
|
|
* asymcute: Compare request message type when matching acknowledgement (#18434)
|
|
* asymcute: fix one byte out-of-bounds access in _len_get (#18433)
|
|
* boards/common/stm32: Fix LED configuration (#18568)
|
|
* boards/nrf52dk: fix doc (#18646)
|
|
* core/mbox: fix race condition (#18960)
|
|
* core/msg.c: irq was not restored properly (#18606)
|
|
* core/mutex: fix priority inheritance on AVR (#18584)
|
|
* core/sched.c: fix undefined behavior on 8-bit/16-bit (#18573)
|
|
* cpu/arm7_common: align stacks correctly (#18641)
|
|
* cpu/arm7_common: fix compilation with 12.2.0 (#18638)
|
|
* cpu/atmega_common/periph_timer: fix spurious IRQs (#18981)
|
|
* cpu/esp32/periph_timer: allow changing callback or freq (#18973)
|
|
* cpu/esp32: fix dependency for periph/rtt and module esp_rtc_timer_32k (#18334)
|
|
* cpu/esp32: fix provided features and Kconfig for esp_eth (#18394)
|
|
* cpu/esp8266/periph_timer: allow changing callback or freq (#18973)
|
|
* cpu/esp: fix netdev register (#18391)
|
|
* cpu/esp_common/periph_uart: fix call to _uart_set_mode (#18720)
|
|
* cpu/nrf5x_common/periph_timer: fix spurious IRQs (#18974)
|
|
* cpu/qn908x: use bitarithm_test_and_clear() & fix cb (#18990)
|
|
* cpu/qn909x/periph_timer: make clangd happy (#18990)
|
|
* cpu/stm32/periph_eth: fix typo in initialization code (#18416)
|
|
* cpu/stm32/periph_timer: fix race conditions (#18972)
|
|
* cpu/stm32/periph_timer: fix spurious IRQs (#18972)
|
|
* cpu/stm32: fix KConfig modeling for STM32F1 / usbdev_synopsys_dwc2 (#18741)
|
|
* dist/tools/flatc: Fix compilation on musl (#18864)
|
|
* dns_cache: handle TTL=0 properly (#18441)
|
|
* dns_cache: synchronize access with mutex (#18330)
|
|
* drivers/atwinc15x0: reset device if m2m_wifi_handle_events() fails (#18476)
|
|
* drivers/ethos: Fix off-by-one in ETHOS driver (#18831)
|
|
* drivers/lis2dh12: release instead of acquire (#18353)
|
|
* drivers/mtd: fix module name for mtd_sdcard in Kconfig (#18395)
|
|
* drivers/nrf802154: do not filter broadcast PAN ID (#18283)
|
|
* drivers/sdcard_spi: make 8-bit safe (#18572)
|
|
* drivers/shtcx: I2C-line is not released properly (#18347)
|
|
* drivers/slipdev: fix off-by-one error in _recv() (#18830)
|
|
* drivers/{dose, slipdev, sam0_eth}: generate RX event for queued packets (#18201)
|
|
* examples/dtls-echo: set address family for sessions (#18369)
|
|
* examples/wasm/wasm_sample: fix linking with new wasm-ld (#18867)
|
|
* gcoap: fixes around empty ACKs (#18429)
|
|
* gcoap_dns: various fixes (#18367)
|
|
* gcoap_fileserver: bugfix recursive delete (#18536)
|
|
* gcoap_forward_proxy: copy Max-Age from forwarded Valid if it exists (#18471)
|
|
* gnrc_ipv6_nib: make configurable via Kconfig again (#18360)
|
|
* gnrc_netif: don't allocate message queue on the stack (#17905)
|
|
* gnrc_netif_conf: fix auto-6ctx switch (#18370)
|
|
* gnrc_netif_ieee802154: Ignore packets without source address (#18820)
|
|
* gnrc_sixlowpan_frag_rb: fix integer underflow in _6lo_frag_size() (#18820)
|
|
* gnrc_sixlowpan_frag_vrb: Assert no usage of a vrb with src_len == 0 (#18820)
|
|
* gnrc_sixlowpan_iphc.c: dereference ipv6_hdr in DEBUG() after assignment (#18820)
|
|
* gnrc_sixlowpan_iphc: fix buffer overflow in gnrc_sixlowpan_iphc_recv() (#18820)
|
|
* gnrc_sixlowpan_iphc: fix integer underflow in gnrc_sixlowpan_iphc_recv() (#18820)
|
|
* gnrc_sixlowpan_iphc: fix null pointer dereference in _iphc_encode() (#18820)
|
|
* gnrc_sixlowpan_iphc: fix packet type confusion in _iphc_encode() (#18820)
|
|
* ieee802154: Adjust parsing of IEEE 802.15.4 frame header (#18820)
|
|
* kw2xrf/Kconfig: remove netdev_ieee802154 from dependency resolution (#18469)
|
|
* makefiles/arch/avr8.inc.mk: fix detection of GCC 12 (#18732)
|
|
* makefiles/arch/cortexm.inc.mk: fix ASMFLAGS (#18899)
|
|
* makefiles/arch/riscv.inc.mk: Fix with BUILD_IN_DOCKER (#18654)
|
|
* makefiles/cflags.inc.mk: add -z noexecstack to link flags (#18928)
|
|
* makefiles/libc/picolibc.mk: fix compilation with modern binutils (#18909)
|
|
* makefiles/libc: fix wchar_t size warnings on LLVM (#18928)
|
|
* makefiles/suit: avoid unwanted key creation trigger (#18344)
|
|
* makefiles: quiet messages on CI (#18470)
|
|
* nib/_nib-6ln: correct ABR timeout in ABRO (#18661)
|
|
* pkg/arduino_sdi_12: bump version, fix patches (#18812)
|
|
* pkg/ccn-lite: Fix use after free bug (#18897)
|
|
* pkg/ccn-lite: patch to fix use-after-free (#18483)
|
|
* pkg/lwip: ease debugging & fix sending from socket bound to anyaddr (#18288)
|
|
* pkg/nimble: fix the event queue size for nimble_adv_ext (#18467)
|
|
* pkg/nimble: signal LINK_UP on initialisation (#18980)
|
|
* pkg/tflite-micro: fix compilation with GCC >= 12.x (#18895)
|
|
* pkg/utensor: fix uninitialized variable (#18865)
|
|
* pkg/wolfssl: fix compilation with GCC >= 12.x (#18898)
|
|
* pkg/{littlefs,littlefs2}: fix unaligned memory accesses (#18473)
|
|
* release-tests: use Ubuntu Jammy runner (#18712)
|
|
* sys/clif: Fixing out of bounds read under certain conditions (#18810)
|
|
* sys/log_*: modularize log into log_color and log_printfnoformat (#18425)
|
|
* sys/net/gnrc/pkt: fix gnrc_pkt_delete() (#18880)
|
|
* sys/net/sock_util: fix _find_hoststart() (#18723)
|
|
* sys/print_stack_usage: update MIN_SIZE (#18924)
|
|
* sys/shell/cmds: fix shell_cmd_netif LoRaWAN integration (#18649)
|
|
* sys/string_utils : new (header-only) module for string utilities (#18609)
|
|
* test-on-iotlab: add missing scapy dependency (#18757)
|
|
* test-on-iotlab: several fixes to make it runnable again (#18757)
|
|
* test/unittest: initialize ztimer64 is required, use xtimer test-fib (#18365)
|
|
* tests/cc2538_rf: set event_callback before init (#18751)
|
|
* tests/gcoap_fileserver: add test for PUT (#18725)
|
|
* tests/gnrc_rpl: mark the test as only for native in build system (#18757)
|
|
* tests/heap_cmd: fix test script (#18634)
|
|
* tests/mpu_stack_guard: Fix compilation on modern GCC (>= 12.x) (#18872)
|
|
* tests/nrf802154: set event_callback before init (#18751)
|
|
* tests/pbkdf2: de-flaky-fy test (#18941)
|
|
* tests/periph_gpio_ll: fix the output for GPIO_OUTPUT_OPEN_SOURCE tests (#18331)
|
|
* tests/pkg_emlearn: fix compilation (#18902)
|
|
* tests/pkg_tinyvcdiff: fix stack overflow (#18896)
|
|
* tests/pkg_utensor: increase main threads stack size (#18959)
|
|
* tests/shell: fix failure on samr21-xpro (#18908)
|
|
* tests/socket_zep: set event_callback before init (#18751)
|
|
* tests/sx12xx: set event_callback before init (#18751)
|
|
* tests/unittests: Correct typo in documentation (#18438)
|
|
* tests/unittests: fix get_frame_hdr_len tests for hardened parsing (#18820)
|
|
* tests: call gnrc_ipv6_nib_iface_up() after gnrc_ipv6_nib_init_iface() (#18635)
|
|
* tests: set netdev `event_callback` before calling init (#18751)
|
|
* treewide: fix conditionals on deprecated module (#18616)
|
|
* unittest/main: do not initialize xtimer if ztimer_xtimer_compat (#18352)
|
|
* usbus/hid: fix buffer overflow in hid_io (#18889)
|
|
|
|
Known issues
|
|
============
|
|
|
|
Network related issues (53)
|
|
---------------------------
|
|
|
|
* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
|
|
* [gcoap-dtls] Posting a message yields a stack overflow on the
|
|
`samr21-xpro` with ECC (#18292)
|
|
* 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)
|
|
* CC2538 RF overlapping PIN usage (#8779)
|
|
* 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 choose global source address. (#13745)
|
|
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
|
|
* 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)
|
|
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
|
|
* gnrc_border_router stops routing after a while (#16398)
|
|
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer (#12565)
|
|
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address (#4527)
|
|
* gnrc_netif_pktq leaks memory (#17924)
|
|
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
|
|
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
|
|
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
|
|
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
|
|
* gomach: Resetting netif with cli doesn't return (#10370)
|
|
* ieee802154_submac: IPv6 fragmentation broken (#16998)
|
|
* LoRaWan node ISR stack overflowed (#14962)
|
|
* lwip_sock_tcp / sock_async: received events before calling
|
|
sock_accept() are lost due to race condition. (#16303)
|
|
* Missing drop implementations in netdev_driver_t::recv (#10410)
|
|
* nanocoap: problem with [re]transmission behaviour: (some blocks are
|
|
sent twice immediately) (#18217)
|
|
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
|
|
* netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address (#10380)
|
|
* nrf52: Not able to add global or ULA address to interface (#13280)
|
|
* nrfmin: communication not possible after multicast ping with no
|
|
interval (#11405)
|
|
* ping6 is failing when testing with cc2538dk (#13997)
|
|
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
|
|
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
|
|
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
|
|
* samr30 xpro doesn't seem to use its radio ok (#12761)
|
|
* scan-build errors found during 2019.07 testing (#11852)
|
|
* send data with UDP at 10HZ, the program die (#11860)
|
|
* stale border router does not get replaced (#12210)
|
|
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
|
|
behavior (#18097)
|
|
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
|
|
* two nodes livelock sending neighbor solicitations back and forth
|
|
between each other (#16670)
|
|
* Unclear how Router Solicitations are (or should be) handled (#15926)
|
|
* xbee: setting PAN ID sometimes fails (#10338)
|
|
|
|
Timer related issues (9)
|
|
------------------------
|
|
|
|
* cpu/native: timer interrupt issue (#6442)
|
|
* misc issues with tests/trickle (#9052)
|
|
* MSP430: periph_timer clock config wrong (#8251)
|
|
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
|
|
* periph_timer: systematic proportional error in timer_set (#10545)
|
|
* saml21 system time vs rtc (#10523)
|
|
* Sleep mode for Arduino (#13321)
|
|
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
|
|
* sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time. (#9187)
|
|
|
|
Drivers related issues (16)
|
|
---------------------------
|
|
|
|
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
|
|
* at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported (#4876)
|
|
* cpu/msp430: GPIO driver doesn't work properly (#9419)
|
|
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
|
|
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
|
|
* fail to send data to can bus (#12371)
|
|
* floats and doubles being used all over the place. (#12045)
|
|
* mdt_erase success, but vfs_format resets board (esp32-heltec-
|
|
lora32-v2) (#14506)
|
|
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
|
|
software CS (#6567)
|
|
* periph: GPIO drivers are not thread safe (#4866)
|
|
* Potential security and safety race conditions on attached devices (#13444)
|
|
* PWM: Single-phase initialization creates flicker (#15121)
|
|
* STM32: SPI clock not returning to idle state and generating
|
|
additional clock cycles (#11104)
|
|
* TCP client cannot send read only data (#16541)
|
|
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
|
|
* Two bugs may lead to NULL dereference. (#15006)
|
|
|
|
Native related issues (6)
|
|
-------------------------
|
|
|
|
* examples/ccn-lite: floating point exception while testing on native (#15878)
|
|
* examples/micropython: floating point exception while testing on
|
|
native (#15870)
|
|
* native getchar is blocking RIOT (#16834)
|
|
* native not float safe (#495)
|
|
* native: tlsf: early malloc will lead to a crash (#5796)
|
|
* SIGFPE on native architecture when printing double floats on Ubuntu
|
|
21.04 (#16282)
|
|
|
|
Other platforms related issues (17)
|
|
-----------------------------------
|
|
|
|
* Failing tests on FE310 (Hifive1b) (#13086)
|
|
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
|
|
* boards/hifive1: flashing issue (#13104)
|
|
* Cannot use LLVM with Cortex-M boards (#13390)
|
|
* cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash (#14929)
|
|
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
|
|
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
|
|
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
|
|
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
|
|
* I found stm32 DMA periph driver bugs! when I tested stm32l431rc
|
|
board. (#16242)
|
|
* MPU doesn't work on cortex-m0+ (#14822)
|
|
* newlib-nano: Printf formatting does not work properly for some
|
|
numeric types (#1891)
|
|
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
|
|
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
|
|
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
|
|
after __WFI() (#14015)
|
|
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
|
|
* sys/riotboot/flashwrite: unaligned write when skipping
|
|
`RIOTBOOT_MAGIC` on stm32wb (#15917)
|
|
|
|
Build system related issues (11)
|
|
--------------------------------
|
|
|
|
* `buildtest` uses wrong build directory (#9742)
|
|
* `make -j flash` fails due to missing make dependencies or `make
|
|
flash-only` rebuilds the .elf (#16385)
|
|
* Build dependencies - processing order issues (#9913)
|
|
* build: info-build doesn't work with boards without port set (#15185)
|
|
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
|
|
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
|
|
1.89 (#12771)
|
|
* doxygen: riot.css modified by 'make doc' (#8122)
|
|
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
|
|
* make: ccache leads to differing binaries (#14264)
|
|
* make: use of immediate value of variables before they have their
|
|
final value (#8913)
|
|
* Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation (#10850)
|
|
|
|
Other issues (49)
|
|
-----------------
|
|
|
|
* semtech_loramac_init blocking (#17907)
|
|
* [TRACKING] sys/shell refactoring. (#12105)
|
|
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
|
|
through shell after flashing with J-Link (#13044)
|
|
* `make term` no longer works with JLinkExe v6.94 (#16022)
|
|
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
|
|
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
|
|
* Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
|
|
* Can't build relic with benchmarks or tests (#12897)
|
|
* CC2538DK board docs: broken links (#12889)
|
|
* cpu/stm32/periph/rtc overflow error (#16574)
|
|
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
|
|
* doc/LOSTANDFOUND: not rendered as expected (#17063)
|
|
* edbg: long lines flooded over serial become garbled (#14548)
|
|
* examples / tests: LoRa tests fail on platforms that don't support
|
|
LoRa (#14520)
|
|
* feather-m0: `make flash` reports "device unsupported" (#17722)
|
|
* flashing issue on frdm-k64f (#15903)
|
|
* frdm-k22f failing tests/periph_flashpage (#17057)
|
|
* I2C not working under RIOT with U8G2 pkg (#16381)
|
|
* ieee802154_security: Nonce is reused after reboot (#16844)
|
|
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
|
|
disconnect (#17209)
|
|
* lwip: invalid state transition on ieee802154_submac users (#17208)
|
|
* Making the newlib thread-safe (#4488)
|
|
* mcuboot: flashes but no output (#17524)
|
|
* nanocoap: incomplete response to /.well-known/core request (#10731)
|
|
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
|
|
* Order of auto_init functions (#13541)
|
|
* pkg/tinydtls: Multiple issues (#16108)
|
|
* pkg_libhydrogen tests fail / update libhydrogen (#18508)
|
|
* Potential race condition in compile_and_test_for_board.py (#12621)
|
|
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
|
|
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
|
|
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
|
|
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
|
|
gracefully (#17874)
|
|
* rust-gcoap example is incompatible with littlefs2 (#17817)
|
|
* sam0_sdhc: SDXC cards are not detected / handled properly (#18458)
|
|
* stdio_ethos: infinite shell loop (#17972)
|
|
* sys/riotboot: documentation issues (#11243)
|
|
* sys/stdio_uart: dropped data when received at once (#10639)
|
|
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
|
|
* tests/lwip target board for python test is hardcoded to native (#6533)
|
|
* tests/periph_flashpage: failing on stm32l475ve (#17280)
|
|
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM (#15066)
|
|
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32 (#13133)
|
|
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
|
|
* tests/thread_float: crashes on avr-rss2 (#16908)
|
|
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
|
|
* tests: some tests don't work with `newlib` lock functions. (#12732)
|
|
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
|
|
serial ports (#15814)
|
|
* Use of multiple CAN bus on compatible boards (#14801)
|
|
|
|
There are 161 known issues in this release
|
|
|
|
Fixed Issues since the last release (2022.07)
|
|
=============================================
|
|
|
|
- tests/thread_priority_inversion: Fails on AVR (#18545)
|
|
- `tests/thread_priority_inversion` failing with `esp32-wroom-32` (#18534)
|
|
- (almost solved) SPI SD-Card driver: SPI initialisation freeze until
|
|
timeout (#14439)
|
|
- MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
|
|
- `make term` output is inconsistent between boards, `ethos` and
|
|
`native` (#12108)
|
|
- ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
|
|
- arm7: printf() with float/double not working (#11885)
|
|
- net: netdev_driver_t::send() doc unclear (#10969)
|
|
- openthread: does not build on current Arch (#10809)
|
|
- Possible memset optimized out in crypto code (#10751)
|
|
- xtimer_set_msg: crash when using same message for 2 timers (#10510)
|
|
- Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
|
|
- RIOT cannot compile with the latest version of macOS (10.14) and
|
|
Xcode 10 (#10121)
|
|
- cpu/cortexm_common: irq_enable returns the current state of
|
|
interrupts (not previous) (#10076)
|
|
- xtimer_usleep wrong delay time (#10073)
|
|
- assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope (#9371)
|
|
- xtimer mis-scaling with long sleep times (#9049)
|
|
- 6lo gnrc fragmentation expects driver to block on TX (#7474)
|
|
- scheduler: priority inversion problem (#7365)
|
|
- xtimer_usleep stuck for small values (#7347)
|
|
- General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
|
|
- sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
|
|
- xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable() (#7114)
|
|
- Windows AVR Mega development makefile Error (#6120)
|
|
- tests: xtimer_drift gets stuck on native (#6052)
|
|
- C++11 extensions in header files (#5561)
|
|
- at86rf2xx: lost interrupts (#5486)
|
|
- make: Setting constants on compile time doesn't really set them
|
|
everywhere (#3256)
|
|
- Tracker: Reduce scope on unintended COMMON variables (#2346)
|
|
|
|
29 fixed issues since last release (2022.07)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
|
|
Matrix and Forum
|
|
================
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
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_<hash>() 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
|
|
|
|
+ add ESP-IDF API (#18253)
|
|
* 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 variant independent makefiles (#18249)
|
|
* invert MCU_* and CPU* conditionals (#18248)
|
|
* move platform code for Xtensa-based ESP32x SoCs to module esp_xtensa (#18259)
|
|
* Remove dependency on module libc_gettimeofday (#18202)
|
|
* split module esp_wpa supplicant into several modules (#18239)
|
|
* FreeRTOS adaptation layer changes/extension required for ESP-IDF HAL/LL
|
|
(#18224)
|
|
* use LittleFS2 as default FS (#18159)
|
|
* pkg/esp32_sdk: Update version to 4.4.1 (#18165)
|
|
|
|
Device Drivers
|
|
--------------
|
|
|
|
+ periph/gpio_ll: New Peripheral GPIO API (#16787)
|
|
+ driver/lcd: add common lcd base driver (#16176)
|
|
+ sys/mtd: Introduce write granularity (#17683)
|
|
* drivers/mtd_mapper: inherit physical properties (#18113)
|
|
* drivers/netdev_ieee802154: drop duplicate struct member (#17979)
|
|
* drivers/periph_common/cpuid: disable false positive warnings (#17909)
|
|
|
|
* drivers/hd44780: PCF857x I2C interface added (#12665)
|
|
* drivers/ir_nec: NEC remote receiver implementation (#17935)
|
|
* drivers/mcp2515: enable filtering (#18062)
|
|
* drivers/mcp2515: apply filters to target mailbox (#18131)
|
|
* drivers/mcp2515: fixes and cleanups (#17945)
|
|
* drivers/scard_spi: _dyn_spi_rxtx_byte return void (#17968)
|
|
* drivers/ws281x: update ESP32 driver to use ESP-IDF CPU HAL (#18252)
|
|
* pkg/driver_atwinc15x0: bump version to 1.6.1 (#18215)
|
|
|
|
Documentation
|
|
-------------
|
|
|
|
* boards/nucleo144: doc update - usage of cpy2remed programmer and
|
|
short overview of board (#18291)
|
|
* boards/nucleo32: doc update - usage of cpy2remed programmer and short
|
|
overview of board (#18225)
|
|
* cpu/esp32: small doc fixes (#18240)
|
|
* doc/rust: Update texts (#18208)
|
|
* doc: fix broken link/footnote in using-rust.md/maintenance (#17961)
|
|
* Documentation: Renaming OS X to macOS (#18256)
|
|
* native/periph_can: usability improvements and documentation updates (#17949)
|
|
* pkg/hacl: documentation link update (#18002)
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
|
|
+ dist/tools/suit: add support for password protected private keys (#18130)
|
|
+ examples/gnrc_border_router: allow to use gnrc_ipv6_auto_subnets for
|
|
prefix configuration (#16993)
|
|
* .murdock: print hash input when hashes mismatch (#18236)
|
|
* buildsystem: Improve RISC-V compilation handling with newer toolchain (#18098)
|
|
* buildsystem: split default modules include early and late (#17662)
|
|
* dist/tools/compile_and_test_for_board: fix lint (#18160)
|
|
* dist/tools/cosy: allow to specify port (#18194)
|
|
* make: create cargo folders for Docker images (#18086)
|
|
* makefiles/tools/uf2conv.inc.mk: partial riotboot support (#16323)
|
|
* makefiles: allow to override suit manifest payloads (#16771)
|
|
* makefiles: Reject `2>&1 >/dev/null`, and weed out remaining offenders (#16806)
|
|
* tools/edbg: bump version (#18076)
|
|
* tools/zep_dispatch: allow to pin nodes to MAC address (#17338)
|
|
* tools/zep_dispatch: run dispatch with custom topology (#18170)
|
|
|
|
Kconfig
|
|
-------
|
|
|
|
+ drivers/cst816s: add touch_dev interface + add Kconfig + migrate to
|
|
ztimer (#17459)
|
|
+ pkg/tflite-micro: add kconfig support (#17985)
|
|
+ sys/cpp11-compat: add kconfig support and add Kconfig for cpp11 test
|
|
applications (#17992)
|
|
* pkg/cmsis-nn: model in Kconfig (#17997)
|
|
* pkg/corejson: fix missing kconfig import + model test application
|
|
configuration (#18008)
|
|
* pkg/cryptoauthlib: model in kconfig (#18011)
|
|
* pkg/jerryscript: model in Kconfig (#18012)
|
|
* pkg/lua: model in kconfig (#18017)
|
|
* pkg/nanors: model in kconfig (#18024)
|
|
* sys/random/kconfig: remove HWRNG default in backend choice (#18025)
|
|
* tests/pkg_utensor: model in Kconfig + fix utensor package
|
|
dependencies (#17995)
|
|
* tests/{cpp_ext, cpp_exclude}: model in kconfig (#17994)
|
|
|
|
Examples
|
|
--------
|
|
|
|
+ examples/telnet_server: add support for LWIP (#17899)
|
|
* example/twr_aloha: fixes (#17988)
|
|
* examples/lorawan/main: use auto_init_loramac (#17695)
|
|
* examples/suit_udpate: update check suit command (#17963)
|
|
|
|
Testing
|
|
-------
|
|
|
|
+ cpu/esp: add compilation tests for optional ESP modules (#18158)
|
|
+ unittest/sock_util: add test for missing addr variants (#18061)
|
|
* CI: disable microbit testing (#17933)
|
|
* gh_action/test-on-iotlab: update available boards (#18303)
|
|
* murdock: don't do both "clean" and "test-input-hash" targets (#18254)
|
|
* test/pbkdf2: enlarge stdio rx buffer (#17928)
|
|
* tests/pkg_tflite-micro: update list of low memory boards (#18101)
|
|
* tests/{cpp_ext, cpp_exclude}: cleanup HAS_* (#18082)
|
|
* tests: move riot_logo.h to tests base directory (#17917)
|
|
* unittest/sock_util: move test_strings to their tests (#18067)
|
|
|
|
API Changes
|
|
-----------
|
|
|
|
* drivers/disp_dev: use struct to store display area coordinates (#17921)
|
|
* makefiles/suit: place keys in $XDG_DATA_HOME (#18157)
|
|
* nanocoap: define and use coap_request_ctx_t for request handlers (#17957)
|
|
* sys/shell/gnrc_netif: List netifs in registration order (#17078)
|
|
|
|
And countless minor changes.
|
|
|
|
Deprecations
|
|
============
|
|
|
|
Deprecations (1)
|
|
----------------
|
|
|
|
* ztimer: deprecate ztimer_now64 and ztimer_now_t (#18054, #18105)
|
|
|
|
Removals (2)
|
|
------------
|
|
|
|
- net/netopt: drop NETOPT_RX_END_IRQ (#18089)
|
|
- pkg/lvgl7: remove deprecated package (#18304)
|
|
|
|
Bug fixes (64)
|
|
==============
|
|
|
|
* cpu/stm32/include/periph/f7: add missing ADC_DEVS (#17923)
|
|
* dist/tools/kconfiglib: add configuration evaluation function (#18192)
|
|
* drivers/periph/timer: add TIM_FLAG_SET_STOPPED flag (#17723)
|
|
* drivers/st7735/kconfig: add hardware feature symbol (#18135)
|
|
* gnrc/nib: don't add routers from WPAN as default router on the 6LBR (#18127)
|
|
* [Backport] asymcute: Compare request message type when matching
|
|
acknowledgement (#18446)
|
|
* [Backport] asymcute: fix one byte out-of-bounds access in _len_get (#18453)
|
|
* asymcute: Fix deadlocks in REGACK, SUBACK and UNSUBACK handler (#18289)
|
|
* bitarithm: Move `extern const` out of static inline functions (#18140)
|
|
* boards/common/nrf52: fix compilation of thingy52 and ruuvitag (#18180)
|
|
* boards/im880b: im880b board clock definition (#18295)
|
|
* boards/stm32f469i-disco: LEDX_ON LEDX_OFF mismatch (#18041)
|
|
* build system: Fix compilation for RISC-V with newer GCC (#17951)
|
|
* core/assert: print last instruction in assert() (#18195)
|
|
* core/msg: yield after thread_flags_wake() in queue_msg() (#16899)
|
|
* cpu/atmega_common: Fix atmega_port_addr() (#18265)
|
|
* cpu/esp32: fix malloc thread safety (#18209)
|
|
* cpu/esp32: fix pm_reboot function (#18207)
|
|
* cpu/esp32: fixes for gcc 8.4.0 (#18104)
|
|
* cpu/sam0_common: mtd_sdhc: ensure source address alignment (#18222)
|
|
* cpu/samd21: handle NVM block errata (#18188)
|
|
* cpu/stm32/periph_eth: fix typo in initialization code [backport
|
|
2022.07] (#18420)
|
|
* cpu/{atmega_common,atxmega}: increase idle thread stack size (#18263)
|
|
* dirvers/mtd: fix documentation of mtd_write_page_raw() and
|
|
mtd_read_page() (#18231)
|
|
* dist/tools/compile_commands: don't adds -nostdinc (#18080)
|
|
* dist/tools/compile_commands: fix clangd linting (#18063)
|
|
* dns_cache: synchronize access with mutex [backport 2022.07] (#18342)
|
|
* docker: don't export KCONFIG_ADD_CONFIG variable (#17993)
|
|
* drivers/at86rf2xx: fix NETOPT_RANDOM (#18305)
|
|
* drivers/at86rf2xx: Switch SRT mode to get random values. (#18290)
|
|
* drivers/atwinc15x0: disconnect when sleeping (#17889)
|
|
* drivers/mcp2515: fix set bittiming (#18019)
|
|
* drivers/rtt_rtc: normalize tm struct in rtc_set_alarm (#18197)
|
|
* examples/dtls-echo: set address family for sessions [backport
|
|
2022.07] (#18371)
|
|
* examples/lorawan: disable loramac state persistence on EEPROM (#17969)
|
|
* gcoap: fixes around empty ACKs [backport 2022.07] (#18436)
|
|
* gcoap_dns: various fixes [backport 2022.07] (#18373)
|
|
* gnrc/ipv6_auto_subnets: always send RIO to upstream network (#18187)
|
|
* gnrc/nib: only enable RTR_ADV on RA if MULTIHOP_P6C is enabled (#17600)
|
|
* gnrc_dhcpv6_client: Fix out-of-bounds access during option parsing (#18307)
|
|
* gnrc_ipv6_nib: make configurable via Kconfig again [backport 2022.07] (#18362)
|
|
* gnrc_netif_conf: fix auto-6ctx switch [backport 2022.07] (#18375)
|
|
* gnrc_netif_pktq: protect against concurrent access (#18153)
|
|
* gnrc_netreg: drain mbox on unregister (#18143)
|
|
* ipv6/nib: bugfix handle SLLAO on 6LR if ARO is not present (#17814)
|
|
* makefiles/boot/riotboot: set DEBUG_ELFFILE to slot0.elf (#18138)
|
|
* nanocoap: follow-up fixes (#17950)
|
|
* nanocoap_sock: fix wrong assertion (#18221)
|
|
* net/eui_provider: provide netif index to EUI provider function (#18251)
|
|
* pkg/ccn-lite: patch to fix use-after-free [backport 2022.07] (#18488)
|
|
* pkg/emlearn: fix kconfig model (#18306)
|
|
* pkg/emlearn: Remove unused emlearn module (#18287)
|
|
* pkg/mynewt-core: fix timer configuration for nrf51 (#18136)
|
|
* release-tests: install libasan as native dependency (#18124)
|
|
* sys/fmt: disarm footgun (#18162)
|
|
* sys/fmt: fix output on native (#18186)
|
|
* sys/net/gnrc/rpl: sync access to netstats (#18275)
|
|
* sys/net/netopt: change NETOPT_STATS semantics (#18269)
|
|
* sys/rtc_utils: small doc fix of rtc_mktime (#18196)
|
|
* sys/uri_parser: check port length (#18092)
|
|
* tests/thread_float: fix test script (#18255)
|
|
* unittest: fix ztimer(64)_initilization #18352 #18365 [backport
|
|
2022.07] (#18377)
|
|
* unittests: fix assertion for nanocoap_cache_key_compare() (#18125)
|
|
* vfs: fix dir detection in vfs_sysop_stat_from_fstat() (#18050)
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Network related issues (58)
|
|
---------------------------
|
|
|
|
* 6lo gnrc fragmentation expects driver to block on TX (#7474)
|
|
* 6lo: RIOT does not receive packets from Linux when short_addr is set (#11033)
|
|
* [gcoap-dtls] Posting a message yields a stack overflow on the
|
|
`samr21-xpro` with ECC (#18292)
|
|
* 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)
|
|
* at86rf2xx: lost interrupts (#5486)
|
|
* CC2538 RF overlapping PIN usage (#8779)
|
|
* 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 choose global source address. (#13745)
|
|
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
|
|
* 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)
|
|
* General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
|
|
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
|
|
* gnrc_border_router stops routing after a while (#16398)
|
|
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer (#12565)
|
|
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address (#4527)
|
|
* gnrc_netif_pktq leaks memory (#17924)
|
|
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
|
|
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
|
|
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
|
|
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
|
|
* gomach: Resetting netif with cli doesn't return (#10370)
|
|
* ieee802154_submac: IPv6 fragmentation broken (#16998)
|
|
* LoRaWan node ISR stack overflowed (#14962)
|
|
* lwip_sock_tcp / sock_async: received events before calling
|
|
sock_accept() are lost due to race condition. (#16303)
|
|
* Missing drop implementations in netdev_driver_t::recv (#10410)
|
|
* nanocoap: problem with [re]transmission behaviour: (some blocks are
|
|
sent twice immediately) (#18217)
|
|
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
|
|
* net: netdev_driver_t::send() doc unclear (#10969)
|
|
* netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address (#10380)
|
|
* nrf52: Not able to add global or ULA address to interface (#13280)
|
|
* nrfmin: communication not possible after multicast ping with no
|
|
interval (#11405)
|
|
* openthread: does not build on current Arch (#10809)
|
|
* ping6 is failing when testing with cc2538dk (#13997)
|
|
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
|
|
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
|
|
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
|
|
* samr30 xpro doesn't seem to use its radio ok (#12761)
|
|
* scan-build errors found during 2019.07 testing (#11852)
|
|
* send data with UDP at 10HZ, the program die (#11860)
|
|
* stale border router does not get replaced (#12210)
|
|
* test/lwip: enabling both, IPv4 and IPv6, results in unexpected
|
|
behavior (#18097)
|
|
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
|
|
* two nodes livelock sending neighbor solicitations back and forth
|
|
between each other (#16670)
|
|
* Unclear how Router Solicitations are (or should be) handled (#15926)
|
|
* xbee: setting PAN ID sometimes fails (#10338)
|
|
|
|
Timer related issues (16)
|
|
-------------------------
|
|
|
|
* cpu/native: timer interrupt issue (#6442)
|
|
* misc issues with tests/trickle (#9052)
|
|
* MSP430: periph_timer clock config wrong (#8251)
|
|
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
|
|
* periph_timer: systematic proportional error in timer_set (#10545)
|
|
* saml21 system time vs rtc (#10523)
|
|
* Sleep mode for Arduino (#13321)
|
|
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
|
|
* sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time. (#9187)
|
|
* tests/periph_timer_short_relative_set results are misleading (#18511)
|
|
* tests: xtimer_drift gets stuck on native (#6052)
|
|
* xtimer mis-scaling with long sleep times (#9049)
|
|
* xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable() (#7114)
|
|
* xtimer_set_msg: crash when using same message for 2 timers (#10510)
|
|
* xtimer_usleep stuck for small values (#7347)
|
|
* xtimer_usleep wrong delay time (#10073)
|
|
|
|
Drivers related issues (18)
|
|
---------------------------
|
|
|
|
* (almost solved) SPI SD-Card driver: SPI initialisation freeze until
|
|
timeout (#14439)
|
|
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
|
|
* at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported (#4876)
|
|
* cpu/msp430: GPIO driver doesn't work properly (#9419)
|
|
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
|
|
* ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
|
|
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
|
|
* fail to send data to can bus (#12371)
|
|
* floats and doubles being used all over the place. (#12045)
|
|
* mdt_erase success, but vfs_format resets board (esp32-heltec-
|
|
lora32-v2) (#14506)
|
|
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
|
|
software CS (#6567)
|
|
* periph: GPIO drivers are not thread safe (#4866)
|
|
* Potential security and safety race conditions on attached devices (#13444)
|
|
* PWM: Single-phase initialization creates flicker (#15121)
|
|
* STM32: SPI clock not returning to idle state and generating
|
|
additional clock cycles (#11104)
|
|
* TCP client cannot send read only data (#16541)
|
|
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
|
|
* Two bugs may lead to NULL dereference. (#15006)
|
|
|
|
Native related issues (6)
|
|
-------------------------
|
|
|
|
* examples/ccn-lite: floating point exception while testing on native (#15878)
|
|
* examples/micropython: floating point exception while testing on
|
|
native (#15870)
|
|
* native getchar is blocking RIOT (#16834)
|
|
* native not float safe (#495)
|
|
* native: tlsf: early malloc will lead to a crash (#5796)
|
|
* SIGFPE on native architecture when printing double floats on Ubuntu
|
|
21.04 (#16282)
|
|
|
|
Other platforms related issues (21)
|
|
-----------------------------------
|
|
|
|
* Failing tests on FE310 (Hifive1b) (#13086)
|
|
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
|
|
* arm7: printf() with float/double not working (#11885)
|
|
* boards/hifive1: flashing issue (#13104)
|
|
* Cannot use LLVM with Cortex-M boards (#13390)
|
|
* cpu/cortexm_common: irq_enable returns the current state of
|
|
interrupts (not previous) (#10076)
|
|
* cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash (#14929)
|
|
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
|
|
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
|
|
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
|
|
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
|
|
* I found stm32 DMA periph driver bugs! when I tested stm32l431rc
|
|
board. (#16242)
|
|
* Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
|
|
* MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
|
|
* MPU doesn't work on cortex-m0+ (#14822)
|
|
* newlib-nano: Printf formatting does not work properly for some
|
|
numeric types (#1891)
|
|
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
|
|
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
|
|
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
|
|
after __WFI() (#14015)
|
|
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
|
|
* sys/riotboot/flashwrite: unaligned write when skipping
|
|
`RIOTBOOT_MAGIC` on stm32wb (#15917)
|
|
|
|
Build system related issues (13)
|
|
--------------------------------
|
|
|
|
* `buildtest` uses wrong build directory (#9742)
|
|
* `make -j flash` fails due to missing make dependencies or `make
|
|
flash-only` rebuilds the .elf (#16385)
|
|
* Build dependencies - processing order issues (#9913)
|
|
* build: info-build doesn't work with boards without port set (#15185)
|
|
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
|
|
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
|
|
1.89 (#12771)
|
|
* doxygen: riot.css modified by 'make doc' (#8122)
|
|
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
|
|
* make: ccache leads to differing binaries (#14264)
|
|
* make: Setting constants on compile time doesn't really set them
|
|
everywhere (#3256)
|
|
* make: use of immediate value of variables before they have their
|
|
final value (#8913)
|
|
* Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation (#10850)
|
|
* Windows AVR Mega development makefile Error (#6120)
|
|
|
|
Other issues (57)
|
|
-----------------
|
|
|
|
* semtech_loramac_init blocking (#17907)
|
|
* [TRACKING] sys/shell refactoring. (#12105)
|
|
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
|
|
through shell after flashing with J-Link (#13044)
|
|
* `make term` no longer works with JLinkExe v6.94 (#16022)
|
|
* `make term` output is inconsistent between boards, `ethos` and
|
|
`native` (#12108)
|
|
* assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope (#9371)
|
|
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
|
|
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
|
|
* Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
|
|
* C++11 extensions in header files (#5561)
|
|
* Can't build relic with benchmarks or tests (#12897)
|
|
* CC2538DK board docs: broken links (#12889)
|
|
* cpu/stm32/periph/rtc overflow error (#16574)
|
|
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
|
|
* doc/LOSTANDFOUND: not rendered as expected (#17063)
|
|
* edbg: long lines flooded over serial become garbled (#14548)
|
|
* examples / tests: LoRa tests fail on platforms that don't support
|
|
LoRa (#14520)
|
|
* feather-m0: `make flash` reports "device unsupported" (#17722)
|
|
* flashing issue on frdm-k64f (#15903)
|
|
* frdm-k22f failing tests/periph_flashpage (#17057)
|
|
* I2C not working under RIOT with U8G2 pkg (#16381)
|
|
* ieee802154_security: Nonce is reused after reboot (#16844)
|
|
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
|
|
disconnect (#17209)
|
|
* lwip: invalid state transition on ieee802154_submac users (#17208)
|
|
* Making the newlib thread-safe (#4488)
|
|
* mcuboot: flashes but no output (#17524)
|
|
* nanocoap: incomplete response to /.well-known/core request (#10731)
|
|
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
|
|
* Order of auto_init functions (#13541)
|
|
* pkg/tinydtls: Multiple issues (#16108)
|
|
* pkg_libhydrogen tests fail / update libhydrogen (#18508)
|
|
* Possible memset optimized out in crypto code (#10751)
|
|
* Potential race condition in compile_and_test_for_board.py (#12621)
|
|
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
|
|
* RIOT cannot compile with the latest version of macOS (10.14) and
|
|
Xcode 10 (#10121)
|
|
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
|
|
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
|
|
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
|
|
gracefully (#17874)
|
|
* rust-gcoap example is incompatible with littlefs2 (#17817)
|
|
* sam0_sdhc: SDXC cards are not detected / handled properly (#18458)
|
|
* scheduler: priority inversion problem (#7365)
|
|
* stdio_ethos: infinite shell loop (#17972)
|
|
* sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
|
|
* sys/riotboot: documentation issues (#11243)
|
|
* sys/stdio_uart: dropped data when received at once (#10639)
|
|
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
|
|
* tests/lwip target board for python test is hardcoded to native (#6533)
|
|
* tests/periph_flashpage: failing on stm32l475ve (#17280)
|
|
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM (#15066)
|
|
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32 (#13133)
|
|
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
|
|
* tests/thread_float: crashes on avr-rss2 (#16908)
|
|
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
|
|
* tests: some tests don't work with `newlib` lock functions. (#12732)
|
|
* Tracker: Reduce scope on unintended COMMON variables (#2346)
|
|
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
|
|
serial ports (#15814)
|
|
* Use of multiple CAN bus on compatible boards (#14801)
|
|
|
|
There are 188 known issues in this release
|
|
|
|
Fixed Issues since the last release (2022.04)
|
|
=============================================
|
|
|
|
- core: "Invalid read of size 4" (#7199)
|
|
- Use-after-free in ccnl-core (#18480)
|
|
- [puf_sram] Hardfault (#18468)
|
|
- esp32: gnrc_networking crashing (#18083)
|
|
- boards/saml11-xpro: second UART is broken (#17206)
|
|
|
|
5 fixed issues since last release (2022.04)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
|
|
Matrix and Forum
|
|
================
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
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 customizing 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 and z1 (#17839)
|
|
* drivers/ft5x06: allow multiple device types (#17540)
|
|
* kconfig explore all allowed boards on all apps (#17595)
|
|
|
|
CPU
|
|
---
|
|
+ cpu/native/netdev_tap: Add to netdev_register (#17635)
|
|
+ cpu/nrf52-9160: add periph_spi_init_gpio (#17617)
|
|
+ cpu/riscv_common: Enable Rust applications (#17520)
|
|
+ cpu/sam0_common: add periph_spi_init_gpio (#17616)
|
|
+ cpu/stm32: Add STM32_LINE cases for STM32L1xxx6 (#17727)
|
|
+ cpu: add flash_writable section to linker script (#17436)
|
|
* cpu/arm7, arch/cortexm: Remove -fno-builtin flag (#17898)
|
|
* cpu/cc2538/rtt: fix rtt_set_counter (#17535)
|
|
* cpu/efm32: bump Gecko SDK version (#17672)
|
|
* cpu/esp*: nvs-flash / cpp dependencies cleanup (#17548)
|
|
* cpu/esp32/esp-eth: move GNRC auto_init to init_devs (#17745)
|
|
* cpu/esp32: changes for toolchain update to gcc version 8.4.0 (#17546)
|
|
* cpu/esp32: download Espressif SDK ESP-IDF as package (#17455)
|
|
* cpu/esp32: enable puf_sram feature (#17671)
|
|
* cpu/esp32: use macros/units (#16341)
|
|
* cpu/lpc23xx-mci: migrate to ztimer_msec (#17363)
|
|
* cpu/riscv_common: enable puf_sram feature (#17665)
|
|
* cpu/riscv_common: fix undeclared memory region linker error (#17581)
|
|
* cpu/sam0_common: implement EXTWAKE for SAM L21 (#17687)
|
|
* cpu/sam0_eth: implement SLEEP state (#17886)
|
|
* cpu/samd5x: allow to block IDLE mode (#17883)
|
|
* cpu/saml21: derive low power SRAM length from model number (#17686)
|
|
* cpu/samx21: allow to override PM_BLOCKER_INITIAL (#17793)
|
|
* cpu/samd51: allow to support ADC0 and ADC1 in the same configuration (#17819)
|
|
* cpu/stm32/i2c: fix wrong speed parameters (#17324)
|
|
* cpu/stm32: Fix clock tree (#17609)
|
|
* cpu/stm32: Fix CLOCK_CORECLOCK on stm32l0/l1 (#17725)
|
|
* cpu/stm32: make backup SRAM available (#16870)
|
|
* drivers/periph_spi: spi_init_with_gpio_mode mode by reference (#17531)
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ driver/lpsxxx: adding lps22ch support (#17697)
|
|
+ drivers/dose: introduce watchdog timer (#17180)
|
|
* drivers/dose: make use of ringbuffer for RX (#17210)
|
|
+ drivers/mtd_spi_nor: add ztimer_usec alternative (#17836)
|
|
+ drivers/shtcx: converted the shtc1 driver into shtcx and added shtc3
|
|
support (#17699)
|
|
+ drivers: add driver for L3GD20H 3-axis gyroscope (#10082)
|
|
+ drivers: support for Microchip MCP47xx DAC devices added (#10518)
|
|
+ mtd doc: Add overview defining terms; link modules (#17666)
|
|
* driver/mtd_spi_nor: cleanup sleep timing (#17879)
|
|
* drivers/dose: migrate to ztimer_usec (#17565)
|
|
* drivers/lis2dh12: use ifdef instead of IS_USED (#17563)
|
|
* drivers/mtd_sdcard: support unaligned reads & writes (#17619)
|
|
* drivers/periph_common/cpuid: disable false positive warnings (#17910)
|
|
* drivers/rtt_rtc: select rtc_utils (#17530)
|
|
* drivers/sht3x: ztimer_msec port (#17783)
|
|
|
|
Documentation
|
|
-------------
|
|
+ boards/cc1352-launchpad doc: adding information concerning shell
|
|
access (#17522)
|
|
+ doc/doxygen: add BUILD_IN_DOCKER extended doc (#17820)
|
|
+ doc/doxygen: recommend adding ADJUST ztimer values for new boards (#17846)
|
|
+ doc: add RIOT root doxygen example path (#17572)
|
|
+ net/ieee802154: Add overview documentation (#16940)
|
|
* boards/nucleo-f429zi: improvements to documentation (#17875)
|
|
* boards/nucleo-l552ze-q doc: Improvements to documentation (#17639)
|
|
* boards/p-nucleo-wb55: update documentation (#17582)
|
|
* core (largely doc): Differentiate message types from thread flags (#17472)
|
|
* doc/emulator: update qemu doc with unix sockets (#17751)
|
|
* doc: small fix of "Getting Started" document structure in section
|
|
docker (#17756)
|
|
* doc: Start documenting pseudomodules (#17133)
|
|
* tools/zep_dispatch: document topogen usage (#17586)
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
+ dist/tools/genconfig: add error on hidden symbols (#17597)
|
|
+ dist/tools/usb-serial/ttys.py: Add regex support (#17876)
|
|
+ dist/tools/usb_serial: Add tool for listing and filtering TTY
|
|
interfaces (#17737)
|
|
+ make: Add ubsan support (#17278)
|
|
+ makefiles/dependency_resolution: add outer loop for DEFAULT_MODULE
|
|
deps (#17632)
|
|
+ makefiles/docker.inc.mk: add DOCKER_ENV_VARS_ALWAYS (#17396)
|
|
+ testbed/iotlab: add mapping for samr34-xpro and nucleo-wl55jc (#17578)
|
|
+ tests/gnrc_rpl: add automated test for gnrc_rpl (#17353)
|
|
+ tools/pr_check: add "Update" keyword to "needs squashing" check (#17822)
|
|
* make/emulate: use unix sockets with qemu (#17679)
|
|
* Makefile.include: pass IOTLAB_NODE to docker (#17545)
|
|
* makefiles/docker.ink.mk: do not always pass CFLAGS to docker (#17818)
|
|
* makefiles/libc/newlibc: allow toolchains with nano version only (#17553)
|
|
* makefiles: socat set tty mode 8N1 (#17853)
|
|
* makefiles: use C++14 standard by default for C++ compilations (#17479)
|
|
* tools/dhcpv6-pd_ia: create /run/kea on startup (#17674)
|
|
* tools/cpy2remed: Addition of new programmer for nucleo boards (#17550)
|
|
|
|
Kconfig
|
|
-------
|
|
+ boards/Kconfig: remove wrongfully added MODULE_AUTO_INIT_LED* sym (#17684)
|
|
+ cpu/stm32: Add clock config for mp1 to kconfig (#17521)
|
|
* board/*/kconfig: Fix boards on kconfig blocklist (#17467)
|
|
* boards: Use BOARD.config pattern for kconfig (#17648)
|
|
* cpu/stm32/wl: Model kconfig clocks (#17496)
|
|
* drivers/*/Kconfig: Cleanup of simple drivers (#17669)
|
|
* pkg/littlefs2: model Kconfig (#17882)
|
|
* sys/chunked_ringbuffer: model Kconfig (#17744)
|
|
* sys/fido2: model Kconfig (#17435)
|
|
* {disp,touch}_dev: improve Kconfig at different levels (#17458)
|
|
|
|
Examples
|
|
--------
|
|
+ examples/gcoap_block_server: add gcoap block server example (#17843)
|
|
+ examples/lorawan: add the possibility to use ABP activation procedure (#11237)
|
|
* examples/gcoap_dtls: match Makefile of examples/gcoap (#17552)
|
|
* examples/twr_aloha: refactor (#17406)
|
|
* examples/twr_aloha: blacklist test on ci (#17557)
|
|
* Make example/emcute_mqtt honor radio settings (#17773)
|
|
|
|
Testing
|
|
-------
|
|
+ .github/workflows/test-on-iotlab: add dwm1001 (#17558)
|
|
+ tests/*: add BOARDs to Makefile.ci (#17754)
|
|
+ tests: add default BOARDS (#17715)
|
|
* CI: disable microbit testing (#17953)
|
|
* murdock: prioritize job collection over build jobs (#17610)
|
|
* murdock: support emulated boards (#17434)
|
|
* murdock: use json output `$(BINDIR)` size (#17213)
|
|
* tests/*: remove unneeded xtimer_init (#17566)
|
|
* tests/*xtimer*: remove unneeded timex calls (#17728)
|
|
* tests/driver_dfplayer: use event_thread instead of
|
|
event_thread_lowest (#17750)
|
|
* tests/periph_uart_nonblocking: migrate to ztimer (#17567)
|
|
* tests/pkg_edhoc: handle multiple interfaces (#17534)
|
|
* tests/pkg_mbedtls: improve entropy test case and doc (#17606)
|
|
* tests/pkg_relic: increase stacksize (#17528)
|
|
* tests/senml: do no include saul_default (#17641)
|
|
* tests/sys_atomic_utils: use ztimer_usec (#17851)
|
|
* tests/sys_crypto: fix potentially uninitialized error (#17718)
|
|
* tests/thread_float: use ztimer_usec (#17835)
|
|
* tests: multiple fixes (#17840)
|
|
* workflow/tool-test: update prior install (#17738)
|
|
|
|
API Changes
|
|
-----------
|
|
+ drivers/periph_common: add periph_init_buttons to init on-board
|
|
buttons (#17711)
|
|
* drivers/atwinc15x0: register with netdev (#17887)
|
|
* sys/pm_layered: use array representation, get rid of implicit IDLE
|
|
mode (#17895)
|
|
* tests: rework eth drivers (#17813)
|
|
* ztimer_periodic: make callback function return bool (#17351), i.e., the logic
|
|
of the return value is inverted now (ZTIMER_PERIODIC_KEEP_GOING was 0, now it
|
|
is true).
|
|
|
|
And 57 minor changes.
|
|
|
|
Deprecations
|
|
============
|
|
|
|
Deprecations (3)
|
|
----------------
|
|
* sys/quad_math: this module has been marked as deprecated and will be removed
|
|
for the next release
|
|
+ sys/sema: add sema_ztimer64 to implement old api, deprecate sema (#17719)
|
|
* periph/flashpage: deprecate *_free functions (#17860)
|
|
|
|
Removals (3)
|
|
------------
|
|
- drivers/at: remove deprecated AT_SEND_ECHO define (#17500)
|
|
- sys/lora: remove deprecated LORA_PAYLOAD_CRC_ON_DEFAULT define (#17517)
|
|
- sys/loramac: remove deprecated LORAMAC_DEFAULT_PUBLIC_NETWORK (#17516)
|
|
|
|
Bug fixes (39)
|
|
==============
|
|
* make: add -ffunction-sections -fdata-sections to LINKFLAGS if LTO=1 (#16789)
|
|
* pkg/openwsn: add patch to use memmove() instead of memcpy() (#17900)
|
|
* [treewide] lora: use int16_t for RSSI value (#17497)
|
|
* boards/common/qn908x: perform elf checksum on shadow copy (#17757)
|
|
* boards/nucleo-f767zi: Fix adc pin config in periph_conf.h (#17560)
|
|
* core/assert: avoid including panic.h with assert.h (#17574)
|
|
* cpu/native: fix build with afl-gcc 11.2 (#17583)
|
|
* cpu/nrf52 radio: Populate info (#17592)
|
|
* cpu/nrf52/radio: fix confirm_op info cast (#17848)
|
|
* cpu/sam0_common/eth: expose correct setup function (#17746)
|
|
* dist/tools/kconfiglib: avoid rewriting `/dev/null` (#17873)
|
|
* drivers/at86rf215: fix disabling individual modulations (#17667)
|
|
* drivers/atwinc15x0: join multicast groups (#17880)
|
|
* drivers/dose: only disable watchdog when transiting from RECV state (#17716)
|
|
* drivers/ethos: fix build without ethos_stdio (#17608)
|
|
* drivers/mtd_mapper: fix read_page and write_page backend (#17866)
|
|
* examples/lorawan: disable loramac state persistence on EEPROM
|
|
(#17970)
|
|
* fs/constfs: omit leading '/' in readdir() (#17626)
|
|
* gnrc/ndp: bugfix set O-flag if target is not anycast (#17778)
|
|
* gnrc/nib: don't advertise single address for auto-configuration (#17803)
|
|
* gnrc_netif: fix potential null pointer dereference (#17856)
|
|
* makefiles.kconfig.mk: use EXTERNAL_MODULE_DIRS in Kconfig resolution (#17596)
|
|
* murdock: fix exit -> return in subfunction (#17518)
|
|
* pba-d-01-kw2x: fix clock init by preceding cpu_init with modem clock
|
|
init (#17857)
|
|
* pkg/fatfs: fix missing mutex header (#17865)
|
|
* pkg/littlefs*: align readdir() with documentation (#17623)
|
|
* pkg/tinydtls/contrib/sock_dtls: fix ep_to_session (#17849)
|
|
* pkg/tinydtls: crypto: remove unnecessary usage of malloc() (#17878)
|
|
* pkg: fix documentation on includes (#17538)
|
|
* shell/sc_gnrc_udp: always use delay in µs (#17657)
|
|
* sys/benchmark: fix divide by zero if runs < 1000 (#17624)
|
|
* sys/event/callback: in init set list_node.next to NULL (#17625)
|
|
* sys/fido2/ctap: fix parsing validation (#17816)
|
|
* sys/net/dhcpv6: miscellaneous tweaks (#17736)
|
|
* sys/ztimer/xtimer_compat: fix bug introduced in #17690 (#17705)
|
|
* sys/ztimer64: fix `ztimer64_remove()` not properly clearing timer
|
|
struct (#17720)
|
|
* tests/cpu_avr8_xmega_driver: fix BOARD name (#17749)
|
|
* treewide: initialize several stack-allocated, but uninitialized timer
|
|
structs (#17855)
|
|
* vfs: Initialize stat buffers so FSs don't have to (#17645)
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Network related issues (56)
|
|
---------------------------
|
|
* 6lo gnrc fragmentation expects driver to block on TX (#7474)
|
|
* 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)
|
|
* at86rf2xx: lost interrupts (#5486)
|
|
* CC2538 RF overlapping PIN usage (#8779)
|
|
* core: "Invalid read of size 4" (#7199)
|
|
* 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 choose global source address. (#13745)
|
|
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
|
|
* 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)
|
|
* General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
|
|
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
|
|
* gnrc_border_router stops routing after a while (#16398)
|
|
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer (#12565)
|
|
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address (#4527)
|
|
* gnrc_netif_pktq leaks memory (#17924)
|
|
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
|
|
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
|
|
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
|
|
* gnrc_tcp: gnrc_tcp_recv() never generates -ECONNABORTED (#17896)
|
|
* gomach: Resetting netif with cli doesn't return (#10370)
|
|
* ieee802154_submac: IPv6 fragmentation broken (#16998)
|
|
* LoRaWan node ISR stack overflowed (#14962)
|
|
* lwip_sock_tcp / sock_async: received events before calling
|
|
sock_accept() are lost due to race condition. (#16303)
|
|
* Missing drop implementations in netdev_driver_t::recv (#10410)
|
|
* Neighbor Discovery not working after router reboot when using SLAAC (#11038)
|
|
* net: netdev_driver_t::send() doc unclear (#10969)
|
|
* netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address (#10380)
|
|
* nrf52: Not able to add global or ULA address to interface (#13280)
|
|
* nrfmin: communication not possible after multicast ping with no
|
|
interval (#11405)
|
|
* openthread: does not build on current Arch (#10809)
|
|
* ping6 is failing when testing with cc2538dk (#13997)
|
|
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
|
|
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
|
|
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
|
|
* samr30 xpro doesn't seem to use its radio ok (#12761)
|
|
* scan-build errors found during 2019.07 testing (#11852)
|
|
* send data with UDP at 10HZ, the program die (#11860)
|
|
* stale border router does not get replaced (#12210)
|
|
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
|
|
* two nodes livelock sending neighbor solicitations back and forth
|
|
between each other (#16670)
|
|
* Unclear how Router Solicitations are (or should be) handled (#15926)
|
|
* xbee: setting PAN ID sometimes fails (#10338)
|
|
|
|
Timer related issues (15)
|
|
-------------------------
|
|
* cpu/native: timer interrupt issue (#6442)
|
|
* misc issues with tests/trickle (#9052)
|
|
* MSP430: periph_timer clock config wrong (#8251)
|
|
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
|
|
* periph_timer: systematic proportional error in timer_set (#10545)
|
|
* saml21 system time vs rtc (#10523)
|
|
* Sleep mode for Arduino (#13321)
|
|
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
|
|
* sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time. (#9187)
|
|
* tests: xtimer_drift gets stuck on native (#6052)
|
|
* xtimer mis-scaling with long sleep times (#9049)
|
|
* xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable() (#7114)
|
|
* xtimer_set_msg: crash when using same message for 2 timers (#10510)
|
|
* xtimer_usleep stuck for small values (#7347)
|
|
* xtimer_usleep wrong delay time (#10073)
|
|
|
|
Drivers related issues (18)
|
|
---------------------------
|
|
* (almost solved) SPI SD-Card driver: SPI initialisation freeze until
|
|
timeout (#14439)
|
|
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
|
|
* at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported (#4876)
|
|
* cpu/msp430: GPIO driver doesn't work properly (#9419)
|
|
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
|
|
* ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
|
|
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
|
|
* fail to send data to can bus (#12371)
|
|
* floats and doubles being used all over the place. (#12045)
|
|
* mdt_erase success, but vfs_format resets board (esp32-heltec-
|
|
lora32-v2) (#14506)
|
|
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
|
|
software CS (#6567)
|
|
* periph: GPIO drivers are not thread safe (#4866)
|
|
* Potential security and safety race conditions on attached devices (#13444)
|
|
* PWM: Single-phase initialization creates flicker (#15121)
|
|
* STM32: SPI clock not returning to idle state and generating
|
|
additional clock cycles (#11104)
|
|
* TCP client cannot send read only data (#16541)
|
|
* tests/periph_flashpage: unexpected behavior on nucleo-l4r5zi (#17599)
|
|
* Two bugs may lead to NULL dereference. (#15006)
|
|
|
|
Native related issues (6)
|
|
-------------------------
|
|
* examples/ccn-lite: floating point exception while testing on native (#15878)
|
|
* examples/micropython: floating point exception while testing on
|
|
native (#15870)
|
|
* native getchar is blocking RIOT (#16834)
|
|
* native not float safe (#495)
|
|
* native: tlsf: early malloc will lead to a crash (#5796)
|
|
* SIGFPE on native architecture when printing double floats on Ubuntu
|
|
21.04 (#16282)
|
|
|
|
Other platforms related issues (21)
|
|
-----------------------------------
|
|
* Failing tests on FE310 (Hifive1b) (#13086)
|
|
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
|
|
* arm7: printf() with float/double not working (#11885)
|
|
* boards/hifive1: flashing issue (#13104)
|
|
* Cannot use LLVM with Cortex-M boards (#13390)
|
|
* cpu/cortexm_common: irq_enable returns the current state of
|
|
interrupts (not previous) (#10076)
|
|
* cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash (#14929)
|
|
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
|
|
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
|
|
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
|
|
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
|
|
* I found stm32 DMA periph driver bugs! when I tested stm32l431rc
|
|
board. (#16242)
|
|
* Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
|
|
* MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
|
|
* MPU doesn't work on cortex-m0+ (#14822)
|
|
* newlib-nano: Printf formatting does not work properly for some
|
|
numeric types (#1891)
|
|
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
|
|
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
|
|
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
|
|
after __WFI() (#14015)
|
|
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
|
|
* sys/riotboot/flashwrite: unaligned write when skipping
|
|
`RIOTBOOT_MAGIC` on stm32wb (#15917)
|
|
|
|
Build system related issues (13)
|
|
--------------------------------
|
|
* `buildtest` uses wrong build directory (#9742)
|
|
* `make -j flash` fails due to missing make dependencies or `make
|
|
flash-only` rebuilds the .elf (#16385)
|
|
* Build dependencies - processing order issues (#9913)
|
|
* build: info-build doesn't work with boards without port set (#15185)
|
|
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
|
|
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
|
|
1.89 (#12771)
|
|
* doxygen: riot.css modified by 'make doc' (#8122)
|
|
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
|
|
* make: ccache leads to differing binaries (#14264)
|
|
* make: Setting constants on compile time doesn't really set them
|
|
everywhere (#3256)
|
|
* make: use of immediate value of variables before they have their
|
|
final value (#8913)
|
|
* Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation (#10850)
|
|
* Windows AVR Mega development makefile Error (#6120)
|
|
|
|
Other issues (56)
|
|
-----------------
|
|
* semtech_loramac_init blocking (#17907)
|
|
* [TRACKING] sys/shell refactoring. (#12105)
|
|
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
|
|
through shell after flashing with J-Link (#13044)
|
|
* `make term` no longer works with JLinkExe v6.94 (#16022)
|
|
* `make term` output is inconsistent between boards, `ethos` and
|
|
`native` (#12108)
|
|
* assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope (#9371)
|
|
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
|
|
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
|
|
* boards/saml11-xpro: second UART is broken (#17206)
|
|
* Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
|
|
* C++11 extensions in header files (#5561)
|
|
* Can't build relic with benchmarks or tests (#12897)
|
|
* CC2538DK board docs: broken links (#12889)
|
|
* cpu/stm32/periph/rtc overflow error (#16574)
|
|
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
|
|
* doc/LOSTANDFOUND: not rendered as expected (#17063)
|
|
* edbg: long lines flooded over serial become garbled (#14548)
|
|
* examples / tests: LoRa tests fail on platforms that don't support
|
|
LoRa (#14520)
|
|
* feather-m0: `make flash` reports "device unsupported" (#17722)
|
|
* flashing issue on frdm-k64f (#15903)
|
|
* frdm-k22f failing tests/periph_flashpage (#17057)
|
|
* I2C not working under RIOT with U8G2 pkg (#16381)
|
|
* ieee802154_security: Nonce is reused after reboot (#16844)
|
|
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
|
|
disconnect (#17209)
|
|
* lwip: invalid state transition on ieee802154_submac users (#17208)
|
|
* Making the newlib thread-safe (#4488)
|
|
* mcuboot: flashes but no output (#17524)
|
|
* nanocoap: incomplete response to /.well-known/core request (#10731)
|
|
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
|
|
* Order of auto_init functions (#13541)
|
|
* pkg/tinydtls: Multiple issues (#16108)
|
|
* Possible memset optimized out in crypto code (#10751)
|
|
* Potential race condition in compile_and_test_for_board.py (#12621)
|
|
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
|
|
* RIOT cannot compile with the latest version of macOS (10.14) and
|
|
Xcode 10 (#10121)
|
|
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
|
|
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
|
|
* riotboot: ECC faults (eg. in STM32L5 or STM32WB) not handled
|
|
gracefully (#17874)
|
|
* rust-gcoap example is incompatible with littlefs2 (#17817)
|
|
* scheduler: priority inversion problem (#7365)
|
|
* stdio_ethos: infinite shell loop (#17972)
|
|
* sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
|
|
* sys/riotboot: documentation issues (#11243)
|
|
* sys/stdio_uart: dropped data when received at once (#10639)
|
|
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
|
|
* tests/lwip target board for python test is hardcoded to native (#6533)
|
|
* tests/periph_flashpage: failing on stm32l475ve (#17280)
|
|
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM (#15066)
|
|
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32 (#13133)
|
|
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
|
|
* tests/thread_float: crashes on avr-rss2 (#16908)
|
|
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
|
|
* tests: some tests don't work with `newlib` lock functions. (#12732)
|
|
* Tracker: Reduce scope on unintended COMMON variables (#2346)
|
|
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
|
|
serial ports (#15814)
|
|
* Use of multiple CAN bus on compatible boards (#14801)
|
|
|
|
There are 185 known issues in this release
|
|
|
|
Fixed Issues since the last release (2022.01)
|
|
=============================================
|
|
- Kconfig: `genconfig.py` rewrites `/dev/null` (#17862)
|
|
- gcoap_dtls: Selecting transport at run time is not possible (#16674)
|
|
- LTO broken (binaries too large) (#16202)
|
|
- File systems report names with leading slashes (#14635)
|
|
|
|
4 fixed issues since last release (2022.01)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
|
|
Matrix and Forum
|
|
================
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
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 timer selection (#17393)
|
|
* cpu/native/include: other stacksizes based on default (#16956)
|
|
* cpu/native: migrate periph_rtc to ztimer (#17125)
|
|
* cpu/qn908x: migrate ADC periph to ztimer (#17321)
|
|
* cpu/sam0_common: SPI: don't perform DMA transfer for small buffers (#16926)
|
|
* cpu/sam0_common: uart: set oversampling based on baud rate (#17186)
|
|
* cpu/stm32/include/cpu_conf_stm32_common.h: fix typo in macro (#17187)
|
|
* cpu/stm32: bump cmsis repositories to latest releases + extend CPU
|
|
models kconfig (#17293)
|
|
* cpu/stm32: duplicated ADC devices definitions (#16968)
|
|
* cpu/stm32: migrate adc and eth periphs to ztimer (#17320)
|
|
* cpu/stm32: split periph_cpu.h in sub headers (#17441)
|
|
* cpu: do not auto-select ztimer_periph_rtt for sam0, fe310 (#17395)
|
|
* drivers/periph: use uint_fast8_t as default type (#17191)
|
|
* esp8266: Download Espressif RTOS SDK as a new RIOT PKG (#16425)
|
|
* periph/flashpage: extend API (#16972)
|
|
* periph/flashpage: fix wrong doxygen group (#17202)
|
|
* stm32/usbdev: Use ztimer instead of xtimer (#17047)
|
|
* cpu/esp: compile optional modules in CI (#17314)
|
|
* cpu/stm32/wl: initial periph_adc implementation (#17183)
|
|
* cpu/stm32: enable USB OTG FS on high end L4 (#17302)
|
|
|
|
|
|
Device Drivers
|
|
--------------
|
|
|
|
+ drivers/dose: enable standby pin (#16752)
|
|
+ drivers/hm330x: initial commit (#16333)
|
|
+ drivers: add PCF857X I2C I/O expander driver (#10430)
|
|
+ drivers: only build saul interface if saul module is used + add
|
|
saul_drivers test application (#17470)
|
|
+ netdev: add netdev_register_signal (#16922)
|
|
+ drivers/ft5x06: add support for touch panel controller (#17448)
|
|
+ drivers/stmpe811: add spi mode (#17088)
|
|
+ drivers/dose: make use of UART collision detection feature (#16681)
|
|
* driver/at30tse75x: port to ztimer_usec (#17137)
|
|
* drivers/ads101x: migrate to ztimer (#17102)
|
|
* drivers/ata8520e: migrate to ztimer (#17105)
|
|
* drivers/atwinc15x0: migrate to ztimer (#17381)
|
|
* drivers/bmp180: migrate to ztimer (#17101)
|
|
* drivers/dose: calculate timeout based on symbol rate (#16768)
|
|
* drivers/dsp0401: migrate to ztimer (#17110)
|
|
* drivers/mhz19: migrate to ztimer (#17308)
|
|
* drivers/rn2xx3: migrate to ztimer (#17112)
|
|
* drivers/sdcard_spi: convert to ztimer_usec (#17361)
|
|
* drivers/stmpe811: improve interrupt callback management (#17487)
|
|
* drivers/xbee: migrate to ztimer_msec (#17114)
|
|
* drivers: migrate mpu9x50 and si70xx to ztimer (#17358)
|
|
* drivers: migrate some drivers to ztimer (#17315)
|
|
* drivers: remove some useless xtimer includes (#17303)
|
|
* drivers: several cleanups related to xtimer + some ztimer migration (#17375)
|
|
* makefiles: remove PCF857x pseudomodule definitions (#17343)
|
|
* drivers/periph_common: build periph module selectively (#17418)
|
|
|
|
Documentation
|
|
-------------
|
|
|
|
+ boards/lora-e5-dev: add warning in doc (#17185)
|
|
+ doc/getting-started.md: added beginner friendly instructions (#17050)
|
|
+ doc/rust: Add maintenance guidance (#17505)
|
|
* boards/lora-e5-dev: extended documentation (#17244)
|
|
* boards/stm32f746g-disco: extend documentation (#17310)
|
|
* doc/.../getting-started.md: update software requirements (#17002)
|
|
* doc/boards/rpi-pico: Addition of section concerning shell access (#17454)
|
|
* doc: fix libcoap removal commit (#17378)
|
|
* pkg/openwsn: update doc (#17131)
|
|
* tools/zep_dispatch: document foren6 usage (#17326)
|
|
* doc: fix missing or non matching arguments in Doxygen documentation (#17461)
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
|
|
+ dist/tools/ci: add can_fast_ci_run.py (#17239)
|
|
+ dist/tools/doccheck/exclude_patterns: add new warnings (#17104)
|
|
+ dist/tools/doccheck: add create_pattern.sh (#17082)
|
|
+ make: add info-emulated-boards helper target (#16975)
|
|
+ Makefile.base: add SUBMODULES_NO_SRC to excluded a selected SUBMODULE
|
|
*.c (#17222)
|
|
+ tools/compile_and_test_for_board: apply black automatic code
|
|
formatter + add format checker in tox (#16905)
|
|
+ tools/insufficient_memory: add create_makefile.ci.sh and Makefile.ci
|
|
make target (#16109)
|
|
+ tools/pythonlibs/riotctrl_*: add code format check with black (#16915)
|
|
+ tools/zep_dispatch: add support for foren6 sniffer (#16879)
|
|
+ tools/zep_dispatch: add topology generator (#16889)
|
|
+ makefiles/cflags.inc.mk: Add -Wcast-align (#14955)
|
|
* cppcheck: output all annotations as error (#17134)
|
|
* dist/tools/coccinelle/force: remove static.cocci (#17139)
|
|
* Makefile.include: remove warning about EXTERNAL_MODULE_DIRS API
|
|
change (#16984)
|
|
* Makefile.include: rename Makefile.ci target to create-Makefile.ci (#17205)
|
|
* makefiles/docker.inc.mk: pass TEST_KCONFIG (#17398)
|
|
* murdock: make use of can_fast_ci_run.py (#17325)
|
|
* static-tests: disable cppcheck (#17282)
|
|
* tools/backport_pr: check code format with black (#16907)
|
|
* tools: can_fast_ci_run.py: ignore comment changes for `\.[ch]$` (#17405)
|
|
|
|
Kconfig
|
|
-------
|
|
|
|
+ cpu/avr8: model kconfig (#16929)
|
|
+ cpu/efm32: model kconfig (#16912)
|
|
+ cpu/esp: integrate CPU clock frequency selection in Kconfig (#17424)
|
|
+ cpu/msp430: add Kconfig (#17290)
|
|
+ cpu/nrf52: initial kconfig modeling (no netif) (#16837)
|
|
+ cpu/nrf9160: add Kconfig dependencies (#17291)
|
|
+ cpu/riscv: model Kconfig (#16909)
|
|
+ makefiles/kconfig: add board & CPU config variables (#17376)
|
|
+ pkg/uwb*: add Kconfig dependency modelling (#16780)
|
|
+ sys/trace: migrate to ztimer and add Kconfig support (#17319)
|
|
+ .murdock: Add modules/pkgs diff of make/kconfig (#17094)
|
|
+ .murdock: Add nucleo boards to kconfig test (#16845)
|
|
+ .murdock: Add same54-xpro to kconfig tests (#17255)
|
|
* .murdock: Kconfig test apps for all boards (#17402)
|
|
* boards/adafruit-itsybitsy-m4: Model kconfig (#17331)
|
|
* boards/feather-m0*: base board definition in Kconfig (#17445)
|
|
* boards/samd21-based: model Kconfig (#17355)
|
|
* boards/saml21-based: model kconfig (#17270)
|
|
* boards/stm32-based: model Kconfig (#17374)
|
|
* cpu/esp{32,8266}: model kconfig (#17232)
|
|
* cpu/kinetis: model kconfig (#17235)
|
|
* cpu/lpc23xx: model kconfig (#17279)
|
|
* cpu/nrf51: model kconfig (#17274)
|
|
* cpu/qn908x: model kconfig (#17277)
|
|
* cpu/{cc26xx, cc13xx}: model kconfig (#17236)
|
|
* drivers/sx126x/Kconfig: rework model selection (#17289)
|
|
* sys/benchmark/kconfig: cleanup ztimer dependency (#17317)
|
|
* sys/log: model Kconfig (#17286)
|
|
* sys/vfs: model Kconfig (#17287)
|
|
|
|
Examples
|
|
--------
|
|
|
|
+ example/gcoap: add LWIP make option (#17130)
|
|
* examples/gcoap: split client and server implementation (#17471)
|
|
* examples/gnrc_networking_subnets: remove broken symlink (#17389)
|
|
* examples/lorawan: use ztimer_msec if not rtc (#17181)
|
|
* examples/gnrc_networking: cleanup and static function declarations in
|
|
udp.c (#17384)
|
|
|
|
Testing
|
|
-------
|
|
|
|
+ pkg/fff: Add fake functions framework package (#17076)
|
|
+ murdock: add some doc on how to efficiently limit builds (#17312)
|
|
+ tests/bench_ztimer: add port of bench_xtimer (#17391)
|
|
+ tests/pkg_ucglib: add missing function declaration (#17347)
|
|
* gh/workflows/release-tests: update LoRaWAN parameters to ttnv3 (#17009)
|
|
* gha/workflows/release-test: set python version to 3.8 (#17038)
|
|
* tests/*: Fix nightly failures due to f-string (#17283)
|
|
* tests/malloc: fix counting bugs (#17323)
|
|
* tests/periph_adc: migrate to ztimer (#17322)
|
|
* tests/periph_timer_periodic: spice up test (#17388)
|
|
* tests/unittests/tests-base64: enlarge test buffer for worst case (#17292)
|
|
* test/pkg_u8g2: increase main stacksize for SDL (#16954)
|
|
* tests/pkg_fatfs{_vfs}: drop whitelist (#17478)
|
|
* Fix some cppcheck errors (#17271)
|
|
|
|
API Changes
|
|
-----------
|
|
|
|
* core/kernel_defines.h: drop ALIGN_OF() (#17267)
|
|
* core/kernel_defines: drop BUILD_BUG_ON() (#17268)
|
|
* core/msg: make msg_avail() return 0 on no queue (#17262)
|
|
* cpu: call cpu_init() from startup code, not from board (#16055)
|
|
* drivers/periph_i2c: let i2c_acquire return void (#17275)
|
|
* sys/ztimer: ztimer_set() return the now value (#17385)
|
|
* USB: refactor to xmit-based API (#17064)
|
|
|
|
Deprecations
|
|
============
|
|
|
|
Deprecations (2)
|
|
----------------
|
|
|
|
* cpu/mips: deprecate mips cpu (#17304)
|
|
* sys/include/xtimer.h: deprecate nanosleep (#17296)
|
|
* sys/include/evtimer.h: deprecate evtimer_now_min (#17357)
|
|
* usbdev/USBUS: deprecate transfer failure reporting report (#17046)
|
|
|
|
Removals (9)
|
|
------------
|
|
|
|
- boards/fox: remove BOARD (#17021)
|
|
- dist/iotlab: remove deprecated auto-ssh backward compatibility (#17476)
|
|
- drivers/ethos: remove deprecated USE_ETHOS_FOR_STDIO define (#17499)
|
|
- make: remove deprecation warnings raised with flasher tools old vars (#17490)
|
|
- pkg/libcoap: remove (#17163)
|
|
- sys/asymcute: remove deprecated CONFIG_ASYMCUTE_BUFSIZE_EXP (#17481)
|
|
- sys/crypto: remove deprecated CIPHER_AES_128 (#17480)
|
|
- sys/saul_reg: remove deprecated saul_reg_rm function (#17489)
|
|
- sys/shell: remove deprecated SHELL_NO_{ECHO,PROMPT} defines (#17484)
|
|
|
|
Bug fixes (66)
|
|
==============
|
|
|
|
* cpu/native: add `-no-pie` to LINKFLAGS (#16186)
|
|
* boards/adafruit-clue: use internal RC oscillator (#17069)
|
|
* boards/feather-m0-*: fix Arduino feature in Kconfig (#17444)
|
|
* boards/nrf9160dk: fix LED macros (#17328)
|
|
* boards/nucleo-g07xrb: fix or exclude some doxygen warnings (#17079)
|
|
* boards/nucleo-g07xrb: fix or exclude some doxygen warnings [backport
|
|
2021.10] (#17084)
|
|
* boards/stm32f723e-disco: use connect_assert_srst with openocd (#17462)
|
|
* boards/stm32f746g-disco: use connect_assert_srst with openocd (#17449)
|
|
* boards/stm32f769i-disco: fix and cleanup default configuration (#17199)
|
|
* cdc_ecm: Truncate frames at max ethernet size (#17200)
|
|
* cpu/atmega1281: fix pcint (#17227)
|
|
* cpu/esp*: small documentation fixes (#17456)
|
|
* cpu/esp32: fix esp_wifi_enterprise compilation problem (#17306)
|
|
* cpu/esp8266: fix problems with ESP WiFi and migration to ztimer (#17427)
|
|
* cpu/esp8266: place freertos functions in IRAM (#17080)
|
|
* cpu/esp: revert the change for default definition of ESP_WIFI_PASS (#17420)
|
|
* cpu/esp_common: fix unaligned access in periph_flashpage (#17150)
|
|
* cpu/native: align stack in thread_stack_init() (#17155)
|
|
* cpu/sam0: prevent disabled irq from being called (#17007)
|
|
* cpu/stm32/periph/usbdev: fix alignment issues (#17154)
|
|
* cpu/stm32: clone cmsis header in build/stm32 (#17212)
|
|
* dhcpv6_client: keep integers in retransmission calculations signed (#16992)
|
|
* doc: fix the reference to libcoap removal commit in LOSTANDFOUND.md (#17371)
|
|
* driver/css811: fix read status (#17340)
|
|
* drivers/ccs811: fix of documentation (#17169)
|
|
* drivers/dht: correct interpreting raw values (#16934)
|
|
* drivers/dose: fix standby mode (#17184)
|
|
* drivers/encx24j600: fix unaligned memory access (#17156)
|
|
* drivers/lis3dh: fix unaligned memory access (#17149)
|
|
* drivers/sx126x: fix sync word and TX PA configuration (#17138)
|
|
* ethos: move bulk of state machine out of ISR context (#17265)
|
|
* Fix NDEBUG compilation problems (#14364)
|
|
* gnrc_ipv6_nib: queue packets that trigger probing on border router (#16947)
|
|
* ieee802154 / tests/unittests: fix all-asan reported errors (#17329)
|
|
* Makefile.base: cleanup non selected source object files (#16945)
|
|
* Makefile.base: do not clean objects of bindist modules (#16981)
|
|
* makefile.dep: require `arch_%` `cpu_core_%` features first (#17224)
|
|
* murdock: don't run can_fast_ci_run if `FULL_BUILD==1` (#17495)
|
|
* nimble: fix nimble_scanner regression bugs (#17334)
|
|
* pkg/arduino_sdi_12: fix for the feather-m0 board (#17501)
|
|
* pkg/ccn-ndn: migrate to ztimer (#17377)
|
|
* pkg/littlefs{,2}: fix compilation with -Wcast-align (#17151)
|
|
* pkg/nimble: version bump to fix broken scanning (#16960)
|
|
* pkg/paho-mqtt: fix memory corruption (#17503)
|
|
* pkg/relic: bump to current master (#17161)
|
|
* pycrypto: use pycryptodome instead (#17107)
|
|
* SECURITY.md: fix broken email reference (#17118)
|
|
* shell/gnrc_icmpv6_echo: Fix hang with no msg queue (#17261)
|
|
* sys/fido2: fix CBOR parsing (#17192)
|
|
* sys/fido2: fix CBOR parsing [backport 2021.10] (#17193)
|
|
* sys/net/dns: mark dns_hdr_t as packed (#17153)
|
|
* sys/net/fib: fix compilation with -Wcast-align (#17194)
|
|
* sys/net/gcoap: Use socket _buf API to recognize truncated requests (#16378)
|
|
* sys/posix/socket: align struct sockaddr{,_storage} (#17152)
|
|
* sys/posix/socket: use explicit bind (#16852)
|
|
* sys/test_utils/result_output: fix turo_float() precision value (#17036)
|
|
* sys/ztimer/kconfig: enable xtimer compat only with timer backend (#17307)
|
|
* sys/ztimer: don't access non-existent timer (#17409)
|
|
* sys/ztimer: don't default to rtc for ztimer_sec (#17113)
|
|
* sys/ztimer: fix backend selection (#17372)
|
|
* tests/socket_zep: fix automatic test (#17432)
|
|
* tests/unittests: fix unaligned access (#17195)
|
|
* tools/openocd: check OPENOCD_VERIFY after IMAGE_OFFSET is computed (#17251)
|
|
* tools/zep_dispatch: forward based on source addr, not MAC addr (#16957)
|
|
* turo: some json fixes (#17027)
|
|
* usbus/dfu: fix underflow condition while updating firmware (#17128)
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Network related issues (53)
|
|
---------------------------
|
|
|
|
* 6lo gnrc fragmentation expects driver to block on TX (#7474)
|
|
* 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)
|
|
* at86rf2xx: lost interrupts (#5486)
|
|
* CC2538 RF overlapping PIN usage (#8779)
|
|
* core: "Invalid read of size 4" (#7199)
|
|
* 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 choose global source address. (#13745)
|
|
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
|
|
* 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)
|
|
* General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
|
|
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
|
|
* gnrc_border_router stops routing after a while (#16398)
|
|
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer (#12565)
|
|
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address (#4527)
|
|
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
|
|
* gnrc_rpl: nib route not updated when topology / DODAG changes (#17327)
|
|
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
|
|
* gomach: Resetting netif with cli doesn't return (#10370)
|
|
* ieee802154_submac: IPv6 fragmentation broken (#16998)
|
|
* LoRaWan node ISR stack overflowed (#14962)
|
|
* lwip_sock_tcp / sock_async: received events before calling
|
|
sock_accept() are lost due to race condition. (#16303)
|
|
* Missing drop implementations in netdev_driver_t::recv (#10410)
|
|
* net: netdev_driver_t::send() doc unclear (#10969)
|
|
* netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address (#10380)
|
|
* nrf52: Not able to add global or ULA address to interface (#13280)
|
|
* nrfmin: communication not possible after multicast ping with no
|
|
interval (#11405)
|
|
* openthread: does not build on current Arch (#10809)
|
|
* ping6 is failing when testing with cc2538dk (#13997)
|
|
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
|
|
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
|
|
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
|
|
* samr30 xpro doesn't seem to use its radio ok (#12761)
|
|
* scan-build errors found during 2019.07 testing (#11852)
|
|
* send data with UDP at 10HZ, the program die (#11860)
|
|
* stale border router does not get replaced (#12210)
|
|
* tests/lwip: does not compile for IPv4 on 6LoWPAN-based boards. (#17162)
|
|
* two nodes livelock sending neighbor solicitations back and forth
|
|
between each other (#16670)
|
|
* Unclear how Router Solicitations are (or should be) handled (#15926)
|
|
* xbee: setting PAN ID sometimes fails (#10338)
|
|
|
|
Timer related issues (15)
|
|
-------------------------
|
|
|
|
* cpu/native: timer interrupt issue (#6442)
|
|
* misc issues with tests/trickle (#9052)
|
|
* MSP430: periph_timer clock config wrong (#8251)
|
|
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
|
|
* periph_timer: systematic proportional error in timer_set (#10545)
|
|
* saml21 system time vs rtc (#10523)
|
|
* Sleep mode for Arduino (#13321)
|
|
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
|
|
* sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time. (#9187)
|
|
* tests: xtimer_drift gets stuck on native (#6052)
|
|
* xtimer mis-scaling with long sleep times (#9049)
|
|
* xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable() (#7114)
|
|
* xtimer_set_msg: crash when using same message for 2 timers (#10510)
|
|
* xtimer_usleep stuck for small values (#7347)
|
|
* xtimer_usleep wrong delay time (#10073)
|
|
|
|
Drivers related issues (17)
|
|
---------------------------
|
|
|
|
* (almost solved) SPI SD-Card driver: SPI initialisation freeze until
|
|
timeout (#14439)
|
|
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
|
|
* at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported (#4876)
|
|
* cpu/msp430: GPIO driver doesn't work properly (#9419)
|
|
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
|
|
* ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
|
|
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
|
|
* fail to send data to can bus (#12371)
|
|
* floats and doubles being used all over the place. (#12045)
|
|
* mdt_erase success, but vfs_format resets board (esp32-heltec-
|
|
lora32-v2) (#14506)
|
|
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
|
|
software CS (#6567)
|
|
* periph: GPIO drivers are not thread safe (#4866)
|
|
* Potential security and safety race conditions on attached devices (#13444)
|
|
* PWM: Single-phase initialization creates flicker (#15121)
|
|
* STM32: SPI clock not returning to idle state and generating
|
|
additional clock cycles (#11104)
|
|
* TCP client cannot send read only data (#16541)
|
|
* Two bugs may lead to NULL dereference. (#15006)
|
|
|
|
Native related issues (6)
|
|
-------------------------
|
|
|
|
* examples/ccn-lite: floating point exception while testing on native (#15878)
|
|
* examples/micropython: floating point exception while testing on
|
|
native (#15870)
|
|
* native getchar is blocking RIOT (#16834)
|
|
* native not float safe (#495)
|
|
* native: tlsf: early malloc will lead to a crash (#5796)
|
|
* SIGFPE on native architecture when printing double floats on Ubuntu
|
|
21.04 (#16282)
|
|
|
|
Other platforms related issues (21)
|
|
-----------------------------------
|
|
|
|
* Failing tests on FE310 (Hifive1b) (#13086)
|
|
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
|
|
* arm7: printf() with float/double not working (#11885)
|
|
* boards/hifive1: flashing issue (#13104)
|
|
* Cannot use LLVM with Cortex-M boards (#13390)
|
|
* cpu/cortexm_common: irq_enable returns the current state of
|
|
interrupts (not previous) (#10076)
|
|
* cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash (#14929)
|
|
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
|
|
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
|
|
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
|
|
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
|
|
* I found stm32 DMA periph driver bugs! when I tested stm32l431rc
|
|
board. (#16242)
|
|
* Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
|
|
* MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
|
|
* MPU doesn't work on cortex-m0+ (#14822)
|
|
* newlib-nano: Printf formatting does not work properly for some
|
|
numeric types (#1891)
|
|
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
|
|
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
|
|
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
|
|
after __WFI() (#14015)
|
|
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
|
|
* sys/riotboot/flashwrite: unaligned write when skipping
|
|
`RIOTBOOT_MAGIC` on stm32wb (#15917)
|
|
|
|
Build system related issues (14)
|
|
--------------------------------
|
|
|
|
* `buildtest` uses wrong build directory (#9742)
|
|
* `make -j flash` fails due to missing make dependencies or `make
|
|
flash-only` rebuilds the .elf (#16385)
|
|
* Build dependencies - processing order issues (#9913)
|
|
* build: info-build doesn't work with boards without port set (#15185)
|
|
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
|
|
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
|
|
1.89 (#12771)
|
|
* doxygen: riot.css modified by 'make doc' (#8122)
|
|
* LTO broken (binaries too large) (#16202)
|
|
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
|
|
* make: ccache leads to differing binaries (#14264)
|
|
* make: Setting constants on compile time doesn't really set them
|
|
everywhere (#3256)
|
|
* make: use of immediate value of variables before they have their
|
|
final value (#8913)
|
|
* Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation (#10850)
|
|
* Windows AVR Mega development makefile Error (#6120)
|
|
|
|
Other issues (53)
|
|
-----------------
|
|
|
|
* [TRACKING] sys/shell refactoring. (#12105)
|
|
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
|
|
through shell after flashing with J-Link (#13044)
|
|
* `make term` no longer works with JLinkExe v6.94 (#16022)
|
|
* `make term` output is inconsistent between boards, `ethos` and
|
|
`native` (#12108)
|
|
* assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope (#9371)
|
|
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
|
|
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
|
|
* boards/saml11-xpro: second UART is broken (#17206)
|
|
* Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
|
|
* C++11 extensions in header files (#5561)
|
|
* Can't build relic with benchmarks or tests (#12897)
|
|
* CC2538DK board docs: broken links (#12889)
|
|
* cpu/stm32/periph/rtc overflow error (#16574)
|
|
* cpu/stm32: some tests are failing on CM33 (l5, u5) (#17439)
|
|
* doc/LOSTANDFOUND: not rendered as expected (#17063)
|
|
* edbg: long lines flooded over serial become garbled (#14548)
|
|
* examples / tests: LoRa tests fail on platforms that don't support
|
|
LoRa (#14520)
|
|
* File systems report names with leading slashes (#14635)
|
|
* flashing issue on frdm-k64f (#15903)
|
|
* frdm-k22f failing tests/periph_flashpage (#17057)
|
|
* gcoap_dtls: Selecting transport at run time is not possible (#16674)
|
|
* I2C not working under RIOT with U8G2 pkg (#16381)
|
|
* ieee802154_security: Nonce is reused after reboot (#16844)
|
|
* lwip: drivers/at86rf2xx/at86rf2xx_netdev.c invalid state during TCP
|
|
disconnect (#17209)
|
|
* lwip: invalid state transition on ieee802154_submac users (#17208)
|
|
* Making the newlib thread-safe (#4488)
|
|
* mcuboot: flashes but no output (#17524)
|
|
* nanocoap: incomplete response to /.well-known/core request (#10731)
|
|
* newlib-nano: Printf formatting does not work properly with `"PRIu8"` (#17083)
|
|
* Order of auto_init functions (#13541)
|
|
* pkg/tinydtls: Multiple issues (#16108)
|
|
* Possible memset optimized out in crypto code (#10751)
|
|
* Potential race condition in compile_and_test_for_board.py (#12621)
|
|
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
|
|
* RIOT cannot compile with the latest version of macOS (10.14) and
|
|
Xcode 10 (#10121)
|
|
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
|
|
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
|
|
* scheduler: priority inversion problem (#7365)
|
|
* sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
|
|
* sys/riotboot: documentation issues (#11243)
|
|
* sys/stdio_uart: dropped data when received at once (#10639)
|
|
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
|
|
* tests/lwip target board for python test is hardcoded to native (#6533)
|
|
* tests/periph_flashpage: failing on stm32l475ve (#17280)
|
|
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM (#15066)
|
|
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32 (#13133)
|
|
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
|
|
* tests/thread_float: crashes on avr-rss2 (#16908)
|
|
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
|
|
* tests: some tests don't work with `newlib` lock functions. (#12732)
|
|
* Tracker: Reduce scope on unintended COMMON variables (#2346)
|
|
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
|
|
serial ports (#15814)
|
|
* Use of multiple CAN bus on compatible boards (#14801)
|
|
|
|
There are 179 known issues in this release
|
|
|
|
Fixed Issues since the last release (2021.10)
|
|
=============================================
|
|
|
|
- sx127x: wrong RSSI values (#17451)
|
|
- drivers/aip31068: initialization fails in most cases when using
|
|
esp_i2c_sw (#17311)
|
|
- cpu/esp32: esp_wifi_enterprise compilation error (#17305)
|
|
- ethos: race condition seems to cause packet loss (#17254)
|
|
- tests/lwip_sock_ip: failing on `native` when using IPV4 (#17144)
|
|
- Sam boards: isr_eic call all IRQ raised without taking into account
|
|
their status (enabled/disabled) (#16978)
|
|
- esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi (#16281)
|
|
- esp32: can't use newer C++ standard than c++11 (#15685)
|
|
- tests/mpu_noexec_ram: fails on i-nucleo-lrwan1 (#14572)
|
|
- Different build behavior between `murdock` and
|
|
`riot/riotbuild:latest` image (#9645)
|
|
- pkg: libcoap is partially broken and outdated (#7737)
|
|
|
|
11 fixed issues since last release (2021.10)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
|
|
Matrix and Forum
|
|
================
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
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, 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 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
|
|
----------
|
|
|
|
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
|
|
-------------
|
|
|
|
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 authenticaton token
|
|
similar to the YubiKey.
|
|
|
|
RPL-over-BLE
|
|
------------
|
|
|
|
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
|
|
--------
|
|
|
|
RIOT's native GNRC network stack now has support for the TCP protocol via the
|
|
socket API. With this you can switch between LWIP and GNRC without changing your
|
|
application.
|
|
|
|
DHCPv6 relay agent
|
|
------------------
|
|
|
|
The DHCP module can now act as a relay, forwarding DHCPv6 requests for
|
|
multihop-operation.
|
|
|
|
DHCPv6 IA_NA support
|
|
--------------------
|
|
|
|
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
|
|
----------------------
|
|
|
|
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 on the 2021 RIOT summit.
|
|
|
|
UDP benchmark
|
|
-------------
|
|
|
|
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
|
|
----------------------
|
|
|
|
URI templates up to level 3 (according to RFC 6570) can now be parsed with this
|
|
tool.
|
|
|
|
riotboot serial flasher
|
|
-----------------------
|
|
|
|
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
|
|
--------------------------
|
|
|
|
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
|
|
-----------------
|
|
|
|
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
|
|
-------------------------------------
|
|
|
|
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
|
|
-----------------------
|
|
|
|
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()
|
|
-----------------------------------------
|
|
|
|
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()
|
|
-------------------
|
|
|
|
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
|
|
-------------------------------------
|
|
|
|
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 corruped 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 and the GD32VF103 RISC-V MCU
|
|
from GigaDevice.
|
|
|
|
Both only have very basic support so far (only GPIO, UART and timers), which
|
|
still leaves many low hanging fruits for adding peripheral drivers.
|
|
Patches welcome!
|
|
|
|
The nRF9160 is closer to it's nRF52 siblings, 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. The new XMEGA-A1 Xplained already makes use of this feature.
|
|
|
|
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.
|
|
|
|
The ethernet driver for the SAM E5x line of MCUs is now stable.
|
|
|
|
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 import of a lightweight DHCPv6 relay agent (#16606)
|
|
+ gnrc/netif: add gnrc_netif_ipv6_wait_for_global_address() (#16824)
|
|
+ gnrc_ipv6_nib: handle route information option and add config to add
|
|
to final RAs (#16568)
|
|
+ gnrc_ipv6_simple_subnets: auto-configuration for nested subnets on a
|
|
simple tree topology (#16536)
|
|
+ gnrc_netif: add gnrc_netif_ipv6_add_prefix() & helper functions (#16672)
|
|
+ gnrc_sock_tcp: add gnrc sock tcp (#16494)
|
|
+ gnrc_tcp: Add GNRC_TCP_NO_TIMEOUT (#16735)
|
|
+ net/BLE: add support for RPL-over-BLE (#16364)
|
|
+ net/gcoap: support DTLS (#15549)
|
|
+ net/gnrc_lorawan: implement unconfirmed uplink redundancy (#15946)
|
|
+ net/netif: add function to get interface by name from a buffer (#16709)
|
|
+ netutils: add netutils_get_ipv6() (#16634)
|
|
+ sys/net/dhcpv6: Add IA_NA support to the DHCPv6 client (#16228)
|
|
+ tests/gnrc_lorawan: add initial tests (#16654)
|
|
* dhcpv6_client: make IA_PD an optional module (#16658)
|
|
* dhcpv6_client: mrd calculation fixed (#16679)
|
|
* dhcpv6_client: refactor to use `event_timeout` for non-sock timeouts (#16668)
|
|
* drivers/sx126x : r/NETOPT_RX_TIMEOUT/NETOPT_RX_SYMBOL_TIMEOUT (#16599)
|
|
* gnrc/ipv6_auto_subnets: relax topology requirements (#16750)
|
|
* gnrc/nib: consolidate prefix removal code in
|
|
_nib_offl_remove_prefix() (#16729)
|
|
* gnrc_ipv6_nib: provide functions to get offset of public timestamps (#16706)
|
|
* gnrc_netif_pktq: schedule immediately if timer us is equal to zero (#16745)
|
|
* gnrc_tcp: align with sock tcp (#16493)
|
|
* gnrc_tcp: experimental feature "dynamic msl" (#16764)
|
|
* gnrc_tcp: handle zero size buffers (#16738)
|
|
* ipv6: fix typo in ipv6_addr_to_str documentation (#16828)
|
|
* netdev/lora: fix size of NETOPT_RX_SYMBOL_TIMEOUT (#16604)
|
|
* sock_dns: factor out message parsing and composition (#16669)
|
|
* sys/net/dhcpv6: Refactor DHCPv6 client (#16728)
|
|
* sys/net/dhcpv6: Refactor IA_NA implementation (#16724)
|
|
* sys/net/netopt: Drop deprecated NETOPT_MAX_PACKET_SIZE (#16023)
|
|
* tree-wide: avoid explicit cast to netdev (#16577)
|
|
|
|
Packages (8)
|
|
------------
|
|
|
|
+ pkg/wakaama: add get set functions and cleanup client connection (#16203)
|
|
* make: support package mirrors [backport 2021.10] (#16996)
|
|
* pkg/edhoc-c: ignore llvm flagged error (#16871)
|
|
* pkg/edhoc-c: remove nimble blacklist (#16819)
|
|
* pkg/edhoc: bump version (#16708)
|
|
* pkg/nanocbor: bump version (#16829)
|
|
* pkg/tinydtls: bump version (#16624)
|
|
* pkg/nimble/autoadv: make AD flag optional (#16703)
|
|
* pkg/nimble: bump version, rmv patches (#16830)
|
|
* pkg/nimble: configure BLE_LL_INIT_SLOT_SIZE to 1 (#16602)
|
|
* pkg/nimble: have RIOT always initialize nimble timers (#16623)
|
|
* pkg/nimble: use tinycrypt pkg (#16540)
|
|
+ pkg/lwip: add auto-init for DOSE & at86rf215, cc2538_rf (#16761)
|
|
+ pkg/lwip: Add thread safety check when using DEVELHELP (#16259)
|
|
+ pkg/nimble/netif: add nimble_netif_accept_direct() (#16603)
|
|
+ pkg/nimble/scanner: add function to set scan duration (#16701)
|
|
* pkg/lwip: Allow initializing different types of netifs (#16162)
|
|
* pkg/lwip: implement netif_get_name() (#16741)
|
|
* pkg/semtech-loramac: forward uplink schedule request to upper layer (#16961)
|
|
* pkg/tinydtls: handling of close_notify (#16422)
|
|
|
|
Boards (19)
|
|
-----------
|
|
|
|
+ boards/{pic32-wifire,6lowpan-clicker}: Add CLOCK_CORECLOCK (#16607)
|
|
+ boards: Introduce atxmega-a1-xplained board (#16289)
|
|
+ gd32v/seeedstudio-gd32: Initial support (#16036)
|
|
* boards/adafruit-clue: fix doxygen warnings (#16847)
|
|
* boards/lora-e5-dev: initial support (#16660)
|
|
* boards/nrf52: replace gnrc_netdev_default with netdev_default (#16788)
|
|
* boards/saml21-xpro: configure UART & SPI on EXT2, 3 (#16694)
|
|
|
|
CPU (27)
|
|
--------
|
|
|
|
+ cpu/atxmega/periph: Add ebi driver (#16288)
|
|
* cpu/atxmega: Fix features config (#16742)
|
|
+ cpu/nrf9160: add initial support for nRF9160DK board (#16650)
|
|
+ cpu/nrf9160: add twi and spi support (#16814)
|
|
+ cpu/rpx0xx: add periph timer (#16627)
|
|
+ cpu/rpx0xx: port RIOT to the Raspberry Pi RP2040 MCU (#16609)
|
|
+ cpu/stm32: added ADC for g0 (#16885)
|
|
+ cpu/stm32: added APB12 bus multiplier entry for applicable cpus (#16881)
|
|
+ cpu/nrf52: i2c: add support for 16-bit register addresses (#16711)
|
|
+ cpu/riscv: add CPU_ARCH information (#16877)
|
|
+ cpu/stm32: add rtc_mem (#16802)
|
|
+ cpu/stm32: added RAM_LEN identifier for stm32g03x (#16886)
|
|
+ stm32/spi : Add check for GPIO_UNDEF (#16625)
|
|
+ cpu/nrf52: add SAUL driver for VDDH sensor (#16003)
|
|
* avr_libc_extra: implement strerror() (#16717)
|
|
* cpu/cc2538: don't pollute global namespace with cc2538_rfcore.h (#16863)
|
|
* cpu/kinetis: fix RAM_LEN calculation (#16608)
|
|
* cpu/native: fix thread_yield_higher() with IRQs disabled (#16754)
|
|
* cpu/native: make use of stdio_read() / stdio_write() (#16822)
|
|
* cpu/rpx0xx: fix minor gpio warnings (#16685)
|
|
* cpu/sam0: improve ethernet driver resilience (#16683)
|
|
* cpu/stm32/periph/rtc_all.c for CPU_FAM_STM32L5 support. (#16656)
|
|
* riscv: Simplify reset trampoline (#16876)
|
|
|
|
Device Drivers (7)
|
|
------------------
|
|
|
|
* drivers/cc2538_rf: remove cc2538_rf_netdev_legacy (#16628)
|
|
* drivers/nrf802154: remove nrf802154_rf_netdev_legacy (#16630)
|
|
* drivers/sx127x: remove ZTIMER_USEC dependency (#15030)
|
|
* ieee802154/radio_hal: detach hal descriptor from driver (#16534)
|
|
* ieee802154/submac: reimplement using FSM (#16746)
|
|
* ieee802154/submac: avoid race condition between RX_DONE and
|
|
ACK_TIMEOUT (#16964)
|
|
* ieee802154/submac: fix leftovers of #16746 (#16823)
|
|
+ drivers/dose: make use of start condition received interrupt (#16506)
|
|
+ drivers/periph: define rtc_mem and implement it for sam0_common (#16758)
|
|
+ drivers/cc110x: add power off (sleep) functions (#16232)
|
|
+ drivers/lm75: add SAUL integration (#16763)
|
|
+ drivers/lpsxxx: add support for lps22hh (#16880)
|
|
+ rtt_rtc: add rtt_rtc_settimeofday() & rtt_rtc_gettimeofday() (#16682)
|
|
* drivers/at86rf215: remove msg queue dependency (#16747)
|
|
* drivers/lm75: driver for the lm75 sensor and derivatives (#16678)
|
|
+ sx126x: add support for multiple simultaneous variants (#16597)
|
|
+ drivers/ili9341: add rotation mode to ili9341_params_t (#16773)
|
|
+ drivers/sx126x: Add support for Nucleo -WL55JC (#16579)
|
|
* drivers/cc110x: use pseudo-modules for band selection (#16865)
|
|
|
|
Documentation (9)
|
|
-----------------
|
|
|
|
+ boards/nrf52840dongle docs: Introduce "quick start" section (#15658)
|
|
+ dist/tools/doccheck: add exclude file for warnings and use it (#16779)
|
|
* cpu: fix doxygen grouping warnings (#16813)
|
|
* doc/doxygen/src/advanced-build-system-tricks: fix no udev link (#16810)
|
|
* doc/doxygen: increase dot graph max nodes (#16686)
|
|
* doc/porting-boards.md: improve with porting graph and reference
|
|
section (#15981)
|
|
* feather-nrf52840: several fixes to documentation (#16777)
|
|
* net/ieee802154_security doc: Shape security expectations (#16841)
|
|
* README.md: fix doc link (#16786)
|
|
|
|
Build System / Tooling (8)
|
|
--------------------------
|
|
|
|
+ build system: add machine-readable RIOT_VERSION_CODE macro (#16765)
|
|
+ build system: add VERBOSE_ASSERT flag (#16884)
|
|
+ make: add capability to check config for `test-with-config` (#16795)
|
|
+ makefiles/clang-tidy: initial support (#16509)
|
|
* dist/tools/compile_and_test_for_board: fix W1514 (#16772)
|
|
* dist/tools/doccheck: generate exclude_patterns using C.UTF-8 (#16846)
|
|
* dist/tools/pyterm: ipv6 address support for tcp_serial option (#16726)
|
|
* dist/tools: use f-strings where possible (#16867)
|
|
* Makefile.include: only warn if not curl, wget, unzip, 7z (#16784)
|
|
+ tools/zep_dispatch: add support for advanced topologies (#15773)
|
|
* Remove `which` from shell invocations (#16776)
|
|
|
|
Kconfig (5)
|
|
-----------
|
|
|
|
+ cpu/cc2538: Add Kconfig support (#16719)
|
|
+ makefiles/kconfig.mk: generate config file from RIOT_CONFIG_%
|
|
environment variables (#16052)
|
|
* drivers/lm75: fixed a typo in Kconfig (#16825)
|
|
* drivers/mtd: fix Kconfig dependencies (#16836)
|
|
* makefiles/kconfig.mk: force SHOULD_USE_KCONFIG if config file is
|
|
present (#16641)
|
|
|
|
Examples (3)
|
|
------------
|
|
|
|
+ examples/lorawan: add LoRaWAN keys to DOCKER_ENV_VARS (#17010)
|
|
* examples/nimble_*: use nimble_autoadv module (#13506)
|
|
+ examples/suit_update: Add compatibility with native (#15994)
|
|
|
|
Testing (10)
|
|
------------
|
|
|
|
+ dist/pythonlibs/riotctrl_shell/tests/common: add expect to mock (#17003)
|
|
+ gnrc_tcp: refactor tests (#16461)
|
|
+ tests/gnrc_dhcpv6_client: add script to check if $IFACE exists (#16797)
|
|
* CODEOWNERS: remove Robert Hartung (#16858)
|
|
* gh/workflows/release-tests: update LoRaWAN parameters to ttnv3
|
|
[backport 2021.10] (#17013)
|
|
* Small fatfs usability fixes (#16800)
|
|
* tests/gnrc_dhcpv6_client: kill potential previous Kea session (#16820)
|
|
* tests/ieee802154_hal: check error codes and improve error reporting (#16556)
|
|
* tests/unittests/tests-ipv6_hdr: fix too short ipv6_hdr_t allocations (#16616)
|
|
* tests/ieee802154_submac: remove netdev dependency (#16826)
|
|
|
|
API Changes (5)
|
|
---------------
|
|
|
|
* drivers/ina3221: style fixes and improvements (#15915)
|
|
* drivers/periph_spi: let spi_acquire return void (#15902)
|
|
* gnrc_tcp: rewrite passive open (#16459)
|
|
* nanocoap & gcoap: allow path to be non-`\0`-terminated. (#16712)
|
|
* sys/net/nanocoap: block_finish returns if more are expected (#16704)
|
|
|
|
Uncategorized (3)
|
|
-----------------
|
|
+ README.md: add graphical logo (#16856)
|
|
+ release-notes.txt: add 2021.07 release notes (#16651)
|
|
* README.md: Expose HiL CI overview link (#16720)
|
|
* Remove duplicated includes introduced in #15902 (#16798)
|
|
* treewide: Fix "too many consecutive empty lines" warnings (#16733)
|
|
|
|
And 63 minor changes.
|
|
|
|
Deprecations
|
|
============
|
|
|
|
Deprecations (1)
|
|
----------------
|
|
|
|
* gnrc: deprecate gnrc_netdev_default, use netdev_default instead (#16744)
|
|
|
|
|
|
Bug fixes (32)
|
|
==============
|
|
|
|
* boards/nucleo-wl55jc: add SX126X_PARAM_TYPE to board.h (#16646)
|
|
* build system: add fallback for RIOT_VERSION_CODE (#16895)
|
|
* cpu/avr8_common: Fix link with binutils > 2.35.2 (#16790)
|
|
* cpu/cortexm: ldscripts: bkup-ram -> bkup_ram (#16753)
|
|
* cpu/esp_common: fix boot issue on ESP8266 (#16639)
|
|
* cpu/saml21: uart: use arithmetic baud rate mode (#16693)
|
|
* dhcpv6_client: keep integers in retransmission calculations signed
|
|
[backport 2021.10] (#16995)
|
|
* drivers/cc2538_rf: fix deadlock when receiving too fast. (#16716)
|
|
* drivers/sx126x: fix netdev send and recv function (#16570)
|
|
* event_timeout: check clock before removing ztimer on clear (#16667)
|
|
* gnrc/nib: gnrc_ipv6_nib_get_next_hop_l2addr(): only assume neighbor
|
|
cache entries to always be on-link (#16671)
|
|
* gnrc/sock: recv avoid spinning xtimer (#16831)
|
|
* gnrc_ipv6_nib: consider largest prefix match when deciding if host
|
|
on-link (#16557)
|
|
* gnrc_ipv6_nib: queue packets that trigger probing on border router
|
|
[backport 2021.10] (#16949)
|
|
* gnrc_lorawan: fix gnrc_pktbuf_release_error (introduced by #16080) (#16617)
|
|
* gnrc_sock: imply end-point netif only if unset (#16643)
|
|
* ieee802154/submac: fix initialization code (#16533)
|
|
* Makefile.base: cleanup non selected source object files [backport
|
|
2021.10] (#16953)
|
|
* mtd: fix mtd_write_page() across sector boundaries (#16848)
|
|
* net/gnrc_lorawan: fix pick channel (#16664)
|
|
* net/lorawan: Revert #16604 and fix NETOPT_RX_SYMBOL_TIMEOUT
|
|
documentation (#16640)
|
|
* netutils: get interface by name rather than ID (#16673)
|
|
* pkg/lwip: Fix compilation without IPv6 (#16762)
|
|
* pkg/lwip: Fix DHCP autostart (#16636)
|
|
* pkg/mynewt-core: initial commit (#16348)
|
|
* pkg/nimble/autoconn: stop scan/adv on NETIF_ABORT_SLAVE (#16699)
|
|
* pkg/wakaama: fix object common `get` functions (#16691)
|
|
* Revert "Remove `which` from shell invocations" (#16803)
|
|
* tests/gnrc_dhcpv6_client: Fix for newer Kea versions and remove sudo
|
|
requirement (#16792)
|
|
* tests/gnrc_dhcpv6_client: honor configured $IFACE in Kea config (#16796)
|
|
* tinydtls: sock_dtls: only use ifindex with link-local addresses (#16910)
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Network related issues (52)
|
|
---------------------------
|
|
|
|
* 6lo gnrc fragmentation expects driver to block on TX (#7474)
|
|
* 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)
|
|
* at86rf2xx: lost interrupts (#5486)
|
|
* CC2538 RF overlapping PIN usage (#8779)
|
|
* core: "Invalid read of size 4" (#7199)
|
|
* 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 choose global source address. (#13745)
|
|
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
|
|
* 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)
|
|
* General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
|
|
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
|
|
* gnrc_border_router stops routing after a while (#16398)
|
|
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer (#12565)
|
|
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address (#4527)
|
|
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
|
|
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
|
|
* gomach: Resetting netif with cli doesn't return (#10370)
|
|
* ieee802154_submac: IPv6 fragmentation broken (#16998)
|
|
* LoRaWan node ISR stack overflowed (#14962)
|
|
* lwip_sock_tcp / sock_async: received events before calling
|
|
sock_accept() are lost due to race condition. (#16303)
|
|
* Missing drop implementations in netdev_driver_t::recv (#10410)
|
|
* net: netdev_driver_t::send() doc unclear (#10969)
|
|
* netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address (#10380)
|
|
* nrf52: Not able to add global or ULA address to interface (#13280)
|
|
* nrfmin: communication not possible after multicast ping with no
|
|
interval (#11405)
|
|
* openthread: does not build on current Arch (#10809)
|
|
* ping6 is failing when testing with cc2538dk (#13997)
|
|
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
|
|
* pkg: libcoap is partially broken and outdated (#7737)
|
|
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
|
|
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
|
|
* samr30 xpro doesn't seem to use its radio ok (#12761)
|
|
* scan-build errors found during 2019.07 testing (#11852)
|
|
* send data with UDP at 10HZ, the program die (#11860)
|
|
* stale border router does not get replaced (#12210)
|
|
* two nodes livelock sending neighbor solicitations back and forth
|
|
between each other (#16670)
|
|
* Unclear how Router Solicitations are (or should be) handled (#15926)
|
|
* xbee: setting PAN ID sometimes fails (#10338)
|
|
|
|
Timer related issues (15)
|
|
-------------------------
|
|
|
|
* cpu/native: timer interrupt issue (#6442)
|
|
* misc issues with tests/trickle (#9052)
|
|
* MSP430: periph_timer clock config wrong (#8251)
|
|
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
|
|
* periph_timer: systematic proportional error in timer_set (#10545)
|
|
* saml21 system time vs rtc (#10523)
|
|
* Sleep mode for Arduino (#13321)
|
|
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
|
|
* sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time. (#9187)
|
|
* tests: xtimer_drift gets stuck on native (#6052)
|
|
* xtimer mis-scaling with long sleep times (#9049)
|
|
* xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable() (#7114)
|
|
* xtimer_set_msg: crash when using same message for 2 timers (#10510)
|
|
* xtimer_usleep stuck for small values (#7347)
|
|
* xtimer_usleep wrong delay time (#10073)
|
|
|
|
Drivers related issues (17)
|
|
---------------------------
|
|
|
|
* (almost solved) SPI SD-Card driver: SPI initialisation freeze until
|
|
timeout (#14439)
|
|
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
|
|
* at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported (#4876)
|
|
* cpu/msp430: GPIO driver doesn't work properly (#9419)
|
|
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
|
|
* ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
|
|
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
|
|
* fail to send data to can bus (#12371)
|
|
* floats and doubles being used all over the place. (#12045)
|
|
* mdt_erase success, but vfs_format resets board (esp32-heltec-
|
|
lora32-v2) (#14506)
|
|
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
|
|
software CS (#6567)
|
|
* periph: GPIO drivers are not thread safe (#4866)
|
|
* Potential security and safety race conditions on attached devices (#13444)
|
|
* PWM: Single-phase initialization creates flicker (#15121)
|
|
* STM32: SPI clock not returning to idle state and generating
|
|
additional clock cycles (#11104)
|
|
* TCP client cannot send read only data (#16541)
|
|
* Two bugs may lead to NULL dereference. (#15006)
|
|
|
|
Native related issues (6)
|
|
-------------------------
|
|
|
|
* examples/ccn-lite: floating point exception while testing on native (#15878)
|
|
* examples/micropython: floating point exception while testing on
|
|
native (#15870)
|
|
* native getchar is blocking RIOT (#16834)
|
|
* native not float safe (#495)
|
|
* native: tlsf: early malloc will lead to a crash (#5796)
|
|
* SIGFPE on native architecture when printing double floats on Ubuntu
|
|
21.04 (#16282)
|
|
|
|
Other platforms related issues (23)
|
|
-----------------------------------
|
|
|
|
* Failing tests on FE310 (Hifive1b) (#13086)
|
|
* [TRACKING] Fixes for automatic tests of ESP32 boards. (#12763)
|
|
* arm7: printf() with float/double not working (#11885)
|
|
* boards/hifive1: flashing issue (#13104)
|
|
* Cannot use LLVM with Cortex-M boards (#13390)
|
|
* cpu/cortexm_common: irq_enable returns the current state of
|
|
interrupts (not previous) (#10076)
|
|
* cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash (#14929)
|
|
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
|
|
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
|
|
* esp32: can't use newer C++ standard than c++11 (#15685)
|
|
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
|
|
* esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi (#16281)
|
|
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
|
|
* I found stm32 DMA periph driver bugs! when I tested stm32l431rc
|
|
board. (#16242)
|
|
* Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
|
|
* MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
|
|
* MPU doesn't work on cortex-m0+ (#14822)
|
|
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
|
|
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
|
|
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
|
|
after __WFI() (#14015)
|
|
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
|
|
* sys/riotboot/flashwrite: unaligned write when skipping
|
|
`RIOTBOOT_MAGIC` on stm32wb (#15917)
|
|
* tests/mpu_noexec_ram: fails on i-nucleo-lrwan1 (#14572)
|
|
|
|
Build system related issues (15)
|
|
--------------------------------
|
|
|
|
* `buildtest` uses wrong build directory (#9742)
|
|
* `make -j flash` fails due to missing make dependencies or `make
|
|
flash-only` rebuilds the .elf (#16385)
|
|
* Build dependencies - processing order issues (#9913)
|
|
* build: info-build doesn't work with boards without port set (#15185)
|
|
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
|
|
* Different build behavior between `murdock` and
|
|
`riot/riotbuild:latest` image (#9645)
|
|
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
|
|
1.89 (#12771)
|
|
* doxygen: riot.css modified by 'make doc' (#8122)
|
|
* LTO broken (binaries too large) (#16202)
|
|
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
|
|
* make: ccache leads to differing binaries (#14264)
|
|
* make: Setting constants on compile time doesn't really set them
|
|
everywhere (#3256)
|
|
* make: use of immediate value of variables before they have their
|
|
final value (#8913)
|
|
* Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation (#10850)
|
|
* Windows AVR Mega development makefile Error (#6120)
|
|
|
|
Other issues (45)
|
|
-----------------
|
|
|
|
* [TRACKING] sys/shell refactoring. (#12105)
|
|
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
|
|
through shell after flashing with J-Link (#13044)
|
|
* `make term` no longer works with JLinkExe v6.94 (#16022)
|
|
* `make term` output is inconsistent between boards, `ethos` and
|
|
`native` (#12108)
|
|
* assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope (#9371)
|
|
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
|
|
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
|
|
* Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
|
|
* C++11 extensions in header files (#5561)
|
|
* Can't build relic with benchmarks or tests (#12897)
|
|
* CC2538DK board docs: broken links (#12889)
|
|
* edbg: long lines flooded over serial become garbled (#14548)
|
|
* examples / tests: LoRa tests fail on platforms that don't support
|
|
LoRa (#14520)
|
|
* File systems report names with leading slashes (#14635)
|
|
* flashing issue on frdm-k64f (#15903)
|
|
* Gcoap drops long packages instead of gracefully erring out (#14167)
|
|
* gcoap_dtls: Selecting transport at run time is not possible (#16674)
|
|
* I2C not working under RIOT with U8G2 pkg (#16381)
|
|
* ieee802154_security: Nonce is reused after reboot (#16844)
|
|
* Making the newlib thread-safe (#4488)
|
|
* nanocoap: incomplete response to /.well-known/core request (#10731)
|
|
* Order of auto_init functions (#13541)
|
|
* pkg/tinydtls: Multiple issues (#16108)
|
|
* Possible memset optimized out in crypto code (#10751)
|
|
* Potential race condition in compile_and_test_for_board.py (#12621)
|
|
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
|
|
* RIOT cannot compile with the latest version of macOS (10.14) and
|
|
Xcode 10 (#10121)
|
|
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
|
|
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
|
|
* Sam boards: isr_eic call all IRQ raised without taking into account
|
|
their status (enabled/disabled) (#16978)
|
|
* scheduler: priority inversion problem (#7365)
|
|
* sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
|
|
* sys/riotboot: documentation issues (#11243)
|
|
* sys/stdio_uart: dropped data when received at once (#10639)
|
|
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
|
|
* tests/lwip target board for python test is hardcoded to native (#6533)
|
|
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM (#15066)
|
|
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32 (#13133)
|
|
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
|
|
* tests/thread_float: crashes on avr-rss2 (#16908)
|
|
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
|
|
* tests: some tests don't work with `newlib` lock functions. (#12732)
|
|
* Tracker: Reduce scope on unintended COMMON variables (#2346)
|
|
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
|
|
serial ports (#15814)
|
|
* Use of multiple CAN bus on compatible boards (#14801)
|
|
|
|
There are 173 known issues in this release
|
|
|
|
Fixed Issues since the last release (2021.07)
|
|
=============================================
|
|
|
|
- make check_bindist fails to find reference to `main` (#16977)
|
|
- dhcpv6_client: no prefix on downstream interface via IA_PD (#16971)
|
|
- Deleted or non selected source files are linked in (#16942)
|
|
- tests/thread_float: broken on AVR (#16896)
|
|
- Kconfig/tinydtls: Unable to compile `examples/dtls-sock` with
|
|
`CONFIG_DTLS_ECC` enabled (#16873)
|
|
- particle: error while flashing using Docker build and DFU mode (#16749)
|
|
- test/pkg_u8g2: using SDL is failing (#16714)
|
|
- cpu/saml21: can't set baud rate on SERCOM5 (#16692)
|
|
- sam0_eth: extremely long time to RX (frames stuck in buffer?) (#16451)
|
|
- w5100 driver's improvement (#16417)
|
|
- border_router: significant packet loss when sending out packets using
|
|
USB cdc-ecm on nrf52 (#16411)
|
|
- XFA support on AVR and MSP430 broken with binutils 2.36.1 (#16251)
|
|
- SDL2 does not work due to missing getpid (#13501)
|
|
- hello-world example crashes on BOARD=nucleo-f446re (#9775)
|
|
|
|
14 fixed issues since last release (2021.07)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
|
|
IRC, Matrix and Forum
|
|
=====================
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
RIOT-2021.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 2021.07 release includes:
|
|
|
|
- Many improvements to ztimer usage
|
|
- Added nucleo-wl55jc and Seeeduino XIAO boards
|
|
- stm32f1 kconfig support
|
|
- Fixed multiplication overflow in calloc, a.k.a. BadAlloc, for all supported
|
|
platforms
|
|
|
|
|
|
169 pull requests, composed of 339 commits, have been merged since the
|
|
last release, and 16 issues have been solved. 37 people contributed with
|
|
code in 69 days. 685 files have been touched with 23625 (+) insertions and
|
|
7000 deletions (-).
|
|
|
|
|
|
Notations used below
|
|
====================
|
|
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
|
|
System Libraries (21)
|
|
---------------------
|
|
|
|
+ congure_mock: add capability to provide actual methods (#16133)
|
|
+ dhcpv6_client: add DNS recursive name server option handling (#16585)
|
|
+ drivers/ethos: enable multiple instances (#16544)
|
|
+ drivers/slipdev: report NETOPT_ADDRESS to simulate l2 address (#16531)
|
|
+ gnrc_lorawan: add support for RTT (ztimer) (#14558)
|
|
+ sys/byteorder: add little endian to/from buf functions (#16363)
|
|
+ sys/crypto: Enable support for AES-192, AES-256 (#16183)
|
|
+ sys/event/timeout: add option to use ztimer as backend (#16505)
|
|
+ sys/event: add periodic timeout event (#16507)
|
|
+ sys/ps: enable runtime_usec output for the ps command (#16470)
|
|
* gnrc_dhcpv6_client_6lbr: choose downstream if as !upstream (#16530)
|
|
* net/emcute: Allow RETAIN flag to be set on incoming PUBLISHes (#16326)
|
|
* net/gnrc/rpl: use ztimer_msec if available (#16339)
|
|
* net/grnc/sixlowpan/ctx: use ztimer_msec if available (#16340)
|
|
* sys/arduino: replace xtimer by ztimer as high-level background timer (#15317)
|
|
* sys/auto_init: move sock_dtls after network stack initialization (#16528)
|
|
* sys/Makefile.dep: Some cleanup (#16268)
|
|
* sys/net/gnrc/netif: Make aac_mode a flag field (#16596)
|
|
* sys/trickle: migrate from xtimer to ZTIMER_MSEC (#16322)
|
|
* sys/ztimer: use highest frequency for nrf51 as well (#16572)
|
|
* ztimer: pull ztimer_periph_rtt for ZTIMER_MSEC if available (#16553)
|
|
* sys/shell/sc_gnrc_rpl: Err out early if RPL not even started (#16358)
|
|
|
|
Networking (4)
|
|
--------------
|
|
|
|
+ drivers/nrf24l01p_ng: add hook nrf24l01p_ng_eui_get() (#16296)
|
|
* pkg/nimble/netif: allow to apply and enforce random and unique
|
|
connection intervals (#16372)
|
|
* pkg/semtech-loramac: don't force ztimer rtt backend (#16566)
|
|
|
|
Packages (8)
|
|
------------
|
|
|
|
+ pkg/nanopb: add dependency for C++ source files (#16504)
|
|
+ pkg/edhoc-c: initial commit (#16295)
|
|
+ pkg: add QR Code generator package (#16462)
|
|
* pkg/libcose: Update to latest master (#16464)
|
|
* pkg/lvgl: remove internal thread (#16486)
|
|
* pkg/nanocbor: bump version (#16362)
|
|
* pkg/pkg.mk: avoid git fetch if commit is already there (#16514)
|
|
* pkg/wakaama: remove gnrc dependency (#16563)
|
|
|
|
Boards (10)
|
|
-----------
|
|
|
|
+ board/feather-nrf52840: add uf2 boot loader (#16276)
|
|
+ boards/atmega: add USEC_ADJUST values (#16554)
|
|
+ boards/esp32-wrover-kit: add dependency to ILI9341 (#16488)
|
|
+ boards/nucleo-wl55jc: Initial support (#16255)
|
|
+ boards/z1: add CONFIG_ZTIMER_USEC_ADJUST_% values (#16555)
|
|
+ boards: Adding board support for the Seeeduino XIAO (#16469)
|
|
* board/nrf52840dongle: fix and enhance pin mapping for I2C and SPI (#16401)
|
|
* Configuration extension for arduino-nano-33-iot (#16301)
|
|
* cpu/kinetis: use LPTMR as rtt backend (#16546)
|
|
* makefiles/stdio.inc.mk: stdio_uart require uart or lpuart (#16331)
|
|
|
|
CPU (12)
|
|
--------
|
|
|
|
+ cpu/atxmega/periph: Add spi driver (#16290)
|
|
+ cpu/efm32: add RTT_FREQUENCY support to efm32 (#16344)
|
|
+ cpu/esp*: add CLOCK_CORECLOCK (#16361)
|
|
+ cpu/lpc23xx: implement periph/flashpage (#16409)
|
|
+ SAML21 CPU: support 4MHz, 8MHz, 12MHz CORE_CORECLOCK choices (#16433)
|
|
* CPU SAML21: fix timers frequency when using slow clocks (#16446)
|
|
* cpu/avr8_common: fix errno (#16565)
|
|
* cpu/native: make thread stacksize defines overridable (#16457)
|
|
* cpu/sam0_common: UART: Revert "implement inverted RX & TX" (#15205)
|
|
* cpu/stm32/periph/rtt_all: RTT peripheral support for CPU_FAM_STM32L5 (#16545)
|
|
* cpu/stm32: Generate the irqs in a reproducible manner (#16511)
|
|
* ieee802154/hal: adapt frame filter and source address matching
|
|
changes (#15468)
|
|
|
|
Device Drivers (13)
|
|
-------------------
|
|
|
|
+ cpu/atxmega/periph: Add i2c driver (#16306)
|
|
+ cpu/esp_common: Support disabling I2C clock stretching in ESP8266 (#16386)
|
|
+ cpu: add periph_rtt_overflow feature (#16420)
|
|
+ drivers/at86rf215: add RX timestamps (#16365)
|
|
+ drivers/periph: flashpage: add common helper functions (#15908)
|
|
+ drivers/rtt_rtc: implement rtc_get_time_ms() (#16347)
|
|
+ drivers/si70xx: Add support for Si705x sensors (#15684)
|
|
+ drivers/{disp_dev,touch_dev}: add auto_init_screen as default module
|
|
when used (#16485)
|
|
+ esp8266: Support UART1 and other UART0 pins. (#16387)
|
|
* cpu/sam0_common: only include RTC/RTT symbols if module is used (#16421)
|
|
* driver/bmx280: remove unused xtimer dependency (#16400)
|
|
* drivers/cc2420: register with netdev (#15012)
|
|
* drivers/ccs811: fix default config for ccs811_full (#16454)
|
|
|
|
Documentation (5)
|
|
-----------------
|
|
|
|
+ doc: README: Add documentation on downloads and release cycle (#16345)
|
|
* doc/pkg: provide a longer short description (#16352)
|
|
* docs: Remove references to Freenode from the documentation (#16571)
|
|
* Documentation: Remove mentions of the users@ and devel@ mailing
|
|
lists. (#16428)
|
|
* README: Update url of documentation (#16436)
|
|
|
|
Build System / Tooling (11)
|
|
---------------------------
|
|
|
|
+ make: introduce QUIETER (#16513)
|
|
+ riotctrl_ctrl: A reset helper class for `native` (#15978)
|
|
+ TAKEOVER: makefiles/color: Add color functions, new attempt (#16434)
|
|
+ tools/dhcpv6-pd_ia: add Linux Mint to installer (#16410)
|
|
+ tools/iotlab-testbed: add support for remote debugger (#16510)
|
|
* esptool: Allow to pass the partition table CSV (#16307)
|
|
* makefiles/boot/riotboot.mk: pass IOTLAB_NODE (#16562)
|
|
* makefiles/boot/riotboot: clean bootloader when cleaning application (#16197)
|
|
* makefiles/info-global.inc.mk: fix DEFAULT_MODULE inclusion (#16435)
|
|
* makefiles/vars.inc.mk: update USE_PROGRAMMER_WRAPPER_SCRIPT comment (#16404)
|
|
* tools/iotlab-tested: several improvements in single board support (#16501)
|
|
|
|
Kconfig (3)
|
|
-----------
|
|
|
|
+ cpu/stm32f1: Add Kconfig dependency modeling (#16483)
|
|
+ Kconfig: expose IEEE 802.15.4 Security to Kconfig (#16515)
|
|
* pkg/lvgl: bump to latest version + model configuration in Kconfig (#16346)
|
|
|
|
Examples (2)
|
|
------------
|
|
|
|
+ examples/lorawan: add missing sx126x descriptor (#16592)
|
|
* examples/gnrc_networking: use ztimer_msec if available (#16343)
|
|
|
|
Testing (15)
|
|
------------
|
|
|
|
+ .github: add automatic PR labeler action (#16476)
|
|
+ gh-actions: release-tests: add filter input (#16432)
|
|
+ tests/pkg_qr-code-generator: add disp-dev for esp32-wrover-kit (#16492)
|
|
+ tests/riotboot/flashwrite: add automatic test (#15559)
|
|
* gh-actions/release-tests: export QUIETER to docker (#16581)
|
|
* Simplify kconfig murdock testing (#16487)
|
|
* tests/congure-turo: reset before opening terminal (#16564)
|
|
* tests/disp_dev: improve genericity of application + optimize screen
|
|
refresh (#16479)
|
|
* tests/gnrc_dhcpv6_client_6lbr: Update test for DHCPv6 MUD option (#16593)
|
|
* tests/malloc: refactor test (#16427)
|
|
* tests/periph_rtt_min: adapt for slower RTTs (#16329)
|
|
* tests/pkg_qr-code-generator: improve display speed in test
|
|
application (#16466)
|
|
* tests/pkg_tensorflow-lite/Makefile.ci: explicit list (#16354)
|
|
* tests/touch_dev: improve genericity by using auto_init_screen module (#16480)
|
|
* tests/ztimer_periodic: iterate over clocks (#16254)
|
|
|
|
API Changes (3)
|
|
---------------
|
|
|
|
* build system: Rework EXTERNAL_MODULE_DIRS (#16104)
|
|
* ieee802154: migrate `netdev_ieee802154_dst_filter` to a common
|
|
ieee802154 (#16576)
|
|
* net/gcoap: change return type from gcoap_req_send() to ssize_t (#16526)
|
|
|
|
And 22 minor changes.
|
|
|
|
Deprecations
|
|
============
|
|
|
|
Deprecations (3)
|
|
----------------
|
|
|
|
* gnrc_lorawan: encode LoRaWAN port in netif header (#16080)
|
|
* tools/testbed: use IOTLAB_NODE=auto instead of auto-ssh (#16491)
|
|
* pkg/openthread: deprecate ot_command related functions (#15664)
|
|
|
|
Removals (1)
|
|
------------
|
|
|
|
- core/lifo: Remove lifo [after 2021.04] (#16098)
|
|
|
|
Bug fixes (34)
|
|
==============
|
|
|
|
* .github/labeler: quote rules (#16519)
|
|
* core/msg.c: fixed msg_queue_print() (#15168)
|
|
* cpu/atmega_common: RTC: fix off-by-one second normalization &
|
|
simplify rtc_get_time() (#16442)
|
|
* cpu/esp8266: Fix typo in esp_gdbstub config. (#16304)
|
|
* cpu/sam0/i2c: Handle read with I2C_NOSTOP flag (#16605)
|
|
* cpu/sam0_common: ethernet: fix RX detection (#16383)
|
|
* cpu/stm32/gpio_all: fix IRQ handler for G0/L5/MP1 families (#16319)
|
|
* cpu/stm32/gpio_f1: fix IRQ handler (#16478)
|
|
* cpu/stm32/periph/spi: fix wrong parameter order (#16418)
|
|
* dist/Kconfiglib: fix autoconf header (#16561)
|
|
* doc: fix URLs to the new website (#16445)
|
|
* drivers/lis2dh12: clean up API (#16328)
|
|
* drivers/sx126x: fix netdev send and recv function (#16570)
|
|
* Fix Cortex-M hard faults when building with -O3 or -Ofast (#16414)
|
|
* gnrc_ipv6_nib: consider all local interfaces when looking for address (#16569)
|
|
* gnrc_ipv6_nib: consider all prefixes when deciding on-link next hop (#16532)
|
|
* gnrc_ipv6_nib: get node from proper interface (#16548)
|
|
* gnrc_lorawan: fix undefined state when PSDU is NULL (#16586)
|
|
* gnrc_netif/lorawan: drop netif header on send (#16584)
|
|
* gnrc_sock: imply end-point netif only if unset (#16643)
|
|
* NanoCBOR: Bump version (#16580)
|
|
* net/ieee802154_security: small bugfix and stricter names (#16106)
|
|
* pkg/nanocbor: bump version (#16538)
|
|
* pkg/nimble/netif: fix and optimize NimBLE buffer sizes (#16503)
|
|
* pkg/nimble/netif: fix randomized conn intervals (#16601)
|
|
* pkg/nimble: temporary fix to NimBLE PRNG seed issue (#16338)
|
|
* pkg/qdsa: force qdsa to lowercase (#16552)
|
|
* release-test: fetch host key for lille site (#16575)
|
|
* shell/sc_nimble_netif: fix _connect_name scan dur (#16337)
|
|
* sys/malloc_thread_safety: fix potential overflow in multiplication (#16443)
|
|
* sys/net/gnrc/netif: make gnrc_netif_create() blocking to avoid race
|
|
condition (#16527)
|
|
* sys/ztimer: convert clock do not require pm (#16573)
|
|
* tests/msg_queue_print: fix test on hw (#16525)
|
|
* tests: small fixes (#16426)
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Network related issues (51)
|
|
---------------------------
|
|
|
|
* 6lo gnrc fragmentation expects driver to block on TX (#7474)
|
|
* 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)
|
|
* at86rf2xx: lost interrupts (#5486)
|
|
* border_router: significant packet loss when sending out packets using
|
|
USB cdc-ecm on nrf52 (#16411)
|
|
* CC2538 RF overlapping PIN usage (#8779)
|
|
* core: "Invalid read of size 4" (#7199)
|
|
* 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 choose global source address. (#13745)
|
|
* ethos: Unable to handle fragmented IPv6 packets from Linux kernel (#12264)
|
|
* 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)
|
|
* General 802.15.4/CC2538 RF driver dislikes fast ACKs (#7304)
|
|
* gnrc ipv6: multicast packets are not dispatched to the upper layers (#5230)
|
|
* gnrc_border_router stops routing after a while (#16398)
|
|
* gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer (#12565)
|
|
* gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address (#4527)
|
|
* gnrc_rpl: missing bounds checks in _parse_options (#16085)
|
|
* gnrc_sock_udp: Possible Race condition on copy in application buffer (#10389)
|
|
* gomach: Resetting netif with cli doesn't return (#10370)
|
|
* LoRaWan node ISR stack overflowed (#14962)
|
|
* lwip_sock_tcp / sock_async: received events before calling
|
|
sock_accept() are lost due to race condition. (#16303)
|
|
* Missing drop implementations in netdev_driver_t::recv (#10410)
|
|
* net: netdev_driver_t::send() doc unclear (#10969)
|
|
* netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address (#10380)
|
|
* nrf52: Not able to add global or ULA address to interface (#13280)
|
|
* nrfmin: communication not possible after multicast ping with no
|
|
interval (#11405)
|
|
* openthread: does not build on current Arch (#10809)
|
|
* ping6 is failing when testing with cc2538dk (#13997)
|
|
* pkg/tinydtls: auxiliary data API does not work for async sockets (#16054)
|
|
* pkg: libcoap is partially broken and outdated (#7737)
|
|
* Possible memory leak in RIOT/build/pkg/ndn-riot/app.c (#15638)
|
|
* Riot-os freezes with lwip + enc28j60 + stm32L4 (#13088)
|
|
* samr30 xpro doesn't seem to use its radio ok (#12761)
|
|
* scan-build errors found during 2019.07 testing (#11852)
|
|
* send data with UDP at 10HZ, the program die (#11860)
|
|
* stale border router does not get replaced (#12210)
|
|
* Unclear how Router Solicitations are (or should be) handled (#15926)
|
|
* xbee: setting PAN ID sometimes fails (#10338)
|
|
|
|
Timer related issues (15)
|
|
-------------------------
|
|
|
|
* cpu/native: timer interrupt issue (#6442)
|
|
* misc issues with tests/trickle (#9052)
|
|
* MSP430: periph_timer clock config wrong (#8251)
|
|
* periph/timer: `timer_set()` underflow safety check (tracking issue) (#13072)
|
|
* periph_timer: systematic proportional error in timer_set (#10545)
|
|
* saml21 system time vs rtc (#10523)
|
|
* Sleep mode for Arduino (#13321)
|
|
* stm32_common/periph/rtc: current implementation broken/poor accuracy (#8746)
|
|
* sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time. (#9187)
|
|
* tests: xtimer_drift gets stuck on native (#6052)
|
|
* xtimer mis-scaling with long sleep times (#9049)
|
|
* xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable() (#7114)
|
|
* xtimer_set_msg: crash when using same message for 2 timers (#10510)
|
|
* xtimer_usleep stuck for small values (#7347)
|
|
* xtimer_usleep wrong delay time (#10073)
|
|
|
|
Drivers related issues (19)
|
|
---------------------------
|
|
|
|
* (almost solved) SPI SD-Card driver: SPI initialisation freeze until
|
|
timeout (#14439)
|
|
* adc is not a ADC-Driver but a analog pin abstraction (#14424)
|
|
* at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported (#4876)
|
|
* cpu/msp430: GPIO driver doesn't work properly (#9419)
|
|
* driver/hts221: Temperature and Humidity readings incorrect (#12445)
|
|
* ESP32 + DHT + SAUL reading two endpoints causes freeze. (#12057)
|
|
* examples/dtls-wolfssl not working on pba-d-01-kw2x (#13527)
|
|
* fail to send data to can bus (#12371)
|
|
* floats and doubles being used all over the place. (#12045)
|
|
* mdt_erase success, but vfs_format resets board (esp32-heltec-
|
|
lora32-v2) (#14506)
|
|
* periph/spi: Switching between CPOL=0,1 problems on Kinetis with
|
|
software CS (#6567)
|
|
* periph: GPIO drivers are not thread safe (#4866)
|
|
* Potential security and safety race conditions on attached devices (#13444)
|
|
* PWM: Single-phase initialization creates flicker (#15121)
|
|
* sam0_eth: extremely long time to RX (frames stuck in buffer?) (#16451)
|
|
* STM32: SPI clock not returning to idle state and generating
|
|
additional clock cycles (#11104)
|
|
* TCP client cannot send read only data (#16541)
|
|
* Two bugs may lead to NULL dereference. (#15006)
|
|
* w5100 driver's improvement (#16417)
|
|
|
|
Native related issues (6)
|
|
-------------------------
|
|
|
|
* examples/ccn-lite: floating point exception while testing on native (#15878)
|
|
* examples/micropython: floating point exception while testing on
|
|
native (#15870)
|
|
* native not float safe (#495)
|
|
* native: tlsf: early malloc will lead to a crash (#5796)
|
|
* SDL2 does not work due to missing getpid (#13501)
|
|
* SIGFPE on native architecture when printing double floats on Ubuntu
|
|
21.04 (#16282)
|
|
|
|
Other platforms related issues (24)
|
|
-----------------------------------
|
|
|
|
* Failing tests on FE310 (Hifive1b) (#13086)
|
|
* arm7: printf() with float/double not working (#11885)
|
|
* boards/hifive1: flashing issue (#13104)
|
|
* Cannot use LLVM with Cortex-M boards (#13390)
|
|
* cpu/cortexm_common: irq_enable returns the current state of
|
|
interrupts (not previous) (#10076)
|
|
* cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash (#14929)
|
|
* cpu/stm32f1: CPU hangs after wake-up from STOP power mode (#13918)
|
|
* esp32-wroom-32: tests/netstats_l2 failing sometimes (#14237)
|
|
* esp32: can't use newer C++ standard than c++11 (#15685)
|
|
* esp8266 precompiled bootloaders don't support partitions past 1MB (#16402)
|
|
* esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi (#16281)
|
|
* gcoap/esp8266: Stack overflow with gcoap example (#13606)
|
|
* I found stm32 DMA periph driver bugs! when I tested stm32l431rc
|
|
board. (#16242)
|
|
* Incorrect default $PORT building for esp32-wroom-32 on macOS (#10258)
|
|
* MIPS: toolchain objcopy doesn't work and no .bin can be generated (#14410)
|
|
* MPU doesn't work on cortex-m0+ (#14822)
|
|
* periph_timer: Test coverage & broken on STM32F767ZI (#15072)
|
|
* riscv: ISR stack is too small for ENABLE_DEBUG in core files (#16395)
|
|
* stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch
|
|
after __WFI() (#14015)
|
|
* stm32f7: Large performance difference between stm32f746 and stm32f767 (#14728)
|
|
* sys/riotboot/flashwrite: unaligned write when skipping
|
|
`RIOTBOOT_MAGIC` on stm32wb (#15917)
|
|
* tests/mpu_noexec_ram: fails on i-nucleo-lrwan1 (#14572)
|
|
* XFA support on AVR and MSP430 broken with binutils 2.36.1 (#16251)
|
|
|
|
Build system related issues (15)
|
|
--------------------------------
|
|
|
|
* `buildtest` uses wrong build directory (#9742)
|
|
* `make -j flash` fails due to missing make dependencies or `make
|
|
flash-only` rebuilds the .elf (#16385)
|
|
* Build dependencies - processing order issues (#9913)
|
|
* build: info-build doesn't work with boards without port set (#15185)
|
|
* BUILD_IN_DOCKER ignores USEMODULE (#14504)
|
|
* Different build behavior between `murdock` and
|
|
`riot/riotbuild:latest` image (#9645)
|
|
* dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck
|
|
1.89 (#12771)
|
|
* doxygen: riot.css modified by 'make doc' (#8122)
|
|
* LTO broken (binaries too large) (#16202)
|
|
* macros: RIOT_FILE_RELATIVE printing wrong file name for headers (#4053)
|
|
* make: ccache leads to differing binaries (#14264)
|
|
* make: Setting constants on compile time doesn't really set them
|
|
everywhere (#3256)
|
|
* make: use of immediate value of variables before they have their
|
|
final value (#8913)
|
|
* Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation (#10850)
|
|
* Windows AVR Mega development makefile Error (#6120)
|
|
|
|
Other issues (41)
|
|
-----------------
|
|
|
|
* [TRACKING] sys/shell refactoring. (#12105)
|
|
* _NVIC_SystemReset stuck in infinite loop when calling pm_reboot
|
|
through shell after flashing with J-Link (#13044)
|
|
* `make term` no longer works with JLinkExe v6.94 (#16022)
|
|
* `make term` output is inconsistent between boards, `ethos` and
|
|
`native` (#12108)
|
|
* assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope (#9371)
|
|
* Basic test for periph/rtt introduced in #15431 is incorrect (#15940)
|
|
* boards/esp32-wroom-32: tests/mtd_raw flakey (#16130)
|
|
* Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto (#13285)
|
|
* C++11 extensions in header files (#5561)
|
|
* Can't build relic with benchmarks or tests (#12897)
|
|
* CC2538DK board docs: broken links (#12889)
|
|
* edbg: long lines flooded over serial become garbled (#14548)
|
|
* examples / tests: LoRa tests fail on platforms that don't support
|
|
LoRa (#14520)
|
|
* File systems report names with leading slashes (#14635)
|
|
* flashing issue on frdm-k64f (#15903)
|
|
* Gcoap drops long packages instead of gracefully erring out (#14167)
|
|
* I2C not working under RIOT with U8G2 pkg (#16381)
|
|
* Making the newlib thread-safe (#4488)
|
|
* nanocoap: incomplete response to /.well-known/core request (#10731)
|
|
* Order of auto_init functions (#13541)
|
|
* pkg/tinydtls: Multiple issues (#16108)
|
|
* Possible memset optimized out in crypto code (#10751)
|
|
* Potential race condition in compile_and_test_for_board.py (#12621)
|
|
* pyterm on stdio_cdc_acm stops working after a few seconds (#16077)
|
|
* RIOT cannot compile with the latest version of macOS (10.14) and
|
|
Xcode 10 (#10121)
|
|
* RIOT is saw-toothing in energy consumption (even when idling) (#5009)
|
|
* riotboot/nrf52840dk: flashing slot1 with JLINK fails (#14576)
|
|
* scheduler: priority inversion problem (#7365)
|
|
* sys/fmt: Missing tests for fmt_float, fmt_lpad (#7220)
|
|
* sys/riotboot: documentation issues (#11243)
|
|
* sys/stdio_uart: dropped data when received at once (#10639)
|
|
* tests/cpp11_*: failing on i-nucleo-lrwan1 (#14578)
|
|
* tests/lwip target board for python test is hardcoded to native (#6533)
|
|
* tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM (#15066)
|
|
* tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32 (#13133)
|
|
* tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3 (#15888)
|
|
* tests: broken with stdio_rtt if auto_init is disabled (#13120)
|
|
* tests: some tests don't work with `newlib` lock functions. (#12732)
|
|
* Tracker: Reduce scope on unintended COMMON variables (#2346)
|
|
* usb-serial/list-ttys.sh: Broken when a debugger offers multiple
|
|
serial ports (#15814)
|
|
* Use of multiple CAN bus on compatible boards (#14801)
|
|
|
|
There are 171 known issues in this release
|
|
|
|
Fixed Issues since the last release (2021.04)
|
|
=============================================
|
|
|
|
- All but first ping to downstream interface fails (#16547)
|
|
- pkg/lvgl: LoadProhibitedCause exception on BOARD=esp32-wrover-kit (#16471)
|
|
- SX127x Join procedure failed (The Things Network) (#16419)
|
|
- riotctrl: shell interaction seems timing sensitive (#16415)
|
|
- at86rf231 initialization loses race against auto_init_gnrc_rpl (#16359)
|
|
- cpu/sam0_common: Ethernet driver stops working after a while (#16298)
|
|
- Conflict between nimble and uwb-core packages (#15528)
|
|
- pkg/ccn-lite: unable to `make -j -C examples/ccn-lite-relay` (#14288)
|
|
- make -j flash broken on esp* (will always flash the previous binary) (#13492)
|
|
- sys/xtimer: segmentation fault: in function
|
|
xtimer_msg_received_timeout (#13345)
|
|
- drivers/srf04: incorrect values on ATmega based platforms (#13079)
|
|
- Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice (#10122)
|
|
- mrf24j40: does not link for examples/default (#8752)
|
|
- nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble (#6018)
|
|
- OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
|
|
chars (#5863)
|
|
|
|
16 fixed issues since last release (2021.04)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
|
|
Matrix and Forum
|
|
================
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
*Note: [IRC was removed](https://forum.riot-os.org/t/riot-irc-and-even-more-freenode-turmoil/3262)*
|
|
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
RIOT-2021.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 2021.04 release includes:
|
|
|
|
- netstats can now collect L1/L2 per neighbor statistics
|
|
- sock DTLS now allows using multiple credentials
|
|
- congure - a framework for implementing congestion control algorithms
|
|
- xfa (cross file arrays) - a mechanism to more easily define stuff across
|
|
files (e.g., shell commands)
|
|
- nimble is now using low-power ztimer
|
|
- nrf5x now properly configures external HF clock, power use down 411µA -> 3.6µA
|
|
for examples/minimal on nrf52dk
|
|
- many more modules and drivers have Kconfig support
|
|
- the semtech-loramac package now supports sx126x/llcc68 radios
|
|
- 8 new boards, 6 new drivers, 8 packages upgraded
|
|
|
|
We've also mostly finished our migration from mailing lists to forum.riot-os.org.
|
|
|
|
375 pull requests, composed of 992 commits, have been merged since the
|
|
last release, and 16 issues have been solved. 56 people contributed with
|
|
code in 103 days. 2564 files have been touched with 191220 (+) insertions and
|
|
91400 deletions (-).
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
Core
|
|
----
|
|
+ clist: added clist_is_empty()
|
|
+ xfa: initial support for XFA's (cross file arrays)
|
|
|
|
System Libraries
|
|
----------------
|
|
* shell: allow defining shell commands using XFA
|
|
+ dbgpin: module for debugging and profiling
|
|
+ ztimer: add ztimer_is_set()
|
|
+ ztimer: add ZTIMER_SEC
|
|
+ ztimer: add periph_ptp backend
|
|
|
|
Networking
|
|
----------
|
|
|
|
* cord: Discovery patch altered to reflect changes in the underlying Resource Directory draft
|
|
* lwip: hook up sam0_eth support
|
|
+ congure: framework to implement congestion control and use it in a reusable manner with
|
|
a number of protocols
|
|
+ netstats: L1/L2 per neighbor statistics
|
|
+ sock DTLS: allow using multiple credentials
|
|
|
|
Packages
|
|
--------
|
|
|
|
* emlearn: bump version to 0.11.6
|
|
* libfixmath: bump version to latest master
|
|
* nanocbor: bump version
|
|
* nanopb: bump version to 0.4.5
|
|
* fatfs: bump version to r0.14a
|
|
* littlefs2: Bump to v2.4
|
|
* monocypher: bump to version 3.1.2
|
|
* nimble: migrate to ztimer, allowing low power operation
|
|
* openthread: bump version to 20191113
|
|
* wakaama: add patch to cast macro to time_t
|
|
* pkg/semtech-loramac: switch to RIOT AES
|
|
* pkg/semtech-loramac: refactor to use netdev API only
|
|
* pkg/lwip: Start DHCP early for all Ethernet interfaces
|
|
|
|
Boards
|
|
------
|
|
|
|
* particle-mesh boards: Use USB serial as stdio by default
|
|
* nucleo-f303re: I2C pins remapped to match the data sheet
|
|
* nucleo-f722ze: Add periph_can support
|
|
* native: compile with `-Og` (was `-O0`)
|
|
+ boards/nucleo-f767zi: Add periph_can support
|
|
+ New boards:
|
|
+ atmega328p-xplained-mini
|
|
+ atxmega-a1u-xpro
|
|
+ atxmega-a3bu-xplained
|
|
+ BastWAN
|
|
+ Microbit v2
|
|
+ samd20-xpro
|
|
+ TI CC1350 LAUNCHXL
|
|
+ Zigduino
|
|
|
|
CPU
|
|
---
|
|
|
|
+ Initial support for ATxmega family of 8-bit AVR CPUs
|
|
+ kinetis: enable floating point support
|
|
* nrf5x: enhance enabling of internal DC/DC converter
|
|
* nrf52: add VDDHDIV5 as ADC input
|
|
+ nrf52: add periph_uart_non_blocking support
|
|
+ native: add periph/flashpage implementation
|
|
+ qn908x: Implement blocking SPI support
|
|
+ qn908x: add ADC support
|
|
+ sam0_common: add rtc_get_tamper_event()
|
|
+ stm32f{2,4,7}: Initial flashpage support
|
|
+ stm32f7: added ADC support
|
|
* stm32/can: add option to enable deep-sleep per device
|
|
|
|
Device Drivers
|
|
--------------
|
|
|
|
+ new drivers:
|
|
+ sensirion SGP30 gas sensor
|
|
+ Amphenol sm-pwm-01c dust sensor
|
|
+ Si705x sensors
|
|
+ TI BQ2429x charger and power management ICs
|
|
+ Netdev driver for nrf24l01p
|
|
+ sx126x/llcc68 LoRa radios
|
|
* touch_dev & display_dev auto-initialization
|
|
* bmx280: increase accuracy of SAUL pressure readings
|
|
* lis2dh12: functionality extension
|
|
* cc110x: add hook cc1xxx_eui_get()
|
|
* ds3231: add alarm support
|
|
* at86rf2xx: add missing handler for TRX24_RX_START interrupt
|
|
* periph_rtt: add periph_rtt_set_counter feature
|
|
|
|
|
|
Documentation
|
|
-------------
|
|
|
|
+ riotboot and its USB DFU version were added to the documentation
|
|
+ cpu/cc26xx_cc13xx: add CPU documentation
|
|
* doc/SAUL: State expectations on blocking and interrupts
|
|
* sys/phydat: clarify use of phydat::scale in phydat_fit
|
|
* sys/ztimer: clarify doc on clock ops
|
|
* doc/Coding_Convention: clarify: void return is allowed
|
|
* sys/event: add missing precondition to doc
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
|
|
* RIOT now defaults to C11
|
|
* RIOT now compiles with `-fwrapv`
|
|
+ compile_commands.json files can be produced, easing IDE integration
|
|
* riotboot USB DFU: Enter bootloader when board's bootloader button is pressed on power-up
|
|
* Make: enable SECONDEXPANSION globally
|
|
|
|
Testing
|
|
-------
|
|
+ Test utilities result output (turo) module for testing logic abstraction
|
|
+ Github integration of static tests using annotations completed
|
|
|
|
Kconfig
|
|
-------
|
|
+ Modules with dependency model added:
|
|
+ drivers/{l, m, n, o, p, q, r, s, t, u, v, w}*
|
|
+ pkg/c25519
|
|
+ pkg/cayenne-lpp
|
|
+ pkg/cifra
|
|
+ pkg/cn-cbor
|
|
+ pkg/driver_atwinc15x0
|
|
+ pkg/driver_bme680
|
|
+ pkg/emlearn
|
|
+ pkg/gemmlowp
|
|
+ pkg/hacl
|
|
+ pkg/heatshrink
|
|
+ pkg/jsmn
|
|
+ pkg/libb2
|
|
+ pkg/libcose
|
|
+ pkg/libfixmath
|
|
+ pkg/libhydrogen
|
|
+ pkg/lora-serialization
|
|
+ pkg/micro-ecc
|
|
+ pkg/microcoap
|
|
+ pkg/minmea
|
|
+ pkg/monocypher
|
|
+ pkg/nanocbor
|
|
+ pkg/nanopb
|
|
+ pkg/qDSA
|
|
+ pkg/qcbor
|
|
+ pkg/relic
|
|
+ pkg/talking_leds
|
|
+ pkg/tiny-asn1
|
|
+ pkg/tinycbor
|
|
+ pkg/tinycrypt
|
|
+ pkg/tlsf
|
|
+ pkg/tweetnacl
|
|
+ pkg/u8g2
|
|
+ pkg/ubasic
|
|
+ pkg/ucglib
|
|
+ pkg/umorse
|
|
+ pkg/utensor
|
|
+ pkg/yxml
|
|
+ sys/{crypto, hashes, random}
|
|
+ sys/analog_util
|
|
+ sys/app_metadata
|
|
+ sys/base64
|
|
+ sys/bitfield
|
|
+ sys/bloom
|
|
+ sys/cb_mux
|
|
+ sys/eepreg
|
|
+ sys/matstat
|
|
+ sys/memarray
|
|
+ sys/mineplex
|
|
+ sys/oneway
|
|
+ sys/posix_{sleep, inet}
|
|
+ sys/sema
|
|
+ sys/seq
|
|
+ sys/uri_parser
|
|
+ sys/timex
|
|
+ sys/ztimer
|
|
|
|
+ Modules with configurations exposed:
|
|
+ cpu/stm32f2f4f7: clock configuration
|
|
+ net/lorawan
|
|
+ sys/shell
|
|
|
|
+ Source EXTERNAL_MODULES configurations
|
|
|
|
Examples
|
|
--------
|
|
* examples/suit_update: update to aiocoap 0.4.1
|
|
* examples/dtls-sock: add multiple credentials
|
|
* examples/gnrc_border_router: enable ethernet uplink
|
|
|
|
API Changes
|
|
-----------
|
|
|
|
* mtd: rename mtd_write_page() -> mtd_write_page_raw(), add high-level mtd_write_page()
|
|
* sys/ztimer: rename required_pm_mode to block_pm_mode
|
|
* sock/async: add function to retrieve session object of current DTLS event
|
|
* sys/net/netopt: make NETOPT_TX_END_IRQ and friends read-only
|
|
|
|
Deprecations
|
|
============
|
|
|
|
Deprecations
|
|
------------
|
|
- core/lifo: will be removed in 2021.07
|
|
|
|
Removals
|
|
--------
|
|
- Remove deprecated features:
|
|
- flashrom API (was deprecated since 2017, use periph/flashpage)
|
|
- boards: remove AVRDUDE_PORT and PORT_BSL
|
|
|
|
Known issues
|
|
============
|
|
|
|
Networking related issues (48)
|
|
------------------------------
|
|
#16411: border_router: significant packet loss when sending out packets using
|
|
USB cdc-ecm on nrf52
|
|
#16398: gnrc_border_router stops routing after a while
|
|
#16359: at86rf231 initialization loses race against auto_init_gnrc_rpl
|
|
#16085: gnrc_rpl: missing bounds checks in _parse_options
|
|
#16054: pkg/tinydtls: auxiliary data API does not work for async sockets
|
|
#15926: Unclear how Router Solicitations are (or should be) handled
|
|
#15867: Address registration handling inappropriate
|
|
#14962: LoRaWan node ISR stack overflowed
|
|
#14689: dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC
|
|
#13997: ping6 is failing when testing with cc2538dk
|
|
#13745: ethos: Unable to choose global source address.
|
|
#13493: ethernet: Missing multicast addr assignment
|
|
#13280: nrf52: Not able to add global or ULA address to interface
|
|
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
|
|
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
|
|
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
|
|
#12761: samr30 xpro doesn't seem to use its radio ok
|
|
#12642: Emcute cannot create a double-byte name
|
|
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer
|
|
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
|
|
#12210: stale border router does not get replaced
|
|
#11988: ethos: fails to respond to first message.
|
|
#11860: send data with UDP at 10HZ, the program die
|
|
#11852: scan-build errors found during 2019.07 testing
|
|
#11405: nrfmin: communication not possible after multicast ping with no interval
|
|
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
|
|
#10969: net: netdev_driver_t::send() doc unclear
|
|
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
|
|
#10809: openthread: does not build on current Arch
|
|
#10410: Missing drop implementations in netdev_driver_t::recv
|
|
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
|
|
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address
|
|
#10370: gomach: Resetting netif with cli doesn't return
|
|
#10338: xbee: setting PAN ID sometimes fails
|
|
#8779: CC2538 RF overlapping PIN usage
|
|
#8752: mrf24j40: does not link for examples/default
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#8242: at86rf2xx: Dead lock when sending while receiving
|
|
#8199: gcoap example request on tap I/F fails with NIB issue
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#7474: 6lo gnrc fragmentation expects driver to block on TX
|
|
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
|
|
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
|
|
chars
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
|
|
Timer related issues (15)
|
|
-------------------------
|
|
#13321: Sleep mode for Arduino
|
|
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
|
|
#10545: periph_timer: systematic proportional error in timer_set
|
|
#10523: saml21 system time vs rtc
|
|
#10510: xtimer_set_msg: crash when using same message for 2 timers
|
|
#10073: xtimer_usleep wrong delay time
|
|
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time.
|
|
#9052: misc issues with tests/trickle
|
|
#9049: xtimer mis-scaling with long sleep times
|
|
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
|
|
#8251: MSP430: periph_timer clock config wrong
|
|
#7347: xtimer_usleep stuck for small values
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#6442: cpu/native: timer interrupt issue
|
|
#6052: tests: xtimer_drift gets stuck on native
|
|
|
|
Drivers related issues (15)
|
|
---------------------------
|
|
#16417: w5100 driver's improvement
|
|
#15121: PWM: Single-phase initialization creates flicker
|
|
#14506: mdt_erase success, but vfs_format resets board (esp32-heltec-lora32-v2)
|
|
#14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until
|
|
timeout
|
|
#14424: adc is not a ADC-Driver but a analog pin abstraction
|
|
#13527: examples/dtls-wolfssl not working on pba-d-01-kw2x
|
|
#13444: Potential security and safety race conditions on attached devices
|
|
#13079: drivers/srf04: incorrect values on ATmega based platforms
|
|
#12445: driver/hts221: Temperature and Humidity readings incorrect
|
|
#12371: fail to send data to can bus
|
|
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
|
|
#12045: floats and doubles being used all over the place.
|
|
#11104: STM32: SPI clock not returning to idle state and generating additional
|
|
clock cycles
|
|
#9419: cpu/msp430: GPIO driver doesn't work properly
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
|
|
Native related issues (5)
|
|
-------------------------
|
|
#15878: examples/ccn-lite: floating point exception while testing on native
|
|
#15870: examples/micropython: floating point exception while testing on native
|
|
#13501: SDL2 does not work due to missing getpid
|
|
#5796: native: tlsf: early malloc will lead to a crash
|
|
#495: native not float safe
|
|
|
|
Other platforms related issues (18)
|
|
-----------------------------------
|
|
#16251: XFA support on AVR and MSP430 broken with binutils 2.36.1
|
|
#14822: MPU doesn't work on cortex-m0+
|
|
#14728: stm32f7: Large performance difference between stm32f746 and stm32f767
|
|
#14679: examples/gnrc_border_router: esp_wifi crashes on disconnect
|
|
#14572: tests/mpu_noexec_ram: fails on i-nucleo-lrwan1
|
|
#14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated
|
|
#14237: esp32-wroom-32: tests/netstats_l2 failing sometimes
|
|
#14015: stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after
|
|
__WFI()
|
|
#13606: gcoap/esp8266: Stack overflow with gcoap example
|
|
#13390: Cannot use LLVM with Cortex-M boards
|
|
#13104: boards/hifive1: flashing issue
|
|
#13086: Failing tests on FE310 (Hifive1b)
|
|
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
|
|
#11885: arm7: printf() with float/double not working
|
|
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
|
|
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
|
|
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
|
|
(not previous)
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
|
|
CS
|
|
|
|
Build system related issues (14)
|
|
--------------------------------
|
|
#16202: LTO broken (binaries too large)
|
|
#15185: build: info-build doesn't work with boards without port set
|
|
#14504: BUILD_IN_DOCKER ignores USEMODULE
|
|
#14288: pkg/ccn-lite: unable to `make -j -C examples/ccn-lite-relay`
|
|
#14264: make: ccache leads to differing binaries
|
|
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
|
|
#10850: Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation
|
|
#9913: Build dependencies - processing order issues
|
|
#9742: `buildtest` uses wrong build directory
|
|
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
|
|
image
|
|
#8913: make: use of immediate value of variables before they have their final
|
|
value
|
|
#8122: doxygen: riot.css modified by 'make doc'
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
|
|
Other issues (57)
|
|
-----------------
|
|
#16419: SX127x Join procedure failed (The Things Network)
|
|
#16415: riotctrl: shell interaction seems timing sensitive
|
|
#16402: esp8266 precompiled bootloaders don't support partitions past 1MB
|
|
#16395: riscv: ISR stack is too small for ENABLE_DEBUG in core files
|
|
#16381: I2C not working under RIOT with U8G2 pkg
|
|
#16281: esp8266: Hangs when erasing spi sector on mtd0 if using esp_wifi
|
|
#16242: I found stm32 DMA periph driver bugs! when I tested stm32l431rc board.
|
|
#16130: boards/esp32-wroom-32: tests/mtd_raw flakey
|
|
#16108: pkg/tinydtls: Multiple issues
|
|
#16077: pyterm on stdio_cdc_acm stops working after a few seconds
|
|
#16022: `make term` no longer works with JLinkExe v6.94
|
|
#15940: Basic test for periph/rtt introduced in #15431 is incorrect
|
|
#15917: sys/riotboot/flashwrite: unaligned write when skipping `RIOTBOOT_MAGIC`
|
|
on stm32wb
|
|
#15903: flashing issue on frdm-k64f
|
|
#15888: tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3
|
|
#15814: usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial
|
|
ports
|
|
#15685: esp32: can't use newer C++ standard than c++11
|
|
#15638: Possible memory leak in RIOT/build/pkg/ndn-riot/app.c
|
|
#15528: Conflict between nimble and uwb-core packages
|
|
#15072: periph_timer: Test coverage & broken on STM32F767ZI
|
|
#15066: tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM
|
|
#15006: Two bugs may lead to NULL dereference.
|
|
#14929: cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash
|
|
#14635: File systems report names with leading slashes
|
|
#14578: tests/cpp11_*: failing on i-nucleo-lrwan1
|
|
#14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails
|
|
#14548: edbg: long lines flooded over serial become garbled
|
|
#14520: examples / tests: LoRa tests fail on platforms that don't support LoRa
|
|
#14390: gcoap: Suspected crosstalk between requests (possible NULL call)
|
|
#14315: DTLS examples cannot send message to localhost
|
|
#14167: Gcoap drops long packages instead of gracefully erring out
|
|
#13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode
|
|
#13541: Order of auto_init functions
|
|
#13285: Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto
|
|
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32
|
|
#13120: tests: broken with stdio_rtt if auto_init is disabled
|
|
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
|
|
shell after flashing with J-Link
|
|
#12897: Can't build relic with benchmarks or tests
|
|
#12889: CC2538DK board docs: broken links
|
|
#12732: tests: some tests don't work with `newlib` lock functions.
|
|
#12621: Potential race condition in compile_and_test_for_board.py
|
|
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
|
|
#12105: [TRACKING] sys/shell refactoring.
|
|
#11243: sys/riotboot: documentation issues
|
|
#10751: Possible memset optimized out in crypto code
|
|
#10731: nanocoap: incomplete response to /.well-known/core request
|
|
#10639: sys/stdio_uart: dropped data when received at once
|
|
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
|
|
10
|
|
#9371: assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope
|
|
#7365: scheduler: priority inversion problem
|
|
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
|
|
#6533: tests/lwip target board for python test is hardcoded to native
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#4488: Making the newlib thread-safe
|
|
#3256: make: Setting constants on compile time doesn't really set them
|
|
everywhere
|
|
#2346: Tracker: Reduce scope on unintended COMMON variables
|
|
|
|
There are 172 known issues in this release
|
|
|
|
Fixed Issues since the last release (2021.01)
|
|
=============================================
|
|
|
|
#16308: RIOT-OS has great design, But there are too many bugs.
|
|
#16298: cpu/sam0_common: Ethernet driver stops working after a while
|
|
#16293: Conflict between semtech-loramac and hashes modules
|
|
#16191: make: `make list-ttys` broken for `iotlab-m3`
|
|
#16184: unittests/tests-rtc: fail on native
|
|
#16124: lwip_sock_tcp.c: incorrect socket buffer last_offset computation
|
|
#16062: gnrc_rpl: missing bounds checks in gnrc_rpl_validation_options
|
|
#16018: gnrc_rpl: Lack of bounds check for packed structs
|
|
#15927: uri_parser: out-of-bounds read
|
|
#15447: w5100 driver's bug
|
|
#13492: make -j flash broken on esp* (will always flash the previous binary)
|
|
#13459: cpu/cortex-m23: gcc 9 bug when compiling c11 atomics
|
|
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
|
|
#12857: examples/gnrc_networking_mac broken on ATmega
|
|
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
|
|
#12168: pkg/libb2: blake2s doesn't work on AVR
|
|
|
|
16 fixed issues since last release (2021.01)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
|
|
IRC, Matrix and Forum
|
|
=====================
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
RIOT-2021.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 2021.01 release includes:
|
|
- Device Firmware Upgrade support for USBUS
|
|
- USB HID minimal implementation
|
|
- IEEE 802.15.4 security initial implementation
|
|
- 6LowPAN Minimal Forwarding and Selective Fragment Recovery initial
|
|
implementation
|
|
- Initial support for QN908x, SAMD10 STM32MP1 and STM32L5 CPUs
|
|
- Initial support for Cortex-M33
|
|
- A module for selecting entropy sources
|
|
- Initial support for the Decawave Impulse Radio-Ultra Wideband (UWB Core)
|
|
- Capability to join or leave link layer multicast groups (GNRC)
|
|
- Support for IN865 region in GNRC LoRaWAN
|
|
- 83 additional modules supported by Kconfig
|
|
- 14 new boards, 6 new device drivers, 8 packages updated
|
|
|
|
In order to improve community interaction, during this release cycle we started
|
|
to migrate from a mailing-list-based communication to forum-based
|
|
communication. We are proud to present the RIOT-OS forum available at
|
|
forum.riot-os.org
|
|
|
|
533 pull requests, composed of 1440 commits, have been merged since the
|
|
last release, and 65 issues have been solved. 58 people contributed with
|
|
code in 119 days. 3852 files have been touched with 348619 (+) insertions and
|
|
52516 deletions (-).
|
|
|
|
Notations used below:
|
|
=====================
|
|
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
Core
|
|
----
|
|
+ msg_bus: allow to differ between messages form bus and from thread
|
|
+ mutex: Add mutex_cancel
|
|
+ mbox: add mbox_size(), mbox_avail()
|
|
* refactor thread info
|
|
- remove kernel_types.h
|
|
|
|
System Libraries
|
|
----------------
|
|
+ Add thread-safe Malloc
|
|
+ sys/tsrb: Make thread-safe
|
|
+ mtd_mapper: implement pagewise functions
|
|
+ xtimer: introduce xtimer_msleep()
|
|
+ usbus: Add USB peripheral serial string support
|
|
+ hashes: Add PBKDF2-sha256 implementation
|
|
+ usbus/dfu: add Device Firmware Upgrade support for USBUS
|
|
+ USB HID minimal implementation
|
|
+ Add helpers for pointer tagging
|
|
+ atomic_utils: Functions for atomic access
|
|
+ entropy_source: add new module for entropy sources
|
|
+ nimble_autoadv: add new module
|
|
* ztimer:
|
|
+ add ztimer_mutex_lock_timeout()
|
|
* fix xtimer_compat
|
|
* increase xtimer_compat coverage
|
|
* oneway-malloc: check calloc args
|
|
* event: Allow single event_thread handling all queues
|
|
- irq_handler: Drop module
|
|
|
|
Networking
|
|
----------
|
|
+ gnrc_netif: add capability to join or leave link layer multicast groups
|
|
+ gnrc_sixlowpan_frag:
|
|
+ initial import of Minimal Forwarding according to RFC 8930
|
|
+ initial import of Selective Fragment Recovery (RFC 8931)
|
|
+ gnrc_netif_ethernet: Support RX timestamp
|
|
+ Initial implementation of IEEE 802.15.4 security
|
|
+ sock: add access to auxiliary data
|
|
* gnrc_pkt: refactor to not use utlist.h
|
|
* sys/net/gnrc: fix in-band signaling of no RSSI
|
|
* gnrc_netif_pktq: fix pktbuf leak
|
|
* Fixed a critical bug, allowing to crash the whole system with a specially
|
|
crafted LoRa frame
|
|
* GNRC LoRaWAN:
|
|
+ Support for IN865 region, Improve debugging
|
|
* GNRC LoRaWAN: Bug fix for zero CFList
|
|
* IEEE 802154 Radio HAL:
|
|
+ add `read` function
|
|
+ add IEEE802154_RADIO_INDICATION_CRC_ERROR
|
|
+ add IEEE802154_RADIO_INDICATION_TX_START
|
|
+ add helpers for RSSI and dBm conversion
|
|
* fix wrong rssi conversions treewide
|
|
* IEEE 802.15.4 SubMAC:
|
|
+ add retransmission reporting
|
|
* enable ACK_REQ by default
|
|
* unify legacy and radio HAL bootstrap
|
|
* gcoap:
|
|
+ Process CON responses
|
|
* make blocksize configurable
|
|
- Remove deprecated features
|
|
- gcoap: remove deprecated gcoap_add_qstring
|
|
- gnrc_nettype: remove GNRC_NETTYPE_IOVEC
|
|
- gnrc_pktbuf: drop gnrc_pktbuf_replace_snip()
|
|
- gnrc_sixlowpan_rb: remove GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE
|
|
- sock/dtls: remove sock_dtls_session_create due to deprecation
|
|
|
|
Packages
|
|
--------
|
|
+ openthread: add support for radios compatible with SubMAC
|
|
+ uwb_core: initial support
|
|
* Updates:
|
|
* littlefs2: Bump to v2.3
|
|
* jsmn: bump version
|
|
* libb2: update to latest release
|
|
* libhydrogen: bump version
|
|
* micro-ecc: bump version
|
|
* tinycrypt: bump version
|
|
* fatfs: bump version to r0.14
|
|
* gecko_sdk: update to v2.7.7
|
|
* hacl: switch upstream to backup copy
|
|
* lvgl: bump to v7.7.1
|
|
* openwsn:
|
|
+ add ieee802154_hal based radio
|
|
+ openwsn: add sock_udp
|
|
- nordic-softdevice: remove deprecated package
|
|
|
|
Boards
|
|
------
|
|
* Renode:
|
|
+ stm32f4discovery: Add initial renode support
|
|
+ firefly: add renode configuration
|
|
+ hifive*: add renode support
|
|
* Arduino feature:
|
|
+ waspmote-pro: add arduino feature
|
|
+ remote-revb: add arduino feature
|
|
+ New boards:
|
|
+ ESP32-Ethernet-Kit
|
|
+ arduino-nano-33-iot
|
|
+ weact-f401cc / weact-f401ce / weact-f411ce
|
|
+ e104-bt5011a-tb
|
|
+ e180-zg120b-tb
|
|
+ feather-m0-lora
|
|
+ nrf52840-mdk-dongle
|
|
+ nucleo-l011k4
|
|
+ nucleo-l552ze-q
|
|
+ frdm-kl43z
|
|
+ slstk3400a
|
|
+ stk3200
|
|
+ SAM D10 Xplained Mini
|
|
+ Particle boards: Support monofirmware builds and uploads
|
|
+ saul_pwm: auto-init'able RGB LEDs and dimmers for:
|
|
* particle-argon / particle-boron / particle-xenon
|
|
* nrf52840-mdk-dongle
|
|
* nrf52840dongle
|
|
+ native: allow to use ZEP instead of tap
|
|
+ ikea-tradfri: add SPI NOR Flash configuration
|
|
|
|
CPU
|
|
---
|
|
+ Cortex-M33: add initial support
|
|
+ nrf5x: implement periph_timer_periodic
|
|
+ nrf52: Add i2c reconfigure feature
|
|
+ SAMD10: Add support
|
|
+ stm32l5: add initial support
|
|
+ stm32mp1: Add initial support
|
|
+ QN908x: Add initial support
|
|
* atmega_common: Split into atmega_common and avr8_common
|
|
* Improve clock configuration
|
|
* stm32:
|
|
* rtc: add unlock/lock to rtc_clear_alarm
|
|
* uart: set flow control bits before enabling uart
|
|
* cpu/stm32: enable overdrive mode on f4 and f7 for high clock speeds
|
|
* cpu/stm32: Fix & cleanup periph_eth
|
|
* esp:
|
|
+ implement ESP WiFi SoftAP mode
|
|
* Fix cast alignment issues
|
|
* sam3/periph_timer: fix trigger of cleared timer
|
|
* native:
|
|
+ rtc: add rtc_set_time implementation
|
|
* fix memory leak
|
|
- remove unused can_linux module
|
|
* cc2538:
|
|
+ add riotboot feature
|
|
+ add flashpage & flashpage_raw
|
|
+ add periph_uart_nonblocking
|
|
* efm32:
|
|
+ add coretemp driver
|
|
+ add watchdog peripheral
|
|
* sam0_common:
|
|
+ cpu/sam0: add initial ethernet support
|
|
+ flashpage: add functions to write to user config area / AUX page
|
|
* flashpage: rename to sam0_flashpage_aux_write()
|
|
+ SPI: add support for QSPI in SPI mode
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ Add utilities for Ethernet Media-Independent Interface (MII) and use them in
|
|
STM32 `periph_eth`
|
|
+ cst816s: Initial include of cst816s touch screen driver
|
|
+ gp2y10xx dust sensor
|
|
+ DS3231 RTC
|
|
+ periph_common: dac: add dac_play()
|
|
+ scd30: Add reset function to Sensirion scd30 sensor
|
|
+ si1133: New SI1133 UV/IR/Ambient light driver
|
|
+ sc: Add driver for Honeywell HSC series pressure and temperature sensor
|
|
+ ndev: add mcp2515 + driver/mcp2515: add driver
|
|
+ net: Add netdev_driver_t::confirm_send
|
|
+ PTP Clock
|
|
* cpu/stm32:
|
|
* periph_eth: Use auto-negotiation
|
|
* Fix periph_eth link status
|
|
* Fix reception bug in periph_eth
|
|
* nrf802154:
|
|
* change internal state to idle after rx
|
|
* fix set_cca_threshold range
|
|
* fix unwanted emissions at the end of ACK frame
|
|
* fix state transition and `off` function
|
|
* nrf802154: default to netdev_ieee802154_submac
|
|
* cc2538_rf:
|
|
* fix transmit function
|
|
* default to netdev_ieee802154_submac
|
|
* at86rf2xx: fix null pointer check
|
|
* at86rf215:
|
|
+ add functions to configure trim & clock output at run-time
|
|
+ implement battery monitor, add power bus
|
|
+ implement MR-FSK
|
|
* make use of packet queue if available
|
|
* fix dependency resolution for 2.4 GHz
|
|
* w5100.c: correct the pointer position when w5100's buf is full
|
|
* srf04: fix overflow on AVR
|
|
* periph/rtt: fix overflow in tick conversion macros
|
|
* mtd_flashpage: fix erasure of multiple sectors
|
|
* mtd_spi_nor: cleanup & bug fixes
|
|
|
|
Documentation
|
|
-------------
|
|
+ README: Add merge-chance badge
|
|
+ riotboot: add basic porting guide
|
|
+ emulators: add emulators documentation in Doxygen
|
|
+ SECURITY.md: Add initial security policy
|
|
* generate-changelog: add support for point releases
|
|
* add Docker info to doxygen
|
|
* drivers/netdev: Clarify documentation
|
|
* README.md: move tapsetup section to documentation
|
|
* native: Improve Documentation
|
|
* CONTRIBUTING: cleanup and reorganize
|
|
* core/msg_bus: enhance documentation
|
|
* cpu/stm32: rewrite clock configuration documentation
|
|
* doc: advertise forum.riot-os.org
|
|
* doc: Give examples of what DEVELHELP does
|
|
* gnrc/rpl: document implementation status
|
|
* ieee802154/radio: indicate that FCS is ignored when reading buffer
|
|
* uhcp: improve documentation
|
|
* update board porting documentation page
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
+ testbed-support: add iotlab mapping for dwm1001
|
|
+ info.inc.mk: Add info-build-json as JSON-formatted build info
|
|
+ makefiles/utils: add util to compare to software versions
|
|
+ emulator: add debug feature with qemu emulator
|
|
* Makefile.include: avoid recursive expansion of USEMODULE
|
|
+ makefiles/pseudomodules.inc.mk: netdev_ieee802154_legacy is a pseudomodule
|
|
* dist/tools/bmp: Fix flashing with pygdbmi 0.10.0
|
|
* drivers/at86rf215: fix dependency resolution for single radio
|
|
* cpu/esp*: fix linker scripts
|
|
* info-objsize: Restore info-objsize target
|
|
* make: run static_tests.sh directly with `static-tests` target
|
|
* picolibc: model as a feature
|
|
* tools/esptool: add common makefile to define esptool variables
|
|
* dist/tools: Use bash instead of sh where needed
|
|
* tools/emulator: allow use with *term targets + introduce EMULATE=1 instead of emulate target
|
|
* mips: adapt for toolchain update (2020.06-01)
|
|
- remove the bootloader_% pseudo-feature, replace it with highlevel_stdio
|
|
|
|
Continuous Integration
|
|
----------------------
|
|
|
|
* use Github actions for static tests instead of Travis
|
|
+ Add support for Github annotations.
|
|
* gh-actions/release-test: bump ssh-agent to v0.4.1
|
|
|
|
Testing
|
|
-------
|
|
+ tests/mpu_stack_guard: add automatic test script
|
|
+ tests/mtd_raw: add simple test for MTD
|
|
* treewide: cleanup ENABLE_DEBUG
|
|
* release-tests: fix artifact naming and steps cleanup for matrix build
|
|
* tests/sys_atomic_utils_unittests: spice up test
|
|
* tests/unittests: split out atomic_utils unittests
|
|
* sys/shell: terminate shell on Ctrl-D
|
|
|
|
Kconfig
|
|
-------
|
|
+ Modules with support added:
|
|
+ drivers/{a, b, c, d, e, f, g, h, i, j}*
|
|
+ drivers/ili9341
|
|
+ test/periph_*
|
|
+ cpu/stm32: add script to generate Kconfig.models and Kconfig.lines files
|
|
+ add modules to test on native
|
|
+ Clock configuration for:
|
|
+ stm32l4
|
|
+ stm32l5
|
|
+ stm32wb
|
|
+ stm32f0
|
|
+ stm32g0g4
|
|
+ stm32l0l1
|
|
+ stm32f1f3
|
|
* drivers/rn2xx3 : Kconfig updates.
|
|
* MQTT-SN Clients: Kconfig Updates
|
|
|
|
Examples
|
|
--------
|
|
+ gnrc_networking: add option to enable DNS
|
|
* gnrc_border_route: simplify ZEP setup on native
|
|
* suit_update: use interactive sync in test
|
|
* gcoap: Allow PUT/POST with empty payload
|
|
* suit_update: update IETF draft reference in the README
|
|
|
|
|
|
API Changes
|
|
===========
|
|
* periph_flashpage: Make pagewise API optional
|
|
* net/eui_provider: API cleanup
|
|
* sock/dtls: add getter/setter for the remote UDP endpoint of sock_dtls_session_t
|
|
* drivers/pn532: use pseudomodules to select i2c or spi
|
|
* GNRC: fix in-band signaling of no RSSI
|
|
|
|
|
|
Deprecations
|
|
============
|
|
|
|
Removals
|
|
--------
|
|
- Remove deprecated features:
|
|
- gnrc_nettype: remove GNRC_NETTYPE_IOVEC
|
|
- gnrc_sixlowpan_rb: remove GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE
|
|
- pkg/nordic-softdevice: remove deprecated package
|
|
- boards/native: remove all-debug deprecated target
|
|
- gnrc_pktbuf: drop gnrc_pktbuf_replace_snip()
|
|
- sys/irq_handler: Drop module
|
|
- sock/dtls: remove sock_dtls_session_create due to deprecation
|
|
- gcoap: remove deprecated gcoap_add_qstring
|
|
- pkg/tinydtls: remove deprecation message about some CFLAGS
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Networking related issues (43)
|
|
------------------------------
|
|
#15867: Address registration handling inappropriate
|
|
#14962: LoRaWan node ISR stack overflowed
|
|
#14689: dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC
|
|
#13997: ping6 is failing when testing with cc2538dk
|
|
#13745: ethos: Unable to choose global source address.
|
|
#13493: ethernet: Missing multicast addr assignment
|
|
#13280: nrf52: Not able to add global or ULA address to interface
|
|
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
|
|
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
|
|
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
|
|
#12857: examples/gnrc_networking_mac broken on ATmega
|
|
#12761: samr30 xpro doesn't seem to use its radio ok
|
|
#12642: Emcute cannot create a double-byte name
|
|
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer
|
|
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
|
|
#12210: stale border router does not get replaced
|
|
#11988: ethos: fails to respond to first message.
|
|
#11860: send data with UDP at 10HZ, the program die
|
|
#11852: scan-build errors found during 2019.07 testing
|
|
#11405: nrfmin: communication not possible after multicast ping with no interval
|
|
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
|
|
#10969: net: netdev_driver_t::send() doc unclear
|
|
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
|
|
#10809: openthread: does not build on current Arch
|
|
#10410: Missing drop implementations in netdev_driver_t::recv
|
|
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
|
|
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address
|
|
#10370: gomach: Resetting netif with cli doesn't return
|
|
#10338: xbee: setting PAN ID sometimes fails
|
|
#8779: CC2538 RF overlapping PIN usage
|
|
#8752: mrf24j40: does not link for examples/default
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#8242: at86rf2xx: Dead lock when sending while receiving
|
|
#8199: gcoap example request on tap I/F fails with NIB issue
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#7474: 6lo gnrc fragmentation expects driver to block on TX
|
|
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
|
|
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
|
|
chars
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
|
|
Timer related issues (16)
|
|
-------------------------
|
|
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
|
|
#13321: Sleep mode for Arduino
|
|
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
|
|
#10545: periph_timer: systematic proportional error in timer_set
|
|
#10523: saml21 system time vs rtc
|
|
#10510: xtimer_set_msg: crash when using same message for 2 timers
|
|
#10073: xtimer_usleep wrong delay time
|
|
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time.
|
|
#9052: misc issues with tests/trickle
|
|
#9049: xtimer mis-scaling with long sleep times
|
|
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
|
|
#8251: MSP430: periph_timer clock config wrong
|
|
#7347: xtimer_usleep stuck for small values
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#6442: cpu/native: timer interrupt issue
|
|
#6052: tests: xtimer_drift gets stuck on native
|
|
|
|
Drivers related issues (14)
|
|
---------------------------
|
|
#15121: PWM: Single-phase initialization creates flicker
|
|
#14506: mdt_erase success, but vfs_format resets board (esp32-heltec-lora32-v2)
|
|
#14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until
|
|
timeout
|
|
#14424: adc is not a ADC-Driver but a analog pin abstraction
|
|
#13527: examples/dtls-wolfssl not working on pba-d-01-kw2x
|
|
#13444: Potential security and safety race conditions on attached devices
|
|
#13079: drivers/srf04: incorrect values on ATmega based platforms
|
|
#12445: driver/hts221: Temperature and Humidity readings incorrect
|
|
#12371: fail to send data to can bus
|
|
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
|
|
#12045: floats and doubles being used all over the place.
|
|
#11104: STM32: SPI clock not returning to idle state and generating additional
|
|
clock cycles
|
|
#9419: cpu/msp430: GPIO driver doesn't work properly
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
|
|
Native related issues (5)
|
|
-------------------------
|
|
#15878: examples/ccn-lite: floating point exception while testing on native
|
|
#15888: tests/test_tools: test fails while testing on samr21-xpro/iotlab-m3
|
|
#13501: SDL2 does not work due to missing getpid
|
|
#5796: native: tlsf: early malloc will lead to a crash
|
|
#495: native not float safe
|
|
|
|
Other platforms related issues (19)
|
|
-----------------------------------
|
|
#14822: MPU doesn't work on cortex-m0+
|
|
#14728: stm32f7: Large performance difference between stm32f746 and stm32f767
|
|
#14679: examples/gnrc_border_router: esp_wifi crashes on disconnect
|
|
#14572: tests/mpu_noexec_ram: fails on i-nucleo-lrwan1
|
|
#14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated
|
|
#14237: esp32-wroom-32: tests/netstats_l2 failing sometimes
|
|
#14015: stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after
|
|
__WFI()
|
|
#13606: gcoap/esp8266: Stack overflow with gcoap example
|
|
#13390: Cannot use LLVM with Cortex-M boards
|
|
#13104: boards/hifive1: flashing issue
|
|
#13086: Failing tests on FE310 (Hifive1b)
|
|
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
|
|
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
|
|
#12168: pkg/libb2: blake2s doesn't work on AVR
|
|
#11885: arm7: printf() with float/double not working
|
|
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
|
|
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
|
|
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
|
|
(not previous)
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
|
|
CS
|
|
|
|
Build system related issues (14)
|
|
--------------------------------
|
|
#15185: build: info-build doesn't work with boards without port set
|
|
#14504: BUILD_IN_DOCKER ignores USEMODULE
|
|
#14288: pkg/ccn-lite: unable to `make -j -C examples/ccn-lite-relay`
|
|
#14264: make: ccache leads to differing binaries
|
|
#13492: make -j flash broken on esp* (will always flash the previous binary)
|
|
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
|
|
#10850: Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation
|
|
#9913: Build dependencies - processing order issues
|
|
#9742: `buildtest` uses wrong build directory
|
|
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
|
|
image
|
|
#8913: make: use of immediate value of variables before they have their final
|
|
value
|
|
#8122: doxygen: riot.css modified by 'make doc'
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
|
|
Other issues (41)
|
|
-----------------
|
|
#15870: examples/micropython: floating point exception while testing on native
|
|
#15814: usb-serial/list-ttys.sh: Broken when a debugger offers multiple serial
|
|
ports
|
|
#15528: Conflict between nimble and uwb-core packages
|
|
#15072: periph_timer: Test coverage & broken on STM32F767ZI
|
|
#15066: tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM
|
|
#15006: Two bugs may lead to NULL dereference.
|
|
#14929: cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash
|
|
#14635: File systems report names with leading slashes
|
|
#14578: tests/cpp11_*: failing on i-nucleo-lrwan1
|
|
#14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails
|
|
#14548: edbg: long lines flooded over serial become garbled
|
|
#14520: examples / tests: LoRa tests fail on platforms that don't support LoRa
|
|
#14390: gcoap: Suspected crosstalk between requests (possible NULL call)
|
|
#14315: DTLS examples cannot send message to localhost
|
|
#14167: Gcoap drops long packages instead of gracefully erring out
|
|
#13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode
|
|
#13541: Order of auto_init functions
|
|
#13285: Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto
|
|
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32
|
|
#13120: tests: broken with stdio_rtt if auto_init is disabled
|
|
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
|
|
shell after flashing with J-Link
|
|
#12897: Can't build relic with benchmarks or tests
|
|
#12889: CC2538DK board docs: broken links
|
|
#12732: tests: some tests don't work with `newlib` lock functions.
|
|
#12621: Potential race condition in compile_and_test_for_board.py
|
|
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
|
|
#12105: [TRACKING] sys/shell refactoring.
|
|
#11243: sys/riotboot: documentation issues
|
|
#10751: Possible memset optimized out in crypto code
|
|
#10731: nanocoap: incomplete response to /.well-known/core request
|
|
#10639: sys/stdio_uart: dropped data when received at once
|
|
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
|
|
10
|
|
#9371: assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope
|
|
#7365: scheduler: priority inversion problem
|
|
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
|
|
#6533: tests/lwip target board for python test is hardcoded to native
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#4488: Making the newlib thread-safe
|
|
#3256: make: Setting constants on compile time doesn't really set them
|
|
everywhere
|
|
#2346: Tracker: Reduce scope on unintended COMMON variables
|
|
|
|
There are 152 known issues in this release
|
|
|
|
Fixed Issues since the last release (2020.10)
|
|
=============================================
|
|
|
|
#15765: GitHub: Typo in WIP label
|
|
#15691: examples/posix_socket: doesn't work between 2 iotlab-m3
|
|
#15649: Posix Sockets - UDP not going out while using GNRC
|
|
#15626: vera++: reports "warning: keyword 'new' not followed by a single space"
|
|
#15574: Fix for #15353 is incomplete
|
|
#15538: Crash on context switch on Cortex-M
|
|
#15521: Missing error check of clist_foreach(), mbox_try_put() and
|
|
msg_try_send()
|
|
#15517: pkg/tinydtls: async event SOCK_ASYNC_CONN_FIN does not indicate which
|
|
session has been finished
|
|
#15495: C++ compile error with gnrc_lorawan
|
|
#15457: RIOT OS and Relic Segmentation fault
|
|
#15447: w5100 driver's bug
|
|
#15434: stm32: cmsis: spurious build issues
|
|
#15406: There are unsatisfied feature requirements: periph_adc
|
|
#15357: Link failures since 81cb769
|
|
#15353: uhcp: Incorrect handling of uhcp_push_t prefix
|
|
#15311: Arduino's Serial.print(float) doesn't work
|
|
#15102: Add whole linked list of gcoap_listener_t to coap listener
|
|
#15028: Suspicious code in emCute
|
|
#14568: tests/pkg_libfixmath_unittests: failing on multiple platforms
|
|
#13277: Y2038 tracking issue / strategy
|
|
|
|
20 fixed issues since last release (2020.10)
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC, Matrix and Forum
|
|
------------
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
* Join the RIOT Forum at: forum.riot-os.org
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
RIOT-2020.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 2020.10 release includes:
|
|
|
|
- Support for PicoLIBC as standard C library implementation
|
|
- A new radio abstraction layer for ieee802.15.4 radios
|
|
- Improvement to the linking of modules
|
|
- An improved algorithm for generating local unique identifiers
|
|
- Pagewise addressing support for MTD devices
|
|
- 23 additional modules supported by Kconfig
|
|
- Initial rework of the clock modelling on stm32 devices
|
|
- 5 new boards, 2 new device drivers, 7 packages updated
|
|
|
|
482 pull requests, composed of 1355 commits, have been merged since the
|
|
last release, and 84 issues have been solved. 64 people contributed with
|
|
code in 94 days. 2426 files have been touched with 133358 (+) insertions and
|
|
756906 deletions (-).
|
|
|
|
Notations used below:
|
|
=====================
|
|
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
Core
|
|
----
|
|
+ init: make boot message configurable
|
|
+ panic: callback app during panic
|
|
+ bitarithm: add bitarithm_test_and_clear()
|
|
* thread: Add THREAD_NAMES make flag
|
|
* kernel_defines.h: Fix container_of()
|
|
* core: Add and use helper functions for internal data
|
|
* treewide: Fix direct access to scheduler internals
|
|
* core/bitarithm: use __builtin_clz() for bitarithm_msb()
|
|
|
|
System Libraries
|
|
----------------
|
|
+ architecture: New module to access architecture internals
|
|
+ Add support for PicoLIBC
|
|
+ ztimer: add ztimer_spin()
|
|
+ ztimer: add periodic timers API
|
|
* byteorder:
|
|
* Moved to sys
|
|
+ Add byteorder_bebuftohll() and inverse
|
|
+ add uint32 from/to buffer funcs
|
|
+ event: implement waiting on multiple queues
|
|
+ evtimer: add mbox support
|
|
+ random: add SHA256 mode to SHA1PRNG & tests
|
|
* sys/luid: improve luid_base() algorithm
|
|
* tsrb: Make thread-safe
|
|
* pipe_dynamic: fix possible null pointer dereference
|
|
|
|
Networking
|
|
----------
|
|
+ ieee802154_submac: add initial support for common MAC sub layer
|
|
+ ieee802154/radio_hal: introduce Radio HAL for IEEE802.15.4 compatible radios
|
|
+ EUI:
|
|
+ luid: add luid_netdev_get_eui48() & luid_netdev_get_eui64()
|
|
+ eui64: add eui64_to_eui48()
|
|
+ link_layer: implement EUI provider
|
|
* luid: shuffle bytes
|
|
* uhcp: use LOG_xxx functions
|
|
* gcoap: Insert registrations at the front
|
|
* gnrc_ipv6_nib: only multicast probe UNREACHABLE neighbor if 6LR
|
|
* gnrc_ipv6_nib: set NCE stale on incoming ARO
|
|
* gnrc_ipv6_nib: don't add non-link-local to NC without ARSM
|
|
+ gnrc_netif_pktq: add packets to optional send queue when device is busy
|
|
* emcute: fix buffer overflow in _willupd_msg()
|
|
* SUIT:
|
|
+ Introduction of a payload storage API for SUIT manifest payloads
|
|
* Upgrade to draft-ietf-suit-manifest-09
|
|
* fail fetch if the image size doesn't match expected
|
|
* gnrc:
|
|
- Remove cyclic dependencies
|
|
- Remove deprecated module gnrc_nettest
|
|
- netopt: remove deprecated alias NETOPT_LINK_CONNECTED
|
|
|
|
Packages
|
|
--------
|
|
+ openwsn: add riot based openwsn scheduler
|
|
+ openwsn: add shell commands
|
|
* openthread: migrate to event loop
|
|
* nimble/netif: fix deadlock on connection loss
|
|
* wolfssl: bump version to 4.5.0
|
|
* nanopb: bump version to 0.4.3
|
|
* ccn-lite: bump version
|
|
* cn-cbor bump to 1.0.0
|
|
* tinycbor: bump to v0.5.3
|
|
* tinydtls: enforce the selection of a crypto secure PRNG
|
|
* jerryscript: bump to version 2.3.0
|
|
* semtech-loramac: replace xtimer by ztimer
|
|
* lvgl:
|
|
+ add logic for managing touch devices
|
|
+ introduce screen_dev wrapper
|
|
* bump to v7
|
|
- emb6: remove deprecated package
|
|
|
|
Boards
|
|
------
|
|
+ nrf52: Enable PWM on the LED pins
|
|
+ nucleo-g071rb: add initial support
|
|
+ nucleo-g070rb: add board
|
|
+ nucleo-g431rb: add initial support
|
|
+ Support for YARM board
|
|
+ add Adafruit Itsy Bitsy
|
|
* samr21-xpro: fix reading EUI-64 from EDBG on cold boot
|
|
* nucleo-l452re: add i2c config
|
|
* hifive1b: add support for openocd programmer
|
|
- remove support for wsn430-1_3b and wsn430-1_4
|
|
|
|
CPU
|
|
---
|
|
* cortexm:
|
|
+ Make no_thread_idle compatible with cortex-m0
|
|
+ Add thread info to hard fault handler
|
|
+ advertise puf_sram feature
|
|
* Skip context save/restore on scheduling the previous thread
|
|
* use mpu stack guard if DEVELHELP is enabled
|
|
* fix check for bitbanding
|
|
* Flush pipeline after triggering PendSV
|
|
+ cc2538: add Watchdog implementation
|
|
* cc26xx_cc13xx:
|
|
* add & link CCFG configuration
|
|
* enable periph clocks on sleep
|
|
* fe310:
|
|
+ Add custom PLIC driver as peripheral
|
|
* Merge and optimize trap_entry with irq_arch
|
|
* Unify linker scripts
|
|
* msp430: Update to inline-able IRQ API Area
|
|
* nrf5x_common: UART: add support for 1 MBaud
|
|
* stm32:
|
|
+ generate vectors C files and IRQ defines from CMSIS headers
|
|
+ stm32cmsis: retrieve STM32 CMSIS header from a package
|
|
+ g0: add basic support
|
|
+ implement periph_timer_periodic
|
|
* Add support for arbitrary SPI clock rate
|
|
* f0/f1/f3/l0/l1/l4/wb: rework clock initialization and configuration
|
|
- disable MPU for cortex-m0+
|
|
* sam0:
|
|
+ GPIO: use tamper detection to wake from Deep Sleep
|
|
+ add support to run PWM off TC timers
|
|
+ ADC: add support for samd5x/same5x
|
|
+ Add support for Single-cycle I/O Port for GPIO
|
|
* UART: implement arithmetic BAUD mode
|
|
* merge RTC & RTT implementation
|
|
* flashpage: clean up implementation
|
|
- saml1x: Remove MPU feature
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ at86rf2xx: spi security module
|
|
+ at86rf2xx: support frame retry reporting on AT86RFR2
|
|
+ soft_uart: add software based UART implementation
|
|
+ scd30 : Add driver for scd30 sensor
|
|
+ stm32_eth: add 'NETDEV_EVENT_LINK_UP' event
|
|
+ Add support for Adafruit Seesaw Soil moisture sensor
|
|
+ radio_hal:
|
|
+ introduce Radio HAL for IEEE802.15.4 compatible radios
|
|
+ cc2538_rf: implement Radio HAL
|
|
+ nrf52840: implement Radio HAL
|
|
+ mtd: add page addressed operation
|
|
* stmpe811: fix interrupt polarity & interrupt generation
|
|
* sps30: Update units of measurement
|
|
* sps30: Add sleep mode
|
|
- sdcard_spi: remove auto-init
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
+ Add libstdcpp feature
|
|
+ gnrc_border_router: Add USB Ethernet support
|
|
+ buspirate: add Bus Pirate as Debug Adapter
|
|
* README: Add more badges
|
|
* Convert remaining Python2 users to Python3
|
|
* openocd-adapters: select transport based on adapter
|
|
* Makefile.{base,include}: Fix linking for C++ code in external modules
|
|
* link object files instead of archives
|
|
* tapsetup:
|
|
- Add support for listing bridges
|
|
- Add support to configure addresses for bridge
|
|
- Add support for configuring routes and forwarding capabilities for bridge
|
|
- Add TUN support
|
|
|
|
Testing
|
|
-------
|
|
+ vagrant: add Vagrantfile to test native in FreeBSD
|
|
+ compile_and_test_for_board.py: add optional JUnit XML support
|
|
* bench_*: Add ticks per iteration results
|
|
|
|
Kconfig
|
|
-------
|
|
+ Finished modelling provided features
|
|
+ Modules with support added:
|
|
+ credman
|
|
+ cord
|
|
+ nrf-based
|
|
+ ek-lm4f120xl
|
|
+ lpc1768-based
|
|
+ lpc2387-based
|
|
+ native
|
|
+ mips32r2-based
|
|
+ sam3-based
|
|
+ sam0_common
|
|
+ same54-xpro
|
|
+ saml1x-based
|
|
+ saml21-based
|
|
+ stm32
|
|
+ l2filter
|
|
+ dhcpv6
|
|
+ hifive1(b) clock area
|
|
+ stm32gx clock configuration
|
|
+ periph/timer
|
|
+ netif
|
|
+ skald
|
|
+ sock_dtls
|
|
+ lora
|
|
+ add genconfig script
|
|
* enable incremental compilation on config changes
|
|
* include KCONFIG_OUT_CONFIG unconditionally
|
|
|
|
API Changes
|
|
===========
|
|
- gcoap: remove gcoap_finish
|
|
* gpio: IRQs triggered after gpio_irq_disable() are discarded
|
|
* sched: Refactor to return the next scheduled thread
|
|
* sock: Application should pull in the pseudomodules
|
|
* driver-guide.md: Drivers are expected to return negative errno values
|
|
* nrf52xxxdk: configure LEDs as PWM
|
|
|
|
Known issues
|
|
============
|
|
|
|
Networking related issues (42)
|
|
------------------------------
|
|
#14962: LoRaWan node ISR stack overflowed
|
|
#14689: dist/tools/sliptty/start_network.sh: IPv6 connectivity is broken on PC
|
|
#13997: ping6 is failing when testing with cc2538dk
|
|
#13745: ethos: Unable to choose global source address.
|
|
#13493: ethernet: Missing multicast addr assignment
|
|
#13280: nrf52: Not able to add global or ULA address to interface
|
|
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
|
|
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
|
|
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
|
|
#12857: examples/gnrc_networking_mac broken on ATmega
|
|
#12761: samr30 xpro doesn't seem to use its radio ok
|
|
#12642: Emcute cannot create a double-byte name
|
|
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer
|
|
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
|
|
#12210: stale border router does not get replaced
|
|
#11988: ethos: fails to respond to first message.
|
|
#11860: send data with UDP at 10HZ, the program die
|
|
#11852: scan-build errors found during 2019.07 testing
|
|
#11405: nrfmin: communication not possible after multicast ping with no interval
|
|
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
|
|
#10969: net: netdev_driver_t::send() doc unclear
|
|
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
|
|
#10809: openthread: does not build on current Arch
|
|
#10410: Missing drop implementations in netdev_driver_t::recv
|
|
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
|
|
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address
|
|
#10370: gomach: Resetting netif with cli doesn't return
|
|
#10338: xbee: setting PAN ID sometimes fails
|
|
#8779: CC2538 RF overlapping PIN usage
|
|
#8752: mrf24j40: does not link for examples/default
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#8242: at86rf2xx: Dead lock when sending while receiving
|
|
#8199: gcoap example request on tap I/F fails with NIB issue
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#7474: 6lo gnrc fragmentation expects driver to block on TX
|
|
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
|
|
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
|
|
chars
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
|
|
Timer related issues (15)
|
|
-------------------------
|
|
#13321: Sleep mode for Arduino
|
|
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
|
|
#10545: periph_timer: systematic proportional error in timer_set
|
|
#10523: saml21 system time vs rtc
|
|
#10510: xtimer_set_msg: crash when using same message for 2 timers
|
|
#10073: xtimer_usleep wrong delay time
|
|
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time.
|
|
#9052: misc issues with tests/trickle
|
|
#9049: xtimer mis-scaling with long sleep times
|
|
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
|
|
#8251: MSP430: periph_timer clock config wrong
|
|
#7347: xtimer_usleep stuck for small values
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#6442: cpu/native: timer interrupt issue
|
|
#6052: tests: xtimer_drift gets stuck on native
|
|
|
|
Drivers related issues (14)
|
|
---------------------------
|
|
#15121: PWM: Single-phase initialization creates flicker
|
|
#14506: mdt_erase success, but vfs_format resets board (esp32-heltec-lora32-v2)
|
|
#14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until
|
|
timeout
|
|
#14424: adc is not a ADC-Driver but a analog pin abstraction
|
|
#13527: examples/dtls-wolfssl not working on pba-d-01-kw2x
|
|
#13444: Potential security and safety race conditions on attached devices
|
|
#13079: drivers/srf04: incorrect values on ATmega based platforms
|
|
#12445: driver/hts221: Temperature and Humidity readings incorrect
|
|
#12371: fail to send data to can bus
|
|
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
|
|
#12045: floats and doubles being used all over the place.
|
|
#11104: STM32: SPI clock not returning to idle state and generating additional
|
|
clock cycles
|
|
#9419: cpu/msp430: GPIO driver doesn't work properly
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
|
|
Native related issues (3)
|
|
-------------------------
|
|
#13501: SDL2 does not work due to missing getpid
|
|
#5796: native: tlsf: early malloc will lead to a crash
|
|
#495: native not float safe
|
|
|
|
Other platforms related issues (19)
|
|
-----------------------------------
|
|
#14822: MPU doesn't work on cortex-m0+
|
|
#14728: stm32f7: Large performance difference between stm32f746 and stm32f767
|
|
#14679: examples/gnrc_border_router: esp_wifi crashes on disconnect
|
|
#14572: tests/mpu_noexec_ram: fails on i-nucleo-lrwan1
|
|
#14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated
|
|
#14237: esp32-wroom-32: tests/netstats_l2 failing sometimes
|
|
#14015: stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after
|
|
__WFI()
|
|
#13606: gcoap/esp8266: Stack overflow with gcoap example
|
|
#13390: Cannot use LLVM with Cortex-M boards
|
|
#13104: boards/hifive1: flashing issue
|
|
#13086: Failing tests on FE310 (Hifive1b)
|
|
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
|
|
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
|
|
#12168: pkg/libb2: blake2s doesn't work on AVR
|
|
#11885: arm7: printf() with float/double not working
|
|
#10258: Incorrect defaultPORT building for esp32-wroom-32 on macOS
|
|
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
|
|
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
|
|
(not previous)
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
|
|
CS
|
|
|
|
Build system related issues (14)
|
|
--------------------------------
|
|
#15185: build: info-build doesn't work with boards without port set
|
|
#14504: BUILD_IN_DOCKER ignores USEMODULE
|
|
#14288: pkg/ccn-lite: unable to `make -j -C examples/ccn-lite-relay`
|
|
#14264: make: ccache leads to differing binaries
|
|
#13492: make -j flash broken on esp* (will always flash the previous binary)
|
|
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
|
|
#10850: Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation
|
|
#9913: Build dependencies - processing order issues
|
|
#9742: `buildtest` uses wrong build directory
|
|
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
|
|
image
|
|
#8913: make: use of immediate value of variables before they have their final
|
|
value
|
|
#8122: doxygen: riot.css modified by 'make doc'
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
|
|
Other issues (41)
|
|
-----------------
|
|
#15072: periph_timer: Test coverage & broken on STM32F767ZI
|
|
#15066: tests/pkg_libhydrogen: test fails on master for the samr21-xpro with
|
|
LLVM
|
|
#15006: Two bugs may lead to NULL dereference.
|
|
#14929: cpu/sam0: flashpage write / read cycle produces different results
|
|
depending on code layout in flash
|
|
#14635: File systems report names with leading slashes
|
|
#14578: tests/cpp11_*: failing on i-nucleo-lrwan1
|
|
#14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails
|
|
#14568: tests/pkg_libfixmath_unittests: failing on multiple platforms
|
|
#14548: edbg: long lines flooded over serial become garbled
|
|
#14520: examples / tests: LoRa tests fail on platforms that don't support LoRa
|
|
#14390: gcoap: Suspected crosstalk between requests (possible NULL call)
|
|
#14315: DTLS examples cannot send message to localhost
|
|
#14167: Gcoap drops long packages instead of gracefully erring out
|
|
#13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode
|
|
#13541: Order of auto_init functions
|
|
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
|
|
#13285: Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto
|
|
#13277: Y2038 tracking issue / strategy
|
|
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32
|
|
#13120: tests: broken with stdio_rtt if auto_init is disabled
|
|
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
|
|
shell after flashing with J-Link
|
|
#12897: Can't build relic with benchmarks or tests
|
|
#12889: CC2538DK board docs: broken links
|
|
#12732: tests: some tests don't work with `newlib` lock functions.
|
|
#12621: Potential race condition in compile_and_test_for_board.py
|
|
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
|
|
#12105: [TRACKING] sys/shell refactoring.
|
|
#11243: sys/riotboot: documentation issues
|
|
#10751: Possible memset optimized out in crypto code
|
|
#10731: nanocoap: incomplete response to /.well-known/core request
|
|
#10639: sys/stdio_uart: dropped data when received at once
|
|
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
|
|
10
|
|
#9371: assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope
|
|
#7365: scheduler: priority inversion problem
|
|
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
|
|
#6533: tests/lwip target board for python test is hardcoded to native
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#4488: Making the newlib thread-safe
|
|
#3256: make: Setting constants on compile time doesn't really set them
|
|
everywhere
|
|
#2346: Tracker: Reduce scope on unintended COMMON variables
|
|
|
|
There are 148 known issues in this release
|
|
|
|
Fixed Issues since the last release (2020.07)
|
|
=============================================
|
|
|
|
#15256: Kconfig file/folder name collision on case-insensitive filesystem
|
|
#15255: Repository 'broken' on macOS due to case-insensitive names
|
|
#15171: Failed assertion when using gnrc_minimal with SLIP
|
|
#15137: ESP8266 does not respond
|
|
#15130: cpu/cc26xx_cc13xx: CPU gets stuck on sched_arch_idle
|
|
#15123: esp32: mtd tests failing on CI
|
|
#15118: make: target `info-objsize` broken
|
|
#15085: failing assert in core/msg.c:386 when `ping6` on Nucleo-F767ZI
|
|
#15065: pkg_utensor: Hard fault with LLVM
|
|
#15060: ztimer tests fail on efm32
|
|
#15045: Some I2C devices are not working on iotlab-m3
|
|
#15041: 2020.07-branch bug:RIOT/cpu/stm32/include/vendor/stm32f103xe.h
|
|
#15023: gnrc: all iotlab-m3 nodes have identical short HW addresses
|
|
#15016: Possible memory leak in cpu/native/syscalls.c
|
|
#15015: Is there a buffer overflow bug in drivers/at86rf2xx/at86rf2xx_getset.c?
|
|
#14988: tests/mtd_flashpage is broken on iotlab-m3 and b-l072z-lrwan1
|
|
#14980: hifive1b: sys/ztimer/core.c:159 => *** RIOT kernel panic: FAILED
|
|
ASSERTION.
|
|
#14958: nucleo-f303k8 no longer work since PR #14892
|
|
#14957: Return value of gnrc* calls not checked for -1
|
|
#14939: puf_sram not used when included as a feature
|
|
#14773: Can't read SD cards filled with more then 4 GiB data
|
|
#14752: Return value of gnrc_netif_ipv6_addr_idx is not checked for negative
|
|
#14735: Global Address remains in state TNT[3] forever
|
|
#14667: Undefined behavior in `pkg/semtech-loramac/contrib/`
|
|
#14636: native: reboot exits instance with TAP interface
|
|
#14514: Uncrustify enforces deviation of coding convention
|
|
#14466: Linking C++
|
|
#14217: tests/periph_timer_periodic is failing
|
|
#14169: Gcoap does not handle separate responses
|
|
#13838: Global Address remains in state TNT[3] forever
|
|
#13496: cpu/stm32/eth, board/nucleo-f767z1: ethernet buffering issue (ping >1s)
|
|
after debug break
|
|
#13490: cpu/stm32/eth, board/nucleo-f767z1: ethernet initialisation fails
|
|
sometimes
|
|
#13267: Failing tests on MSP430 (z1)
|
|
#13204: xtimer problem with nucleo32 boards
|
|
#11390: gnrc networking crashes on nRF51dk
|
|
#9882: sys/tsrb is not thread safe
|
|
#9709: examples: failed assertion in dtls-echo example
|
|
#9656: gnrc/netif: various problems after resetting interface a second time
|
|
#9518: periph/i2c: tracking bugs and untested acks
|
|
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
|
|
boards
|
|
#6650: GPIO Port shift in cc2538 is inconsistent
|
|
#4954: chronos: compiling with -O0 breaks
|
|
|
|
42 fixed issues since last release (2020.07)
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC & Matrix
|
|
------------
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
* Join the RIOT Matrix room at: #riot-os:matrix.org
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
RIOT-2020.07.1 - Release Notes
|
|
==============================
|
|
This is a bug fixing release for the RIOT 2020.07 release.
|
|
The following bugs were fixed:
|
|
|
|
#14670: tests/lwip_sock_tcp: fix -EADDRINUSE test
|
|
|
|
#14671: pkg/lwip: Use IS_ACTIVE() and bugfix
|
|
- pkg/lwip: Compatibility with IS_USED()
|
|
- pkg/lwip: Use IS_ACTIVE() & NETCONNTYPE_ISIPV6()
|
|
|
|
#14686: gnrc_sixlowpan_frag_vrb: fix cppcheck warning
|
|
|
|
#14693: cpu/msp430_common: fix thread_yield_higher() when called in isr
|
|
|
|
#14685: gnrc/nib: fix _idx_dsts() calculation
|
|
|
|
#14817: gnrc_sixlowpan_frag_rb: Check possibly uninitialized pointers
|
|
|
|
|
|
RIOT-2020.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 2020.07 release puts a focus on the improvement of automated testing. In
|
|
that vein, various new CI integrations such as CircleCI for documentation
|
|
building and online presentation, and Github Actions to check the tooling of
|
|
RIOT when merged. The `riotctrl_shell` python module allows to abstract shell
|
|
commands as python methods for testing using the newly created `riotctrl`
|
|
python package [1]. Kconfig migration reached phase 2 with various board
|
|
features being exposed to Kconfig. New network protocols were ported for RIOT
|
|
such as MQTT (in form of the `paho-mqtt` package) and the lookup client
|
|
component for CoRE RD `cord_lc`. The OpenWSN network stack with 6TiSCH support
|
|
was reintegrated into RIOT. Support for several new boards and new sensors was
|
|
added. Additionally, this release contains a number of bug fixes and test
|
|
improvements.
|
|
|
|
546 pull requests, composed of 10452 commits, have been merged since the
|
|
last release, and 84 issues have been solved. 64 people contributed with
|
|
code in 106 days. 2371 files have been touched with 822149 (+) insertions and
|
|
700313 deletions (-).
|
|
|
|
[1]: https://pypi.org/project/riotctrl/
|
|
|
|
Notations used below:
|
|
=====================
|
|
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
Core
|
|
----
|
|
* core: make idle thread optional
|
|
+ macros/units: add unit conversion helper macros
|
|
+ msg: add message bus
|
|
* panic: launch USB bootloader on crash for easy recovery
|
|
|
|
System libraries
|
|
----------------
|
|
* auto_init: automatically determine auto_init_*.c
|
|
* base64: Clean up / improve implementation
|
|
+ hashes: add sha224 and reuse sha256 code
|
|
+ luid: provide luid_get_lb()
|
|
+ phydat: added phydat to JSON converter
|
|
+ posix: initial import of select() function (only support sockets for now)
|
|
* ps: show free stack space in addition to used and total
|
|
* shell:
|
|
+ add optional hooks for shell commands
|
|
* native: stop RIOT when the shell reads EOF
|
|
* refactor readline function
|
|
* refactor tokenizer code
|
|
+ shell_commands:
|
|
* alias ping=ping6
|
|
+ provide command to reboot to bootloader
|
|
+ stdio_semihosting: Initial include of Semihosting-based STDIO
|
|
+ touch_dev: add generic API for touch device
|
|
+ trace: add trace module
|
|
+ pm: Add pm_get_blocker()
|
|
* random:
|
|
+ add option to use HWRNG as source of randomness
|
|
* optimize sha1prng
|
|
* usb:
|
|
* allow for boards to define default custom VID/PID
|
|
* warn on test-ID usage in a unified location
|
|
+ xtimer: xtimer_rmutex_lock_timeout
|
|
* ztimer:
|
|
+ add power management for ztimer clocks
|
|
* expose ZTIMER_MSEC/USEC_BASE
|
|
|
|
Networking
|
|
----------
|
|
+ cord: add CoRE RD lookup client implementation
|
|
+ gcoap: add CoAP ping request
|
|
* gnrc:
|
|
+ gnrc_ipv6_ext_opt: initial import of hop-by-hop and destination option
|
|
handling
|
|
* gnrc_netif:
|
|
+ add IPv6 event bus
|
|
+ add option for non-std 6lo MTU
|
|
+ add support for internal event loop
|
|
* use gnrc_netif-submodules to pull in upper-layer struct members
|
|
* gnrc_nettype: indirect NETTYPE definition via pseudo-modules
|
|
* gnrc_pktdump: fix dependencies
|
|
* gnrc_tcp:
|
|
+ add retransmission timer
|
|
* rewrite API internal messaging
|
|
* rewrite recv buffer allocation/returning
|
|
* use exponent to configure message queue sizes
|
|
* nanocoap: allow coap_opt_add_string() for non-zero-terminated strings
|
|
+ netif: add functions to get and get by identifier
|
|
+ sock_dtls: provide getter function for UDP sock
|
|
* sock_util: add interface descriptor parsing to str2ep
|
|
|
|
Packages
|
|
--------
|
|
* pkg: rework checkout process
|
|
* avoid copying Makefiles in package source when possible
|
|
* store packages sources in a global package directory
|
|
* pkg: cleanup build system integration for
|
|
- cryptoauthlib, openthread, semtech-loramac, tinydtls, wakaama, u8g2,
|
|
ucglib, wolfssl
|
|
* pkg: tools: ensure cmake based packages/tools are built out-of-source
|
|
+ cryptoauthlib: wake pulse implementation for CPUs supporting
|
|
`periph_i2c_reconfigure`
|
|
+ emlearn: add support to RIOT
|
|
* gecko_sdk: update to v2.7.6
|
|
* lwip:
|
|
* add IPv4 support for `netdev_tap`
|
|
* add support for nrf802154
|
|
* enable IPv4/IPv6 dual stack mode
|
|
+ lwip_sock: provide implementation for `sock_*_recv_buf()`
|
|
- lua: remove unnecessary patch
|
|
+ paho-mqtt: add package and example
|
|
* nimble:
|
|
+ add static connection manager `statconn`
|
|
* netif:
|
|
* set host thread prio to 1
|
|
* simplify mbuf pool initialization
|
|
* update NimBLE ver (cd7d7aa286) + timing param cleanup
|
|
+ openwsn: re-integrate the network stack as a package
|
|
* tinydtls:
|
|
+ add `sock_async` support for `sock_dtls`
|
|
+ use latest development version (eda63f000c)
|
|
* ucglib: refactoring and fixes
|
|
|
|
Boards
|
|
------
|
|
+ cc1352p-launchpad: add support
|
|
* common/blxxxpill:
|
|
+ provide periph_rtt
|
|
* improve adc
|
|
+ dwm1001: add support to Decawave DWM1001 dev board
|
|
+ mcb2388: misc enhancements
|
|
+ nrf52840-dongle: add support
|
|
+ nrf52840dk: Add MTD configuration
|
|
+ nucleo-g474re: add support
|
|
* pic32-clicker: rename to 6lowpan-clicker
|
|
+ samr30-xpro: add SPI dev for ext pin header
|
|
+ samr3x-xpro: add riotboot feature
|
|
+ serpente: add support
|
|
+ sltb001a: enable CCS811 sensor
|
|
+ sodaq-sff: add support for SODAQ SFF
|
|
+ stm32f429i-disco: add support
|
|
+ weact-f411ce: add support
|
|
+ wemos-zero: add support
|
|
|
|
CPU
|
|
---
|
|
* arm7_common: Update to inlineable IRQ API
|
|
* atmega_common: Update to inlineable IRQ API
|
|
* cortexm:
|
|
+ allow to define reserved fields in CortexM vector table
|
|
* "free" SVC
|
|
* cc26x2_cc13x2:
|
|
* add oscillator switching functions
|
|
* add periph_i2c implementation
|
|
* trim device registers on `cpu_init`
|
|
* esp32:
|
|
* support of multiple heaps for newlib malloc
|
|
* replace RTC implementation by RTT implementation
|
|
* fe310: migrate to inlined IRQ API
|
|
+ kinetis: implement power modes for pm_layered
|
|
* lpc2387:
|
|
* pm: enable SLEEP & POWERDOWN mode
|
|
* timer: use lpc2387_pclk_scale()
|
|
+ mips_pic32_common: Implement GPIO IRQ
|
|
+ native:
|
|
+ add periph_eeprom driver implementation
|
|
* rename trace -> backtrace
|
|
+ nrf52:
|
|
+ add black magic probe config
|
|
+ add missing vendor files
|
|
+ implement EasyDMA-based SPI peripheral implementation
|
|
+ nrf52811: initial support
|
|
* nrf5x_common:
|
|
* add configurable RTT_FREQUENCY
|
|
* enable bias correction in hwrng
|
|
* sam0_common:
|
|
+ add DMA peripheral driver
|
|
+ add PWM support for saml21, samd5x
|
|
+ implement periph/dac
|
|
* make SPI peripheral DMA compatible
|
|
* move PWM to common code
|
|
* spi: move clk pin muxing into spi_acquire / spi_release
|
|
+ UART: implement inverted RX & TX
|
|
* samd21: PWM don't hard-code number of channels to 3
|
|
* samd5x: allow to use XOSC as clock source
|
|
* saml1x: pm: set deep flag
|
|
+ stm32:
|
|
+ add QDEC support for CPU_FAM_STM32F1
|
|
+ add non-blocking UART
|
|
* decrease latency in SPI DMA path
|
|
+ implement reset to bootloader
|
|
* filter availability of RNG by CPU not by board
|
|
* stm32_common: make RTT_FREQUENCY configurable
|
|
+ stm32f4: Add DMA config for SPI
|
|
+ stm32g4: add support
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ atwinc15x0: add WiFi netdev driver
|
|
+ at: Add at_urc_isr module to process URCs upon arrival
|
|
+ at24cxxx: MTD wrapper for at24cxxx
|
|
+ at86rf215:
|
|
+ implement MR-O-QPSK
|
|
+ implement MR-OFDM
|
|
+ at86rf2xx: add support for high data rates
|
|
+ dfplayer: New driver for the DFPlayer Mini MP3 player
|
|
* ethos: use luid_get_eui48()
|
|
+ edbg_eui: add driver to get MAC address from Atmel EDBG
|
|
+ mhz19: initial support
|
|
+ mrf24j40: add Turbo Mode
|
|
+ mtd_spi_eeprom: add MTD wrapper for AT25XXX EEPROMs
|
|
+ pca9633: add new driver
|
|
+ periph/timer: add timer_set_periodic()
|
|
+ periph/i2c: add periph_i2c_reconfigure feature & implementation for sam0
|
|
+ periph/rtt: introduce RTT_MIN_OFFSET
|
|
+ periph/spi: add periph_spi_reconfigure feature & implementation for sam0
|
|
* pulse_counter: Use C11 atomics & bugfix
|
|
+ sdp3x : Add driver for sdp3x sensor
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
+ make:
|
|
+ add code generator targets
|
|
+ add JLink support for stm32
|
|
* docker.inc.mk: add and use generic docker_run_make
|
|
+ allow multiple external board dirs
|
|
+ info-global.inc.mk: add info-boards-features-blacklisted
|
|
* resolve dependencies before Makefile.include
|
|
+ riotctrl_shell:
|
|
+ initial import of shell interaction spawn
|
|
+ provide ipv6_nib interactions and parsers
|
|
+ provide netif interactions and parsers
|
|
+ tools:
|
|
+ add script to run radvd on a tun interface
|
|
+ provide tool to parse `pktbuf` output
|
|
* kconfiglib:
|
|
* add riot_kconfig to override default behaviours
|
|
* kconfiglib: bump to v14.1.0
|
|
|
|
Testing
|
|
-------
|
|
+ fuzzing framework:
|
|
+ add AFL-based fuzzing setup for network modules
|
|
+ add fuzzing application for gcoap
|
|
+ ci: setup github actions
|
|
+ sys/test_utils/dummy_thread: initial commit
|
|
+ tests/irq_disable_restore: Add test for irq_disable() / irq_restore()
|
|
+ tests/periph_spi: add benchmark for acquire / release
|
|
+ tests/periph_spi_dma: Add test for SPI with DMA
|
|
+ uncrustify: add auto uncrustify with blacklist
|
|
|
|
Kconfig migration
|
|
-----------------
|
|
+ armv7_m/cortexm: declare CPU_ARCH and CPU_CORE
|
|
+ boards: Model features in Kconfig
|
|
+ arduino-leonardo, arduino-mega2560, atmega128x-based, atmega256rfr2-based,
|
|
atmega328p-based, cc2538-based, cc26xx_cc13xx-based, efm32-based, esp-based,
|
|
fe310-based, kinetis-based, msp430-based, samr21-xpro, slwstk6220a
|
|
* kconfig: Declare common feature symbols
|
|
+ drivers: Expose Configurations to Kconfig
|
|
+ ads101x, at, at86rf215, bmx055, cc110x, dose.h, fxos8700, hdc1000, isl29020,
|
|
l3g4200d, lpsxxx, mag3110, mma8x5x, motor_driver, mtd_sdcard, opt3001,
|
|
pn532, rn2xx3, slipdev, sps30, tcs37727, tmp00x
|
|
+ networking: Expose configurations to Kconfig
|
|
+ asymcute, coap, csma
|
|
+ gnrc:
|
|
+ gomach, lwmac, mac, pktdump, pktbuf, rpl, tcp
|
|
+ usbus/cdc/ecm: Expose configurations to Kconfig
|
|
|
|
API Changes
|
|
===========
|
|
- cpu/sam0_common: drop prescaler from timer config
|
|
- cpu/sam0_common: PWM config now requires GCLK source
|
|
- drivers/mtd: Change API to return 0 on success
|
|
- drivers/mtd_mapper: count offset in sectors
|
|
- net/sock_dtls: provide getter function for UDP sock
|
|
- net/sock_dtls: add timeout to sock_dtls_send and add sock_dtls_session_init
|
|
|
|
diff --git a/sys/include/net/sock/dtls.h b/sys/include/net/sock/dtls.h
|
|
index 96569723fc..6e66048bd4 100644
|
|
--- a/sys/include/net/sock/dtls.h
|
|
+++ b/sys/include/net/sock/dtls.h
|
|
@@ -476,6 +485,13 @@
|
|
extern "C" {
|
|
#endif
|
|
|
|
+#ifndef DTLS_HANDSHAKE_BUFSIZE
|
|
+#define DTLS_HANDSHAKE_BUFSIZE (256) /**< Size buffer used in handshake to
|
|
+ hold credentials */
|
|
+#endif
|
|
+
|
|
+#define SOCK_DTLS_HANDSHAKE (EXDEV) /**< Return value for a successful
|
|
+ handshake */
|
|
+
|
|
/**
|
|
* @brief DTLS version number
|
|
@@ -546,26 +564,26 @@ void sock_dtls_init(void);
|
|
int sock_dtls_create(sock_dtls_t *sock, sock_udp_t *udp_sock,
|
|
credman_tag_t tag, unsigned version, unsigned role);
|
|
|
|
+
|
|
/**
|
|
- * @brief Creates a new DTLS session
|
|
+ * @brief Initialize session handshake.
|
|
*
|
|
- * Initializes handshake process with a DTLS server at @p ep.
|
|
- *
|
|
- * @param[in] sock DLTS sock to use
|
|
- * @param[in] ep Remote endpoint of the session
|
|
- * @param[out] remote The created session, cannot be NULL
|
|
+ * Sends a ClientHello message to initialize the handshake. Call
|
|
+ * @ref sock_dtls_recv() to finish the handshake.
|
|
*
|
|
- * @return 0 on success
|
|
- * @return -EAGAIN, if DTLS_HANDSHAKE_TIMEOUT is `0` and no data is available.
|
|
- * @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
|
|
- * @return -EINVAL, if @p remote is invalid or @p sock is not properly
|
|
- * initialized (or closed while sock_udp_recv() blocks).
|
|
- * @return -ENOBUFS, if buffer space is not large enough to store received
|
|
- * credentials.
|
|
- * @return -ETIMEDOUT, if timed out when trying to create session.
|
|
+ * @param[in] sock DTLS sock to use
|
|
+ * @param[in] ep Remote endpoint to start a handshake with
|
|
+ * @param[out] remote Resulting session
|
|
+ *
|
|
+ * @return 1, if new handshake is started
|
|
+ * @return 0, if there is an existing session
|
|
+ * @return -ENOMEM, not enough memory to allocate for new peer
|
|
+ * @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
|
|
+ * @return -EINVAL, if @p remote is invalid or @p sock is not properly
|
|
+ * initialized (or closed while sock_udp_recv() blocks).
|
|
*/
|
|
-int sock_dtls_session_create(sock_dtls_t *sock, const sock_udp_ep_t *ep,
|
|
- sock_dtls_session_t *remote);
|
|
+int sock_dtls_session_init(sock_dtls_t *sock, const sock_udp_ep_t *ep,
|
|
+ sock_dtls_session_t *remote);
|
|
|
|
/**
|
|
* @brief Destroys an existing DTLS session
|
|
@@ -578,7 +596,7 @@ int sock_dtls_session_create(sock_dtls_t *sock, const sock_udp_ep_t *ep,
|
|
void sock_dtls_session_destroy(sock_dtls_t *sock, sock_dtls_session_t *remote);
|
|
|
|
/**
|
|
- * @brief Decrypts and reads a message from a remote peer.
|
|
+ * @brief Receive handshake messages and application data from remote peer.
|
|
*
|
|
* @param[in] sock DTLS sock to use.
|
|
* @param[out] remote Remote DTLS session of the received data.
|
|
@@ -593,7 +611,8 @@ void sock_dtls_session_destroy(sock_dtls_t *sock, sock_dtls_session_t *remote);
|
|
*
|
|
* @note Function may block if data is not available and @p timeout != 0
|
|
*
|
|
- * @return The number of bytes received on success
|
|
+ * @return The number of bytes received on success
|
|
+ * @return -SOCK_DTLS_HANDSHAKE when new handshake is completed
|
|
* @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
|
|
* @return -EAGAIN, if @p timeout is `0` and no data is available.
|
|
* @return -EINVAL, if @p remote is invalid or @p sock is not properly
|
|
@@ -657,28 +676,32 @@ ssize_t sock_dtls_recv_buf(sock_dtls_t *sock, sock_dtls_session_t *remote,
|
|
* if no session exist between client and server.
|
|
* @param[in] data Pointer where the data to be send are stored
|
|
* @param[in] len Length of @p data to be send
|
|
+ * @param[in] timeout Handshake timeout in microseconds.
|
|
+ * If `timeout > 0`, will start a new handshake if no
|
|
+ * session exists yet. The function will block until
|
|
+ * handshake completed or timed out.
|
|
+ * May be SOCK_NO_TIMEOUT to block indefinitely until
|
|
+ * handshake complete.
|
|
*
|
|
- * @note Function may block until a session is created if there is no
|
|
- * existing session with @p remote.
|
|
- *
|
|
- * @note Initiating a session through this function will require
|
|
- * @ref sock_dtls_recv() called from another thread to receive the handshake
|
|
- * messages.
|
|
+ * @note When blocking, we will need an extra thread to call
|
|
+ * @ref sock_dtls_recv() function to handle the incoming handshake
|
|
+ * messages.
|
|
*
|
|
* @return The number of bytes sent on success
|
|
+ * @return -ENOTCONN, if `timeout == 0` and no existing session exists with
|
|
+ * @p remote
|
|
* @return -EADDRINUSE, if sock_dtls_t::udp_sock has no local end-point.
|
|
* @return -EAFNOSUPPORT, if `remote->ep != NULL` and
|
|
* sock_dtls_session_t::ep::family of @p remote is != AF_UNSPEC and
|
|
* not supported.
|
|
- * @return -EHOSTUNREACH, if sock_dtls_session_t::ep of @p remote is not
|
|
- * reachable.
|
|
* @return -EINVAL, if sock_udp_ep_t::addr of @p remote->ep is an
|
|
* invalid address.
|
|
* @return -EINVAL, if sock_udp_ep_t::port of @p remote->ep is 0.
|
|
* @return -ENOMEM, if no memory was available to send @p data.
|
|
+ * @return -ETIMEDOUT, `0 < timeout < SOCK_NO_TIMEOUT` and timed out.
|
|
*/
|
|
ssize_t sock_dtls_send(sock_dtls_t *sock, sock_dtls_session_t *remote,
|
|
- const void *data, size_t len);
|
|
+ const void *data, size_t len, uint32_t timeout);
|
|
|
|
/**
|
|
* @brief Closes a DTLS sock
|
|
@@ -694,6 +717,47 @@ ssize_t sock_dtls_send(sock_dtls_t *sock, sock_dtls_session_t *remote,
|
|
*/
|
|
void sock_dtls_close(sock_dtls_t *sock);
|
|
|
|
+/**
|
|
+ * @brief Creates a new DTLS session
|
|
+ *
|
|
+ * Initiates a handshake with a DTLS server at @p ep and wait until it
|
|
+ * completes or timed out.
|
|
+ *
|
|
+ * @deprecated Will not be available after the 2020.10 release.
|
|
+ * Please use @ref sock_dtls_session_init() and
|
|
+ * @ref sock_dtls_recv() instead.
|
|
+ *
|
|
+ * @param[in] sock DLTS sock to use
|
|
+ * @param[in] ep Remote endpoint of the session
|
|
+ * @param[out] remote The created session, cannot be NULL
|
|
+ * @param[in] timeout Timeout to wait for handshake to finish.
|
|
+ * Returns immediately if 0.
|
|
+ * May be SOCK_NO_TIMEOUT to wait indefinitely until
|
|
+ * handshake complete.
|
|
+ *
|
|
+ * @return 0 on success
|
|
+ * @return -ENOMEM, if no memory to allocate for new peer
|
|
+ * @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
|
|
+ * @return -EINVAL, if @p remote is invalid or @p sock is not properly
|
|
+ * initialized (or closed while sock_udp_recv() blocks).
|
|
+ */
|
|
+static inline int sock_dtls_session_create(sock_dtls_t *sock, const sock_udp_ep_t *ep,
|
|
+ sock_dtls_session_t *remote, unsigned timeout)
|
|
+{
|
|
+ int res;
|
|
+ uint8_t buf[DTLS_HANDSHAKE_BUFSIZE];
|
|
+
|
|
+ assert(sock);
|
|
+ assert(remote);
|
|
+
|
|
+ res = sock_dtls_session_init(sock, ep, remote);
|
|
+ if (res <= 0) {
|
|
+ return res;
|
|
+ }
|
|
+
|
|
+ return sock_dtls_recv(sock, remote, buf, sizeof(buf), timeout);
|
|
+}
|
|
+
|
|
#include "sock_dtls_types.h"
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
|
Deprecations
|
|
============
|
|
|
|
Warnings
|
|
--------
|
|
- GNRC_MAC_ENABLE_DUTYCYCLE_RECORD: Will be removed after 2021.01 release. Use
|
|
inverse CONFIG_GNRC_MAC_DISABLE_DUTYCYCLE_RECORD instead.
|
|
- saul_reg_rm(): will be removed at a future date
|
|
- sock_dtls_session_create(): will be removed after 2020.10 release. Please
|
|
use sock_dtls_session_init() and sock_dtls_recv() instead
|
|
- pkg/nordic_softdevice_ble: will be removed after the 2020.10 release
|
|
|
|
Removals
|
|
--------
|
|
- netdev: remove NETOPT_IPV6_IID support for network devices
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Networking related issues (44)
|
|
------------------------------
|
|
#13997: ping6 is failing when testing with cc2538dk
|
|
#13745: ethos: Unable to choose global source address.
|
|
#13496: cpu/stm32/eth, board/nucleo-f767z1: ethernet buffering issue (ping >1s)
|
|
after debug break
|
|
#13493: ethernet: Missing multicast addr assignment
|
|
#13490: cpu/stm32/eth, board/nucleo-f767z1: ethernet initialisation fails
|
|
sometimes
|
|
#13280: nrf52: Not able to add global or ULA address to interface
|
|
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
|
|
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
|
|
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
|
|
#12857: examples/gnrc_networking_mac broken on ATmega
|
|
#12761: samr30 xpro doesn't seem to use its radio ok
|
|
#12642: Emcute cannot create a double-byte name
|
|
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer
|
|
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
|
|
#12210: stale border router does not get replaced
|
|
#11988: ethos: fails to respond to first message.
|
|
#11860: send data with UDP at 10HZ, the program die
|
|
#11852: scan-build errors found during 2019.07 testing
|
|
#11405: nrfmin: communication not possible after multicast ping with no interval
|
|
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
|
|
#10969: net: netdev_driver_t::send() doc unclear
|
|
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
|
|
#10809: openthread: does not build on current Arch
|
|
#10410: Missing drop implementations in netdev_driver_t::recv
|
|
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
|
|
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address
|
|
#10370: gomach: Resetting netif with cli doesn't return
|
|
#10338: xbee: setting PAN ID sometimes fails
|
|
#9709: examples: failed assertion in dtls-echo example
|
|
#9656: gnrc/netif: various problems after resetting interface a second time
|
|
#8779: CC2538 RF overlapping PIN usage
|
|
#8752: mrf24j40: does not link for examples/default
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#8242: at86rf2xx: Dead lock when sending while receiving
|
|
#8199: gcoap example request on tap I/F fails with NIB issue
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#7474: 6lo gnrc fragmentation expects driver to block on TX
|
|
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
|
|
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
|
|
chars
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
|
|
Timer related issues (17)
|
|
-------------------------
|
|
#14217: tests/periph_timer_periodic is failing
|
|
#13321: Sleep mode for Arduino
|
|
#13204: xtimer problem with nucleo32 boards
|
|
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
|
|
#10545: periph_timer: systematic proportional error in timer_set
|
|
#10523: saml21 system time vs rtc
|
|
#10510: xtimer_set_msg: crash when using same message for 2 timers
|
|
#10073: xtimer_usleep wrong delay time
|
|
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time.
|
|
#9052: misc issues with tests/trickle
|
|
#9049: xtimer mis-scaling with long sleep times
|
|
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
|
|
#8251: MSP430: periph_timer clock config wrong
|
|
#7347: xtimer_usleep stuck for small values
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#6442: cpu/native: timer interrupt issue
|
|
#6052: tests: xtimer_drift gets stuck on native
|
|
|
|
Drivers related issues (13)
|
|
---------------------------
|
|
#14506: mdt_erase success, but vfs_format resets board (esp32-heltec-lora32-v2)
|
|
#14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until
|
|
timeout
|
|
#14424: adc is not a ADC-Driver but a analog pin abstraction
|
|
#13527: examples/dtls-wolfssl not working on pba-d-01-kw2x
|
|
#13444: Potential security and safety race conditions on attached devices
|
|
#13079: drivers/srf04: incorrect values on ATmega based platforms
|
|
#12445: driver/hts221: Temperature and Humidity readings incorrect
|
|
#12371: fail to send data to can bus
|
|
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
|
|
#12045: floats and doubles being used all over the place.
|
|
#11104: STM32: SPI clock not returning to idle state and generating additional
|
|
clock cycles
|
|
#9419: cpu/msp430: GPIO driver doesn't work properly
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
|
|
Native related issues (3)
|
|
-------------------------
|
|
#13501: SDL2 does not work due to missing getpid
|
|
#5796: native: tlsf: early malloc will lead to a crash
|
|
#495: native not float safe
|
|
|
|
Other platforms related issues (19)
|
|
-----------------------------------
|
|
#14572: tests/mpu_noexec_ram: fails on i-nucleo-lrwan1
|
|
#14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated
|
|
#14237: esp32-wroom-32: tests/netstats_l2 failing sometimes
|
|
#14015: stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after
|
|
__WFI()
|
|
#13606: gcoap/esp8266: Stack overflow with gcoap example
|
|
#13390: Cannot use LLVM with Cortex-M boards
|
|
#13267: Failing tests on MSP430 (z1)
|
|
#13104: boards/hifive1: flashing issue
|
|
#13086: Failing tests on FE310 (Hifive1b)
|
|
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
|
|
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
|
|
#12168: pkg/libb2: blake2s doesn't work on AVR
|
|
#11885: arm7: printf() with float/double not working
|
|
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
|
|
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
|
|
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
|
|
(not previous)
|
|
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
|
|
boards
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
|
|
CS
|
|
#4954: chronos: compiling with -O0 breaks
|
|
|
|
Build system related issues (13)
|
|
--------------------------------
|
|
#14504: BUILD_IN_DOCKER ignores USEMODULE
|
|
#14288: pkg/ccn-lite: unable to `make -j -C examples/ccn-lite-relay`
|
|
#14264: make: ccache leads to differing binaries
|
|
#13492: make -j flash broken on esp* (will always flash the previous binary)
|
|
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
|
|
#10850: Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation
|
|
#9913: Build dependencies - processing order issues
|
|
#9742: `buildtest` uses wrong build directory
|
|
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
|
|
image
|
|
#8913: make: use of immediate value of variables before they have their final
|
|
value
|
|
#8122: doxygen: riot.css modified by 'make doc'
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
|
|
Other issues (41)
|
|
-----------------
|
|
#14578: tests/cpp11_%: failing on i-nucleo-lrwan1
|
|
#14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails
|
|
#14568: tests/pkg_libfixmath_unittests: failing on multiple platforms
|
|
#14548: edbg: long lines flooded over serial become garbled
|
|
#14520: examples / tests: LoRa tests fail on platforms that don't support LoRa
|
|
#14514: Uncrustify enforces deviation of coding convention
|
|
#14466: Linking C++
|
|
#14390: gcoap: Suspected crosstalk between requests (possible NULL call)
|
|
#14315: DTLS examples cannot send message to localhost
|
|
#14169: Gcoap does not handle separate responses
|
|
#14167: Gcoap drops long packages instead of gracefully erring out
|
|
#13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode
|
|
#13541: Order of auto_init functions
|
|
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
|
|
#13285: Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto
|
|
#13277: Y2038 tracking issue / strategy
|
|
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32
|
|
#13120: tests: broken with stdio_rtt if auto_init is disabled
|
|
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
|
|
shell after flashing with J-Link
|
|
#12897: Can't build relic with benchmarks or tests
|
|
#12889: CC2538DK board docs: broken links
|
|
#12732: tests: some tests don't work with `newlib` lock functions.
|
|
#12621: Potential race condition in compile_and_test_for_board.py
|
|
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
|
|
#12105: [TRACKING] sys/shell refactoring.
|
|
#11243: sys/riotboot: documentation issues
|
|
#10751: Possible memset optimized out in crypto code
|
|
#10731: nanocoap: incomplete response to /.well-known/core request
|
|
#10639: sys/stdio_uart: dropped data when received at once
|
|
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
|
|
10
|
|
#9882: sys/tsrb is not thread safe
|
|
#9518: periph/i2c: tracking bugs and untested acks
|
|
#9371: assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope
|
|
#7365: scheduler: priority inversion problem
|
|
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
|
|
#6533: tests/lwip target board for python test is hardcoded to native
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#4488: Making the newlib thread-safe
|
|
#3256: make: Setting constants on compile time doesn't really set them
|
|
everywhere
|
|
#2346: Tracker: Reduce scope on unintended COMMON variables
|
|
|
|
There are 150 known issues in this release
|
|
|
|
Fixed Issues since the last release (2020.04)
|
|
=============================================
|
|
|
|
#14521: tests/test_tools: fails on `iotlab-m3` due to `core`/`cpu` regression
|
|
#14415: Flashing nrf52dk with bmp breaks board
|
|
#14409: doc/search: hitting return while searching on api.riot-os.org reloads
|
|
current page
|
|
#14407: gnrc/RPL: instance ID not updated on reconnect
|
|
#14399: cord_ep example timed out when registering to a resource directory
|
|
#14380: dist/tools/flatc: cloning of the tool sporadically fails on the CI
|
|
#14361: Bug : bad assertion in cpu/stm32/periph/pwm.c
|
|
#14330: Improve driver implementation documentation
|
|
#14328: sam0_common: make debug broken for boards using EDBG
|
|
#14184: Part of puts/printf output is skipped
|
|
#14164: Failed assertion when using netdev_ieee802154_mr_fsk
|
|
#14158: kconfig is broken on case-insensitive file systems
|
|
#14074: Memory read beyond input buffer boundaries in nanocoap packet parser
|
|
#14035: I can't use w5100 to work on Release-2020.04 by using
|
|
RIOT/examples/emcute_mqttsn/.
|
|
#14034: gcoap server breaks or becomes very unresponsive (sock_async related?)
|
|
#13984: tests/pkg_ubasic: failing on esp32-wroom-32
|
|
#13920: stm32: ztimer RTT backend overflow
|
|
#13838: Global Address remains in state TNT[3] forever
|
|
#13834: DHCPv6 client ends up in busy loop after a while
|
|
#13419: Can't use nimble as prefix for modules
|
|
#13209: examples/gnrc_border_router is crashing after some time
|
|
#12909: Bug: Unexpected behavior with xtimer_periodic_wakeup() for large periods
|
|
on Nucleo-f401re
|
|
#12858: KW2XRF: Broken network communication without netstats-l2
|
|
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
|
|
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
|
|
#11795: gnrc_tftp: string functions on non-null terminated input
|
|
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
|
|
#11472: Warnings from objcopy and size (binutils 2.32)
|
|
#11388: SD card initialization: timeouts effectively blocking
|
|
#11212: POSIX sockets + lwIP: bad file descriptor
|
|
#11149: xtimer: hang on xtimer_spin_until (corner case)
|
|
#10367: sam0.inc.mk: Did not find a device with serial ATML21xxxxxxxx
|
|
#8589: Why using -F in avrdude?
|
|
#8436: Kinetis PhyNode: failed to flash binary > 256K
|
|
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
|
|
configured prefix
|
|
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
|
|
#8045: stm32/periph/uart: extra byte transmitted on first transmission
|
|
#7753: pic32-wifire: race-condition when linking in concurrent build
|
|
#5775: cpu: cortex-m: compiling vectors.c with LTO triggers compiler bug
|
|
#5774: cpu: cortexm_common: context switching code breaks when compiling with
|
|
LTO
|
|
#5769: Possible problem in scheduler
|
|
#5748: gnrc: nodes crashing with too small packet buffer
|
|
|
|
42 fixed issues since last release (2020.04)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
RIOT-2020.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 2020.04 release includes:
|
|
|
|
- Add support for 6LoWPAN IPv6 extension header next header compression
|
|
- Add support for DHCPv6 prefix delegation client
|
|
- Add support for kw41zrf and at86rf215 IEEE 802.15.4 radios
|
|
- Improvements on power management for ESP32
|
|
- Improvements and extensions in support of fe310 and lpc2387
|
|
- lwIP: provide support for asynchronous sock
|
|
- Improvements on xtimer module and testing
|
|
- Initial addition of the new timer subsystem: ztimer
|
|
- Migration to Kconfig - phase I: add multiple GNRC and system modules
|
|
- +10 new boards, +11 new drivers, +7 new packages
|
|
|
|
|
|
555 pull requests, composed of 1514 commits, have been merged since the
|
|
last release, and 22 issues have been solved. 60 people contributed with
|
|
code in 102 days. 3346 files have been touched with 358398 (+) insertions and
|
|
184720 deletions (-).
|
|
|
|
Notations used below:
|
|
=====================
|
|
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
System libraries
|
|
----------------
|
|
* core:
|
|
+ add optional support for executable space protections
|
|
* sched: sched.h: remove not needed bitarithm include to avoid conflict
|
|
+ turn kernel_init.c and panic.c into submodules of core
|
|
+ sys/auto_init: allow delayed initialization of SAUL & gnrc_netif
|
|
* sys/base64: implement Base 64 Encoding with URL and Filename Safe Alphabet
|
|
* sys/crypto: define cipher using a module instead of CFLAGS
|
|
* sys/crypto/modes/ccm: handle input_len = 0
|
|
* sys/ecc: fix assertion in golay2412
|
|
* sys/event:
|
|
+ add event_wait_timeout64()
|
|
+ add shared event threads
|
|
* sys/newlib:
|
|
+ enable multiple heaps in _sbrk_r()
|
|
* syscalls_default: update heap_stats for multiple heaps
|
|
* sys/puf_sram: counter based seed after soft reset
|
|
* sys/phydat: improvement of phydat_dump including test application
|
|
* sys/shell:
|
|
+ add rtt command
|
|
* correctly detect and handle long lines
|
|
+ sys/shell_commands: + provide command to print version
|
|
* sys/spp: randomize canary value on each build
|
|
* sys/suit:
|
|
* cleanup of TinyCBOR to NanoCBOR refactor
|
|
* coap: make use of exposed tree handler function
|
|
* update to draft-ietf-v3
|
|
+ sys/uri_parser: initial import of a minimal and non-destructive URI parsing
|
|
* sys/usb: use default VID/PID for RIOT-included peripherals
|
|
* sys/xtimer:
|
|
* set now pointer correctly in _update_short_timers() loop
|
|
+ add xtimer_set_timeout_flag64()
|
|
* xtimer_mutex_lock_timeout fix with short timeout
|
|
+ sys/ztimer: initial import
|
|
|
|
Networking
|
|
----------
|
|
* net/coap:
|
|
* deprecate gcoap_add_qstring() and update uses
|
|
+ Packet API function to add Uri-Query option
|
|
+ net/dhcpv6: initial implementation of a client (with IA_PD support)
|
|
* net/dns: fix DNS resolution in ping6
|
|
* net/gcoap:
|
|
+ add canonical uri query function names
|
|
+ allow proxied client requests
|
|
* use sock_async and events
|
|
+ net/gnrc_dhcpv6_client_6lbr: initial import of a 6LBR DHCPv6 client
|
|
+ net/gnrc_ipv6_ext_frag: initial import of statistics module
|
|
* net/gnrc_ipv6_nib:
|
|
* do not ignore prefix list for route resolution
|
|
* fix border router with DNS & Context Compression
|
|
* only route to prefix list entry if on-link
|
|
* net/gnrc_lorawan:
|
|
* fix the handling of downlink frames without payload
|
|
* remove netdev layer from MAC
|
|
* net/gnrc_netif:
|
|
+ add gnrc_netif_send and gnrc_netif_highlander functions
|
|
* implementation of dynamic GNRC_NETIF_NUMOF approach
|
|
* net/gnrc_nettype: deprecate IOVEC type
|
|
* net/gnrc_pktbuf: deprecate gnrc_pktbuf_replace_snip()
|
|
+ net/gnrc_sixlowpan_iphc: add support for IPv6 extension header compression
|
|
+ net/gnrc_sock: provide implementation for `sock_*_recv_buf()`
|
|
* net/gnrc_sock_udp: choose random ephemeral port
|
|
- net/gnrc_tftp: remove module
|
|
* net/gnrc_uhcpc:
|
|
* ensure compression context is managed by the ABR
|
|
* only configure 6Lo-ND features if wireless-interface is 6LN
|
|
* update compression context with new prefix
|
|
* net/nanocoap:
|
|
+ add coap_opt_add_uquery2() with parameter key value length
|
|
+ add convenience function for adding path elements
|
|
* add uquery improvements
|
|
* make separate tree handling function
|
|
- remove obsolete functions for addition of Uri-Query option
|
|
+ net/netdev: add netdev_trigger_event_isr() function
|
|
- net/nhdp: remove module
|
|
+ net/sock:
|
|
* async: add optional callback argument
|
|
+ amend with zero-copy receive functions
|
|
+ amend API to iterate over stack-internal buffer chunks
|
|
|
|
Packages
|
|
--------
|
|
+ pkg/cmsis-nn: add support
|
|
+ pkg/cryptoauthlib: add support
|
|
+ pkg/libbase58: add support
|
|
- pkg/libcose: remove monocypher crypto mode
|
|
+ pkg/littlefs2: add support for LittleFS v2.x.y
|
|
+ pkg/lvgl: add initial support for LittlevGL
|
|
* pkg/lwip:
|
|
+ add auto-init support for transceiver ENC28J60
|
|
+ provide sock_async support
|
|
* pkg/micropython: bump version for FreeBSD fix
|
|
* pkg/monocypher: bump to version 3.0.0
|
|
* pkg/nanopb: bump version to 0.4.1
|
|
* pkg/nimble/autoconn: various improvements
|
|
- pkg/oonf_api: remove support
|
|
+ pkg/qcbor: add support
|
|
* pkg/tinydtls: remove receive buffer indirection via mbox
|
|
* pkg/wolfssl: bump version to 4.3.0
|
|
+ pkg/yxml: add support Yxml XML parser library package
|
|
|
|
Boards
|
|
------
|
|
* boards: include common dfu logic where applicable
|
|
+ boards/adafruit-clue: add initial support
|
|
* boards/arduino-mkr: feather-m0: sodaq-*: provide stdio over USB and
|
|
setup automatic flash with bossa
|
|
+ board/arduino-nano-33-ble: add initial support
|
|
+ boards/cc1312-launchpad: add support and documentation
|
|
* boards/feather-nrf52840:
|
|
* use CDC ACM as default STDIO
|
|
* fix LED macros
|
|
+ boards/esp32-heltec-lora32-v2: add support
|
|
+ boards/im880b: add support
|
|
+ boards/kw41z-mini: add support
|
|
* boards/mega-xplained: fix ADC line definitions
|
|
* boards/nrf51: fix UART hardware flow-control configuration
|
|
* boards/nucleo-l152re: fix uart1 pinout config
|
|
+ boards/nucleo-l412kb: add initial support
|
|
* boards/sam[r/d]21-xpro: prefer XOSC32K for RTC/RTT (GCLK2)
|
|
* boards/same54-xpro:
|
|
* configure remaining EXT connectors
|
|
* don't source peripheral clocks from main clock
|
|
* boards/samr30: add helper for antenna switch
|
|
* boards/stm32l4: add common clock configuration
|
|
+ boards/olimexino-stm32: add support
|
|
+ boards/openlabs-kw41z-mini-256kib: add support
|
|
* boards/openmote-b: add SAUL configuration and note about flashing
|
|
+ boards/p-nucleo-wb55: add initial support
|
|
+ boards/pic32*: add GPIO SAUL configuration
|
|
* boards/pinetime:
|
|
* add defines for controlling the backlight pin
|
|
* update mtd_spi_nor config
|
|
* fix battery ADC line define
|
|
* doc/doxygen:
|
|
+ add 'Creating boards' section
|
|
* improvements on various board's documentation
|
|
|
|
CPU
|
|
---
|
|
* cpu:
|
|
* add CPU feature for stack smash protections
|
|
+ add UART RX implementation on PIC32 devices
|
|
* make default idle/main stacksizes configurable on all archs
|
|
* move cpu level dependencies in dedicated Makefile.dep files
|
|
* unify UART hardware flow control use to a generic module
|
|
* cpu/atmega_common: fix reboot issues
|
|
* cpu/cc13x2: rename cpu to cc26x2_cc13x2
|
|
* cpu/cc2538:
|
|
* fix spi_transfer_bytes()
|
|
+ implement periph/pm
|
|
* timer: handle power mode
|
|
* cpu/cc26xx_cc13xx: add power common code
|
|
* cpu/cortexm:
|
|
+ add support for Cortex-M interrupt sub-priorities
|
|
* cleanup dependencies
|
|
* move CPU_ARCH/FAM to Makefile.features
|
|
* only enable MPU during low low level init
|
|
* cpu/efm32:
|
|
* cleanup of makefiles
|
|
* fix incorrect ADC status register
|
|
* cpu/esp_common:
|
|
* allow WiFi modem sleep mode
|
|
+ esp-wifi: allow connecting to open networks
|
|
* fixes in common CPU configurations
|
|
* move dependency resolutions to Makefile.dep
|
|
* cpu/esp32:
|
|
* activate automatic XTAL detection
|
|
+ add support for light/deep sleep and pm_layered
|
|
* allow external 32 kHz crystal for the RTC hardware time
|
|
+ esp_wifi: add WPA2 enterprise mode with IEEE 802.1x/EAP authentication
|
|
* fix wake-up sources for sleep mode
|
|
+ cpu/esp8266: add RTT implementation
|
|
* cpu/fe310:
|
|
* fix power management configuration
|
|
+ implement driver for watchdog
|
|
* cpu/lpc2387:
|
|
* fix RTC leap year calculation
|
|
+ implement periph/adc
|
|
+ implement periph/i2c
|
|
* make SPI configurable
|
|
* cpu/native: fix c11_atomic sizes on FreeBSD
|
|
* cpu/native/can/candev_linux: add check for real can
|
|
+ cpu/nrf52/nRF802154: implement CCA
|
|
+ cpu/nrf5x: add and enable configuration for the built-in DC/DC converter
|
|
* cpu/sam0:
|
|
+ add gpio_disable_mux() function
|
|
+ add samd21j17d support
|
|
* enhance power saving by switching EIC clock source during STANDBY mode
|
|
* fix handling of PM_NUM_MODES
|
|
+ provide interface to query GCLK frequency
|
|
* use generic exti_config
|
|
* cpu/samd21: pwm: allow to use channels > 3
|
|
* cpu/samd5x: disable RTC on init to prevent undefined RTC state
|
|
* cpu/[saml21/1x]: enable buck voltage regulator when possible
|
|
* cpu/stm32_common:
|
|
+ add USB OTG FS/HS usbdev peripheral driver
|
|
* enable EXTI interrupt for rtt
|
|
* eth: fix address and multicast filtering
|
|
* cpu/stm32f1: make RTC Y2038 safe
|
|
+ cpu/stm32wb: add initial support
|
|
|
|
Device Drivers
|
|
--------------
|
|
* doc: various fixes in driver documentation
|
|
+ drivers/apds99xx: add support for APDS99XX ambient light and proximity sensors
|
|
+ drivers/at24cxxx: add support for AT24Cxxx family of EEPROMs
|
|
+ drivers/at24mac: add support for unique ID chip
|
|
+ drivers/at25xx: add support for AT25xxx family of EEPROMs
|
|
+ drivers/at86rf215: add basic support for AT86RF215 dual-band radio
|
|
* drivers/at86rf2xx:
|
|
* fix receive before send detection
|
|
+ implement basic mode
|
|
+ drivers/bh1900nux: add support
|
|
+ drivers/bme680: add support
|
|
+ drivers/can: add CAN support for nucleo-l476rg
|
|
+ drivers/cc110x: add support for promiscuous mode
|
|
+ drivers/disp_dev: add generic interface for display drivers
|
|
* drivers/ds18: fix temperature conversion
|
|
+ drivers/hmc5883l: add support for Honeywell HMC5883L magnetometer
|
|
+ drivers/kw41zrf: add support for radio
|
|
+ drivers/lis2dh12: add interrupt functionality
|
|
* drivers/mtd_spi_nor: erase timings in struct
|
|
+ drivers/periph_common/rtc: add rtc_mktime() & rtc_localtime() helper functions
|
|
+ drivers/rtt_rtc: add RTT-based RTC implementation, enable it for cpu/cc2538,
|
|
nrf5x_common
|
|
* drivers/slipdev: provide stdio multiplexing over SLIP
|
|
+ drivers/sps30: add support for particulate matter sensor
|
|
* drivers/srf08: cleanup driver configuration scheme
|
|
+ drivers/stmpe811: add support for touchscreen controller
|
|
* drivers/ws281x:
|
|
+ add support for esp32
|
|
+ add VT100 backend for native
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
* build system: Restructure dependency resolution
|
|
* dist:
|
|
* cc2538-bsl: use upstream version
|
|
+ dhcpv6-pd_ia: initial import of a DHCPv6 server bootstrapper
|
|
* edbg: update to latest upstream version
|
|
* factor out static tests from build_and_test
|
|
* packer: update vagrant image to Ubuntu 18.04 + refactoring
|
|
+ sliptty: introduce a new SLIP to TUN tool
|
|
* sliptty/start_network.sh: configure global address for SLIP interface
|
|
* testbed-support:
|
|
* fix compatibility with cli-tools v3
|
|
* use BINFILE for flashing on iotlab
|
|
+ doc: add section on configuration to 'Getting started'
|
|
* make:
|
|
* disable implicit rules
|
|
* remove support for make <4
|
|
* native: turn on creation of debug symbols (CFLAGS += -g)
|
|
* Makefile:
|
|
* arch: mips: Allow CFLAGS_DBG and CFLAGS_OPT to be overridden
|
|
* boards: move remaining uses of USEMODULE from Makefile.include to
|
|
Makefile.dep
|
|
* disable stdio_% modules before they are included
|
|
* fix duplicate modules from USEMODULE
|
|
* fix sock_udp deps for stnp
|
|
* include package deps earlier
|
|
* info-global.inc.mk: reset BOARDSDIR
|
|
* Makefile.dep: remove usage of DEFAULT_MODULE += stdio%
|
|
* mips: cleanup include makefile
|
|
* move cpu level dependencies in dedicated Makefile.dep files
|
|
* periph_init based on USEMODULE
|
|
* pkg/local.mk: add FORCE target to .PHONY
|
|
+ provide CPU as a feature
|
|
* use simple expansion for widely used variables
|
|
|
|
Testing
|
|
-------
|
|
* tests:
|
|
+ add check_unittests helper function
|
|
+ add interactive_sync adapted to shell
|
|
* fix compilation problems with NDEBUG
|
|
* fix for `GNRC_NETIF_SINGLE`
|
|
* fixes for evtimer_msg and bench_runtime_coreapis
|
|
+ tests/bench_xtimer_load: initial commit
|
|
* tests/buttons: fix build failure if BTN0_PIN is not declared
|
|
+ tests/candev: add initial version with native support
|
|
+ tests/driver_netdev_common: add compile-test for network drivers
|
|
+ tests/emcute: provide tests
|
|
+ tests/gnrc_ipv6_nib_dns: add test of RDNSS option handling
|
|
* tests/gnrc_rpl_srh: use AsyncSniffer for sniffing
|
|
* tests/periph_rtc: fix system locks in ISR
|
|
+ tests/xtimer_overhead: initial commit
|
|
|
|
Kconfig migration
|
|
-----------------
|
|
Migration to Kconfig as configuration tool is currently on phase 1. Which means
|
|
that we are moving configuration options from modules to Kconfig files, and
|
|
leaving its use optional.
|
|
|
|
+ doc: add Kconfig section
|
|
* Kconfig:
|
|
* add CPU and Board common symbols
|
|
* add Drivers menu
|
|
* include application-specific symbols first
|
|
* net/gnrc/ipv6: group IPv6 related Kconfig options
|
|
+ Expose configurations to Kconfig of:
|
|
+ drivers/periph/wdt
|
|
+ drivers/mrf24j40
|
|
+ net/gcoap
|
|
+ net/gnrc/ipv6/ext/frag
|
|
+ net/gnrc/ipv6/nib
|
|
+ net/gnrc/sixlowpan
|
|
+ net/ieee802154
|
|
+ net/nanocoap
|
|
+ pkg/tinydtls
|
|
+ pkg/wakaama
|
|
+ sys/usbus
|
|
+ usbus/cdc/acm
|
|
|
|
API Changes
|
|
===========
|
|
- SUIT: update to draft-ietf-v3
|
|
- Makefile.include: remove support for make <4
|
|
- net/gnrc_netif: implementation of dynamic GNRC_NETIF_NUMOF approach
|
|
|
|
- net/sock: amend with zero-copy receive functions:
|
|
|
|
+ /**
|
|
+ * @brief Releases the stack-internal buffer space provided by the
|
|
+ * `sock_*_recv_buf()` functions.
|
|
+ * @param[in] buf_ctx Stack-internal buffer context to release.
|
|
+ */
|
|
+ void sock_recv_buf_free(void *buf_ctx);
|
|
|
|
+ /**
|
|
+ * @brief Decrypts and provides stack-internal buffer space containing a
|
|
+ * message from a remote peer.
|
|
+ *
|
|
+ */
|
|
+ ssize_t sock_dtls_recv_buf(sock_dtls_t *sock, sock_dtls_session_t *remote,
|
|
+ void **data, void **buf_ctx, uint32_t timeout);
|
|
|
|
+ /**
|
|
+ * @brief Provides stack-internal buffer space containing an IPv4/IPv6
|
|
+ * message from remote end point
|
|
+ */
|
|
+ ssize_t sock_ip_recv_buf(sock_ip_t *sock, void **data, void **buf_ctx,
|
|
+ uint32_t timeout, sock_ip_ep_t *remote);
|
|
|
|
+ /**
|
|
+ * @brief Provides stack-internal buffer space containing a UDP message from
|
|
+ * a remote end point
|
|
+ */
|
|
+ ssize_t sock_udp_recv_buf(sock_udp_t *sock, void **data, void **buf_ctx,
|
|
+ uint32_t timeout, sock_udp_ep_t *remote);
|
|
|
|
- net/sock/async: add optional callback argument:
|
|
|
|
+ * @param[in] arg Argument provided when setting the callback using
|
|
+ * @ref sock_dtls_set_cb(). May be NULL.
|
|
*/
|
|
- typedef void (*sock_dtls_cb_t)(sock_dtls_t *sock, sock_async_flags_t flags);
|
|
+ typedef void (*sock_dtls_cb_t)(sock_dtls_t *sock, sock_async_flags_t flags,
|
|
+ void *arg);
|
|
|
|
+ * @param[in] arg Argument provided when setting the callback using
|
|
+ * @ref sock_ip_set_cb(). May be NULL.
|
|
*/
|
|
- typedef void (*sock_ip_cb_t)(sock_ip_t *sock, sock_async_flags_t flags);
|
|
+ typedef void (*sock_ip_cb_t)(sock_ip_t *sock, sock_async_flags_t flags,
|
|
+ void *arg);
|
|
|
|
+ * @param[in] arg Argument provided when setting the callback using
|
|
+ * @ref sock_tcp_set_cb(). May be NULL.
|
|
*/
|
|
- typedef void (*sock_tcp_cb_t)(sock_tcp_t *sock, sock_async_flags_t flags);
|
|
+ typedef void (*sock_tcp_cb_t)(sock_tcp_t *sock, sock_async_flags_t flags,
|
|
+ void *arg);
|
|
|
|
+ * @param[in] arg Argument provided when setting the callback using
|
|
+ * @ref sock_tcp_queue_set_cb(). May be NULL.
|
|
*/
|
|
typedef void (*sock_tcp_queue_cb_t)(sock_tcp_queue_t *queue,
|
|
- sock_async_flags_t flags);
|
|
+ sock_async_flags_t flags,
|
|
+ void *arg);
|
|
|
|
+ * @param[in] arg Argument provided when setting the callback using
|
|
+ * @ref sock_udp_set_cb(). May be NULL.
|
|
*/
|
|
- typedef void (*sock_udp_cb_t)(sock_udp_t *sock, sock_async_flags_t type);
|
|
+ typedef void (*sock_udp_cb_t)(sock_udp_t *sock, sock_async_flags_t type,
|
|
+ void *arg);
|
|
|
|
- net/sock/dns: make sock_dns_query() return the length of the address:
|
|
|
|
/**
|
|
* @brief Get IP address for DNS name
|
|
*
|
|
- * @return 0 on success
|
|
- * @return !=0 otherwise
|
|
+ * @return the size of the resolved address on success
|
|
+ * @return < 0 otherwise
|
|
*/
|
|
int sock_dns_query(const char *domain_name, void *addr_out, int family);
|
|
|
|
- mtd_spi_nor: move const params to separate struct:
|
|
|
|
+ /**
|
|
+ * @brief Compile-time parameters for a serial flash device
|
|
+ */
|
|
+ typedef struct {
|
|
+ const mtd_spi_nor_opcode_t *opcode; /**< Opcode table for the device */
|
|
+ spi_clk_t clk; /**< SPI clock */
|
|
+ uint16_t flag; /**< Config flags */
|
|
+ spi_t spi; /**< SPI bus the device is connected to */
|
|
+ spi_mode_t mode; /**< SPI mode */
|
|
+ gpio_t cs; /**< CS pin GPIO handle */
|
|
+ uint8_t addr_width; /**< Number of bytes in addresses, usually 3 for small devices */
|
|
+ } mtd_spi_nor_params_t;
|
|
+
|
|
|
|
typedef struct {
|
|
mtd_dev_t base; /**< inherit from mtd_dev_t object */
|
|
- const mtd_spi_nor_opcode_t *opcode; /**< Opcode table for the device */
|
|
- spi_t spi; /**< SPI bus the device is connected to */
|
|
- gpio_t cs; /**< CS pin GPIO handle */
|
|
- spi_mode_t mode; /**< SPI mode */
|
|
- spi_clk_t clk; /**< SPI clock */
|
|
- uint16_t flag; /**< Config flags */
|
|
+ const mtd_spi_nor_params_t *params; /**< SPI NOR params */
|
|
mtd_jedec_id_t jedec_id; /**< JEDEC ID of the chip */
|
|
uint32_t page_addr_mask;
|
|
uint32_t sec_addr_mask;
|
|
- uint8_t addr_width; /**< Number of bytes in addresses, usually 3 for small devices */
|
|
uint8_t page_addr_shift;
|
|
uint8_t sec_addr_shift;
|
|
} mtd_spi_nor_t;
|
|
|
|
Deprecations
|
|
============
|
|
|
|
Warnings
|
|
--------
|
|
- `make all-debug` target will be removed for `native` after the 2020.10 release
|
|
- net/gcoap: `gcoap_add_qstring()` will be removed after the 2020.10 release
|
|
- net/gnrc/nettype: `GNRC_NETTYPE_IOVEC` type will be removed after 2020.10
|
|
release
|
|
- net/gnrc_pktbuf: `gnrc_pktbuf_replace_snip()` will be removed after 2020.10
|
|
release
|
|
- net/gnrc/sixlowpan: Configuration macro
|
|
`GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE` will be removed after 2020.10
|
|
release.
|
|
|
|
Removals
|
|
--------
|
|
- Makefile.include: remove support for GNU make <4
|
|
- pkg/oonf_api: remove package
|
|
- pkg/tinydtls: remove TINYDTLS_LOG configuration macro
|
|
- sys/net/gnrc_tftp: remove module
|
|
- sys/net/nhdp: remove module
|
|
|
|
Known issues (136)
|
|
==================
|
|
|
|
Networking related issues (48)
|
|
------------------------------
|
|
#13834: DHCPv6 client ends up in busy loop after a while
|
|
#13745: ethos: Unable to choose global source address.
|
|
#13496: cpu/stm32/eth, board/nucleo-f767z1: ethernet buffering issue (ping >1s)
|
|
after debug break
|
|
#13490: cpu/stm32/eth, board/nucleo-f767z1: ethernet initialisation fails
|
|
sometimes
|
|
#13209: examples/gnrc_border_router is crashing after some time
|
|
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
|
|
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
|
|
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
|
|
#12858: KW2XRF: Broken network communication without netstats-l2
|
|
#12857: examples/gnrc_networking_mac broken on ATmega
|
|
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer
|
|
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
|
|
#12210: stale border router does not get replaced
|
|
#11988: ethos: fails to respond to first message.
|
|
#11860: send data with UDP at 10HZ, the program die
|
|
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
|
|
#11852: scan-build errors found during 2019.07 testing
|
|
#11795: gnrc_tftp: string functions on non-null terminated input
|
|
#11405: nrfmin: communication not possible after multicast ping with no interval
|
|
#11212: POSIX sockets + lwIP: bad file descriptor
|
|
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
|
|
#10969: net: netdev_driver_t::send() doc unclear
|
|
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
|
|
#10809: openthread: does not build on current Arch
|
|
#10410: Missing drop implementations in netdev_driver_t::recv
|
|
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
|
|
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address
|
|
#10370: gomach: Resetting netif with cli doesn't return
|
|
#10338: xbee: setting PAN ID sometimes fails
|
|
#9709: examples: failed assertion in dtls-echo example
|
|
#9656: gnrc/netif: various problems after resetting interface a second time
|
|
#8779: CC2538 RF overlapping PIN usage
|
|
#8752: mrf24j40: does not link for examples/default
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#8242: at86rf2xx: Dead lock when sending while receiving
|
|
#8199: gcoap example request on tap I/F fails with NIB issue
|
|
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
|
|
configured prefix
|
|
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#7474: 6lo gnrc fragmentation expects driver to block on TX
|
|
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
|
|
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
|
|
chars
|
|
#5748: gnrc: nodes crashing with too small packet buffer
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
|
|
Timer related issues (17)
|
|
-------------------------
|
|
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
|
|
#12909: Bug: Unexpected behavior with xtimer_periodic_wakeup() for large periods
|
|
on Nucleo-f401re
|
|
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
|
|
#11149: xtimer: hang on xtimer_spin_until (corner case)
|
|
#10545: periph_timer: systematic proportional error in timer_set
|
|
#10523: saml21 system time vs rtc
|
|
#10510: xtimer_set_msg: crash when using same message for 2 timers
|
|
#10073: xtimer_usleep wrong delay time
|
|
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time.
|
|
#9052: misc issues with tests/trickle
|
|
#9049: xtimer mis-scaling with long sleep times
|
|
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
|
|
#8251: MSP430: periph_timer clock config wrong
|
|
#7347: xtimer_usleep stuck for small values
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#6442: cpu/native: timer interrupt issue
|
|
#6052: tests: xtimer_drift gets stuck on native
|
|
|
|
Drivers related issues (9)
|
|
--------------------------
|
|
#13444: Potential security and safety race conditions on attached devices
|
|
#12445: driver/hts221: Temperature and Humidity readings incorrect
|
|
#12371: fail to send data to can bus
|
|
#12045: floats and doubles being used all over the place.
|
|
#11388: SD card initialization: timeouts effectively blocking
|
|
#11104: STM32: SPI clock not returning to idle state and generating additional
|
|
clock cycles
|
|
#9419: cpu/msp430: GPIO driver doesn't work properly
|
|
#8045: stm32/periph/uart: extra byte transmitted on first transmission
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
|
|
Native related issues (3)
|
|
-------------------------
|
|
#11472: Warnings from objcopy and size (binutils 2.32)
|
|
#5796: native: tlsf: early malloc will lead to a crash
|
|
#495: native not float safe
|
|
|
|
Other platforms related issues (18)
|
|
-----------------------------------
|
|
#13606: gcoap/esp8266: Stack overflow with gcoap example
|
|
#13408: Bug: PWM test crashes on Arduino Mega 2560
|
|
#13390: Cannot use LLVM with Cortex-M boards
|
|
#13267: Failing tests on MSP430 (z1)
|
|
#13104: boards/hifive1: flashing issue
|
|
#13086: Failing tests on FE310 (Hifive1b)
|
|
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
|
|
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
|
|
#12168: pkg/libb2: blake2s doesn't work on AVR
|
|
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
|
|
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
|
|
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
|
|
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
|
|
(not previous)
|
|
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
|
|
boards
|
|
#7753: pic32-wifire: race-condition when linking in concurrent build
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
|
|
CS
|
|
#5774: cpu: cortexm_common: context switching code breaks when compiling with
|
|
LTO
|
|
#4954: chronos: compiling with -O0 breaks
|
|
|
|
Build system related issues (11)
|
|
--------------------------------
|
|
#13492: make -j flash broken on esp* (will always flash the previous binary)
|
|
#13419: Can't use nimble as prefix for modules
|
|
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
|
|
#10850: Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation
|
|
#9913: Build dependencies - processing order issues
|
|
#9742: `buildtest` uses wrong build directory
|
|
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
|
|
image
|
|
#8913: make: use of immediate value of variables before they have their final
|
|
value
|
|
#8122: doxygen: riot.css modified by 'make doc'
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
|
|
Other issues (30)
|
|
-----------------
|
|
#13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode
|
|
#13527: examples/dtls-wolfssl not working on pba-d-01-kw2x
|
|
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
|
|
#13277: Y2038 tracking issue / strategy
|
|
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32
|
|
#13120: tests: broken with stdio_rtt if auto_init is disabled
|
|
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
|
|
shell after flashing with J-Link
|
|
#12732: tests: some tests don't work with `newlib` lock functions.
|
|
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
|
|
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
|
|
#12105: [TRACKING] sys/shell refactoring.
|
|
#11885: arm7: printf() with float/double not working
|
|
#11243: sys/riotboot: documentation issues
|
|
#10751: Possible memset optimized out in crypto code
|
|
#10731: nanocoap: incomplete response to /.well-known/core request
|
|
#10639: sys/stdio_uart: dropped data when received at once
|
|
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
|
|
10
|
|
#9882: sys/tsrb is not thread safe on AVR
|
|
#9518: periph/i2c: tracking bugs and untested acks
|
|
#9371: assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope
|
|
#8589: Why using -F in avrdude?
|
|
#8436: Kinetis PhyNode: failed to flash binary > 256K
|
|
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
|
|
#6533: tests/lwip target board for python test is hardcoded to native
|
|
#5769: Possible problem in scheduler
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#4488: Making the newlib thread-safe
|
|
#3256: make: Setting constants on compile time doesn't really set them
|
|
everywhere
|
|
#2346: Tracker: Reduce scope on unintended COMMON variables
|
|
|
|
There are 137 known issues in this release
|
|
|
|
Fixed Issues since the last release (2020.01)
|
|
=============================================
|
|
|
|
#13920: stm32: ztimer RTT backend overflow
|
|
#13680: suit-tool runs on every build - ModuleNotFoundError: No module named
|
|
'cbor' when building anything
|
|
#13587: drivers/cc110x: Lost IRQs can lead to driver deadlock
|
|
#13471: 6ctx: incorrectly removes 6ctx context when the non-zero part of the
|
|
address matches
|
|
#13460: Makefile.dep: DEFAULT_MODULE += stdio_rtt will always load dependencies
|
|
- even if other stdio is selected
|
|
#13459: cpu/cortex-m23: gcc 9 bug when compiling c11 atomics
|
|
#13447: gnrc_sock_dns is not working
|
|
#13442: gnrc_networking not sending packets when hardware has multiple
|
|
interfaces
|
|
#13369: native:in file gnrc_rpl_p2p.c function trickle_start() has extra and
|
|
some undeclared variables.
|
|
#13358: iotlab-m3: long HW address is in reversed order
|
|
#13353: tests/unittests/tests-ecc: segfault with golay, when enabling asserts
|
|
#13309: cpu/native/can: Segmentation fault when manipulating vcan's through
|
|
socketcan
|
|
#13287: Driver for DS18B20 returns invalid values
|
|
#13265: tests: compilation of some test applications fail with NDEBUG
|
|
#13015: Quickest start does not build with vagrant
|
|
#12854: `pm_reboot()` not working on AVR when compiled with `LTO=1`
|
|
#12370: Undocumented uint8_t assumptions in nrf52840 peripherals
|
|
#12037: cpu/sam0_common: i2c baudrate calculation fails if CLOCK_CORECLOCK > 51
|
|
MHz
|
|
#11026: Recent changes effectively killed modular board designs
|
|
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
|
|
#8130: gcoap: can't build with network stacks other than GNRC
|
|
#7020: isr_rfcoreerrors while pinging between CC2538DKs
|
|
|
|
22 fixed issues since last release (2020.01)
|
|
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
RIOT-2020.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 2020.01 release includes:
|
|
|
|
- Initial support for MicroPython
|
|
- Initial support for GNRC based LoRaWAN stack
|
|
- Initial (experimental) asynchronous sock support
|
|
- Extend support for lpc2387 and fe310 cpus
|
|
- Xtimer concurrency/robustness improvement, fixing #8388, #5338 & #5103
|
|
- Complete re-implementation of esp8266 based on ESP8266 RTOS SDK
|
|
- Improvements in automatic tests
|
|
- Introduce and start using Kconfig as a configuration tool
|
|
- +12 new boards, +7 new drivers, +4 new packages
|
|
|
|
About 527 pull requests, composed of 1367 commits, have been merged since the
|
|
last release, and about 29 issues have been solved. 61 people contributed with
|
|
code in 111 days. Approximately 3053 files have been touched with 134416 (+)
|
|
insertions and 31870 deletions (-).
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
System libraries
|
|
----------------
|
|
+ core/kernel_defines: Introduce 'IS_ACTIVE' macro
|
|
* core/assert: allow multiple static_asserts within a function
|
|
* core/ringbuffer: compensate 'ringbuffer_remove' underflow error
|
|
+ core/thread: add zombie thread state
|
|
+ sys: basic C++ compatibility with C11 atomics
|
|
+ sys/arduino:
|
|
+ added Wire (I2C) interface
|
|
+ added SPI interface
|
|
* allow use of arduino libraries without need for arduino sketch
|
|
* add implementation for analogWrite
|
|
* fixed frequency selection in SPI
|
|
* sys/bitfield: unify byte order and bit order to both be most significant
|
|
bX first
|
|
* sys/checksum: move crc8 implementation from sht3x to common code
|
|
* sys/color: add color_rgb_set_brightness() and color_rgb_shift()
|
|
* sys/crypto/modes/ccm: support length of AAD > 24
|
|
* sys/crypto/modes/ccm: support plain text length < 2^32
|
|
+ sys/frac: add frac library for integer scaling by semi-constant fractions
|
|
+ sys/luid: add luid_get_eui48() / luid_get_eui64()
|
|
+ sys/progress_bar: add module for managing a progress bar in stdout
|
|
* sys/posix/pthread/pthread.c: fix pthread reaper
|
|
* sys/shell: make shell_run run shell forever
|
|
* sys/shell_commands: make 6Lo compression contexts configurable on non-6LBR
|
|
+ sys/stdio_null: add null driver
|
|
* sys/suit: use c25519 instead of hacl
|
|
- sys/suit: remove dependency on tinycbor
|
|
* sys/usbus:
|
|
* add descriptor prefix support
|
|
* unify terminology to use 'descriptor' everywhere
|
|
* cdc_acm: add interface association descriptor, enable Windows
|
|
enumeration and usage of RIOT CDC ACM
|
|
* cdc_acm: fix to avoid lost characters on USBUS CDC ACM STDIO
|
|
* sys/xtimer:
|
|
* concurrency/robustness improvements
|
|
* fix xtimer_mutex_lock_timeout by having _mutex_timeout() check waiting
|
|
list
|
|
- remove dependency to core_msg
|
|
|
|
Networking
|
|
----------
|
|
+ sys/gnrc_lorawan: add initial support for GNRC based LoRaWAN stack
|
|
* sys/gnrc_netif: make 6LoENC dynamically configurable
|
|
+ sys/gnrc_sock: provide asynchronous event implementation
|
|
* sys/gnrc_ipv6: fix source check for loopback address
|
|
* sys/gnrc_ipv6_ext_frag: remove fragment header when n-th fragment is first
|
|
* sys/gnrc_ipv6_nib: allow for configuration of static link-local addresses
|
|
* sys/gnrc_netif: highest source address scope wins selection
|
|
* sys/gnrc_netif: only use prefix matching as tie-breaker in source
|
|
selection
|
|
* sys/gnrc_sixlowpan_frag_rb: split out classic frag specific code
|
|
* sys/gnrc_sixlowpan_frag_rb: fix memory-leak in _rm_by_datagram() and in
|
|
interval marker inherited from base
|
|
* sys/gnrc_sixlowpan_frag: various optimizations on sending
|
|
* sys/gnrc_sixlowpan_iphc: add fragment forwarding stubs
|
|
* sys/gnrc_sixlowpan_iphc_nhc: determine UDP hdr length from reassembly
|
|
buffer, fix fragmented data size allocation
|
|
* sys/gnrc_tcp: return immediately on gnrc_tcp_recv if connection is closing
|
|
+ sys/net/gcoap: add macro to delay initialization of gcoap
|
|
* sys/net/gcoap: do not allocate RX buf on stack
|
|
* sys/pthread: check malloc() return value, prevent NULL pointer deference
|
|
* sys/shell/gnrc_netif: use netif API for ifconfig
|
|
* sys/shell/sc_nimble`_netif: allow connecting by name
|
|
+ sys/sock: initial definitions for asynchronous event handling
|
|
+ sys/sock_async: initial import of event-based implementation
|
|
|
|
Packages
|
|
--------
|
|
* pkg: cleanup management of dependencies
|
|
* pkg/pkg.mk: use intermediate state files
|
|
* pkg/ccn-lite: bump version
|
|
+ pkg/flatbuffers: add support for FlatBuffers serialization library
|
|
* pkg/gecko_sdk: update to version 2.7
|
|
* pkg/libfixmath: several improvements and fixes to support 8bit
|
|
* pkg/littlefs: bump littlefs version to 1.7.2
|
|
* pkg/lora-serialization: bump to latest version and update test for AVR
|
|
* pkg/lwip:
|
|
* add support for esp32 Ethernet device
|
|
* add IPv4 support for LWIP-stm32
|
|
* start DHCP for a netif with lwip_dhcp
|
|
* add stm32 ethernet support
|
|
* enable lwIP for ESP8266
|
|
+ pkg/nanopb: add Nanopb protocol buffers library package
|
|
* pkg/nimble:
|
|
* bump version
|
|
+ add simple BLE connection manager: autoconn
|
|
+ add user event callback to autconn
|
|
+ nimble_netif: catch L2CAP connection failures
|
|
+ nimble_netif: add additional events
|
|
* pkg/tinydtls: add DTLS sock API implementation
|
|
* pkg/tinydtls: bump version
|
|
+ pkg/tensorflow-lite: add support to RIOT
|
|
+ pkg/utensor: add support to RIOT
|
|
* pkg/u8g2: refactor the U8g2 package
|
|
* pkg/wakaama: add basic LWM2M client implementation
|
|
|
|
Boards
|
|
------
|
|
- boards: remove RTT_NUMOF/RTC_NUMOF
|
|
- boards: unexport PROGRAMMER
|
|
+ boards/adafruit-nrf52840: initial support
|
|
* boards/arduino-zero: configure ADC channels
|
|
+ boards/atmega328p: initial support for standalone version
|
|
* boards/atmega328p: support variable xtimer frequencies
|
|
+ boards/atmega1284P: initial support for standalone version
|
|
+ boards/atmega256rfr2: initial support
|
|
+ boards/avr-rss2: initial support
|
|
+ boards/cc1252: initial support
|
|
* boards/common: clean up msba2 common files
|
|
+ boards/derfmega*: initial support
|
|
+ boards/esp32-ttgo-t-beam: initial support
|
|
- boards/frdm: remove support for OpenOCD < v0.10.0
|
|
+ boards/mcb2288: initial support
|
|
+ boards/microduino-corerf: initial support
|
|
* boards/nucleo-f207zg: add ethernet configuration
|
|
* boards/native: allow for native to be reset via SIGUSR1
|
|
* boards/particle-*: configure PCB antenna for 2.4GHz radio
|
|
* boards/pic32-clicker: cleanup uart configuration and initialization
|
|
* boards/pic32-clicker: use pic32prog as default programmer
|
|
+ boards/pinetime: initial support for the PINE64 PineTime smartwatch
|
|
+ boards/sodaq-*: add arduino support
|
|
* boards/sodaq-*: refactor common code
|
|
+ boards/stm32f030f4-demo: initial support
|
|
* boards/stm32-common:
|
|
* allow SPI signals routed on multiple alternate functions
|
|
* add 54MHz and 108MHz SPI divtable entries
|
|
* common programmer/debugger/serial config
|
|
* boards/thingy: add dependency for on-board hts221/lps22hb sensors
|
|
|
|
CPU
|
|
---
|
|
+ cpu/arm7_common: hook up puf_sram
|
|
+ cpu/atmega128rfa1: add initial support
|
|
+ cpu/atmega256rfr2: symbol counter based RTT support
|
|
+ cpu/atmega_common:
|
|
* clean ups and fix code run at end of ISR to behave like
|
|
`thread_yield_higher`
|
|
* fixed atmega_exit_isr
|
|
* uart: use TX_ISR to check uart transmission end
|
|
+ cpuid: provide for every device
|
|
+ rtt: initial peripheral driver support
|
|
+ wdt: initial peripheral driver support
|
|
* cpu/cortexm: fix -mfpu flag value for CortexM7
|
|
* cpu/fe310:
|
|
* several cleanup in implementation and clock setup
|
|
* change default optimization to "-Os"
|
|
* uart: rework driver and fixes
|
|
+ i2c: initial peripheral driver support
|
|
+ spi: initial peripheral driver support
|
|
+ cpp: add feature
|
|
* cpu/esp*: esp_wifi used as default netdev for lwip
|
|
* cpu/esp32:
|
|
* improvements and cleanup of log_module
|
|
* fix lwip + esp_wfi, esp_wifi send buffer should not be on stack
|
|
* use esptool.py from riot tools
|
|
* rtc: fixes, improvements and cleanups
|
|
* spi: fix CS handling in spi_transfer_bytes
|
|
* uart: workaround uart sporadically set to wrong value when the CPU
|
|
clock is changed
|
|
* spi: enable use of SPI flash drive with pkg_littlefs
|
|
* cpu/esp8266:
|
|
* complete re-implementation based on ESP8266 RTOS SDK
|
|
* fix of esp_wifi_send function
|
|
* fix bootloaders and log outputs in vendor code
|
|
* cpu/efm32: fix uart handling of RX when no RX callback is configured
|
|
* cpu/efm32: normalize time in rtc_series1
|
|
* cpu/lpc2387:
|
|
* allow for more flexible clock selection
|
|
+ add support for backup RAM
|
|
* uart: update the UART driver
|
|
+ pm: initial support
|
|
+ dac: initial support
|
|
* rtc: enable RTC on rtc_init(), align with other RTC implementations
|
|
* lpc2387.ld: cleanups and align with cortexm_base.ld
|
|
* lpc2387.ld: provide thread_isr_stack_*() - MicroPython
|
|
+ cpu/kinetis: add flashpage for W & K series
|
|
* cpu/msp430_common: add flashpage_raw
|
|
* cpu/native:
|
|
+ initial import of stdio_native
|
|
* allow Access to Hardware SPI Bus on Linux
|
|
* fix all-asan Makefile target
|
|
* cpu/stm32:
|
|
* i2c_2: fix read bytes flag
|
|
- i2c_2: do not support repeated start reading
|
|
* stmclk: fix M-factor shift for SAI PLL
|
|
* stcmlk: add functions for low power mode clock config
|
|
+ stm32f0: add support for stm32f030cc CPU
|
|
+ stm32f1: add rtt peripheral driver
|
|
+ stm32l0: add stm32l010c6 support
|
|
* cpu/sam0_common:
|
|
* uart: implement non-blocking uart write
|
|
+ uart: add hardware flow control support
|
|
* rtt: enable COUNTSYNC in CTRLA, fixes `rtt_get_counter()` return value
|
|
* spi: power off spi on release, avoid bus errors affecting application
|
|
code
|
|
* adc: fix API to return `-1` on unsupported resolution
|
|
* cpu/samd21: use dedicated 1kHz GCLK4 for RTC and WDT
|
|
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ doc/doxygen: add device driver guide
|
|
+ drivers: add Differentially Operated Serial Ethernet (DOSE) driver
|
|
* drivers/at86rf2xx: add support for ATmegaRF MCUs
|
|
* drivers/at86rf2xx: enable Smart Reduced Power Consumption for AT86RFR2
|
|
* drivers/bmx280: added SPI models
|
|
+ drivers/dcf77: add driver for DCF77
|
|
* drivers/hd44780: move params header to the right place
|
|
+ drivers/ili9341: initial import of ili9341 LCD driver
|
|
* drivers/ina220: re-worked and added SAUL adaptation
|
|
+ drivers/ina3221: add driver for INA3221 current, power & voltage monitor
|
|
+ drivers/itg320x: add driver for InvenSense ITG-320X 3-axis gyroscope
|
|
* driver/mpu9x50: make mpu9150 more generic
|
|
* drivers/mrf24j40: allow for basic self-test on init
|
|
* drivers/mrf24j40: fix start up code
|
|
+ drivers/qmc588rl: add support for QMC5883L
|
|
+ drivers/shtc1: add driver for SHTC1 temperature and humidity sensor
|
|
+ drivers/ws281x: add driver for WS281x RGB LED driver for ATmega platform
|
|
* drivers/xbee: fix reference to device from netif in send function
|
|
* periph/adc: change return type of `adc_sample()` to `int32_t`
|
|
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
+ dist/tools:
|
|
+ add Kconfiglib
|
|
+ add helper script for Black Magic Probe
|
|
+ add support for miniterm.py
|
|
* fix 'make reset' with bootloader in avrdude
|
|
+ dist/testbed-support: add nrf52{840,832}mdk in IOTLAB_NODE targets
|
|
+ doc/advanced-build-system-tricks: handle multiple boards
|
|
+ doc/doxygen: add build system doc page for BOARD, CPU, FEATURE
|
|
+ doc/doxygen: add build-system-basics.md with general build system tips
|
|
+ Kconfig:
|
|
+ add build system integration and test application
|
|
+ makefiles: include configuration symbols to build system
|
|
+ makefiles: add symbols for used packages
|
|
+ expose gnrc/ipv6/whitelist configurations
|
|
+ expose gnrc/lorawan configurations
|
|
+ expose usb configurations
|
|
+ expose net/sock/util configurations
|
|
+ expose gnrc/netif configurations
|
|
+ expose gnrc/ipv6 configurations
|
|
+ make:
|
|
+ introduce 'BOARDSDIR' to support external boards using common code in
|
|
'RIOTBOARD'
|
|
* fail by default when errors are expected
|
|
+ add architectures features
|
|
+ add features blacklisting
|
|
+ add blob utility header
|
|
* enable SECONDEXPANSION for module/application builds
|
|
+ add CXXEXT and CXXEXCLUDE variable for customizing C++ builds
|
|
- makefiles:
|
|
- remove use of export with LINKFLAGS variable
|
|
+ add possibility to provide board specific application dependencies in
|
|
a separate Makefile
|
|
* generate proper dependency files when using ccache
|
|
* fix LOG_LEVEL handling
|
|
- disable `-Watomic-alignment` on LLVM
|
|
+ introduce 'PROG_DEV' to specify programmer device
|
|
* assert CPU is defined by BOARD/Makefile.features
|
|
+ add TERMFLASHDEPS to TERMDEPS so it also applies to `test`
|
|
* tools: allow make reset via avrdude
|
|
* tools: set DEBUG_ADAPTER_ID as JLINK_SERIAL
|
|
|
|
Testing
|
|
-------
|
|
- dist/tests/philip: Removed old code and tests
|
|
* dist/tools/testrunner:
|
|
* make interactive test sync retries/delay configurable
|
|
* reset before opening terminal
|
|
- reset after opening terminal only if interactive test sync is not used
|
|
* add variable for customizing a delay before reset
|
|
* make interactive test sync retries/delay configurable
|
|
* dist/tools/compile_and_test_for_board.py: allow use of wildcards for
|
|
applications selection
|
|
+ murdock: enable esp32-wroom-32 for CI testing
|
|
* tests:
|
|
+ use test_interactive_test_util
|
|
+ add automated tests guidelines in README
|
|
- remove APPLICATION definition in tests/*
|
|
+ tests/gnrc_sock_neterr: proof of concept test for gnrc_sock + gnrc_neterr
|
|
+ tests/bench_xtimer: initial import
|
|
* tests/lwip: enable IPv4
|
|
* tests/malloc: improve application and add an automatic test script
|
|
* tests/memarray: add python script for automatic testing
|
|
* tests/nordic_softdevice: cleanup test script and fix test
|
|
+ tests/periph_timer_short_relative_set: initial import
|
|
* tests/periph_cpuid: add automatic test script
|
|
* tests/sys_arduino: fix test synchronization issues
|
|
* tests/unittests: fix `tests-pkt` for non-32bit platforms
|
|
|
|
|
|
API Changes
|
|
===========
|
|
|
|
- drivers/ina220: changes to comply with RIOT's design goals & SAUL adaption
|
|
- usbus: unified terminology within USBUS to match the terminology from the
|
|
specs. `hdr`, `hdrs`, `headers`, etc is replaced everywhere with `descr`
|
|
`descriptors` and `descriptors`.
|
|
- Makefile.include: fail by default when errors are expected
|
|
|
|
```diff
|
|
/* change return type of `adc_sample()` to `int32_t` to allow support for ADCs
|
|
with resolution of more than 16 bits on 8 bit and 16 bit platforms*/
|
|
- int adc_sample(adc_t line, adc_res_t res)
|
|
= int32_t adc_sample(adc_t line, adc_res_t res)
|
|
|
|
/* pass memo to resp_handler directly */
|
|
- typedef void (*gcoap_resp_handler_t)(unsigned req_state, coap_pkt_t* pdu,
|
|
- sock_udp_ep_t *remote);
|
|
+ typedef void (*gcoap_resp_handler_t)(const gcoap_request_memo_t *memo,
|
|
+ coap_pkt_t* pdu,
|
|
+ const sock_udp_ep_t *remote);
|
|
|
|
/* allow to pass user context to requests */
|
|
size_t gcoap_req_send(const uint8_t *buf, size_t len,
|
|
const sock_udp_ep_t *remote,
|
|
- gcoap_resp_handler_t resp_handler);
|
|
+ gcoap_resp_handler_t resp_handler, void *context);
|
|
|
|
/* assume `netif->ops->init()` to be set to at least a default */
|
|
- _init_from_device(netif);
|
|
- #ifdef DEVELHELP
|
|
- _test_options(netif);
|
|
+ netif->ops->init(netif);
|
|
+ #if DEVELHELP
|
|
+ assert(options_tested);
|
|
# endif
|
|
- netif->cur_hl = GNRC_NETIF_DEFAULT_HL;
|
|
- #ifdef MODULE_GNRC_IPV6_NIB
|
|
- gnrc_ipv6_nib_init_iface(netif);
|
|
- #endif
|
|
- if (netif->ops->init) {
|
|
- netif->ops->init(netif);
|
|
- }
|
|
|
|
/* split the semantic of gnrc_netif_is_6ln() into two check functions */
|
|
/* is the interface performing 6Lo-ND as specified in RFC 6775. */
|
|
- bool gnrc_netif_is_6ln(const gnrc_netif_t *netif);
|
|
+ bool gnrc_netif_is_6lo(const gnrc_netif_t *netif);
|
|
+ static inline bool gnrc_netif_is_6ln(const gnrc_netif_t *netif
|
|
|
|
/* add function to start a shell and exit once EOF is reached. */
|
|
+ void shell_run_once(const shell_command_t *commands, char *line_buf, int len);
|
|
|
|
/* return reassembly buffer entry created or updated */
|
|
- void gnrc_sixlowpan_frag_rb_add(gnrc_netif_hdr_t *netif_hdr,
|
|
- gnrc_pktsnip_t *frag, size_t offset,
|
|
- unsigned page);
|
|
+ gnrc_sixlowpan_frag_rb_t *gnrc_sixlowpan_frag_rb_add(gnrc_netif_hdr_t *netif_hdr,
|
|
+ gnrc_pktsnip_t *frag,
|
|
+ size_t offset, unsigned page);
|
|
|
|
/* move gnrc_sixlowpan_frag_rb_dispatch_when_complete() out of
|
|
gnrc_sixlowpan_frag_rb_add(). The caller of the latter function is now
|
|
responsible to call it. */
|
|
+ int gnrc_sixlowpan_frag_rb_dispatch_when_complete(gnrc_sixlowpan_frag_rb_t *rbuf,
|
|
+ gnrc_netif_hdr_t *netif);
|
|
|
|
/* don't assume interface specifier is an int for splitting, add functions to
|
|
split int and string */
|
|
- * @return interface number or -1 if none specified
|
|
+ * @return string containing the interface specifier.
|
|
+ * @return NULL if no interface was specified.
|
|
+ */
|
|
- static inline int ipv6_addr_split_iface(char *addr_str)
|
|
+ static inline char *ipv6_addr_split_iface(char *addr_str)
|
|
|
|
- int ipv6_addr_split(char *addr_str, char separator, int _default);
|
|
+ int ipv6_addr_split_int(char *addr_str, char separator, int _default);
|
|
+ char *ipv6_addr_split_str(char *addr_str, char separator);
|
|
|
|
/* change address getter and setter functions to avoid byte order confusion */
|
|
- uint16_t at86rf2xx_get_addr_short(const at86rf2xx_t *dev);
|
|
+ void at86rf2xx_get_addr_short(const at86rf2xx_t *dev, network_uint16_t *addr);
|
|
|
|
- void at86rf2xx_set_addr_short(at86rf2xx_t *dev, uint16_t addr);
|
|
+ void at86rf2xx_set_addr_short(at86rf2xx_t *dev, const network_uint16_t *addr);
|
|
|
|
- uint64_t at86rf2xx_get_addr_long(const at86rf2xx_t *dev);
|
|
+ void at86rf2xx_get_addr_long(const at86rf2xx_t *dev, eui64_t *addr);
|
|
|
|
- void at86rf2xx_set_addr_long(at86rf2xx_t *dev, uint64_t addr);
|
|
+ void at86rf2xx_set_addr_long(at86rf2xx_t *dev, const eui64_t *addr);
|
|
```
|
|
|
|
Deprecations
|
|
============
|
|
|
|
Warnings
|
|
--------
|
|
|
|
- GNU make <4 will be removed after release 2020.01
|
|
- net/gcoap: gcoap_finish() will be removed after release 2020.04
|
|
- makefiles/vars.inc.mk: PORT_BSL & AVRDUDE_PORT will be removed after release
|
|
2020.04
|
|
- gnrc_nettest: will be removed after release 2020.07
|
|
|
|
Removals
|
|
--------
|
|
|
|
- sys/ubjson: remove module
|
|
- dist/tests/philip: removed unneeded and unused tests and code
|
|
- net/gcoap: remove gcoap_req_send2()
|
|
- cpu/efm32: remove EFM32_UART_MODES
|
|
- boards: remove RTT_NUMOF/RTC_NUMOF
|
|
|
|
Known issues (130)
|
|
==================
|
|
|
|
Networking related issues (45)
|
|
------------------------------
|
|
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
|
|
#12964: esp32: network devices pull in GNRC dependencies statically
|
|
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
|
|
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
|
|
#12858: KW2XRF: Broken network communication without netstats-l2
|
|
#12857: examples/gnrc_networking_mac broken on ATmega
|
|
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer
|
|
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
|
|
#12210: stale border router does not get replaced
|
|
#11988: ethos: fails to respond to first message.
|
|
#11860: send data with UDP at 10HZ, the program die
|
|
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
|
|
#11852: scan-build errors found during 2019.07 testing
|
|
#11795: gnrc_tftp: string functions on non-null terminated input
|
|
#11405: nrfmin: communication not possible after multicast ping with no interval
|
|
#11212: POSIX sockets + lwIP: bad file descriptor
|
|
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
|
|
#10969: net: netdev_driver_t::send() doc unclear
|
|
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
|
|
#10809: openthread: does not build on current Arch
|
|
#10410: Missing drop implementations in netdev_driver_t::recv
|
|
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
|
|
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address
|
|
#10370: gomach: Resetting netif with cli doesn't return
|
|
#10338: xbee: setting PAN ID sometimes fails
|
|
#9709: examples: failed assertion in dtls-echo example
|
|
#9656: gnrc/netif: various problems after resetting interface a second time
|
|
#8779: CC2538 RF overlapping PIN usage
|
|
#8752: mrf24j40: does not link for examples/default
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#8242: at86rf2xx: Dead lock when sending while receiving
|
|
#8199: gcoap example request on tap I/F fails with NIB issue
|
|
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
|
|
configured prefix
|
|
#8130: gcoap: can't build with network stacks other than GNRC
|
|
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#7474: 6lo gnrc fragmentation expects driver to block on TX
|
|
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
|
|
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
|
|
chars
|
|
#5748: gnrc: nodes crashing with too small packet buffer
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
|
|
|
|
Timer related issues (17)
|
|
-------------------------
|
|
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
|
|
#12909: Bug: Unexpected behavior with xtimer_periodic_wakeup() for large periods
|
|
on Nucleo-f401re
|
|
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
|
|
#11149: xtimer: hang on xtimer_spin_until (corner case)
|
|
#10545: periph_timer: systematic proportional error in timer_set
|
|
#10523: saml21 system time vs rtc
|
|
#10510: xtimer_set_msg: crash when using same message for 2 timers
|
|
#10073: xtimer_usleep wrong delay time
|
|
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time.
|
|
#9052: misc issues with tests/trickle
|
|
#9049: xtimer mis-scaling with long sleep times
|
|
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
|
|
#8251: telosb: xtimer config wrong when running on a tmote sky
|
|
#7347: xtimer_usleep stuck for small values
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#6442: cpu/native: timer interrupt issue
|
|
#6052: tests: xtimer_drift gets stuck on native
|
|
|
|
|
|
Drivers related issues (12)
|
|
---------------------------
|
|
#12445: driver/hts221: Temperature and Humidity readings incorrect
|
|
#12371: fail to send data to can bus
|
|
#12370: Undocumented uint8_t assumptions in nrf52840 peripherals
|
|
#12045: floats and doubles being used all over the place.
|
|
#12037: cpu/sam0_common: i2c baudrate calculation fails if CLOCK_CORECLOCK > 51
|
|
MHz
|
|
#11388: SD card initialization: timeouts effectively blocking
|
|
#11104: STM32: SPI clock not returning to idle state and generating additional
|
|
clock cycles
|
|
#11026: Recent changes effectively killed modular board designs
|
|
#9419: cpu/msp430: GPIO driver doesn't work properly
|
|
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
|
|
#8045: stm32/periph/uart: extra byte transmitted on first transmission
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
|
|
|
|
Native related issues (3)
|
|
-------------------------
|
|
#11472: Warnings from objcopy and size (binutils 2.32)
|
|
#5796: native: tlsf: early malloc will lead to a crash
|
|
#495: native not float safe
|
|
|
|
|
|
Other platforms related issues (16)
|
|
-----------------------------------
|
|
#13267: Failing tests on MSP430 (z1)
|
|
#13104: boards/hifive1: flashing issue
|
|
#13086: Failing tests on FE310 (Hifive1b)
|
|
#12854: `pm_reboot()` not working on AVR when compiled with `LTO=1`
|
|
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
|
|
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
|
|
#12168: pkg/libb2: blake2s doesn't work on AVR
|
|
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
|
|
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
|
|
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
|
|
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
|
|
(not previous)
|
|
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
|
|
boards
|
|
#7753: pic32-wifire: race-condition when linking in concurrent build
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
|
|
CS
|
|
#5774: cpu: cortexm_common: context switching code breaks when compiling with
|
|
LTO
|
|
#4954: chronos: compiling with -O0 breaks
|
|
|
|
|
|
Build system related issues (9)
|
|
-------------------------------
|
|
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
|
|
#10850: Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation
|
|
#9913: Build dependencies - processing order issues
|
|
#9742: `buildtest` uses wrong build directory
|
|
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
|
|
image
|
|
#8913: make: use of immediate value of variables before they have their final
|
|
value
|
|
#8122: doxygen: riot.css modified by 'make doc'
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
|
|
|
|
Other issues (28)
|
|
-----------------
|
|
#13265: tests: compilation of some test applications fail with NDEBUG
|
|
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
|
|
esp32-wroom-32
|
|
#13120: tests: broken with stdio_rtt if auto_init is disabled
|
|
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
|
|
shell after flashing with J-Link
|
|
#13015: Quickest start does not build with vagrant
|
|
#12732: tests: some tests don't work with `newlib` lock functions.
|
|
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
|
|
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
|
|
#12105: [TRACKING] sys/shell refactoring.
|
|
#11885: arm7: printf() with float/double not working
|
|
#11243: sys/riotboot: documentation issues
|
|
#10751: Possible memset optimized out in crypto code
|
|
#10731: nanocoap: incomplete response to /.well-known/core request
|
|
#10639: sys/stdio_uart: dropped data when received at once
|
|
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
|
|
10
|
|
#9882: sys/tsrb is not thread safe on AVR
|
|
#9518: periph/i2c: tracking bugs and untested acks
|
|
#9371: assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope
|
|
#8589: Why using -F in avrdude?
|
|
#8436: Kinetis PhyNode: failed to flash binary > 256K
|
|
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
|
|
#6533: tests/lwip target board for python test is hardcoded to native
|
|
#5769: Possible problem in scheduler
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#4488: Making the newlib thread-safe
|
|
#3256: make: Setting constants on compile time doesn't really set them
|
|
everywhere
|
|
#2346: Tracker: Reduce scope on unintended COMMON variables
|
|
|
|
Fixed Issues since the last release (2019.10) (29)
|
|
=================================================
|
|
|
|
#13121: tinydtls package has undeclared dependencies
|
|
#13109: fe310: xtimer hardfault
|
|
#13083: cpu/atmegaxxxx: i2c driver not fully implemented?
|
|
#13069: BrokenPipeError when flashing bluepill with BMP
|
|
#13055: PKG_SOURCE_LOCAL override is broken
|
|
#13030: pkg: always rebuilt when patches are applied
|
|
#12920: kconfiglib: only pull when needed
|
|
#12905: Potential buffer overflow in dtls-sock
|
|
#12859: lwip: multiple sock_udp_send() return ENOMEM. (possible memory leak?)
|
|
#12853: sys\net\gnrc\link_layer\gomach: cast error with avg-gcc
|
|
#12834: make: piping STDOUT updates `riotbuild.h.in` and leads to full rebuild
|
|
#12807: make: rebuild doesn't apply to header files
|
|
#12700: Cannot delete files in SD card. And I can't read more bytes than I ever
|
|
wrote in tests/pkg_fatfs.
|
|
#12652: samr21-xpro: Can't use `make debug` anymore
|
|
#12578: ATmega256RFR2 / ATmega128RFA1: `periph/cpu_id` provided without HW
|
|
support
|
|
#12384: CDC-ACM (serial console) loses characters
|
|
#12286: Some tests are failing on STM32F7
|
|
#12243: ESP32 programming using BUILD_IN_DOCKER still expects esp-idf toolchain
|
|
on host
|
|
#12003: bootloaders|tests/riotboot: broken with BUILD_IN_DOCKER and wrong
|
|
flashfile
|
|
#11941: cpu/esp32: instabilities in multiheap memory management
|
|
#11908: cpu/lpc2387: periph_rtc completely broken
|
|
#11423: cpu/kinetis: features provided not properly defined according to series
|
|
#8388: xtimer_periodic_wakeup is not interrupt safe
|
|
#8107: crypto/ccm: bugs in the implementation of CCM mode
|
|
#8052: mips: several issues
|
|
#5338: xtimer: xtimer_now() not ISR safe
|
|
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?
|
|
#3366: periph/i2c: handle NACK
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
RIOT-2019.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 2019.10 release includes:
|
|
|
|
- initial support for SUIT firmware updates
|
|
- USB CDC-ACM serial communication
|
|
- complete rewrite of TI CC110x radio driver
|
|
- initial support for IPv6 fragmentation
|
|
- DTLS support in the sock networking stack
|
|
- complete blockwise messaging for gcoap and nanocoap
|
|
- as always, bug fixes and documentation updates
|
|
|
|
About 460 pull requests, composed of 950 commits, have been merged since the
|
|
last release, and about 60 issues have been solved. 57 people contributed with
|
|
code in 105 days. Approximately 2000 files have been touched with 129000
|
|
insertions and 25000 deletions.
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
System libraries
|
|
----------------
|
|
+ sys/arduino: Added millis()
|
|
* sys/arduino: make ADC feature optional
|
|
+ sys/fmt: Added submodule fmt_table for printing tables
|
|
+ sys/log: add module for colorized logging
|
|
+ sys/riotboot: add initial image digest verification
|
|
* riotboot: define if building the bootloader
|
|
+ sys/shell: add heap command
|
|
+ sys/shell: cancel current line on CTRL-C.
|
|
* shell/sc_gnrc_ipv6_nib: list and edit authoritative border router (ABR) list
|
|
+ sys/suit: initial support for SUIT firmware updates
|
|
* sys: add schedstatistics module to remove dependency on xtimer
|
|
* can: use memarray for pkt and router allocation
|
|
+ sys: single interrupt handler thread for interrupts in modules with blocking
|
|
functions (but likely to be removed -- see Deprecations section below)
|
|
|
|
Networking
|
|
----------
|
|
+ sys: Add (CoAP) Link Format module
|
|
+ sys: add credman (D)TLS credential management module
|
|
+ sys: new sock submodule for DTLS
|
|
+ gnrc_ipv6_ext_frag: Initial import of IPv6 fragmentation and reassembly
|
|
+ gnrc_netif: allow for wait of minimum time between sends
|
|
* gnrc_netif: add netif setter (part of refactoring to a pointer-based
|
|
approach)
|
|
* gnrc_sixlowpan_frag_vrb: add gnrc_sixlowpan_frag_vrb_from_route()
|
|
+ gnrc_sixlowpan_frag_rb: move reassembly buffer functions to their own module
|
|
+ gcoap: add Blockwise support
|
|
* nanocoap: complete Blockwise support
|
|
+ nanocoap: add coap_opt_get_next() to iterate over options
|
|
+ nanocoap: add coap_opt_get_opaque() to retrieve option bytes
|
|
* gnrc_tcp: several small improvements
|
|
|
|
Packages
|
|
--------
|
|
* ccn-lite: version bump
|
|
* pkg/libcose: bump version and update crypto support
|
|
* nimble: adapt to nrf51 family
|
|
+ nimble: add IP-over-BLE support via netif/GNRC
|
|
* nimble: bump version to 1.2.0
|
|
* nimble/netif: set max conn explicitly
|
|
* semtech-loramac: add uplink_counter get/set functions
|
|
+ Cifra: add AES crypto library
|
|
* cayenne-lpp: bump version to 0.1.1
|
|
+ wolfSSL pkg addition with examples
|
|
|
|
Boards
|
|
------
|
|
+ board: add support for SAMR34-XPRO
|
|
+ boards/arduino-mkrwan1300: add initial support (without LoRa)
|
|
* boards: Split off 128KiB version of bl*pill
|
|
+ boards/doc: Add a guide to find physical board pins
|
|
+ boards: Initial support for board HiFive1B
|
|
- boards/mips-malta: remove board.
|
|
+ boards/nrf52: introduce shared dependencies in common/nrf52 and update
|
|
boards
|
|
* boards/nrf52832-mdk: enable I2C and use default configuration
|
|
* board/nucleo-l031k6: Add i2c to periph_conf
|
|
* board/nucleo-l432kc: Implementing I2C for board
|
|
* boards: move CPU/CPU_MODEL definition to Makefile.features
|
|
+ boards/p-l496g-cell02: add support
|
|
- boards: Remove support for the Jiminy-Mega256RFR2
|
|
* boards/sam0: refactor ADC_0 into plain ADC
|
|
* boards/slwstk6000b-*: split one board for each module
|
|
* boards/slwstk6000b: move CPU definition to Makefile.features
|
|
+ boards/stm32f723e-disco: add initial support
|
|
* boards/stm32: introduce common timer configurations and use them where
|
|
possible
|
|
+ boards/stm32l0538-disco: add initial support
|
|
* pic32-wifire: add support for flashing with pic32prog
|
|
|
|
CPU
|
|
---
|
|
+ cpu/esp32: lwIP netdev
|
|
* cpu/esp*: various improvements
|
|
* cpu/kinetis: enable HWRNG for k64f
|
|
- cpu/mips32r2_generic: remove cpu.
|
|
* cpu: Moved stdio_init() prior to periph_init() for ARM targets
|
|
* cpu/nrf5x: declare radio_nrfble feat for all nrfs
|
|
+ cpu/nrf5x: implement wdt peripheral driver
|
|
+ cpu/sam0_common: add hwrng driver
|
|
* cpu/sam0_common/gpio: don't hard-code number of ports
|
|
* cpu/sam0: update doc.txt with new MCU families
|
|
* cpu/saml21: Make Low-Power SRAM available to programs
|
|
+ cpu/stm32_common: add watchdog for stm32
|
|
* stm32-common/spi: allow custom pin modes on spi to minimize power
|
|
consumption
|
|
* cpu/stm32f(2|4|7): add riotboot requirements
|
|
* cpu/stm32l1: optimize power consumption
|
|
* stm32l1/vendor: update vendor files to v2.3.0
|
|
* sam0: allow flashing with JLinkExe
|
|
+ sam0: Implement watchdog driver
|
|
* cpu/samr30: update vendor files using ASF 3.35.1
|
|
+ cpu/efm32: provide periph_uart_mode
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ drivers: add mtd wrapper for periph_flashpage
|
|
+ drivers/cc110x: Complete rewrite from scratch, and detailed documentation
|
|
* drivers/include/periph/eeprom: Changed uint8_t* to void* in API
|
|
* drivers/periph/i2c: Updated i2c_release() to return void
|
|
+ drivers/ph_oem: support for Atlas Scientific pH OEM sensor
|
|
+ drivers: support for NXP PCA9685 I2C 16-channel, 12-bit PWM controller
|
|
+ usbus: Add CDC-ACM (Serial console) function
|
|
* periph/timer: Fix return codes of timer API
|
|
+ can: add ncv7356 SW transceiver driver
|
|
+ drivers/lis2dh12: add I2C mode
|
|
+ drivers/periph: add doc on power management aspects
|
|
* drivers/mrf24j40: add pseudomodules for MRF24J40MA/B/C/D/E
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
* dist/tools/pyterm: drop loglevel from output
|
|
* make: docker: delegate bind mounts to the containers
|
|
* Makefile.base: implement relative path linking without 'realpath'
|
|
* Makefile.base: use thin static archives.
|
|
* Makefile.include: add flash-only as dependency of term
|
|
* Makefile.include: do not build HEXFILE by default anymore
|
|
* Makefile.include: require make version 4.
|
|
* makefiles: add support for sysfs gpio debug adapter
|
|
* Makefiles: add support to generate both `.hex` and `.bin` file and add
|
|
FLASHFILE variable
|
|
* makefiles/docker.inc.mk: various improvements
|
|
* makefiles/murdock.inc.mk: change policy to run tests by default
|
|
* make: introduce $(CLEAN)
|
|
+ murdock: introduce 'TEST_ON_CI_BLACKLIST'
|
|
* toolchain/cflags: enable dwarf compression (save 50% HDD)
|
|
* edbg: verify before flash
|
|
+ ci: add codespell check script for tracking typos
|
|
+ Makefile.include: add cleanterm target and use it for tests
|
|
* arduino/sketches: build sketches as a module
|
|
+ github: use stale-bot to mark and close PRs without activity
|
|
|
|
Testing
|
|
-------
|
|
+ tests: add distinct test app for nrfmin driver
|
|
+ tests: add Nordic SoftDevice test app
|
|
* tests/gnrc_ndp: enhance coverage
|
|
* tests/lua_loader: run the test in CI
|
|
* tests/mcuboot: handle building in docker
|
|
* tests/pkg_u8g2: run the test in CI
|
|
* tests: provide test case for malformed IEEE 802.15.4 packets
|
|
* tests/pthread_rwlock: run the test in CI
|
|
* tests: re-enable utf-8 tests on native
|
|
+ tests/riotboot: add automatic test
|
|
+ tests/sys_crypto: add RFC3610 and NIST SP 800-38C tests
|
|
* tests/test_tools: add a test for the testing tools environment
|
|
* tools/compile_and_test_for_board: allow setting the flash targets
|
|
* tests/gnrc_tcp: provide regression tests for fixed issues
|
|
|
|
|
|
API Changes
|
|
========================
|
|
|
|
```
|
|
/* no error handling possible, so no need to return a value */
|
|
- int i2c_release(i2c_t dev)
|
|
+ void i2c_release(i2c_t dev)
|
|
|
|
/* return 0 on success, rather than 1; so like timer_init() */
|
|
int timer_set(tim_t dev, int channel, unsigned int timeout)
|
|
int timer_set_absolute(tim_t dev, int channel, unsigned int value)
|
|
int timer_clear(tim_t dev, int channel)
|
|
|
|
/* implementations already cast the argument to uint8_t* internally, so not
|
|
a significant semantic change */
|
|
- size_t eeprom_read(uint32_t pos, uint8_t *data, size_t len)
|
|
+ size_t eeprom_read(uint32_t pos, void *data, size_t len)
|
|
|
|
- size_t eeprom_write(uint32_t pos, const uint8_t *data, size_t len)
|
|
+ size_t eeprom_write(uint32_t pos, const void *data, size_t len)
|
|
|
|
/* now returns CIPHER_ERR_INVALID_KEY_SIZE on invalid keySize */
|
|
int aes_init(cipher_context_t *context, const uint8_t *key, uint8_t keySize)
|
|
|
|
/* add setter for netif of interface header */
|
|
+ void gnrc_netif_hdr_set_netif(gnrc_netif_hdr_t *hdr, const gnrc_netif_t *netif)
|
|
|
|
```
|
|
|
|
Deprecations
|
|
========================
|
|
|
|
Warnings
|
|
--------
|
|
net/emb6
|
|
net/nhdp
|
|
pkg/oonf_api
|
|
|
|
As the release was finalized, rough consensus was reached on a system event
|
|
thread handler (#12474) that likely will remove the interrupt handler thread
|
|
(#10555) just introduced with this release.
|
|
|
|
Removals
|
|
--------
|
|
net/coap: remove deprecated COAP_CT_... defines
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Networking related issues
|
|
-------------------------
|
|
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
|
|
packet buffer
|
|
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
|
|
#12210: stale border router does not get replaced
|
|
#11988: ethos: fails to respond to first message.
|
|
#11860: send data with UDP at 10HZ, the program die
|
|
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
|
|
#11852: scan-build errors found during 2019.07 testing
|
|
#11405: nrfmin: communication not possible after multicast ping with no interval
|
|
#11212: POSIX sockets + lwIP: bad file descriptor
|
|
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
|
|
#10969: net: netdev_driver_t::send() doc unclear
|
|
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
|
|
#10809: openthread: does not build on current Arch
|
|
#10410: Missing drop implementations in netdev_driver_t::recv
|
|
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
|
|
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address
|
|
#10370: gomach: Resetting netif with cli doesn't return
|
|
#10338: xbee: setting PAN ID sometimes fails
|
|
#9709: examples: failed assertion in dtls-echo example
|
|
#9656: gnrc/netif: various problems after resetting interface a second time
|
|
#8779: CC2538 RF overlapping PIN usage
|
|
#8752: mrf24j40: does not link for examples/default
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#8242: at86rf2xx: Dead lock when sending while receiving
|
|
#8199: gcoap example request on tap I/F fails with NIB issue
|
|
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
|
|
configured prefix
|
|
#8130: gcoap: can't build with network stacks other than GNRC
|
|
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#7474: 6lo gnrc fragmentation expects driver to block on TX
|
|
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
|
|
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
|
|
chars
|
|
#5748: gnrc: nodes crashing with too small packet buffer
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
|
|
Timer related issues
|
|
--------------------
|
|
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
|
|
#10545: periph_timer: systematic proportional error in timer_set
|
|
#10523: saml21 system time vs rtc
|
|
#10510: xtimer_set_msg: crash when using same message for 2 timers
|
|
#10073: xtimer_usleep wrong delay time
|
|
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time.
|
|
#9052: misc issues with tests/trickle
|
|
#9049: xtimer mis-scaling with long sleep times
|
|
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
|
|
#8388: xtimer_periodic_wakeup is not interrupt safe
|
|
#8251: telosb: xtimer config wrong when running on a tmote sky
|
|
#7347: xtimer_usleep stuck for small values
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#6442: cpu/native: timer interrupt issue
|
|
#6052: tests: xtimer_drift gets stuck
|
|
#5338: xtimer: xtimer_now() not ISR safe
|
|
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?
|
|
|
|
Drivers related issues
|
|
----------------------
|
|
#12445: driver/hts221: Temperature and Humidity readings incorrect
|
|
#12371: fail to send data to can bus
|
|
#12370: Undocumented uint8_t assumptions in nrf52840 peripherals
|
|
#12045: floats and doubles being used all over the place.
|
|
#12037: cpu/sam0_common: i2c baudrate calculation fails if CLOCK_CORECLOCK > 51
|
|
MHz
|
|
#11388: SD card initialization: timeouts effectively blocking
|
|
#11104: STM32: SPI clock not returning to idle state and generating additional
|
|
clock cycles
|
|
#11026: Recent changes effectively killed modular board designs
|
|
#9419: cpu/msp430: GPIO driver doesn't work properly
|
|
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
|
|
#8045: stm32/periph/uart: extra byte transmitted on first transmission
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
#3366: periph/i2c: handle NACK
|
|
|
|
Native related issues
|
|
---------------------
|
|
#11472: Warnings from objcopy and size (binutils 2.32)
|
|
#5796: native: tlsf: early malloc will lead to a crash
|
|
#495: native not float safe
|
|
|
|
Other platforms related issues
|
|
------------------------------
|
|
#12286: Some tests are failing on STM32F7
|
|
#12243: ESP32 programming using BUILD_IN_DOCKER still expects esp-idf toolchain
|
|
on host
|
|
#12168: pkg/libb2: blake2s doesn't work on AVR
|
|
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
|
|
#11941: cpu/esp32: instabilities in multiheap memory management
|
|
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
|
|
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
|
|
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
|
|
(not previous)
|
|
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
|
|
boards
|
|
#8052: mips: several issues
|
|
#7753: pic32-wifire: race-condition when linking in concurrent build
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
|
|
CS
|
|
#5774: cpu: cortexm_common: context switching code breaks when compiling with
|
|
LTO
|
|
#4954: chronos: compiling with -O0 breaks
|
|
|
|
Build system related issues
|
|
---------------------------
|
|
#12003: bootloaders|tests/riotboot: broken with BUILD_IN_DOCKER and wrong
|
|
flashfile
|
|
#10850: Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation
|
|
#9913: Build dependencies - processing order issues
|
|
#9742: `buildtest` uses wrong build directory
|
|
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
|
|
image
|
|
#8913: make: use of immediate value of variables before they have their final
|
|
value
|
|
#8122: doxygen: riot.css modified by 'make doc'
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
|
|
Other issues
|
|
------------
|
|
-none- tests/pkg_fatfs: vol_idx print overflow on large negative value
|
|
#12384: CDC-ACM (serial console) loses characters
|
|
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
|
|
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
|
|
#12105: [TRACKING] sys/shell refactoring.
|
|
#11908: cpu/lpc2387: periph_rtc completely broken
|
|
#11885: arm7: printf() with float/double not working
|
|
#11423: cpu/kinetis: features provided not properly defined according to series
|
|
#11243: sys/riotboot: documentation issues
|
|
#10751: Possible memset optimized out in crypto code
|
|
#10731: nanocoap: incomplete response to /.well-known/core request
|
|
#10639: sys/stdio_uart: dropped data when received at once
|
|
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
|
|
10
|
|
#9882: sys/tsrb is not thread safe on AVR
|
|
#9518: periph/i2c: tracking bugs and untested acks
|
|
#9371: assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope
|
|
#8589: Why using -F in avrdude?
|
|
#8436: Kinetis PhyNode: failed to flash binary > 256K
|
|
#8107: crypto/ccm: bugs in the implementation of CCM mode
|
|
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
|
|
#6533: tests/lwip target board for python test is hardcoded to native
|
|
#5769: Possible problem in scheduler
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#4488: Making the newlib thread-safe
|
|
#3256: make: Setting constants on compile time doesn't really set them
|
|
everywhere
|
|
#2346: Tracker: Reduce scope on unintended COMMON variables
|
|
|
|
Fixed Issues from the last release (2019.07)
|
|
============================================
|
|
|
|
#12373: Leds not working on some stm32 based boards
|
|
#12311: riotboot: irq not enabled after jumping to slot
|
|
#12258: Rebootloop when using esp_now on the ESP32
|
|
#12247: esp8266: make flash fails
|
|
#12244: Flashing on OSX uses /bin/sh instead of bash, resulting in problems with
|
|
echo -n
|
|
#12219: genconfigheader doesn't like defines with spaces
|
|
#12213: sys/base64: cannot handle zero length buffers
|
|
#12138: boards/common/nucleo32/include/arduino_pinmap.h not correct/complete
|
|
#12125: i2c_scan not working on ESP32
|
|
#12115: nrfmin: driver not included in buildtest (anymore)
|
|
#12110: fe310: handle_trap only handles interrupts
|
|
#12090: boards/lobaro-lorabox: blindly sets TERMFLAGS
|
|
#12089: boards/msba2: blindly sets TERMFLAGS
|
|
#12086: gnrc_tcp: option parsing doesn't terminate on all inputs, potential DOS
|
|
#12081: gnrc_tcp leaks memory when gnrc_netapi_send fails
|
|
#12058: travis: flake8 not running
|
|
#12002: usb: fails to respond ro ping when used with 802.15.4
|
|
#11980: Sending a packet to the Multicast Address with multiple interfaces
|
|
causes Segmentation fault
|
|
#11978: Loramac Example Kernel Panic
|
|
#11948: examples: ccn-lite-relay example broken
|
|
#11913: drivers/sx127x: Enforces reset pin to be defined
|
|
#11910: TCP lwIP Error Connecting Sock Problem on ESP32
|
|
#11842: buildtest with BUILD_IN_DOCKER hides host toolchain errors
|
|
#11820: stm32l152re: hard-fault unless power-cycled after flash, or depending on
|
|
optimization
|
|
#11763: spi_transfer_reg behavior doesn't follow doc
|
|
#11691: murdock and tests using `utf-8` characters
|
|
#11631: examples / tests: return value of `gnrc_netif_hdr_build()` not checked
|
|
in udp.c
|
|
#11603: NATIVEINCLUDES Does not include USEMODULE_INCLUDES from
|
|
log_printfnoformat
|
|
#11519: shell/ping6: Incorrect handling of unexpected pongs
|
|
#11499: rn2xx3_cmd_append - Not terminating strings
|
|
#11447: frdm-k64f: hwrng support broken, applications using RNG crash
|
|
#11390: gnrc networking crashes on nRF51dk
|
|
#10878: nrfmin can get stuck and never reach RX (while TX works)
|
|
#10842: Preemption of malloc on AVR
|
|
#10459: make: `make clean all` does not make sense and should be removed
|
|
#10351: sam0_common/periph/rtt: Interrupt flags are not correctly cleared
|
|
#10345: frdm-k22f cannot flash after certain firmware flashed
|
|
#10175: No error returned from aes_init when a key with a bad size is used
|
|
#10047: Make warns to expect errors when disabling optional modules
|
|
#9589: application/Makefile: environment settings after inclusion of
|
|
Makefile.include
|
|
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAM
|
|
R21
|
|
#8975: dist/tools/openocd: cannot debug some stlink based boards
|
|
#8664: pkg: doxygen documentation is not fully processed
|
|
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
|
|
#8028: diskio: failed assertion in send_cmd() on lpc2387
|
|
#7918: Usage of GCC extension for binary constants
|
|
#7875: "Minor" compiling issues found by clang
|
|
#7206: native: race-condition in IPC
|
|
#7020: isr_rfcoreerrors while pinging between CC2538DKs
|
|
#5848: arduino: Race condition in sys/arduino/Makefile.include
|
|
#5776: make: Predefining CFLAGS are parsed weirdly
|
|
#5218: some use of asm keyword might be missing volatile
|
|
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
|
|
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
|
|
#4490: pkg: tlsf: initialize memory pool early
|
|
#4470: Hard fault triggered depending on power supply?
|
|
#2175: ubjson: valgrind registers "Invalid write of size 4" in unittests
|
|
#1891: newlib-nano: Printf formatting does not work properly for some numeric
|
|
types
|
|
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
RIOT-2019.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 2019.07 release includes a number of new features including many new
|
|
boards and cpu, riotboot added to many new and old boards, USB is now available,
|
|
BLE improvements, Ethernet on stm32 platforms, as well as many bug fixes and
|
|
documentation updates. Testing has also improved with both On-Target Testing
|
|
increasing and now Hardware Assisted Automated Tests being run.
|
|
|
|
About 300 pull requests with about 659 commits have been merged since the last
|
|
release and about 50 issues have been solved. 26 people contributed with code
|
|
in 106 days. Approximately 1377 files have been touched with 181993 insertions
|
|
and 19668 deletions.
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
System libraries
|
|
----------------
|
|
+ Add OCB encryption mode
|
|
+ sys/shell: add loramac shell command
|
|
* Fletcher16: extend with multi-part functions
|
|
+ USBUS: Initial work towards an USB stack
|
|
+ usbus: Initial simple auto init structure
|
|
* sys: make uart_stdio RX optional
|
|
+ sys/event: add event_wait_until()
|
|
+ sys/bluetil: add bluetil_addr_from_str()
|
|
+ usbus: Add CDC-ECM (Ethernet Control Model) function
|
|
* usbus: simplify adding entry to list
|
|
* sys/stdio_ethos: replace USE_ETHOS_FOR_STDIO by stdio_ethos pseudomodule
|
|
|
|
Networking
|
|
----------
|
|
* gnrc_ipv6_nib: add address from netif to address validation timer
|
|
+ netdev_ieee802154: add txpower and page
|
|
+ net/lorawan/hdr: add lorawan header helpers
|
|
+ ble/nimble: add support for built-in IPSS service
|
|
* pkg/semtech-loramac: rework interaction with the MAC
|
|
* pkg/semtech-loramac: provide basic persistence for MAC state
|
|
* RPL: API update suggestions
|
|
+ ipv6_ext: add fragmentation extension definitions
|
|
* net/sock_util: Accept NULL pointers in urlsplit
|
|
+ sys/net: add netopt options for lorawan
|
|
* gnrc_tftp: Fix out-of-bounds memory access when comparing modes
|
|
- gnrc_pktbuf: remove gnrc_pktbuf_duplicate_upto
|
|
- gnrc_ipv6: remove obsolete and harmful reception code
|
|
* gnrc_tftp: set port on server init
|
|
+ ble/softdevice: add ble_nordic_softdevice feature
|
|
* net/mqttsn: fix client ID length to comply to the standard
|
|
+ gnrc_tftp: Add minimum packet length check
|
|
|
|
Packages
|
|
--------
|
|
* pkg/monocypher: bump version to 2.0.5
|
|
* ble/nimble: bump version to 9d4bda2
|
|
* openthread: update to release 20180926
|
|
* minmea: bump version to current master
|
|
+ nanocbor: Initial support for the nanocbor package
|
|
* pkg/lua: Make the module searchers conform to the API
|
|
|
|
Boards
|
|
------
|
|
+ boards/stm32l0538-disco: add initial support
|
|
+ boards/nucleo-l4r5zi: initial basic support
|
|
+ boards/particle-{xenon,argon,boron}: add initial support
|
|
* boards/kw41z: add common configuration and use it with existing
|
|
kw41z boards
|
|
+ added SPI support for Nucleo-F767ZI
|
|
+ boards: Add support for the Arduino-Leonardo
|
|
* boards/nucleof7*: SPI and refactoring
|
|
+ boards/stm32: introduce and use new common rtt configuration header
|
|
+ boards/stm32l0/l4: add rtt feature
|
|
+ boards: add support for i-nucleo-lrwan1 (Arduino-like shield)
|
|
+ boards/nrf52840-mdk: added I2C config
|
|
+ boards/lsn50: add support for Dragino LSN50 LoRa Sensor Node
|
|
* boards/stm32l0: introduce common clock configuration and apply it to
|
|
related boards
|
|
* boards/b-l072z-lrwan1: use STM32 common i2C configuration
|
|
+ Add usbdev feature to Sodaq boards
|
|
+ boards/pba-d-01-kw2x: add riotboot support
|
|
+ sensebox: add usbdev feature
|
|
+ boards/stm32f429i-disc1: add i2c configuration
|
|
+ boards/nucleo-l476rg: add riotboot
|
|
+ boards/same54-xpro: add riotboot support
|
|
+ boards: Add FLASHFILE support
|
|
+ boards/nucleo-l476rg: Add DMA support
|
|
+ nrf52: Add suspend/resume detection to usbdev
|
|
+ nrf5x: Add UART modecfg feature implementation
|
|
+ boards/stm32f3: add support for riotboot feature
|
|
+ boards/lobaro-lorabox: add sx1272 radio driver dependency
|
|
to netdev_default
|
|
+ boards/stm32l4: add riotboot support
|
|
+ boards/microbit: add QEMU emulation
|
|
+ boards/frdm-kw41z-k64f: add riotboot
|
|
* boards/sltb001a: reset before flashing
|
|
|
|
CPU
|
|
---
|
|
* cpu/esp8266: added/changed helper functions
|
|
+ cpu/cc2538: Add periph_uart_mode implementation
|
|
* saml1x: enable pm_layered by default
|
|
+ cpu/cc26x0: implement uart_mode()
|
|
+ cpu/sam0: add support for SAMD5x/SAME5x
|
|
+ sam0_common: add uart modecfg support
|
|
+ cpu/stm32f3: add support for flashpage and flashpage_raw
|
|
* cpu/stm32l{1,4}: refactor flashpage numof macros
|
|
* cpu/stm32: optimize stop mode for stm32f*
|
|
* cpu/nrf5x_common: map hwrng to SoC library if SoftDevice is present
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ devfs: add /dev/urandom and /dev/hwrng
|
|
* drivers/mrf24j40 : support of NETOPT_LAST_ED_LEVEL
|
|
+ drivers/mrf24j40: add external PA/LNA control on MC/MD/ME devices
|
|
* drivers/at86rf2xx: enable NETOPT_RX_END_IRQ and fix RSSI values
|
|
* drivers/adt7310: Replace binary literal with hex literal
|
|
+ drivers/ds75lx: add basic driver for temperature sensor
|
|
+ drivers/include: add header definition for wdt
|
|
+ drivers/at: Add 'at_recv_bytes_until_string' function
|
|
+ sx127x: add several NETOPT for GNRC LoRaWAN
|
|
* drivers/sx127x: fix device reset
|
|
+ drivers: stm32 eth peripheral driver
|
|
+ drivers/periph/gpio_util: add gpio_util_shiftin()
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
* makefiles/docker: export BOARDS
|
|
+ makefiles: add bootloaders to the list of applications
|
|
* Makefile.include: allow overwriting flash-recipe
|
|
* dist/tools/buildsystem_sanity_check: add an export variable check
|
|
* sys/Makefile.include: include riotboot headers when
|
|
FEATURES_REQUIRED=riotboot
|
|
+ make: add print-versions helper target
|
|
+ make: add LOG_LEVEL to overridable variables
|
|
* riotboot/Makefile.include: increase RIOTBOOT_HDR_LEN for ARMv7*-M
|
|
* dist/tools/build_system_sanity_check: BUG fix errors being ignored
|
|
* boards/common: use Makefile.features
|
|
+ make: add termdeps target
|
|
* periph_common: add as dependency to periph drivers
|
|
+ nrf52: Add USB peripheral driver
|
|
+ makefiles/boards.inc.mk: list boards variables
|
|
+ makefiles/app_dirs.inc.mk: target to list supported applications/boards
|
|
+ Makefile.features: add a common file for the features parsing
|
|
+ Makefile.features: add declarative FEATURES_ variables definition
|
|
+ makefiles/utils/variables: add functions to help managing variables
|
|
* Migrate all boards to define FLASHFILE
|
|
* tools/openocd.sh: try to probe the board for real flash address
|
|
|
|
Testing
|
|
-------
|
|
* tests/periph_flashpage: add RWWEE automatic test if hw supports it
|
|
* tests/pthread_tls: allow negative key values
|
|
* tests/gnrc_udp: include `gnrc_pktbuf_cmd` per default
|
|
+ tests/periph_hwrng: add automated python test
|
|
* tests/periph_timer: include kw41z boards in low-power timer boards
|
|
* tests/pkg_c25519: increase timeout for arduino-mega2560
|
|
+ tests/xtimer_usleep: fail with negative offsets
|
|
+ unittests: add tsrb tests
|
|
+ tests/stdin: add non regression test for stdin module
|
|
+ tests/xtimer_mutex_lock_timeout: add simple case test
|
|
+ Add NimBLE heart rate sensor example (GATT notifications)
|
|
* tests/driver_rn2xx3: fix invalid element index for txmode
|
|
* tests/pkg_semtech-loramac: don't init the mac from main
|
|
* tests/devfs: move tests-devfs out of unittests
|
|
+ examples/lorawan: fix semtech_loramac_send TX ret code
|
|
* tests/unittests: split remaining packages tests to different test
|
|
directory
|
|
|
|
API Changes
|
|
========================
|
|
- uart_stdio RX is now optional
|
|
- CPU_MODEL declared in boards/Makefile.features
|
|
|
|
|
|
```c
|
|
- void isrpipe_init(isrpipe_t *isrpipe, char *buf, size_t bufsize);
|
|
+ void isrpipe_init(isrpipe_t *isrpipe, uint8_t *buf, size_t bufsize);
|
|
|
|
- int isrpipe_write_one(isrpipe_t *isrpipe, char c);
|
|
+ int isrpipe_write_one(isrpipe_t *isrpipe, uint8_t c);
|
|
|
|
- int isrpipe_read(isrpipe_t *isrpipe, char *buf, size_t count);
|
|
+ int isrpipe_read(isrpipe_t *isrpipe, uint8_t *buf, size_t count);
|
|
|
|
- int isrpipe_read_timeout(isrpipe_t *isrpipe, char *buf, size_t count,\
|
|
int32_t timeout);
|
|
+ int isrpipe_read_timeout(isrpipe_t *isrpipe, uint8_t *buf, size_t count,\
|
|
uint32_t timeout);
|
|
|
|
- int isrpipe_read_all_timeout(isrpipe_t *isrpipe, char *buf, size_t count,\
|
|
uint32_t timeout);
|
|
+ int isrpipe_read_all_timeout(isrpipe_t *isrpipe, uint8_t *buf, size_t count,\
|
|
uint32_t timeout);
|
|
|
|
typedef struct tsrb {
|
|
...
|
|
- char *buf; /**< Buffer to operate on. */
|
|
+ uint8_t *buf; /**< Buffer to operate on. */
|
|
...
|
|
} tsrb_t
|
|
|
|
- int tsrb_get(tsrb_t *rb, char *dst, size_t n);
|
|
+ int tsrb_get(tsrb_t *rb, uint8_t *dst, size_t n);
|
|
|
|
- int tsrb_add_one(tsrb_t *rb, char c);
|
|
+ int tsrb_add_one(tsrb_t *rb, uint8_t c);
|
|
|
|
- int tsrb_add(tsrb_t *rb, const char *src, size_t n);
|
|
+ int tsrb_add(tsrb_t *rb, const uint8_t *src, size_t n);
|
|
|
|
typedef struct {
|
|
...
|
|
- uint16_t (*calc_rank)(gnrc_rpl_parent_t *parent, uint16_t base_rank);
|
|
- gnrc_rpl_parent_t *(*which_parent)(gnrc_rpl_parent_t *, gnrc_rpl_parent_t *);
|
|
+ uint16_t (*calc_rank)(gnrc_rpl_dodag_t *dodag, uint16_t base_rank);
|
|
|
|
- void (*reset)(gnrc_rpl_dodag_t *); /**< resets the OF */
|
|
+ void (*reset)(gnrc_rpl_dodag_t *dodag);
|
|
...
|
|
- void (*init)(void); /**< OF specific init function */
|
|
+ void (*init)(gnrc_rpl_dodag_t *dodag);
|
|
} gnrc_rpl_of_t;
|
|
|
|
- thread_state_t
|
|
+ thread_status_t
|
|
|
|
- void sched_set_status(thread_t *process, thread_state_t status);
|
|
+ void sched_set_status(thread_t *process, thread_status_t status);
|
|
|
|
struct _thread {
|
|
...
|
|
- thread_state_t status;
|
|
+ thread_status_t status;
|
|
...
|
|
}
|
|
|
|
- bool mrf24j40_cca(mrf24j40_t *dev);
|
|
+ bool mrf24j40_cca(mrf24j40_t *dev, int8_t *rssi);
|
|
```
|
|
|
|
Deprecations
|
|
========================
|
|
|
|
Warnings
|
|
--------
|
|
`gnrc_tftp` module
|
|
`ubjson` module
|
|
|
|
Removals
|
|
--------
|
|
`gcoap_req_send()` replaced with `gcoap_req_send2()->gcoap_req_send2()`
|
|
|
|
Known issues
|
|
============
|
|
|
|
Networking related issues
|
|
-------------------------
|
|
#11860: send data with UDP at 10HZ, the program die
|
|
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
|
|
#11519: shell/ping6: Incorrect handling of unexpected pongs
|
|
#11405: nrfmin: communication not possible after multicast ping with no interval
|
|
#11390: gnrc networking crashes on nRF51dk
|
|
#11212: POSIX sockets + lwIP: bad file descriptor
|
|
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
|
|
#10969: net: netdev_driver_t::send() doc unclear
|
|
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
|
|
#10809: openthread: does not build on current Arch
|
|
#10410: Missing drop implementations in netdev_driver_t::recv
|
|
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
|
|
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address
|
|
#10370: gomach: Resetting netif with cli doesn't return
|
|
#10338: xbee: setting PAN ID sometimes fails
|
|
#9709: examples: failed assertion in dtls-echo example
|
|
#9656: gnrc/netif: various problems after resetting interface a second time
|
|
#8779: CC2538 RF overlapping PIN usage
|
|
#8752: mrf24j40: does not link for examples/default
|
|
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#8242: at86rf2xx: Dead lock when sending while receiving
|
|
#8199: gcoap example request on tap I/F fails with NIB issue
|
|
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
|
|
configured prefix
|
|
#8130: gcoap: can't build with network stacks other than GNRC
|
|
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#7474: 6lo gnrc fragmentation expects driver to block on TX
|
|
#6018: nRF52 gnrc 6lowpan ble memory leak
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
|
|
chars
|
|
#5748: gnrc: nodes crashing with too small packet buffer
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
|
|
Timer related issues
|
|
--------------------
|
|
#10545: periph_timer: systematic proportional error in timer_set
|
|
#10523: saml21 system time vs rtc
|
|
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
|
|
#10073: xtimer_usleep wrong delay time
|
|
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
|
|
time.
|
|
#9052: misc issues with tests/trickle
|
|
#9049: xtimer mis-scaling with long sleep times
|
|
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
|
|
#8388: xtimer_periodic_wakeup is not interrupt safe
|
|
#8251: telosb: xtimer config wrong when running on a tmote sky
|
|
#7347: xtimer_usleep stuck for small values
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#6442: cpu/native: timer interrupt issue
|
|
#6052: tests: xtimer_drift gets stuck
|
|
#5338: xtimer: xtimer_now() not ISR safe
|
|
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?
|
|
|
|
Drivers related issues
|
|
----------------------
|
|
#11763: spi_transfer_reg behavior doesn't follow doc
|
|
#11104: STM32: SPI clock not returning to idle state and generating additional
|
|
clock cycles
|
|
#10620: rn2xx3: rn2xx3_write_cmd_no_wait can't be correct
|
|
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAM
|
|
R21
|
|
#9419: cpu/msp430: GPIO driver doesn't work properly
|
|
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
|
|
#8045: stm32/periph/uart: extra byte transmitted on first transmission
|
|
#8028: diskio: failed assertion in send_cmd() on lpc2387
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
#3366: periph/i2c: handle NACK
|
|
|
|
Native related issues
|
|
---------------------
|
|
#11603: NATIVEINCLUDES Does not include USEMODULE_INCLUDES from
|
|
log_printfnoformat
|
|
#7206: native: race-condition in IPC
|
|
#5796: native: tlsf: early malloc will lead to a crash
|
|
#495: native not float safe
|
|
|
|
Other platforms related issues
|
|
------------------------------
|
|
#10842: Preemption of malloc on AVR
|
|
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
|
|
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
|
|
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
|
|
(not previous)
|
|
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
|
|
boards
|
|
#8052: mips: several issues
|
|
#7753: pic32-wifire: race-condition when linking in concurrent build
|
|
#7020: isr_rfcoreerrors while pinging between CC2538DKs
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
|
|
CS
|
|
#5774: cpu: cortexm_common: context switching code breaks when compiling with
|
|
LTO
|
|
#4954: chronos: compiling with -O0 breaks
|
|
#1891: newlib-nano: Printf formatting does not work properly for some numeric
|
|
types
|
|
|
|
Build system related issues
|
|
---------------------------
|
|
#10857: frdm-kw41z: requires newer flasher than openocd `0.10` from `ubuntu-
|
|
bionic`.
|
|
#10850: Tracking: remove harmful use of `export` in make and immediate
|
|
evaluation
|
|
#10459: make: `make clean all` does not make sense and should be removed
|
|
#10047: Make warns to expect errors when disabling optional modules
|
|
#9913: Build dependencies - processing order issues
|
|
#9742: `buildtest` uses wrong build directory
|
|
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
|
|
image
|
|
#9589: application/Makefile: environment settings after inclusion of
|
|
Makefile.include
|
|
#8913: make: use of immediate value of variables before they have their final
|
|
value
|
|
#8122: doxygen: riot.css modified by 'make doc'
|
|
#7918: Usage of GCC extension for binary constants
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#5848: arduino: Race condition in sys/arduino/Makefile.include
|
|
#5776: make: Predefining CFLAGS are parsed weirdly
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
* buildtest with BUILD_IN_DOCKER hides host toolchain errors
|
|
|
|
Other issues
|
|
------------
|
|
#11861: msba2: floating point tests fail
|
|
#11842: buildtest with BUILD_IN_DOCKER hides host toolchain errors
|
|
#11820: stm32l152re: hard-fault unless power-cycled after flash, or depending on
|
|
optimization
|
|
#11691: murdock and tests using `utf-8` characters
|
|
#11631: examples / tests: return value of `gnrc_netif_hdr_build()` not checked
|
|
in udp.c
|
|
#11447: frdm-k64f: hwrng support broken, applications using RNG crash
|
|
#11423: cpu/kinetis: features provided not properly defined according to series
|
|
#11243: sys/riotboot: documentation issues
|
|
#10751: Possible memset optimized out in crypto code
|
|
#10731: nanocoap: incomplete response to /.well-known/core request
|
|
#10639: sys/stdio_uart: dropped data when received at once
|
|
#10510: xtimer_set_msg: crash when using same message for 2 timers
|
|
#10175: No error returned from aes_init when a key with a bad size is used
|
|
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
|
|
10
|
|
#9882: sys/tsrb is not thread safe on AVR
|
|
#9518: periph/i2c: tracking bugs and untested acks
|
|
#9371: assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope
|
|
#8975: dist/tools/openocd: cannot debug some stlink based boards
|
|
#8589: Why using -F in avrdude?
|
|
#8436: Kinetis PhyNode: failed to flash binary > 256K
|
|
#8107: crypto/ccm: bugs in the implementation of CCM mode
|
|
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
|
|
#6533: tests/lwip target board for python test is hardcoded to native
|
|
#5218: some use of asm keyword might be missing volatile
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
|
|
#4488: Making the newlib thread-safe
|
|
#3256: make: Setting constants on compile time doesn't really set them
|
|
everywhere
|
|
#2346: Tracker: Reduce scope on unintended COMMON variables
|
|
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
|
|
|
|
Fixed Issues from the last release (2019.04)
|
|
============================================
|
|
|
|
#11626: tests/pkg_semtech-loramac: hardfault on lobaro-lorabox
|
|
#11605: ruuvitag: Shell test fails without auto_init
|
|
#11530: pkg/semtech_loramac: deadlock with UNCONFIRMED messages
|
|
#11525: API change, uart input not working anymore on previously working setups
|
|
#11508: core: thread_state_t makes RIOT not compilable on MAC OSX
|
|
#11498: Cannot compile OpenThread example without the CLI-APP.
|
|
#11494: emcute_mqttsn example setup contains invalid steps
|
|
#11344: RTT: `make test` not working
|
|
#11274: riotboot_flashwrite: Failure on the nrf52
|
|
#11091: gnrc_minimal on nRF52DK do not work anymore
|
|
#11059: board/sltb001a: cannot flash with JLink when 'hello-world' is running
|
|
and no error
|
|
#11043: boards/z1: tests/rng resets board
|
|
#10878: nrfmin can get stuck and never reach RX (while TX works)
|
|
#10800: iotlab-m3: thread tests failing
|
|
#10559: I2C API write_regs does not fit implementation
|
|
#10468: Tinycryt upstream rewrote history in master branch
|
|
#8653: msba2: default example fails on assert
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies that provided us with hardware for porting
|
|
and testing RIOT-OS. Further thanks go to companies and institutions that
|
|
directly sponsored development time. And finally, big thanks to all of you
|
|
contributing in so many different ways to make RIOT worthwhile!
|
|
A special thanks to @fjmolinas, @leandrolanzieri, @cladmi, @jia200x, @miri64
|
|
for helping run the release tests
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
RIOT-2019.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 2019.04 release includes a number of new features including porting of
|
|
riotboot to a number of new platforms, 802.15.4 support on the nRF52, and the
|
|
ability for firmware to flash images into a separate boot slot. Support for
|
|
several new boards and new sensors was added. Additionally, this release
|
|
contains a number of bug fixes and test improvements.
|
|
|
|
About 320 pull requests with about 569 commits have been merged since the last
|
|
release and about 40 issues have been solved. 44 people contributed with code
|
|
in 88 days. Approximately 825 files have been touched with 32716 insertions
|
|
and 5149 deletions.
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
System libraries
|
|
----------------
|
|
+ riotboot_flashwrite: added module to reliably write a firmware image to
|
|
flash
|
|
+ crypto: added support for chacha20poly1305 AEAD symmetric key cypher
|
|
algorithm
|
|
* threads: added usage of thread_state_t enum to define thread states,
|
|
instead of an integer
|
|
* random: added usage of hwrng as seed if available
|
|
+ app_metadata: added module to print application metadata
|
|
+ unaligned.h: added functions to safely read values from potentially
|
|
unaligned pointers
|
|
+ isrpipe: split isrpipe_read_timeout to isolate xtimer dependency
|
|
|
|
Networking
|
|
----------
|
|
* gnrc_ipv6: adapted ping6 to original-ping-like implementation
|
|
* gnrc_ipv6: allowed sending empty IPv6 packets
|
|
+ gnrc_netif_ieee802154: optional support to drop duplicate broadcast
|
|
packets
|
|
- gnrc_pktbuf: removed deprecated gnrc_pktbuf_get_iovec() function
|
|
+ l2util: initial import of a general IPv6 over X helper module
|
|
+ NimBLE: added Bluetooth device scanner
|
|
+ NimBLE: added helper functions for address printing
|
|
* NimBLE: updated package to the latest version
|
|
|
|
Packages
|
|
--------
|
|
+ c25519: add support (embedded x25519 crypto library)
|
|
|
|
Boards
|
|
------
|
|
+ Arduino nano: added support
|
|
+ nrf52832-mdk: added support
|
|
+ PhyTec reel board: added support
|
|
+ MicroPython pyboard v1.1: added support
|
|
+ Hamilton: added support
|
|
+ saml10-xpro and saml11-xpro: added riotboot support
|
|
+ nrf52: added riotboot support
|
|
+ ESP32 and stm32: added command to allow runtime configuration of uart mode
|
|
+ ESP32 and ESP8266: add support for ESP-NOW network device driver
|
|
* ESP8266: freed up RAM by moving most .rodata sections from DRAM to IROM
|
|
+ Arduino: added test to verify pin mappings
|
|
+ b-l072z-lrwan1: enabled RTT feature
|
|
+ STM32l0: added support for dual bank flashing with OpenOCD
|
|
* Autonomo: changed flasher to BOSSA
|
|
* stm32: rework common clock configuration for stm32f4
|
|
* stm32f3discovery: Fix no external low speed crystal
|
|
|
|
CPU
|
|
---
|
|
+ stm32l0: added riotboot support
|
|
+ stm32f0: added support for periph_pm
|
|
+ stm32f3, f7, l1 and l4: added stop and standby low power modes. All
|
|
STM32 families now provide periph_pm
|
|
+ samd21: enabled idle modes
|
|
+ sam0: added support for RWWEE on-chip memory
|
|
+ Kinetis: added support for EA series and S9KEAZ129 MCU
|
|
+ TI CC2650: added I2C periph implementation
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ i2c: added slave scan shell command
|
|
+ USB: added device driver initialization function and API definition
|
|
+ USB: added peripheral driver for sam0_common
|
|
+ nrf5x temperature sensor: added driver
|
|
+ nrf52: added initial 802.15.4 support
|
|
+ add7746 capacitance sensor: added driver
|
|
+ ds323x extremely accurate RTC: added driver
|
|
+ ltc4150 coulomb counter: added driver
|
|
+ sht2x temperature and humidity sensor: added driver
|
|
+ sds011 dust sensor: added driver
|
|
+ added high level driver for H bridge ICs to drive DC motors
|
|
* lpsxxx pressure and temperature sensor: add support for lps22hb and
|
|
lps25hb
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
+ nrf52: added support for openocd
|
|
* improved avrdude integration
|
|
+ added support for socat as a RIOT terminal
|
|
+ added script for backporting PRs during release testing
|
|
* pyterm: specified use of python3 by default
|
|
* flasher: support for flashing images at offset addresses `pyocd`, `jlink`
|
|
* Texas Instruments UniFlash: put configuration in common
|
|
* makefiles: introduce FLASHFILE
|
|
* Use FLASHFILE for `riotboot` and `mcuboot`
|
|
* Update flashers `avrdude`, `edbg`, `jlink`, lpc2k_pgm`, `openocd`
|
|
* makefiles/docker.inc.mk: Use directories in RIOT when possible
|
|
* make: unexport `TERM*` variables
|
|
* msba2: compile 'lpc2k_pgm' when flashing
|
|
|
|
Testing
|
|
-------
|
|
+ documentation: added initial guide to running tests
|
|
+ Makefile.include: add a 'test/available' target
|
|
* testrunner: Fix bug matching local echo
|
|
* tests/rng: replace printf_float with fmt/print_float
|
|
* tests/bloom_bytes: replace %f with fmt/print_float
|
|
* tests/posix_semaphore: sem_timedwait should not return before abstime
|
|
|
|
Known issues
|
|
============
|
|
|
|
Networking related issues
|
|
-------------------------
|
|
#11295: RFC 3306 Unicast-Prefix-based-IPv6 Multicast with BorderRouter
|
|
#11212: POSIX TCP API: bad file descriptor
|
|
#11091: gnrc_minimal on nRF52DK do not work anymore
|
|
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
|
|
#10969: net: netdev_driver_t::send() doc unclear
|
|
#10927: gnrc_tftp: Missing minimum length check
|
|
#10878: nrfmin can get stuck and never reach RX (while TX works)
|
|
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
|
|
#10809: openthread: does not build on current Arch
|
|
#10410: Missing drop implementations in netdev_driver_t::recv
|
|
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
|
|
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address
|
|
#10370: gomach: Resetting netif with cli doesn't return
|
|
#10338: xbee: setting PAN ID sometimes fails
|
|
#9709: examples: failed assertion in dtls-echo example
|
|
#9656: gnrc/netif: various problems after resetting interface a second time
|
|
#8779: CC2538 RF overlapping PIN usage
|
|
#8752: mrf24j40: does not link for examples/default
|
|
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#8242: at86rf2xx: Dead lock when sending while receiving
|
|
#8199: gcoap example request on tap I/F fails with NIB issue
|
|
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
|
|
configured prefix
|
|
#8130: gcoap: can't build with network stacks other than GNRC
|
|
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#7474: 6lo gnrc fragmentation expects driver to block on TX
|
|
#6018: nRF52 gnrc 6lowpan ble memory leak
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
|
|
#5748: gnrc: nodes crashing with too small packet buffer
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
|
|
Timer related issues
|
|
--------------------
|
|
#10545: periph_timer: systematic proportional error in timer_set
|
|
#10523: saml21 system time vs rtc
|
|
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
|
|
#10073: xtimer_usleep wrong delay time
|
|
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall time
|
|
#9052: misc issues with tests/trickle
|
|
#9049: xtimer mis-scaling with long sleep times
|
|
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
|
|
#8388: xtimer_periodic_wakeup is not interrupt safe
|
|
#8251: telosb: xtimer config wrong when running on a tmote sky
|
|
#7347: xtimer_usleep stuck for small values
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#6442: cpu/native: timer interrupt issue
|
|
#6052: tests: xtimer_drift gets stuck
|
|
#5338: xtimer: xtimer_now() not ISR safe
|
|
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?
|
|
|
|
Drivers related issues
|
|
----------------------
|
|
#11405: nrfmin: communication not possible after multicast ping with no interval
|
|
#10559: I2C API write_regs does not fit implementation
|
|
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAMR21
|
|
#9419: cpu/msp430: GPIO driver doesn't work properly
|
|
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
|
|
#8045: stm32/periph/uart: extra byte transmitted on first transmission
|
|
#8028: diskio: failed assertion in send_cmd() on lpc2387
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
#3366: periph/i2c: handle NACK
|
|
|
|
Native related issues
|
|
---------------------
|
|
#7206: native: race-condition in IPC
|
|
#5796: native: tlsf: early malloc will lead to a crash
|
|
#495: native not float safe
|
|
|
|
Other platform related issues
|
|
-----------------------------
|
|
#11447: frdm-k64f: hwrng support broken, applications using RNG crash
|
|
#11354: ESP32: `write(STDIO_FILENO, ...)` not working
|
|
#11104: STM32: SPI clock not returning to idle state and generating additional
|
|
clock cycles
|
|
#11059: board/sltb001a: cannot flash with JLink when 'hello-world' is running
|
|
and no error
|
|
#11043: boards/z1: tests/rng resets board
|
|
#10979: Missing SPI pre-scalars for STM32F7
|
|
#10842: Preemption of malloc on AVR
|
|
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
|
|
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
|
|
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
|
|
(not previous)
|
|
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
|
|
boards
|
|
#8052: mips: several issues
|
|
#7753: pic32-wifire: race-condition when linking in concurrent build
|
|
#7667: sam0 flashpage_write issue
|
|
#7020: isr_rfcoreerrors while pinging between CC2538DKs
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS
|
|
#5774: cpu: cortexm_common: context switching code breaks when compiling with LTO
|
|
#4954: chronos: compiling with -O0 breaks
|
|
#4612: pkg: TLSF does not build for 16 bit platforms
|
|
#1891: newlib-nano: Printf formatting does not work properly for some numeric
|
|
types
|
|
|
|
Build system related issues
|
|
---------------------------
|
|
#11343: RTT: `make term` without `make debug`
|
|
#11344: RTT: `make test` not working
|
|
#11179: stm32l4: can't flash bin files
|
|
#10857: frdm-kw41z: error with `SLOT_LEN` handling and flasher not working
|
|
#10850: Tracking: remove harmfull use of `export` in make and immediate
|
|
evaluation
|
|
#10459: make: `make clean all` does not make sense and should be removed
|
|
#10047: Make warns to expect errors when disabling optional modules
|
|
#9913: Dependencies processing order issues
|
|
#9742: `buildtest` uses wrong build directory
|
|
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
|
|
image
|
|
#9589: application/Makefile: environment settings after inclusion of
|
|
Makefile.include
|
|
#8913: make: use of immediate value of variables before they have their final
|
|
value
|
|
#8122: doxygen: riot.css modified by 'make doc'
|
|
#7918: Usage of GCC extension for binary constants
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#5848: arduino: Race condition in sys/arduino/Makefile.include
|
|
#5776: make: Predefining CFLAGS are parsed weirdly
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
|
|
Other issues
|
|
------------
|
|
#11274: riotboot_flashwrite: Failure on the nrf52
|
|
#11243: sys/riotboot: documentation issues
|
|
#10800: iotlab-m3: thread tests failing
|
|
#10751: Possible memset optimized out in crypto code
|
|
#10731: nanocoap: incomplete response to /.well-known/core request
|
|
#10639: sys/stdio_uart: dropped data when received at once
|
|
#10510: xtimer_set_msg: crash when using same message for 2 timers
|
|
#10468: Tinycryt upstream rewrote history in master branch
|
|
#10175: No error returned from aes_init when a key with a bad size is used
|
|
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10
|
|
#9882: sys/tsrb is not thread safe on AVR
|
|
#9518: periph/i2c: tracking bugs and untested acks
|
|
#9371: assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope
|
|
#8975: dist/tools/openocd: cannot debug some stlink based boards
|
|
#8653: msba2: default example fails on assert
|
|
#8589: Why using -F in avrdude?
|
|
#8436: Kinetis PhyNode: failed to flash binary > 256K
|
|
#8107: crypto/ccm: bugs in the implementation of CCM mode
|
|
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
|
|
#6874: SAMD21: possible CMSIS bug ?
|
|
#6533: tests/lwip target board for python test is hardcoded to native
|
|
#5218: some use of asm keyword might be missing volatile
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
|
|
#4488: Making the newlib thread-safe
|
|
#3256: make: Setting constants on compile time doesn't really set them
|
|
everywhere
|
|
#2346: Tracker: Reduce scope on unintended COMMON variables
|
|
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
|
|
|
|
Fixed Issues from the last release (2019.01)
|
|
============================================
|
|
|
|
#11163: netdev: iolist not checked for empty elements on send
|
|
#11162: nrfmin is broken when DEVELHELP is activated
|
|
#11151: drivers/l3g42000d: scale has wrong data type
|
|
#11147: 6LoWPAN over BLE: Device not pingable
|
|
#11113: RPL global DODAG repair
|
|
#11101: `nib route add` for routing to Raspberry Pi gateway not working
|
|
#11052: tests/bloom_bytes does not print float
|
|
#11051: NimBLE port should be always building all NimBLE files
|
|
#11029: Default example does not work on stm32f4discovery
|
|
#11013: hts221: wrong bit for "one-shot enable" register
|
|
#10956: tests/gnrc_tcp_*: #2 not working on 6Lo-based boards
|
|
#10972: examples/nanocoap_server hangs after > 256 bytes packet
|
|
#10463: stm32f4discovery isn't visible as ttyUSB after flashing with tests/leds
|
|
#10427: doxygen: *_params.h files are excluded
|
|
#10341: driver_my9221 prevents further flashing of nucleo-l073rz
|
|
#10294: tests/leds doesn't work on Nucleo-F401RE
|
|
#10206: Lua_basic example doesn't flash in b-l072z-lrwan1
|
|
#9387: shell `ping6` doesn't display duplicate packages
|
|
#8663: /sys/random/seed: why not use hwrng if available?
|
|
#8523: tools: need backport script
|
|
#6123: gnrc: crash with (excessive) traffic in native
|
|
|
|
|
|
You can get the complete detail in the git history and in the release milestone
|
|
[Release 2019.04](https://github.com/RIOT-OS/RIOT/milestone/26?closed=1).
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies (vendors) that provided us with (their)
|
|
hardware for porting and testing RIOT-OS. Further thanks go to companies and
|
|
institutions that directly sponsored development time. And finally, big thanks
|
|
to all of you contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
RIOT-2019.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 2019.01 release includes a number of new features including DMA support on
|
|
all STM32 boards, WiFi with IP connectivity on ESP32 and ESP8266, and riotboot,
|
|
a simple bootloader supporting multiple firmware slots, compatible with most Arm
|
|
Cortex-M boards supported by RIOT. Support for several new boards and new sensors
|
|
was added, as well as for the new CPU architecture Armv8-M (Cortex-M23). Last
|
|
but not least, this release contains a number of bug fixes and enhances test
|
|
automation.
|
|
|
|
About 387 pull requests with about 912 commits have been merged since the last
|
|
release and about 36 issues have been solved. 54 people contributed with code
|
|
in 110 days. Approximately 1554 files have been touched with 176241 insertions
|
|
and 50593 deletions.
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
System libraries
|
|
----------------
|
|
+ riotboot: initial implementation of a bootloader with multi-slots
|
|
and firmware header management
|
|
+ base64: add size estimation functions
|
|
|
|
Networking
|
|
----------
|
|
* gnrc_ipv6: send IPv6 error messages on error
|
|
* gnrc_ipv6: refactor and improve IPv6 message reception
|
|
* gnrc_netif: refactor for easier device type integration
|
|
+ pkg_semtech-loramac: added timer calibation
|
|
* nanocoap: fix confirmable retry countdown
|
|
|
|
Packages
|
|
--------
|
|
* gecko_sdk: bumped to version 2.5
|
|
|
|
Boards
|
|
------
|
|
+ added support for Kinetic USB-KW41Z
|
|
+ added support for Makerdiary nrf52840-mdk
|
|
+ added support for Microchip saml10-xpro and saml11-xpro
|
|
+ added support for Nordic nrf51-dk
|
|
+ added support for Phytec phynode-kw41z
|
|
+ added support for SODAQ SARA AFF
|
|
* b-l475e-iot01a: provide RTC and RTT features
|
|
* stm32: factorize common I2C configurations
|
|
* nucleo-l433rc/nucleo-f072rb/nucleo-f767zi: provide I2C configuration
|
|
* nucleo-l433rc: use LPUART (USB port) as stdio
|
|
* nucleo-l496zg: use LPUART (USB port) as stdio
|
|
* frdm-k64f: updated LPTMR configuration
|
|
* sensebox_samd21: add MTD configuration
|
|
* nrf51: factorize files and configurations of nrf51 based boards
|
|
* nrf52: better factorize files and configurations of nrf52 based boards
|
|
|
|
CPU
|
|
---
|
|
+ cortexm-common: add FPU support for cortex-m4f and cortex-m7
|
|
+ cortexm-common: added support for cortex-m23
|
|
+ added support for saml10 and saml11
|
|
+ efm32: added support for 32-bit timers
|
|
+ esp32: added esp_wifi netdev driver
|
|
+ esp8266: added esp_wifi netdev driver
|
|
+ stm32-common: add DMA support for all STM32
|
|
+ stm32-common: add LPUART driver
|
|
+ atmega-common: Add PUF SRAM feature
|
|
* nrf5x: added management of multiple exti pins in gpio driver
|
|
* nrf5x: rework UART driver to allow using multiple UARTs on nrf52840
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ added support for CCS811 gas sensor
|
|
+ added support for SHT3x temperature and humidity sensor
|
|
+ added support for TPS6274x step-down dcdc converter
|
|
* periph_eeprom: added clear and erase functions
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
+ added support for PyOCD programmer
|
|
+ added compile_and_test_for_board script + checks
|
|
* updated EDBG version
|
|
* testbed-support: added frdm-kw41z, pba-d-01-kw2x, samr30-xpro to
|
|
supported archis
|
|
* pyterm: correctly catch exception when serial port is busy
|
|
* print_toolchain_version: added 'make' version
|
|
|
|
Testing
|
|
-------
|
|
+ periph_dma: added automatic test script
|
|
+ periph_rtc: added automatic test script
|
|
|
|
|
|
Known issues
|
|
============
|
|
|
|
Networking related issues
|
|
-------------------------
|
|
#10969: net: netdev_driver_t::send() doc unclear
|
|
#10956: tests/gnrc_tcp_*: #2 not working on 6Lo-based boards
|
|
#10927: gnrc_tftp: Missing minimum length check
|
|
#10878: nrfmin can get stuck and never reach RX (while TX works)
|
|
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
|
|
#10809: openthread: does not build on current Arch
|
|
#10410: Missing drop implementations in netdev_driver_t::recv
|
|
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
|
|
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
|
|
address
|
|
#10370: gomach: Resetting netif with cli doesn't return
|
|
#10338: xbee: setting PAN ID sometimes fails
|
|
#9709: examples: failed assertion in dtls-echo example
|
|
#9656: gnrc/netif: various problems after resetting interface a second time
|
|
#8859: cc1101 work instability
|
|
#8779: CC2538 RF overlapping PIN usage
|
|
#8752: mrf24j40: does not link for examples/default
|
|
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#8242: at86rf2xx: Dead lock when sending while receiving
|
|
#8199: gcoap example request on tap I/F fails with NIB issue
|
|
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
|
|
configured prefix
|
|
#8130: gcoap: can't build with network stacks other than GNRC
|
|
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#7474: 6lo gnrc fragmentation expects driver to block on TX
|
|
#6018: nRF52 gnrc 6lowpan ble memory leak
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
|
|
#5849: pkg: ccn-lite: rework convenience functions
|
|
#5748: gnrc: nodes crashing with too small packet buffer
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
|
|
Timer related issues
|
|
--------------------
|
|
#10545: periph_timer: systematic proportional error in timer_set
|
|
#10523: saml21 system time vs rtc
|
|
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
|
|
#10073: xtimer_usleep wrong delay time
|
|
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall time
|
|
#9052: misc issues with tests/trickle
|
|
#9049: xtimer mis-scaling with long sleep times
|
|
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
|
|
#8388: xtimer_periodic_wakeup is not interrupt safe
|
|
#8251: telosb: xtimer config wrong when running on a tmote sky
|
|
#7347: xtimer_usleep stuck for small values
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#6442: cpu/native: timer interrupt issue
|
|
#6052: tests: xtimer_drift gets stuck
|
|
#5338: xtimer: xtimer_now() not ISR safe
|
|
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?
|
|
|
|
Drivers related issues
|
|
----------------------
|
|
#10559: I2C API write_regs does not fit implementation
|
|
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAMR21
|
|
#9419: cpu/msp430: GPIO driver doesn't work properly
|
|
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
|
|
#8045: stm32/periph/uart: extra byte transmitted on first transmission
|
|
#8028: diskio: failed assertion in send_cmd() on lpc2387
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
#3366: periph/i2c: handle NACK
|
|
|
|
Native related issues
|
|
---------------------
|
|
#10972: examples/nanocoap_server hangs after > 256 bytes packet
|
|
#8444: release test 2018.01 RC1: tests/thread_priority_inversion, hangup
|
|
#7206: native: race-condition in IPC
|
|
#5796: native: tlsf: early malloc will lead to a crash
|
|
#495: native not float safe
|
|
|
|
Other platforms related issues
|
|
------------------------------
|
|
#10842: Preemption of malloc on AVR
|
|
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
|
|
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
|
|
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
|
|
(not previous)
|
|
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
|
|
boards
|
|
#8052: mips: several issues
|
|
#7753: pic32-wifire: race-condition when linking in concurrent build
|
|
#7667: sam0 flashpage_write issue
|
|
#7020: isr_rfcoreerrors while pinging between CC2538DKs
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS
|
|
#5774: cpu: cortexm_common: context switching code breaks when compiling with LTO
|
|
#4954: chronos: compiling with -O0 breaks
|
|
#4612: pkg: TLSF does not build for 16 bit platforms
|
|
#1891: newlib-nano: Printf formatting does not work properly for some numeric
|
|
types
|
|
|
|
Build system related issues
|
|
---------------------------
|
|
#10857: frdm-kw41z: error with `SLOT_LEN` handling and flasher not working
|
|
#10850: Tracking: remove harmfull use of `export` in make and immediate
|
|
evaluation
|
|
#10459: make: `make clean all` does not make sense and should be removed
|
|
#10047: Make warns to expect errors when disabling optional modules
|
|
#9913: Dependencies processing order issues
|
|
#9742: `buildtest` uses wrong build directory
|
|
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
|
|
image
|
|
#9589: application/Makefile: environment settings after inclusion of
|
|
Makefile.include
|
|
#8913: make: use of immediate value of variables before they have their final
|
|
value
|
|
#8122: doxygen: riot.css modified by 'make doc'
|
|
#7918: Usage of GCC extension for binary constants
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#5848: arduino: Race condition in sys/arduino/Makefile.include
|
|
#5776: make: Predefining CFLAGS are parsed weirdly
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
|
|
Other issues
|
|
------------
|
|
#10800: iotlab-m3: thread tests failing
|
|
#10751: Possible memset optimized out in crypto code
|
|
#10731: nanocoap: incomplete response to /.well-known/core request
|
|
#10639: sys/stdio_uart: dropped data when received at once
|
|
#10510: xtimer_set_msg: crash when using same message for 2 timers
|
|
#10468: Tinycryt upstream rewrote history in master branch
|
|
#10463: stm32f4discovery isn't visible as ttyUSB after flashing with tests/leds
|
|
#10341: driver_my9221 prevents further flashing of nucleo-l073rz
|
|
#10206: Lua_basic example doesn't flash in b-l072z-lrwan1
|
|
#10175: No error returned from aes_init when a key with a bad size is used
|
|
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10
|
|
#9882: sys/tsrb is not thread safe on AVR
|
|
#9518: periph/i2c: tracking bugs and untested acks
|
|
#9371: assert: c99 static_assert macro doesn't function for multiple
|
|
static_asserts in the same scope
|
|
#8975: dist/tools/openocd: cannot debug some stlink based boards
|
|
#8653: msba2: default example fails on assert
|
|
#8589: Why using -F in avrdude?
|
|
#8436: Kinetis PhyNode: failed to flash binary > 256K
|
|
#8107: crypto/ccm: bugs in the implementation of CCM mode
|
|
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
|
|
#6874: SAMD21: possible CMSIS bug ?
|
|
#6533: tests/lwip target board for python test is hardcoded to native
|
|
#5218: some use of asm keyword might be missing volatile
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
|
|
#4488: Making the newlib thread-safe
|
|
#3256: make: Setting constants on compile time doesn't really set them
|
|
everywhere
|
|
#2346: Tracker: Reduce scope on unintended COMMON variables
|
|
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
|
|
#9: Manual calibration of the CC1100
|
|
|
|
Fixed Issues from the last release (2018.10)
|
|
============================================
|
|
|
|
#10947: tests/gnrc_tcp_*: not working on 6Lo-based boards
|
|
#10945: net/gnrc_tcp: timeout of connection establishment
|
|
#10881: core: `msg_receive()` on native sometimes returns without `msg` being
|
|
re-set
|
|
#10875: gnrc_ipv6: crash on heavy network load on native
|
|
#10827: boards/nrf51dk: multiple external interrupts not working
|
|
#10768: Build is failing with latest RIOT on windows
|
|
#10761: iotlab-m3: poor ping6 performance and a possibly broken 6lo
|
|
fragmentation?
|
|
#10753: nanocoap: options buffer overflow
|
|
#10739: sock_dns: Security issues (including remote code execution)
|
|
#10723: gnrc_ipv6_nib: 6Lo-ND EUI-64 checks not portable
|
|
#10701: gnrc: packet space in gnrc packet buffer is not released on very heavy
|
|
load
|
|
#10672: gnrc: runs full on very heavy load
|
|
#10634: pyterm: weird behaviour with long lines.
|
|
#10628: Can't read data from BH1750 senseor using STM32F3Discovery
|
|
#10614: DEBUG stops shell if used in i2c init
|
|
#10611: Board z1: BTN0_IN is not defined
|
|
#10598: edbg: not compiling on OS X
|
|
#10594: cpu/esp32: esp_eth is not working correctly for packet size > 255 octets
|
|
#10531: ESP-now: ESP_NOW_MAX_SIZE < IPv6 minimum MTU?
|
|
#10517: Arduino UART cannot set 16 bit baudrate
|
|
#10508: tracking issue: bionic compile errors
|
|
#10432: ESP32 toolchain linked to in doc.txt is broken
|
|
#10419: gnrc_icmpv6_error: Able to bounce up to 64 ICMPv6 error messages between
|
|
2 instances
|
|
#10395: stm32f103xx: I2C has no internal pullups and af config
|
|
#10353: cpu/nrf5x_common: hwrng hangs
|
|
#10352: lorawan-example not working
|
|
#10287: docker: docker cannot access /etc/localtime on OS X
|
|
#10091: Murdock fails on tests/xtimer_usleep on native
|
|
#10079: Codacy: several problems (false positives)
|
|
#10068: sam0_common flash write not working at least for SAML21J18B
|
|
#9889: ethos: desync between ethos::last_framesize and tsrb content possible
|
|
#9619: ATmega platform issues
|
|
#9248: __libc_init_array() crash (newlib)
|
|
#9191: Logic errors in nanocoap_get()
|
|
#7877: SPI connection can't read 16 bit size register.
|
|
#6123: gnrc: crash with (excessive) traffic in native
|
|
|
|
|
|
You can get the complete detail in the git history and in the release milestone
|
|
[Release 2019.01](https://github.com/RIOT-OS/RIOT/milestone/25?closed=1).
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies (vendors) that provided us with (their)
|
|
hardware for porting and testing RIOT-OS. Further thanks go to companies and
|
|
institutions that directly sponsored development time. And finally, big thanks
|
|
to all of you contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
RIOT-2018.10.1 - Release Notes
|
|
==============================
|
|
This is a bug fixing release for the RIOT 2018.10 release.
|
|
The following bugs were fixed:
|
|
|
|
#10757: sock_dns: fix out-of-bound errors
|
|
- sock_dns: remove out-of-place puts() call
|
|
- sock_dns: remove some magic numbers
|
|
- sock_dns: fix out-of-bound errors
|
|
|
|
#10759: 2018.10 compile fixes
|
|
- pkg/jerryscript: disable -Wconversion for llvm
|
|
- pkg/nimble: disable -Waddress-of-packed-member for llvm
|
|
- pkg/tinycrypt: update commit hash after upstream rewrote history
|
|
|
|
#10285: at86rf2xx: release framebuffer on recv with (len > 0) && (buf == NULL)
|
|
- at86rf2xx: correct framebuffer release
|
|
|
|
|
|
RIOT-2018.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 2018.10 release includes new features, like CoAP Resource Directory and
|
|
Block2, ESP32 support, rework of I2C interface, EEPROM registry,
|
|
Full and Minimal Thread Devices support in OpenThread and compliance of
|
|
LoRaWAN 1.0.2 (ABP counters stored in EEPROM). Several boards were introduced.
|
|
|
|
During the last release the board documentation was migrated from the wiki to
|
|
the [RIOT API documentation](https://doc.riot-os.org) to improve the
|
|
maintenance of these entries and provide a better user experience when
|
|
browsing the documentation. There were also some efforts in grouping some
|
|
modules to make them easier to access in the documentation.
|
|
|
|
There were also some efforts on refactoring, test improvements and bug fixes.
|
|
|
|
About 392 pull requests with about 914 commits have been merged since the last
|
|
release and about 20 issues have been solved. 57 people contributed with code
|
|
in 100 days. Approximately 2184 files have been touched with 211964 insertions
|
|
and 34806 deletions.
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
Community
|
|
---------
|
|
+ Initial RIOT developer memo + directory structure
|
|
+ GitHub feature request template
|
|
+ 'testing' in Github PR template
|
|
* Rework and documented labeling system
|
|
* Rework MAINTAINING.md document
|
|
* Rework CONTRIBUTING.md document
|
|
|
|
Documentation
|
|
-------------
|
|
+ Add boards `slstk3401a`, `slstk3402a` and `sltb001a`
|
|
+ Migrate boards documentation to Doxygen
|
|
+ New groups under `sys` (serialization, math, memory management, hashes)
|
|
+ `arduino` docs for analog map
|
|
+ nanocoap
|
|
+ tinycbor pkg
|
|
* Drivers with `saul` support are now also part of the `drivers_saul` group
|
|
|
|
Core
|
|
----
|
|
+ Architecture dependent thread information
|
|
* Fix `byteorder` bebuftohs() / htobebufs() on big endian
|
|
* Make `pthread` compilable with g++
|
|
|
|
System libraries
|
|
----------------
|
|
+ Add EEPROM registration support
|
|
+ Add `arduino` time functions micros() and delayMicroseconds()
|
|
+ Add `fmt` hex byte
|
|
+ ecc: add golay(24,12) half rate and repetition code
|
|
+ tsrb: add drop function
|
|
* Change `base64` api (const + void*)
|
|
* Configure Arduino serial port at compile time
|
|
* Move `hamming256` module to generic `ecc`
|
|
* sys/auto_init: Fixed initialization of `sht1x`
|
|
* crypto/ccm: fix auth_data_len check
|
|
- Remove `cbor` module
|
|
|
|
Networking
|
|
----------
|
|
+ cord_ep: Full CoRE Resource Directory endpoint support
|
|
+ nanocoap: add server-side Block2 support
|
|
* emb6_sock_udp: copy receive remote correctly
|
|
* ethos: Add drop frame case to recv function
|
|
* examples/gcoap: fix post/put without port number
|
|
* gnrc/6lo: set more data flag on all but last fragment
|
|
* gnrc_ipv6_nib: always configure 802.15.4 long address with IPv6 included
|
|
* gnrc_ipv6_nib: fallback to SLAAC if ARO is ignored by upstream
|
|
* gnrc_ipv6_nib: make automatic NDP packet emission (NS/RS) configurable
|
|
* gnrc_netif: fix l2addr_len > 0, but no l2addr edge-case
|
|
* gnrc_netif: reapply event flags on device reset
|
|
* gnrc_netif_ieee802154: set FCF Frame Pending when more data is expected
|
|
* gnrc_sixlowpan_frag: add page context to reassembly buffer
|
|
* gnrc_sixlowpan: refactored for better interchangability of sub-components
|
|
* gnrc_sock_[udp|ip]: read return value for _recv after release
|
|
* nanocoap: allow empty uri/location path option
|
|
|
|
Packages
|
|
--------
|
|
+ libb2: add support (BLAKE2)
|
|
+ libhydrogen: add support
|
|
+ lora_serialization: LoRa Serialization format support
|
|
+ openthread: FTD and MTD support
|
|
+ semtech-loramac: add support for RU864 ISM band
|
|
* ccn-lite: update and adapt shell commands
|
|
* jerryscript: bump version
|
|
* littlefs: bump version to v1.6.20
|
|
* lwip: bump to version 2.1.0
|
|
* semtech-loramac: bump to version 4.4.1
|
|
* semtech-loramac: fix uninitialized datarate
|
|
* semtech-loramac: lorawan support is not considered experimental anymore
|
|
* semtech-loramac: use periph_eeprom to store lorawan configuration
|
|
* tiny-asn1: bump version
|
|
* tinycbor: Version bump to 0.5.2
|
|
|
|
Boards
|
|
------
|
|
+ i2c configuration for `nucleo-f070`, `nucleo-f091rc`,
|
|
`nucleo-f722ze`, `nucleo-l476rg`, `slstk3402a`.
|
|
+ second i2c configuration for `b-l475e-iot01a`
|
|
+ esp32-mh-et-live-minikit: add support
|
|
+ esp32-olimex-evb: add support
|
|
+ esp32-wemos-lolin-d32-pro: add support
|
|
+ esp32-wroom-32: add support
|
|
+ esp32-wrover-kit: add support
|
|
+ esp8266-esp-12x: add support
|
|
+ esp8266-olimex-mod: add support
|
|
+ esp8266-sparkfun-mod: add support
|
|
+ firefly: add support for Zolertia FireFly
|
|
+ lobaro_lorabox: add support
|
|
+ openmoteb-cc2538: add support
|
|
+ samr30-xpro: add support
|
|
+ sensebox: add support for `sensebox` and `sensebox_samd21`
|
|
+ sodaq_one: add support
|
|
+ ublox-c030-u201: add support
|
|
* frdm-k64f: update ADC and `saul` configuration
|
|
* nrf52xxxdk: make reset pin work
|
|
* stm32mindev: rename to `blackpill`
|
|
|
|
CPU
|
|
---
|
|
+ efm32: add support for enabling/disabling DC-DC converter
|
|
+ esp32: add initial support
|
|
+ esp8266: add initial support
|
|
+ i2c: introduce and adapt new I2C interface
|
|
+ kinetis: add ADC hardware averaging configuration
|
|
+ nrf52: add PWM support
|
|
+ samr30: add initial support
|
|
+ stm32l4: add support for periph_flashpage
|
|
* Add PUF SRAM feature in `nrf5x` and `stm32` families
|
|
* atmega_common: allow defining ROM and RAM length for link
|
|
* cortexm_common/ldscript: simplify generation of firmwares in section of
|
|
the ROM
|
|
* nrf5x_common: fix `gpio` port 1 functionality
|
|
* stm32-common: unified support for periph_i2c. I2C is now supported by
|
|
all stm32 families (F0/1/2/3/4/7, L0/1/4)
|
|
* stm32_common: fix source selection declared as module dependencies
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ drivers/ds18: add limited support for Maxim Integrated 1-Wire temperature
|
|
sensor
|
|
+ drivers/mma7660: initial support
|
|
+ drivers/srf04: add range finder sensor
|
|
+ drivers/sx127x: add initial support for multi interrupt pins
|
|
+ drivers/tsl4531x: add support for visible light intensity sensor
|
|
+ drivers/vcnl40x10: add initial support
|
|
* drivers/*: unify driver initialization parameters scheme
|
|
* drivers/adxl345: fix driver
|
|
* drivers/at86rf2xx: add smart idle listening feature
|
|
* drivers/kw2xrf: Fix ack flag handling
|
|
* drivers/mtd_spi_nor: add 4-byte address flash support
|
|
* drivers/periph_i2c: rework API
|
|
* drivers/sx127x: return correct state when device is receiving
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
+ Makefile.include: Include VERSION file for release
|
|
+ dist/tools: add lazysponge tool
|
|
+ docker: Use system GIT_CACHE_DIR if available
|
|
+ docker: allow using sudo for docker
|
|
+ make: introduce periph_gpio_irq
|
|
+ make: process include and dep for external modules
|
|
+ makefile.iotlab.single.inc.mk: add new supported nodes
|
|
* cflags: use gnu99 only if nothing else is specified (mips, msp430, native)
|
|
* docker/Makefile.include: Fix BUILDRELPATH when RIOTPROJECT is CURDIR
|
|
* docker: export RIOT_CI_BUILD_to docker
|
|
* docker: handle building in git worktree
|
|
* edbg.inc.mk: allow flashing with an offset in rom without erasing all ROM
|
|
* make: add APPDIR to info-build target
|
|
* make: provide support for listing supported and blacklisting toolchains
|
|
* make: unify app folder search (examples/*, tests/*, ...)
|
|
* makefiles/buildtests.inc.mk: fix 'clean-intermediates' not cleaning
|
|
* makefiles/docker.inc.mk: handle building in git worktree
|
|
* openocd.sh: allow flashing binary files without configuration
|
|
* pkg.mk: do not use user identity when applying patches
|
|
* pyterm: handle ctrl+d shortcut nicely
|
|
|
|
Testing
|
|
-------
|
|
+ automatic compile tests for LLVM for selected boards
|
|
+ shellcheck: add CI check script
|
|
+ tests/bench_runtime_coreapis: add benchmark for selected core functions
|
|
+ tests/bench_sizeof_coretypes: initial include
|
|
+ tests/periph_uart: add automated testing script
|
|
+ tests/periph_eeprom: add automated testing script
|
|
+ tests/periph_flashpage: add automated testing script
|
|
* murdock: also compile with LLVM/clang
|
|
* murdock: add hook support
|
|
+ tests/arduino: add automatic test for arduino module
|
|
+ tests/libc_newlib: add test for newlib-nano inclusion
|
|
+ tests/periph_uart: add automated testing script
|
|
+ tests/gnrc_netif: add test for ULA source selection
|
|
+ tests/periph_gpio: add interrupt enable disable command
|
|
+ sock_util: Add unittest and fix detected issues
|
|
|
|
|
|
Known Issues
|
|
============
|
|
|
|
Networking related issues
|
|
-------------------------
|
|
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up rooting
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#5230: gnrc_ipv6: multicast packets are not dispatched to the upper layers
|
|
#5748: gnrc: nodes crashing with too small packet buffer
|
|
#6123: gnrc: crash with (excessive) traffic in native
|
|
#7474: 6lo: gnrc fragmentation expects driver to block on TX
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#8086: gnrc_rpl_p2p: not compiling
|
|
#8130: gcoap: can't build with network stacks other than gnrc
|
|
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
|
|
configured prefix
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#9656: gnrc/netif: various problems after resetting interface a second time
|
|
#9889: ethos: desync between ethos::last_framesize and tsrb content possible
|
|
#10370: gomach: Resetting netif with cli doesn't return
|
|
|
|
Timer related issues
|
|
--------------------
|
|
|
|
#5103: xtimer: weird behavior of tests/xtimer_drift
|
|
#5338: xtimer: xtimer_now() is not ISR safe
|
|
#6052: tests: xtimer_drift_gets_stuck
|
|
#7114: xtimer: adds items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#7347: xtimer_usleep stuck for small values
|
|
#8251: telosb: timer config wrong when running o a tmote sky
|
|
#9052: misc issues with tests/trickle
|
|
#10073: xtimer_usleep wrong delay time
|
|
|
|
Native related issues
|
|
---------------------
|
|
|
|
#495: native not float safe
|
|
#5796 native: tlsf: early malloc will lead to a crash
|
|
#6442: cpu/native: timer interrupt issue
|
|
#7206: native: race-condition in IPC
|
|
|
|
Other platforms related issues
|
|
------------------------------
|
|
|
|
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
|
|
#4612: pkg: TLSF does not build for 16 bit platforms
|
|
#4872: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
#4954: chronos: compiling with -O0 breaks
|
|
#4866: periph: GPIO drivers are not thread tafe
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#5218: some use of asm keyword might be missing volatile
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5774: cpu: cortexm_common: context switching code breaks when compiling with
|
|
LTO
|
|
#5848: arduino: Race condition in sys/arduino/Makefile.include
|
|
#6018: nRF52: gnrc 6lowpan ble memory leak
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
|
|
CS
|
|
#6874: SAMD21: possible CMSIS bug
|
|
#7020: isr_rfcoreerrors while pinging between CC2538DKs
|
|
#7667: sam0 flashpage_write issues
|
|
#8028: diskio: failed assertion in send_cmd() on lpc2387
|
|
#8045: stm32/periph/uart: extra byte transmitted on first transmission
|
|
#8436: Kinetis PhyNode: failed to flash binary > 256K
|
|
#8444: tests/thread_priority_inversion hangup
|
|
#9619: ATmega platform issues.
|
|
#9882: sys/tsrb is not thread safe on AVR
|
|
#10338: xbee: setting PAN ID sometimes fails
|
|
#10341: driver_my9221 prevents further flashing of nucleo-l073rz
|
|
#10345: frdm-k22f cannot flash after certain firmware flashed
|
|
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
|
|
#10353: cpu/nrf5x_common: hwrng hangs
|
|
|
|
Other issues
|
|
------------
|
|
|
|
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
#4488: making the newlib thread-safe
|
|
#5561: C++11 extensions in header files
|
|
#5776: make: Predefining CFLAGS are parsed weirdly
|
|
#5863: OSX+SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#7220: sys/fmt: Missing tests for fmt_float,fmt_lpad
|
|
#7877: SPI connection can't read 16bit size register
|
|
#8107: crypto/ccm: bugs in the implementation of CCM mode
|
|
#9548: Many i2c bugs found with the i2c api rework but did not reach the release
|
|
#9709: examples: failed assertion in dtls-echo example
|
|
#9742: `buildtest` uses wrong build directory
|
|
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10
|
|
#10175: No error returned from aes_init when a key with a bad size is used
|
|
#10206: Lua_basic example doesn't flash in b-l072z-lrwan1
|
|
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
|
|
#10287: docker: docker cannot access /etc/localtime on OS X
|
|
#10367: sam0.inc.mk: Did not find a device with serial ATML21xxxxxxxx
|
|
|
|
Fixed Issues from the last release (2018.07)
|
|
============================================
|
|
|
|
#9573: pkg/lwip: assert on samr21-xpro
|
|
#9584: drivers/cc2420: add netopt NETOPT_MAX_PACKET_SIZE
|
|
#6437: periph/spi: Leftovers from SPI rework in #4780
|
|
#6650: GPIO Port shift in cc2538 is inconsistent
|
|
#6836: Issuing a reboot on ATmega328p makes the board loop-reboot
|
|
#7846: stm32f1: I2C read functions return bogus values with unconnected devices
|
|
#9616: at86rf2xx: can not correctly set channel after `NETOPT_STATE_RESET`
|
|
|
|
|
|
You can get the complete detail in the git history and in the release milestone
|
|
[Release 2018.10](https://github.com/RIOT-OS/RIOT/milestone/24?closed=1).
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies (vendors) that provided us with (their)
|
|
hardware for porting and testing RIOT-OS. Further thanks go to companies and
|
|
institutions that directly sponsored development time. And finally, big thanks
|
|
to all of you contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
RIOT-2018.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 2018.07 release includes new features, like NimBLE (ble stack),
|
|
a MQTT-SN client, SHA-1 based PRNG, an UUID implementation. The RISC-V CPU
|
|
architecture support used by the hifive1 board.
|
|
Effort was done on refactoring, documentation, test improvements and bug fixes.
|
|
|
|
During the last release, maintainers contributed by running the automated test
|
|
suites on their boards. This gave valuable feedback on the board support state,
|
|
test reliability and where to focus effort to make testing easier and more
|
|
reliable.
|
|
|
|
About 380 pull requests with about 675 commits have been merged since the last
|
|
release and about 27 issues have been solved. 45 people contributed with code
|
|
in 93 days. Approximately 1678 files have been touched with 147122 insertions
|
|
and 16060 deletions.
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
Community
|
|
---------
|
|
+ Maintainers guidelines have been written and added to the repository
|
|
|
|
Documentation
|
|
-------------
|
|
+ Fix undefined doxygen groups and add a dedicated static check
|
|
+ Extend `auto_init` documentation
|
|
|
|
Core
|
|
----
|
|
+ core: clist_foreach() now returns break-causing node
|
|
|
|
System libraries
|
|
----------------
|
|
+ puf_sram: SRAM PUF feature to seed PRNGs cortex-m platforms
|
|
+ random: SHA-1 based PRNG
|
|
+ matstat: Integer mathematical statistics library
|
|
+ UUID: [RFC4122](https://tools.ietf.org/html/rfc4122) Unique ID library
|
|
* analog_util: Refactor, add unit test
|
|
- cbor: Deprecation of this module, use cn-cbor or tinycbor package
|
|
instead
|
|
|
|
Networking
|
|
----------
|
|
+ asymcute: an asynchronous MQTT-SN client
|
|
+ gnrc_ipv6: full duplicate address detection support according to
|
|
[RFC4862](https://tools.ietf.org/html/rfc4862)
|
|
+ gnrc_ipv6: support to handle RDNSS option in neighbor discovery
|
|
+ netif.h: a network-stack agnostic API to network interfaces
|
|
+ lorawan: add example application of autonomous class A device
|
|
* sock_udp: allocate ephemeral port on sock creation when port is 0
|
|
* gnrc_netif: Enable RX and TX complete events after netdev initialization
|
|
* net/gcoap: Refine Observe re-registration
|
|
* net/nanocoap: Build message with coap_pkt_t
|
|
|
|
Packages
|
|
--------
|
|
+ NimBLE: Bluetooth Low Energy stack used in mynewt
|
|
+ TLSF: re-enable original API to have different pools
|
|
+ LUA: Add an example with the shell
|
|
+ semtech-loramac: add support for link_check MAC command
|
|
* libcose: Use RIOT random_bytes instead of randombytes
|
|
* tweetnacl: Use RIOT random_bytes instead of randombytes
|
|
* hacl: Use RIOT random_bytes instead of randombytes
|
|
|
|
Boards
|
|
------
|
|
+ Nucleo boards use their marketing names
|
|
+ HiFive1 (RISC-V)
|
|
+ slstk3402a
|
|
+ stm32f429i-disc1
|
|
+ stm32l476-disco
|
|
+ nucleo-l496zg
|
|
+ stm32mindev
|
|
+ frdm-k22f, frdm-k64f, frdm-kw41z: Add bus configuration for onboard FXOS8700CQ sensor
|
|
* mulle: Fix mixed up RX TX pins on UART0
|
|
|
|
CPU
|
|
---
|
|
+ E310 (RISC-V)
|
|
* kinetis: GPIO: Enable the correct IRQn on CM0+
|
|
* kinetis: Refactor PIT timer driver implementation
|
|
* kinetis: Refactor RTT driver
|
|
* kinetis: Refactor clock initialization code
|
|
* kinetis: Refactor LPTMR timer implementation
|
|
* kinetis: Clean up SPI module power handling
|
|
* kinetis: Conditionally enable MCG
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ periph_eeprom API with support for STM32 L0/L1 and AVR
|
|
+ AT commands parser
|
|
+ Fix periph_flashpage for iotlab-a8-m3/iotlab-m3/fox boards
|
|
+ IO1 Xplained extension: add support for light sensor and SD card, fix
|
|
GPIOs initialization and SAUL support
|
|
+ tests/bench_timers: A comprehensive benchmark for periph_timer
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
+ Correctly set the RIOT_VERSION on release archives
|
|
+ iotlab-m3/iotlab-a8-m3: fix boards flashing
|
|
+ Fix use of non completely initialized BASELIBS variable
|
|
+ newlib.mk: extract gcc include search directories for newlib-nano support
|
|
+ llvm: many compatibilities issues have been resolved
|
|
* testbed-support: use new iot-lab command names
|
|
|
|
Testing
|
|
-------
|
|
+ Address some of the failing tests
|
|
+ New tests enabled by default in CI
|
|
+ Improve testing automation for release testing
|
|
|
|
Known Issues
|
|
============
|
|
|
|
Networking related issues
|
|
-------------------------
|
|
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address
|
|
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up rooting
|
|
#5051: Forwarding a packet back to its link layer source should not be allowed
|
|
#5230: gnrc_ipv6: multicast packets are not dispatched to the upper layers
|
|
#5748: gnrc: nodes crashing with too small packet buffer
|
|
#6123: gnrc: crash with (excessive) traffic in native
|
|
#7474: 6lo: gnrc fragmentation expects driver to block on TX
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
#8086: gnrc_rpl_p2p: not compiling
|
|
#8130: gcoap: can't build with network stacks other than gnrc
|
|
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
|
|
configured prefix
|
|
#8271: app/netdev: application stops working after receiving frames with
|
|
assertion or completely without error
|
|
#9616: at86rf2xx: can not correctly set channel after `NETOPT_STATE_RESET`
|
|
#9656: gnrc/netif: various problems after resetting interface a second time
|
|
#9573: pkg/lwip: assert on samr21-xpro
|
|
#9584: drivers/cc2420: add netopt NETOPT_MAX_PACKET_SIZE
|
|
|
|
Timer related issues
|
|
--------------------
|
|
|
|
#5103: xtimer: weird behavior of tests/xtimer_drift
|
|
#5338: xtimer: xtimer_now() is not ISR safe
|
|
#6052: tests: xtimer_drift_gets_stuck
|
|
#7114: xtimer: adds items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
#7347: xtimer_usleep stuck for small values
|
|
#8251: telosb: timer config wrong when running o a tmote sky
|
|
#9052: misc issues with tests/trickle
|
|
|
|
Native related issues
|
|
---------------------
|
|
|
|
#495: native not float safe
|
|
#5796 native: tlsf: early malloc will lead to a crash
|
|
#6442: cpu/native: timer interrupt issue
|
|
#7206: native: race-condition in IPC
|
|
|
|
Other platforms related issues
|
|
------------------------------
|
|
|
|
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
|
|
#4612: pkg: TLSF does not build for 16 bit platforms
|
|
#4872: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
#4954: chronos: compiling with -O0 breaks
|
|
#4866: periph: GPIO drivers are not thread tafe
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#5128: some use of asm keyword might be missing volatile
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5774: cpu: cortexm_common: context switching code breaks when compiling with
|
|
LTO
|
|
#5848: arduino: Race condition in sys/arduino/Makefile.include
|
|
#6018: nRF52: gnrc 6lowpan ble memory leak
|
|
#6437: periph/spi: Leftovers from SPI rework in #4780
|
|
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
|
|
CS
|
|
#6650: GPIO Port shift in cc2538 is inconsistent
|
|
#6838: Issuing a reboot on ATmega328p makes the board loop-reboot
|
|
#6874: SAMD21: possible CMSIS bug
|
|
#7020: isr_rfcoreerrors while pinging between CC2538DKs
|
|
#7667: sam0 flashpage_write issues
|
|
#7846: stm32f1: I2C read functions return bogus values with unconnected devices
|
|
#8028: diskio: failed assertion in send_cmd() on lpc2387
|
|
#8045: stm32/periph/uart: extra byte transmitted on first transmission
|
|
#8436: Kinetis PhyNode: failed to flash binary > 256K
|
|
#8444: tests/thread_priority_inversion hangup
|
|
#9616: ATmega platform issues.
|
|
|
|
Other issues
|
|
------------
|
|
|
|
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
|
|
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
|
|
#4488: making the newlib thread-safe
|
|
#5561: C++11 extensions in header files
|
|
#5776: make: Predefining CFLAGS are parsed weirdly
|
|
#5863: OSX+SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
|
|
#6120: Windows AVR Mega development makefile Error
|
|
#7220: sys/fmt: Missing tests for fmt_float,fmt_lpad
|
|
#7877: SPI connection can't read 16bit size register
|
|
#8107: crypto/ccm: bugs in the implementation of CCM mode
|
|
#9548: Many i2c bugs found with the i2c api rework but did not reach the release
|
|
#9709: examples: failed assertion in dtls-echo example
|
|
|
|
Fixed Issues from the last release (2018.04)
|
|
============================================
|
|
|
|
#8112 crypto/ccm: fix input_len checking with length_encoding
|
|
#8532 kinetis: timer_set_absolute randomly misses its target
|
|
#8778 sys/random: random_uint32_range is only uniform if range is a power of 2
|
|
bug quality defect
|
|
#9065 flashpage_write broken on iotlab-m3
|
|
#9154 cpu/lpc2387: Fixed broken SPI driver
|
|
#9451 Makefile.include: fully define BASELIBS before using its value
|
|
#9579 stm32_common: fix ram length for MCUs with non-contiguous ram regions
|
|
#9675 tests: gnrc_netif: fix group join iteration macro
|
|
|
|
|
|
You can get the complete detail in the git history and in the release milestone
|
|
[Release 2018.07](https://github.com/RIOT-OS/RIOT/milestone/23?closed=1).
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies (vendors) that provided us with (their)
|
|
hardware for porting and testing RIOT-OS. Further thanks go to companies and
|
|
institutions that directly sponsored development time. And finally, big thanks
|
|
to all of you contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
RIOT-2018.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 2018.04 release includes major progress in support for current crypto
|
|
libraries. A lot of work has gone into updating drivers to RIOT's unified
|
|
configuration scheme. Support for ten new boards has been added. In our quest
|
|
to improve and automate testing, many test scripts have been fixed and
|
|
improved, and RIOT's CI now runs many tests on real hardware during its nightly
|
|
build testing. And as usual, many tiny fixes and improvements have been merged.
|
|
|
|
About 390 pull requests with about 1073 commits have been merged since the last
|
|
release and about 54 issues have been solved. 44 people contributed with code
|
|
in 98 days. Approximately 1491 files have been touched with 208426 insertions.
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
System libraries
|
|
----------------
|
|
- cbor: deprecated in favour of cn-cbor
|
|
+ hashes: add sha-3 implementation
|
|
|
|
Networking
|
|
----------
|
|
* netdev: replaced "struct iovec" with iolist_t
|
|
+ nanocoap: added server-side block1 support
|
|
+ skald: a BLE advertising stack
|
|
|
|
Packages
|
|
--------
|
|
+ cayenne-lpp: A Cayenne LPP library written in C
|
|
+ HACL*: a formally verified cryptographic library written in F*
|
|
+ qDSA: Small and Secure Digital Signatures with Curve-based
|
|
Diffie--Hellman Key Pairs
|
|
+ libcose: Constrained node COSE library
|
|
+ cn-cbor: A constrained node implementation of CBOR in C
|
|
+ ucglib
|
|
|
|
Boards
|
|
------
|
|
+ arduino-mkrfox1200
|
|
+ frdm-kw41z
|
|
+ jiminy-mega256rfr2
|
|
+ mega-xplained
|
|
+ nucleo-l433rc
|
|
+ nucleo-l452re
|
|
+ slstk3401a
|
|
+ slwstk6000b
|
|
+ stk3600
|
|
+ stk3700
|
|
|
|
CPU
|
|
---
|
|
+ atmega1284p
|
|
+ NXP Kinetis KW41Z
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ bmx055: Bosch bmx055 9-axis IMU
|
|
+ ata8520e: Microchip ATA8520E Sigfox(tm) transceiver
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
+ ci: initial on-hardware test support
|
|
|
|
Known Issues
|
|
===========
|
|
|
|
Please refer to the issue tracker at https://github.com/RIOT-OS/RIOT/issues.
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies (vendors) that provided us with (their)
|
|
hardware for porting and testing RIOT-OS. Further thanks go to companies and
|
|
institutions that directly sponsored development time. And finally, big thanks
|
|
to all of you contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
RIOT-2018.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 2018.01 release includes major progress in RIOTs network communication
|
|
capabilities, i.e., rewrite of GNRC's neighbour discovery, confirmable messages
|
|
in (g)CoAP, LoRa, and GoMacH as well as updates on CCN-lite and LWIP.
|
|
Furthermore, RIOT contributes to _IKEA-Hacking_ by bringing support for
|
|
the smart home lighting system TRADFRI (note: this will void the warranty).
|
|
Needless to say that this release also adds and updates support for several
|
|
platforms, drivers, and of course lots of enhancements to the documentation
|
|
as well as numerous bug fixes. Last but not least, RIOT now has an official
|
|
code of conduct (https://github.com/RIOT-OS/RIOT/blob/master/CODE_OF_CONDUCT.md)
|
|
|
|
More than 442 pull requests with about 865 commits have been merged since the
|
|
last release and about 96 issues have been solved. 54 people contributed with code
|
|
in 96 days. Approximately 2370 files have been touched with 223970 insertions
|
|
and 181409 deletions.
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
|
|
New features and changes
|
|
========================
|
|
System libraries
|
|
----------------
|
|
+ event: event queue framework like libevent
|
|
|
|
Networking
|
|
----------
|
|
+ gcoap: confirmable messages
|
|
+ nanocoap: no external package anymore
|
|
* GNRC: major rewrite of neighbour discovery
|
|
* GNRC: new API for network interface handling
|
|
|
|
Packages
|
|
--------
|
|
+ gecko_sdk: library for EFM/EFR/EZR32 MCUs
|
|
* libcoap: git patching fixed
|
|
+ littlefs: filesystem for constraint devices
|
|
- nanocoap: now part of RIOT
|
|
* openthread: updated
|
|
+ semtech-loramac: LoRa MAC
|
|
+ umorse: morse encoder
|
|
|
|
Boards
|
|
------
|
|
+ acd52832
|
|
* common: restructured shared code for boards
|
|
+ b-l475e-iot01a
|
|
+ bluepill
|
|
+ ikea-tradfri
|
|
- pca10000
|
|
- pca10005
|
|
- qemu-i386
|
|
+ ruuvitag
|
|
+ sltb001a
|
|
+ teensy31
|
|
+ thingy52
|
|
- x86
|
|
|
|
CPU
|
|
---
|
|
+ efm32
|
|
* kinetis: unified all MCU variants
|
|
- x86
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ socket_zep: emulated IEEE 802.15.4 device over a UDP for native
|
|
+ hts221
|
|
+ lc709203f
|
|
+ lis2dh12
|
|
+ rn2xx3
|
|
+ soft_spi
|
|
+ tja1042
|
|
|
|
Build System / Tooling
|
|
----------------------
|
|
+ flake8: python code checker
|
|
* make: set `-Wall -Wextra` as default for all compilers and platforms
|
|
- sniffer: moved to applications repository
|
|
+ tests: add automated test scripts for many apps
|
|
|
|
|
|
Fixed Issues from the last release (2017.10)
|
|
============================================
|
|
#2143: unittests: tests-core doesn't compile for all platforms
|
|
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle
|
|
#4822: kw2xrf: packet loss when packets get fragmented
|
|
#5005: ndp: router advertisement sent with global address
|
|
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while
|
|
#5656: Possible Weakness with locking in the GNRC network stack
|
|
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR
|
|
#5944: msp430: ipv6_hdr unittests fail
|
|
#6451: Wrong value in SRF08 driver
|
|
#6502: cpu/stm32l1: RTC broken
|
|
|
|
|
|
Known Issues
|
|
============
|
|
Networking related issues
|
|
-------------------------
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame
|
|
gets lost the reassembly state machine might get out of sync
|
|
#7035: lwIP: hangs due to sema change after a while
|
|
|
|
Timer related issues
|
|
--------------------
|
|
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly
|
|
jumps a few seconds on nrf52
|
|
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
|
|
#6052: tests: xtimer_drift gets stuck: application freezes after ~30-200 seconds
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between
|
|
_xtimer_now() and irq_disable()
|
|
|
|
native related issues
|
|
---------------------
|
|
#495: native not float safe: When FPU is used and an asynchronous context
|
|
switch occurs, either the stack gets corrupted or a floating point
|
|
exception occurs.
|
|
#6442: cpu/native: timer interrupt does not yield thread
|
|
|
|
other platform related issues
|
|
-----------------------------
|
|
#1891: newlib-nano: Printf formatting does not work properly for some numeric
|
|
types: PRI[uxdi]64, PRI[uxdi]8 and float are not parsed in newlib-nano
|
|
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic
|
|
operations in the drivers some pin configurations might get lost.
|
|
#5848: Arduino: Race condition in sys/arduino/Makefile.include
|
|
#6018: nRF52 gnrc 6lowpan ble memory leak
|
|
#6261: SAMD21: TC3 & TC4 issue when using TCC2
|
|
#6379: nrf52dk/nordic_soft_device: not working anymore
|
|
#6437: periph/spi: Leftovers from SPI rework
|
|
#6526: atmega based boards freeze when main thread is over
|
|
#6836: Issuing a reboot on ATmega328p makes the board loop-reboot
|
|
#7753: pic32-wifire: race-condition when linking in concurrent build
|
|
|
|
other issues
|
|
------------
|
|
#1263: TLSF implementation contains (a) read-before-write error(s).
|
|
#3366: periph/i2c: handle NACK
|
|
#4488: Making the newlib thread-safe: When calling puts/printf after
|
|
thread_create(), the CPU hangs for DMA enabled UART drivers.
|
|
#5776: make: Predefining CFLAGS are parsed weirdly
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle inputs of length >64 chars
|
|
#5962: Makefile: UNDEF variable is not working as documented
|
|
|
|
|
|
Acknowledgements
|
|
================
|
|
We would like to thank all companies (vendors) that provided us with (their)
|
|
hardware for porting and testing RIOT-OS. Further thanks go to companies and
|
|
institutions that directly sponsored development time. And finally, big thanks
|
|
to all of you contributing in so many different ways to make RIOT worthwhile!
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser
|
|
General Public License (LGPL) version 2.1 as published by the Free Software
|
|
Foundation.
|
|
* Some external sources and packages are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
RIOT-2017.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 microcontrollers, 16-bit
|
|
microcontrollers and 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:
|
|
===================
|
|
Most notable, this release is bringing RIOT a step closer to supporting
|
|
over-the-air-updates by containing initial support for MCUBoot.
|
|
Furthermore, it adds support for some new platforms (e.g. arduino-mkzero,
|
|
nucleos, and frdm-k22f), drivers (e.g. my9221, apa102, ds1307), and of course
|
|
a large number of bug fixes (e.g. `make buildtest` now working properly,
|
|
various fixes to `xtimer`).
|
|
|
|
About 390 pull requests with about 500 commits have been merged since the last
|
|
release and about 60 issues have been solved. 39 people contributed with code
|
|
in 113 days. 1825 files have been touched with 223454 insertions and 66146 deletions.
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
Bootloader
|
|
-----------
|
|
+ MCUBoot: A secure bootloader for ARM MCUs is now supported. This initial support
|
|
includes only the nrf52dk board. For more information about it refer to the mcuboot github
|
|
page at https://github.com/runtimeco/mcuboot/blob/master/README-RIOT.rst
|
|
|
|
System libraries
|
|
----------------
|
|
+ bcd: binary coded decimal en/decoder
|
|
|
|
Networking
|
|
----------
|
|
+ gcoap: Add URI-query strings for requests + various fixes
|
|
|
|
Packages
|
|
--------
|
|
* lwip: Updated to v2.0.3
|
|
|
|
Boards
|
|
------
|
|
+ NXP frdm-k22f
|
|
+ STM nucleo144-f722
|
|
+ Arduino arduino-mkzero
|
|
+ ti CC2650 LaunchPad
|
|
- weio
|
|
|
|
CPU
|
|
---
|
|
+ NXP k22f
|
|
+ cc2538: ADC
|
|
+ stm32l4: RTC
|
|
+ samr21e18a
|
|
+ msp430: added flashpage driver
|
|
- lpc11u34
|
|
* stm32: unified stmclk implementations, reworked RTC
|
|
* sam0: heavy unification and refactoring, updated vendor headers
|
|
+ sam_common: started unification of sam0 and sam3
|
|
* cortexm: interrupt vector cleanup
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ my9221 - LED controller + Seeed Studio Grove LED bar
|
|
+ apa102 - RGB LED
|
|
+ ds1307: RTC
|
|
+ SAUL support: lps331ap
|
|
* SAUL gpio: allow configuration of initial state and low-active signals
|
|
* sdcard_spi: added mtd interface
|
|
* PM: fixed selection of default implementations for `pm_off` and `pm_set_lowest`
|
|
|
|
Build System / Tooling
|
|
------------
|
|
+ make: added pkt-prepare target
|
|
* gcc: enabled `-fdiagnostics-color` per default for `arm` and `native` targets
|
|
* edbg: use as default flash tool for sam0-based boards
|
|
+ added LOSTANDFOUND.md for listing removed features
|
|
|
|
Fixed Issues from the last 3 releases (known issues missing in 2017.04 and 2017.07)
|
|
===================================================================================
|
|
#2006: cpu/nrf51822: timer callback may be fired too early
|
|
#4841: xtimer: timer already in the list:
|
|
#4590: pkg: building relic with clang fails.
|
|
#4694: drivers/lm75a: does not build
|
|
#4902: xtimer: xtimer_set: xtimer_set does not handle integer overflows well
|
|
#5128: make: buildtest breaks when exporting FEATURES_PROVIDED var
|
|
#5207: make: buildest fails with board dependent application Makefiles
|
|
#5361: cpu/cc26x0: timer broken
|
|
#5460: cpu/samd21: i2c timing with compiler optimization
|
|
#5489: cpu/lpc11u34: ADC broken
|
|
#5799: kw2x: 15.4 duplicate transmits
|
|
#5928: xtimer: usage in board_init() crashes: some boards use the xtimer in there board_init()
|
|
function. The xtimer is however first initialized in the auto_init module which is executed
|
|
after board_init()
|
|
#6022: pkg: build order issue
|
|
#6331: RTC alarm triggered with 1s delay
|
|
#6419: cpu/cc2538: timer broken
|
|
#6427: xtimer: infinite loop with xtimer_mutex_lock_timeout
|
|
#6501: boards/nucleo: Pin usage collision (SPI clk vs. LED0)
|
|
#6542: boards/nucle-f0xx: misconfigured timer configuration
|
|
#6904: cpu/saml21: cannot use several EXTI
|
|
|
|
Known Issues
|
|
============
|
|
Networking related issues
|
|
-------------------------
|
|
#3075: nhdp: unnecessary microsecond precision: NHDP works with timer values of microsecond precision
|
|
which is not required. Changing to lower precision would save some memory.
|
|
#4048: gnrc: potential racey memory leak
|
|
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5656: Possible Weakness with locking in the GNRC network stack: For some operations mutexes to the
|
|
network interfaces need to get unlocked in the current implementation to not get deadlocked.
|
|
Recursive mutexes as provided in #5731 might help to solve this problem.
|
|
#5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of size ~512 B might lead
|
|
to crashes. The issue describes this for several hundred nodes, but aggressive flooding with
|
|
just two nodes was also shown to lead to this problem.
|
|
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame gets lost the reassembly
|
|
state machine might get out of sync
|
|
#6123: gnrc: crash with (excessive) traffic
|
|
#7035: lwIP: hangs due to sema change after a while
|
|
#7737: pkg: libcoap is partially broken and outdated
|
|
|
|
NDP is not working properly
|
|
---------------------------
|
|
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle: Reception of a router solicitation might lead
|
|
to invalid zero-length link-layer addresses in neighbor cache.
|
|
#5005: ndp: router advertisement sent with global address: Under some circumstances a router might
|
|
send RAs with GUAs. While they are ignored on receive (as RFC-4861 specifies), RAs should have
|
|
link-local addresses and not even be send out this way.
|
|
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while: Several issues
|
|
(also see #5760) lead to a global unicast address effectively being banned from the network
|
|
(disappears from neighbor cache, is not added again)
|
|
#5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by outdated ncache at router
|
|
#5539: Border Router: packet not forwarded from ethos to interface 6
|
|
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR
|
|
|
|
Timer related issues
|
|
--------------------
|
|
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
|
|
#6052: tests: xtimer_drift gets stuck: xtimer_drift application freezes after ~30-200 seconds
|
|
#6502: cpu/stm32l1: RTC broken
|
|
#7114: xtimer: add's items to the wrong list if the timer overflows between _xtimer_now() and irq_disable()
|
|
|
|
native related issues
|
|
---------------------
|
|
#495: native not float safe: When the FPU is used when an asynchronous context switch occurs, either
|
|
the stack gets corrupted or a floating point exception occurs.
|
|
#2175: ubjson: valgind registers "Invalid write of size 4" in unittests
|
|
#5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be initialized (which is
|
|
currently expected to be done in an application). If a malloc is needed before an application's
|
|
main started (e.g. driver initialization) the node can crash, since no pool is allocated yet.
|
|
#6145: native: system reboots on SIGTRAP
|
|
#6442: cpu/native: timer interrupt does not yield thread
|
|
#7206: native: race-condition in IPC
|
|
|
|
other platform related issues
|
|
-----------------------------
|
|
#1891: newlib-nano: Printf formatting does not work properly for some numeric types: PRI[uxdi]64,
|
|
PRI[uxdi]8 and float are not parsed in newlib-nano
|
|
#2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins were used in the
|
|
unittests which are not available with msp430-gcc
|
|
#2300: qemu unittest fails because of a page fault
|
|
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
|
|
#4560: make: clang is more pedantic than gcc oonf_api is not building with clang (partly fixed by #4593)
|
|
#4822: kw2xrf: packet loss when packets get fragmented
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not supported
|
|
#4954: chronos: compiling with -O0 breaks
|
|
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic operations in the drivers
|
|
some pin configurations might get lost.
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly jumps a few seconds on nrf52
|
|
#5405: Erratic timings on iotlab-m3 with compression context activated
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5678: at86rf2xx: failed assertion in _isr
|
|
#5944: msp430: ipv6_hdr unittests fail
|
|
#5848: arduino: Race condition in sys/arduino/Makefile.include
|
|
#6018: nRF52 gnrc 6lowpan ble memory leak
|
|
#6261: SAMD21 TC3 & TC4 issue when using TCC2
|
|
#6379: nrf52dk/nordic_soft_device: not working anymore
|
|
#6437: periph/spi: Leftovers from SPI rework
|
|
#6526: atmega based boards freeze when main thread is over
|
|
#6836: Issuing a reboot on ATmega328p makes the board loop-reboot
|
|
#7347: xtimer_usleep stuck for small values on nucleo-l1
|
|
#7753: pic32-wifire: race-condition when linking in concurrent build
|
|
#7846: stm32f1: I2C read functions return bogus values with unconnected devices
|
|
|
|
other issues
|
|
------------
|
|
#1263: TLSF implementation contains (a) read-before-write error(s).
|
|
#3256: make: Setting constants on compile time doesn't really set them everywhere
|
|
#3366: periph/i2c: handle NACK
|
|
#4488: Making the newlib thread-safe: When calling puts/printf after thread_create(), the CPU hangs
|
|
for DMA enabled uart drivers.
|
|
#5561: C++11 extensions in header files
|
|
#5776: make: Predefining CFLAGS are parsed weirdly
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
|
|
#5962: Makefile: UNDEF variable is not working as documented
|
|
#6451: Wrong value in SRF08 driver
|
|
#7800: CBOR is broken
|
|
|
|
Special Thanks
|
|
==============
|
|
We would like to give our special thanks to all the companies that provided us
|
|
with their hardware for porting and testing, namely the people from (in alphabeticalorder):
|
|
Atmel, Freescale, Imagination Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO,
|
|
and Zolertia;
|
|
and also companies that directly sponsored development time:
|
|
Cisco Systems, Eïsox, Eistec, Ell-i, Engineering Spirit, Mesotic, Nordic, OTA keys and Phytec.
|
|
We also would like to thank people from Inria Chile for their work on
|
|
OpenThread integration and Semtech LoRa drivers.
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser General Public
|
|
License (LGPL) version 2.1 as published by the Free Software Foundation.
|
|
* Some external sources and pkg are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
RIOT-2017.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 microcontrollers, 16-bit
|
|
microcontrollers and 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 provides fixes, code cleanup and improved documentation, as well as
|
|
enhancements.
|
|
New features brought by this release include:
|
|
* CAN support (Controller Area Network)
|
|
* Support for CoAP OBSERVE requests
|
|
* Basic Thread stack support (initial support for OpenThread)
|
|
* radio duty cycling with LwMAC protocol
|
|
* LoRa radio drivers supporting Semtech hardware
|
|
|
|
|
|
About 230 pull requests with about 442 commits have been merged since the last
|
|
release and about 13 issues have been solved. 45 people contributed with code
|
|
in 56 days. 1395 files have been touched with 211720 insertions and 65729 deletions.
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
|
|
API changes
|
|
-----------
|
|
- removed conn API
|
|
|
|
System libraries
|
|
----------------
|
|
+ AES CMAC encryption
|
|
+ GCC's Stack Smashing Protector (SSP) support
|
|
- Remove 3-DES crypto
|
|
|
|
|
|
Networking
|
|
----------
|
|
+ CAN stack
|
|
+ CoAP OBSERVE request
|
|
+ LwMAC protocol
|
|
+ OpenThread
|
|
+ Layer 2 filtering (l2filter)
|
|
* LwIP port to v2.0.2
|
|
* NHDP port to sock API
|
|
- removed conn API
|
|
|
|
|
|
Packages
|
|
--------
|
|
+ OpenThread
|
|
|
|
Boards
|
|
------
|
|
+ Arduino MKR1000 (without WiFi)
|
|
+ Nucleo144-f412
|
|
+ Nucleo144-f746
|
|
+ Nucleo144-f767
|
|
+ NZ32-SC151 (STM32L1)
|
|
+ ST B-L072-LRWAN1 (with LoRa radio)
|
|
+ STM32F769 discovery
|
|
* Full support for PhyNode
|
|
|
|
CPU
|
|
---
|
|
+ lm4120: SPI support
|
|
+ SAM3: ADC support, DAC support
|
|
+ SAMD21: flashpage, ADC support
|
|
+ SAML21: ADC, I2C support
|
|
+ STM32F413vg support
|
|
+ STM32F7 family (ARM Cortex-M7)
|
|
+ STM32L0 family: I2C support
|
|
* STM32: unified DAC support
|
|
* STM32F1/F2/F4 clock initialization refactoring
|
|
|
|
|
|
Device Drivers
|
|
--------------
|
|
+ ADCXX1C I2C ADC support
|
|
+ BMP280 temperature/pressure sensor
|
|
+ DSP0401 4 digits 16 segment alphanumeric display
|
|
+ MMA8x5x motion detection sensor
|
|
+ Semtech SX1272 and SX1276 LoRa drivers
|
|
|
|
|
|
Build System
|
|
------------
|
|
+ EDBG support
|
|
+ http download with caching (dlcache)
|
|
+ Use Coccinelle static code checker in CI
|
|
|
|
|
|
Special Thanks
|
|
==============
|
|
We would like to give our special thanks to all the companies that provided us
|
|
with their hardware for porting and testing, namely the people from (in alphabeticalorder):
|
|
Atmel, Freescale, Imagination Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO,
|
|
and Zolertia;
|
|
and also companies that directly sponsored development time:
|
|
Cisco Systems, Eïsox, Eistec, Ell-i, Engineering Spirit, Mesotic, Nordic, OTA keys and Phytec.
|
|
We also would like to thank people from Inria Chile for their work on
|
|
OpenThread integration and Semtech LoRa drivers.
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* The code developed by the RIOT community is licensed under the GNU Lesser General Public
|
|
License (LGPL) version 2.1 as published by the Free Software Foundation.
|
|
* Some external sources and pkg are published under a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
|
|
|
|
RIOT-2017.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 microcontrollers, 16-bit
|
|
microcontrollers and 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 provides a lot of new features, fixes and enhancements. Among
|
|
these has been a huge cleanup regarding cppcheck and documentation, and we're
|
|
pleased to announce that all remaining doxygen and cppcheck warnings have been
|
|
fixed. We're also proud to present a Virtual File System layer and integration
|
|
of the SPIFFS file system. A lot of work has gone into support for
|
|
STMicroelectronics's Nucleo family, with RIOT now supporting 28 (up from 13)
|
|
Nucleo boards. And as always, there was a lot of under-the-hood cleanup, bug
|
|
fixing and documentation work.
|
|
|
|
About 200 pull requests with about 562 commits have been merged since the last release and about 23
|
|
issues have been solved. 32 people contributed with code in 91 days. 2697 files have been touched with
|
|
716950 insertions and 492623 deletions.
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
Core
|
|
----
|
|
+ full C11 atomics support
|
|
+ rmutex, a recursive mutex implementation
|
|
|
|
API changes
|
|
-----------
|
|
* renamed NTOH*() -> ntoh*(), HTON*() -> hton*()
|
|
- removed gpioint API, which was unused and obsoleted by periph/gpio
|
|
* renamed uuid module to luid
|
|
|
|
System libraries
|
|
----------------
|
|
+ VFS: virtual file system layer
|
|
+ fmt: add print_byte_hex(), fmt_lpad()
|
|
- 3DES: removed support as 3DES is considered legacy crypto
|
|
|
|
Networking
|
|
----------
|
|
+ emCute - a small MQTT-SN implementation
|
|
+ sock_dns: a simple DNS resolver
|
|
|
|
Packages
|
|
--------
|
|
+ SPIFFS, the first file system supported by RIOT's VFS layer
|
|
+ jerryscript, a Javascript interpreter
|
|
|
|
Drivers
|
|
-------
|
|
- added dynamixel server motor driver
|
|
- removed ltc4150 driver
|
|
- removed smb380 driver
|
|
|
|
Build System
|
|
------------
|
|
+ Experimental distributed building using Murdock
|
|
+ most makefiles moved from root into makefiles/
|
|
+ added submodule support
|
|
|
|
Special Thanks
|
|
==============
|
|
We like to give our special thanks to all the companies that provided us with their hardware for
|
|
porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination
|
|
Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly
|
|
sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, OTAkeys and Phytec.
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* Most of the code developed by the RIOT community is licensed under the GNU Lesser General Public
|
|
License (LGPL) version 2.1 as published by the Free Software Foundation.
|
|
* Some external sources are published under a separate, LGPL compatible license
|
|
(e.g. some files developedby SICS).
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RIOT-2017.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 microcontrollers,
|
|
16-bit microcontrollers and 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 provides a lot of new features, fixes and enhancements. Among others these features
|
|
contain an initial - still experimental - TCP implementation based on the GNRC network stack, support
|
|
for reading from and writing to SD cards, a new power management architecture as well additional third
|
|
party packages such as TweetNaCl, a cryptographic library, and Heatshrink a data compression library
|
|
optimized for embedded real-time systems.
|
|
We added support for new platforms including the Calliope mini, Maple mini, and a couple of STMs
|
|
Nucleo boards. Device support was extended by several new drivers, e.g., for NXP PN532 NFC, Microchip
|
|
MRF24J40 802.15.4 radio (experimental), or Bosch BME280 pressure/humidity/temperature sensor.
|
|
We completely refactored the SPI interface, allowing for internally handled hardware or software chip
|
|
select lines and shared bus usage for multiple devices with different SPI configurations.
|
|
|
|
About 278 pull requests with about 606 commits have been merged since the last release and about 84
|
|
issues have been solved. 44 people contributed with code in 87 days. 2230 files have been touched with
|
|
220275 insertions and 159840 deletions.
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
General
|
|
-------
|
|
+ New power management architecture
|
|
|
|
Core
|
|
----
|
|
+ Initial (experimental) OpenOCD/GDB thread support
|
|
* Make Semaphore implementation IPC independent
|
|
|
|
API changes
|
|
-----------
|
|
* SPI driver interface (rework)
|
|
* Add Mutex lock with timeout parameter
|
|
* Xtimer allow for arbitrary frequency & additional convenience functions
|
|
* HDC1000 driver remodeling
|
|
* MMA8652 driver remodeling (MMA8x5x now)
|
|
|
|
System libraries
|
|
----------------
|
|
+ Lightweight CRC16 implementation
|
|
- Remove Twofish and RC5 implementation
|
|
|
|
Networking
|
|
----------
|
|
+ Initial (experimental) GNRC TCP implementation
|
|
* Provide sock-port for POSIX SOCKETS
|
|
* Provide sock-port for GCOAP
|
|
* Provide sock-port for UHCPC
|
|
* Provide sock_ip wrapper for LWIP
|
|
* Native: allow for multiple netdev_tap devices
|
|
|
|
Packages
|
|
--------
|
|
+ TweetNaCl: cryptographic library
|
|
+ Heatshrink: compression/decompression library
|
|
- Removed: OpenWSN
|
|
|
|
Platforms
|
|
---------
|
|
+ Support for Maple mini board
|
|
+ Support for ST Nucleo-32 F303 board
|
|
+ Support for ST Nucleo-32 F042 board
|
|
+ Support for Calliope mini board
|
|
- Drop support for PTTU platform
|
|
|
|
Drivers
|
|
-------
|
|
* Rework SPI driver interface
|
|
+ Peripheral flashrom driver interface
|
|
+ SD Card driver (SPI)
|
|
+ NXP PN532 NFC driver
|
|
+ Initial (experimental) Microchip MRF24J40 radio driver
|
|
+ JEDEC JC42.4 temperature sensors
|
|
+ Bosch BME280 pressure, humidity and temperature sensor
|
|
* NXP MMA8x5x accelerometer (previously MMA8652)
|
|
* Unified STM32 RTC driver
|
|
* Unified STM32 UART driver
|
|
* Unified STM32 PWM driver
|
|
* Unified STM32 timer driver
|
|
* Unified NRF5x low power modes
|
|
+ Low power modes for the STM32F1 family
|
|
* Unified Kinetis low power modes
|
|
* Xbee port to netdev API
|
|
* W5100 port to netdev API
|
|
* NRF5x/'nrfmin' port to netdev API (w/o 6LoWPAN support currently)
|
|
* Refactor synchronous UART by new 'isrpipe' module
|
|
|
|
Build System
|
|
------------
|
|
+ Experimental Jenkins CI
|
|
* Python3 support for compile script (compile_test.py)
|
|
|
|
Other
|
|
-----
|
|
+ UUID module for central ID/address generation
|
|
|
|
Fixed Issues from the last release
|
|
==================================
|
|
#4388: POSIX sockets: open socket is bound to a specific thread
|
|
#4737: cortex-m: Hard fault after a thread exits
|
|
#4874: Using single RSSI_BASE_VALUE for all Atmel radios
|
|
#5034: gnrc_networking: offers txtsnd, does not print received packets
|
|
#5083: AVR8: Reboots after `return 0;`
|
|
#5719: cc2538: rf driver doesn't handle large packets
|
|
#5954: nRF52 uart_write gets stuck
|
|
#6036: tinydtls: DTLS randomly missing functions
|
|
#6037: pkg/nanocoap: native build fails on macOS
|
|
#6358: arduino uno : xtimer accuracy problem
|
|
|
|
Known Issues
|
|
============
|
|
Networking related issues
|
|
-------------------------
|
|
#3075: nhdp: unnecessary microsecond precision: NHDP works with timer values of microsecond precision
|
|
which is not required. Changing to lower precision would save some memory.
|
|
#4048: potential racey memory leak: According to the packet buffer stats, flood-pinging a multicast
|
|
destination may lead to a memory leak due to a race condition. However, it seems to be a rare
|
|
case and a completely filled up packet buffer was not observed.
|
|
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
#5656: Possible Weakness with locking in the GNRC network stack: For some operations mutexes to the
|
|
network interfaces need to get unlocked in the current implementation to not get deadlocked.
|
|
Recursive mutexes as provided in #5731 might help to solve this problem.
|
|
#5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of size ~512 B might lead
|
|
to crashes. The issue describes this for several hundred nodes, but aggressive flooding with
|
|
just two nodes was also shown to lead to this problem.
|
|
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame gets lost the reassembly
|
|
state machine might get out of sync
|
|
#6123: gnrc: crash with (excessive) traffic
|
|
|
|
NDP is not working properly
|
|
---------------------------
|
|
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle: Reception of a router solicitation might lead
|
|
to invalid zero-length link-layer addresses in neighbor cache.
|
|
#5005: ndp: router advertisement sent with global address: Under some circumstances a router might
|
|
send RAs with GUAs. While they are ignored on receive (as RFC-4861 specifies), RAs should have
|
|
link-local addresses and not even be send out this way.
|
|
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while: Several issues
|
|
(also see #5760) lead to a global unicast address effectively being banned from the network
|
|
(disappears from neighbor cache, is not added again)
|
|
#5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by outdated ncache at router
|
|
#5539: Border Router: packet not forwarded from ethos to interface 6
|
|
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR
|
|
|
|
Timer related issues
|
|
--------------------
|
|
#4841: xtimer: timer already in the list: Under some conditions an xtimer can end up twice in the
|
|
internal list of the xtimer module
|
|
#4902: xtimer: xtimer_set: xtimer_set does not handle integer overflows well
|
|
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
|
|
#5928: xtimer: usage in board_init() crashes: some boards use the xtimer in there board_init()
|
|
function. The xtimer is however first initialized in the auto_init module which is executed
|
|
after board_init()
|
|
#6052: tests: xtimer_drift gets stuck: xtimer_drift application freezes after ~30-200 seconds
|
|
#6331: RTC alarm triggered with 1s delay
|
|
#6419: cpu/cc2538: timer broken
|
|
#6427: xtimer: infinite loop with xtimer_mutex_lock_timeout
|
|
#6502: cpu/stm32l1: RTC broken
|
|
#6542: boards/nucle-f0xx: misconfigured timer configuration (fix in #6494)
|
|
|
|
native related issues
|
|
---------------------
|
|
#495: native not float safe: When the FPU is used when an asynchronous context switch occurs, either
|
|
the stack gets corrupted or a floating point exception occurs.
|
|
#2175: ubjson: valgind registers "Invalid write of size 4" in unittests
|
|
#4590: pkg: building relic with clang fails.
|
|
#5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be initialized (which is
|
|
currently expected to be done in an application). If a malloc is needed before an application's
|
|
main started (e.g. driver initialization) the node can crash, since no pool is allocated yet.
|
|
#6145: native: system reboots on SIGTRAP
|
|
#6442: cpu/native: timer interrupt does not yield thread
|
|
|
|
other platform related issues
|
|
-----------------------------
|
|
#1891: newlib-nano: Printf formatting does not work properly for some numeric types: PRI[uxdi]64,
|
|
PRI[uxdi]8 and float are not parsed in newlib-nano
|
|
#2006: cpu/nrf51822: timer callback may be fired too early
|
|
#2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins were used in the
|
|
unittests which are not available with msp430-gcc
|
|
#2300: qemu unittest fails because of a page fault
|
|
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
|
|
#4560: make: clang is more pedantic than gcc oonf_api is not building with clang (partly fixed by #4593)
|
|
#4694: drivers/lm75a: does not build
|
|
#4822: kw2xrf: packet loss when packets get fragmented
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not supported
|
|
#4954: chronos: compiling with -O0 breaks
|
|
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic operations in the drivers
|
|
some pin configurations might get lost.
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly jumps a few seconds on nrf52
|
|
#5361: cpu/cc26x0: timer broken
|
|
#5405: Erratic timings on iotlab-m3 with compression context activated
|
|
#5460: cpu/samd21: i2c timing with compiler optimization
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5489: cpu/lpc11u34: ADC broken
|
|
#5678: at86rf2xx: failed assertion in _isr
|
|
#5799: kw2x: 15.4 duplicate transmits
|
|
#5944: msp430: ipv6_hdr unittests fail
|
|
#5848: arduino: Race condition in sys/arduino/Makefile.include
|
|
#6018: nRF52 gnrc 6lowpan ble memory leak
|
|
#6261: SAMD21 TC3 & TC4 issue when using TCC2
|
|
#6379: nrf52dk/nordic_soft_device: not working anymore
|
|
#6437: periph/spi: Leftovers from SPI rework
|
|
#6501: boards/nucleo: Pin usage collision (SPI clk vs. LED0)
|
|
#6526: atmega based boards freeze when main thread is over
|
|
|
|
other issues
|
|
------------
|
|
#1263: TLSF implementation contains (a) read-before-write error(s).
|
|
#3256: make: Setting constants on compile time doesn't really set them everywhere
|
|
#3366: periph/i2c: handle NACK
|
|
#4488: Making the newlib thread-safe: When calling puts/printf after thread_create(), the CPU hangs
|
|
for DMA enabled uart drivers.
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#5128: make: buildtest breaks when exporting FEATURES_PROVIDED var
|
|
#5207: make: buildest fails with board dependent application Makefiles
|
|
#5561: C++11 extensions in header files
|
|
#5776: make: Predefining CFLAGS are parsed weirdly
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
|
|
#5962: Makefile: UNDEF variable is not working as documented
|
|
#6022: pkg: build order issue
|
|
#6451: Wrong value in SRF08 driver
|
|
#6519: driver/mrf24j40: broken on stm32f4discovery
|
|
|
|
Special Thanks
|
|
==============
|
|
We like to give our special thanks to all the companies that provided us with their hardware for
|
|
porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination
|
|
Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly
|
|
sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, OTAkeys and Phytec.
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* Most of the code developed by the RIOT community is licensed under the GNU Lesser General Public
|
|
License (LGPL) version 2.1 as published by the Free Software Foundation.
|
|
* Some external sources are published under a separate, LGPL compatible license
|
|
(e.g. some files developedby SICS).
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RIOT-2016.10 - Release Notes
|
|
============================
|
|
RIOT is a real-time multi-threading operating system that supports a range of
|
|
devices that are typically found in the Internet of Things: 8-bit
|
|
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.
|
|
|
|
RIOT is based on the following design principles: energy-efficiency, real-time
|
|
capabilities, small memory footprint, modularity, and uniform API access,
|
|
independent of the underlying hardware (this API offers 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 provides a lot of new features as well as it fixes several major
|
|
bugs. Among these new features are the new simplified network socket API
|
|
called sock, the GNRC specific CoAP implementation gcoap and several new
|
|
packages: TinyDTLS, the Aversive++ microcontroller library for robotics, the
|
|
u8g2 graphic library, and nanocoap.
|
|
Using the new sock API an implementation of the Simple Time Network Protocol
|
|
(SNTP) was also introduced, allowing for time synchronization between nodes.
|
|
New platforms include the Arduino Uno, the Arduino Duemilanove, the Arduino
|
|
Zero, SODAQ Autonomo, and the Zolertia remote (rev. B).
|
|
The most significant bug fix was done in native which led to a significantly
|
|
more robust handling of ISRs and now allows for at least 1,000 native
|
|
instances running stably on one machine.
|
|
|
|
About 263 pull requests with about 398 commits have been merged since the last
|
|
release and about 42 issues have been solved. 37 people contributed with code
|
|
in 100 days. 1006 files have been touched with 166500 insertions and 26926
|
|
deletions.
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
General
|
|
-------
|
|
* Verbose behavior for assert() macro
|
|
|
|
Core
|
|
----
|
|
+ MPU support for Cortex-M
|
|
|
|
|
|
API changes
|
|
-----------
|
|
+ Socket-like sock API (replacing conn)
|
|
* netdev: Add Testmodes and CCA modes
|
|
* IEEE 802.15.4: clean-up Intra-PAN behavior
|
|
* IEEE 802.15.4: centralize default values
|
|
* gnrc_pktbuf: allow for 0-sized snips
|
|
+ gnrc_netapi: mbox and arbitrary callback support
|
|
|
|
|
|
System libraries
|
|
----------------
|
|
No new features or changes
|
|
|
|
|
|
Networking
|
|
----------
|
|
+ Provide sock-port for GNRC
|
|
+ gcoap: a GNRC-based CoAP implementation
|
|
+ Simple Network Time Protocol (RFC 5905, section 14)
|
|
+ Priority Queue for packet snips
|
|
+ IPv4 header definitions
|
|
|
|
|
|
Packages
|
|
--------
|
|
+ nanocoap: CoAP header parser/builder
|
|
+ TinyDTLS: DTLS library
|
|
+ tiny-asn1: asn.1/der decoder
|
|
+ Aversive++ microcontroller programming library
|
|
+ u8g2 graphic library
|
|
|
|
|
|
Platforms
|
|
---------
|
|
+ Support for stm32f2xx MCU family
|
|
+ Low power modes for samd21 CPUs
|
|
+ More Arduino-based platforms:
|
|
+ Arduino Uno
|
|
+ Arduino Duemilanove
|
|
+ Arduino Zero
|
|
+ More boards of ST's Nucleo platforms:
|
|
+ ST Nucleo F030 board support
|
|
+ ST Nucleo F070 board support
|
|
+ ST Nucleo F446 board support
|
|
+ SODAQ Automono
|
|
+ Zolertia remote rev. B
|
|
|
|
|
|
Drivers
|
|
-------
|
|
+ W5100 Ethernet device
|
|
+ Atmel IO1 Xplained extension
|
|
+ LPD8808 LED strips
|
|
* at86rf2xx: provide capability to access the RND_VALUE random value register
|
|
|
|
|
|
Build System
|
|
------------
|
|
+ static-tests build target for easy local execution of CI's static tests
|
|
|
|
|
|
Other
|
|
-----
|
|
+ Provide Arduino API to Nucleo boards
|
|
+ Packer configuration file to build vagrant boxes
|
|
+ CC2650STK Debugger Support
|
|
+ ethos: add Ethos over TCP support
|
|
|
|
|
|
Fixed Issues from the last release
|
|
==================================
|
|
#534: native debugging on osx fails
|
|
#2071: native: *long* overdue fixes
|
|
#3341: netdev_tap crashes when hammered
|
|
#5007: gnrc icmpv6: Ping reply goes out the wrong interface
|
|
#5432: native: valgrind fails
|
|
|
|
Known Issues
|
|
============
|
|
Networking related issues
|
|
-------------------------
|
|
#3075: nhdp: unnecessary microsecond precision: NHDP works with timer values
|
|
of microsecond precision which is not required. Changing to lower
|
|
precision would save some memory.
|
|
#4048: potential racey memory leak: According to the packet buffer stats,
|
|
flood-pinging a multicast destination may lead to a memory leak due to
|
|
a race condition. However, it seems to be a rare case and a completely
|
|
filled up packet buffer was not observed.
|
|
#4388: POSIX sockets: open socket is bound to a specific thread: This was an
|
|
inherit problem of the conn API under GNRC. Since the POSIX sockets are
|
|
still based on conn for this release, this issue persists
|
|
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
|
|
address (might still be fixable for release, see #5729, #5230: gnrc
|
|
ipv6: multicast packets are not dispatched to the upper layers)
|
|
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
|
|
#5055: cpuid: multiple radios will get same EUI-64 Nodes with multiple
|
|
interfaces might get the same EUI-64 for them since they are generated
|
|
from the same CPU ID.
|
|
#5656: Possible Weakness with locking in the GNRC network stack: For some
|
|
operations mutexes to the network interfaces need to get unlocked in
|
|
the current implementation to not get deadlocked. Recursive mutexes as
|
|
provided in #5731 might help to solve this problem.
|
|
#5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of
|
|
size ~512 B might lead to crashes. The issue describes this for several
|
|
hundred nodes, but aggressive flooding with just two nodes was also
|
|
shown to lead to this problem.
|
|
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame
|
|
gets lost the reassembly state machine might get out of sync
|
|
|
|
### NDP is not working properly
|
|
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle: Reception of a router
|
|
solicitation might lead to invalid zero-length link-layer addresses in
|
|
neighbor cache.
|
|
#5005: ndp: router advertisement sent with global address: Under some
|
|
circumstances a router might send RAs with GUAs. While they are ignored
|
|
on receive (as RFC 4861 specifies), RAs should have link-local
|
|
addresses and not even be send out this way.
|
|
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while:
|
|
Several issues (also see #5760) lead to a global unicast address
|
|
effectively being banned from the network (disappears from neighbor
|
|
cache, is not added again)
|
|
#5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by
|
|
outdated ncache at router
|
|
#5539: Border Router: packet not forwarded from ethos to interface 6
|
|
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR
|
|
|
|
|
|
Timer related issues
|
|
--------------------
|
|
#4841: xtimer: timer already in the list: Under some conditions an xtimer can
|
|
end up twice in the internal list of the xtimer module
|
|
#4902: xtimer: xtimer_set: xtimer_set does not handle integer overflows well
|
|
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
|
|
#5928: xtimer: usage in board_init() crashes: some boards use the xtimer in
|
|
there board_init() function. The xtimer is however first initialized in
|
|
the auto_init module which is executed after board_init()
|
|
#6052: tests: xtimer_drift gets stuck: xtimer_drift application freezes after
|
|
~30-200 seconds
|
|
|
|
|
|
native related issues
|
|
---------------------
|
|
#495: native not float safe: When the FPU is used when an asynchronous context
|
|
switch occurs, either the stack gets corrupted or a floating point
|
|
exception occurs.
|
|
#2175: ubjson: valgind registers "Invalid write of size 4" in unittests
|
|
#4590: pkg: building relic with clang fails.
|
|
#5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be
|
|
initialized (which is currently expected to be done in an application).
|
|
If a malloc is needed before an application's main started (e.g. driver
|
|
initialization) the node can crash, since no pool is allocated yet.
|
|
|
|
other platform related issues
|
|
-----------------------------
|
|
#1891: newlib-nano: Printf formatting does not work properly for some numeric
|
|
types: PRI[uxdi]64, PRI[uxdi]8 and float are not parsed in newlib-nano
|
|
#2006: cpu/nrf51822: timer callback may be fired too early
|
|
#2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins
|
|
were used in the unittests which are not available with msp430-gcc
|
|
#2300: qemu unittest fails because of a page fault
|
|
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
|
|
#4522: avsextrem: linker sometimes doesn't find `bl_init_clks()`
|
|
#4560: make: clang is more pedantic than gcc oonf_api is not building with
|
|
clang. (Partly solved by #4593)
|
|
#4694: drivers/lm75a: does not build
|
|
#4737: cortex-m: Hard fault after a thread exits (under some circumstances)
|
|
#4822: kw2xrf: packet loss when packets get fragmented
|
|
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
|
|
supported
|
|
#4954: chronos: compiling with -O0 breaks
|
|
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic
|
|
operations in the drivers some pin configurations might get lost.
|
|
#5009: RIOT is saw-toothing in energy consumption (even when idling)
|
|
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly
|
|
jumps a few seconds on nrf52
|
|
#5361: cpu/cc26x0: timer broken
|
|
#5405: Erratic timings on iotlab-m3 with compression context activated
|
|
#5460: cpu/samd21: i2c timing with compiler optimization
|
|
#5486: at86rf2xx: lost interrupts
|
|
#5489: cpu/lpc11u34: ADC broken
|
|
#5603: atmega boards second UART issue
|
|
#5678: at86rf2xx: failed assertion in _isr
|
|
#5719: cc2538: rf driver doesn't handle large packets
|
|
#5799: kw2x: 15.4 duplicate transmits
|
|
#5944: msp430: ipv6_hdr unittests fail
|
|
#5848: arduino: Race condition in sys/arduino/Makefile.include
|
|
#5954: nRF52 uart_write get stuck
|
|
#6018: nRF52 gnrc 6lowpan ble memory leak
|
|
|
|
|
|
other issues
|
|
------------
|
|
#1263: TLSF implementation contains (a) read-before-write error(s).
|
|
#3256: make: Setting constants on compile time doesn't really set them
|
|
everywhere
|
|
#3366: periph/i2c: handle NACK
|
|
#4488: Making the newlib thread-safe: When calling puts/printf after
|
|
thread_create(), the CPU hangs for DMA enabled uart drivers.
|
|
#4866: periph: GPIO drivers are not thread safe
|
|
#5128: make: buildtest breaks when exporting FEATURES_PROVIDED var
|
|
#5207: make: buildest fails with board dependent application Makefiles
|
|
#5390: pkg: OpenWSN does not compile: This package still uses deprecated
|
|
modules and was not tested for a long time.
|
|
#5520: tests/periph_uart not working
|
|
#5561: C++11 extensions in header files
|
|
#5776: make: Predefining CFLAGS are parsed weirdly
|
|
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
|
|
chars
|
|
#5962: Makefile: UNDEF variable is not working as documented
|
|
#6022: pkg: build order issue
|
|
|
|
|
|
Special Thanks
|
|
==============
|
|
We like to give our special thanks to all the companies that provided us with
|
|
their hardware for porting and testing, namely the people from (in
|
|
alphabeticalorder): Atmel, Freescale, Imagination Technologies, Limifrog,
|
|
Nordic, OpenMote, Phytec, SiLabs, UDOO,and Zolertia; and also companies that
|
|
directly sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering
|
|
Spirit, Nordic, FreshTemp LLC, OTAkeys and Phytec.
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* Most of the code developed by the RIOT community is licensed under the GNU
|
|
Lesser General Public License (LGPL) version 2.1 as published by the Free
|
|
Software Foundation.
|
|
* Some external sources are published under a separate, LGPL compatible
|
|
license (e.g. some files developed by SICS).
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RIOT-2016.07 - Release Notes
|
|
============================
|
|
RIOT is a real-time multi-threading operating system that supports a range of
|
|
devices that are typically found in the Internet of Things: 8-bit
|
|
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.
|
|
|
|
RIOT is based on the following design principles: energy-efficiency, real-time
|
|
capabilities, small memory footprint, modularity, and uniform API access,
|
|
independent of the underlying hardware (this API offers 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 was focused primarily on fixing bugs, but also adds two new
|
|
supported radio transceivers: CC2420 and CC2538.
|
|
This new radio support allows to new interoperability tests with other OS,
|
|
allowing code size comparison and overall network performance for
|
|
platforms based on these radios.
|
|
|
|
About 198 pull requests with about 325 commits have been merged since the
|
|
last release and about 65 issues have been solved. 46 people contributed with
|
|
code in 112 days. 632 files have been touched with 19863 insertions and
|
|
3682 deletions.
|
|
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
General
|
|
----------
|
|
* No major changes or new features coming on this release.
|
|
|
|
Core
|
|
----
|
|
+ Introduced Mailbox IPC API (#4919)
|
|
* Improved clist
|
|
|
|
Network Stack
|
|
---
|
|
+ Introduction of netstats in several platforms.
|
|
* RPL optional auto initialization
|
|
|
|
|
|
Packages
|
|
---
|
|
+ Added statistics for TLSF package (#5418)
|
|
+ Added U8g2 library for monochrome displays (#5549)
|
|
* Added on-the-fly content creation for CCN-lite.
|
|
|
|
|
|
Platforms
|
|
---
|
|
+ nrf52dk: add support for building with Nordic SoftDevice (6lo over BLE)
|
|
+ Added support for Libellium's waspmote-pro board.
|
|
+ Added support for the iotlab A8/M3 node (https://www.iot-lab.info/hardware/a8/)
|
|
+ Added initial and rudimentary port for TI cc2650stk "SensorTag" (#4675)
|
|
+ Split Zolertia Remote support into Remote Prototype A (remote-pa) and
|
|
Remote Revision A (remote-reva)
|
|
|
|
Drivers
|
|
---
|
|
+ Texas Instruments CC2538 RF driver (PR #5291)
|
|
+ Texas Instruments CC2420 RF driver (PR #5591)
|
|
+ Bosch BM180 sensor.
|
|
+ Added XBee optional AES encryption support
|
|
|
|
System libraries
|
|
---
|
|
* Several xtimer bug fixes
|
|
|
|
Build System
|
|
---
|
|
+ Ubuntu 16.04 packaged gcc-arm-none-eabi toolchain can now be used to compile
|
|
RIOT for ARM boards
|
|
|
|
Other
|
|
---
|
|
* Reworked UART and code factorisation for ATmega CPUs.
|
|
|
|
API changes
|
|
---
|
|
* Unified interface of hashing functions
|
|
|
|
Fixed Issues from the last release
|
|
==================================
|
|
#3824: native: gnrc: hardcore pinging crashes.
|
|
#4583: cpp11: clang doesn't allow mutex_t to be used with constexpr All
|
|
cpp11-* tests fail with clang.
|
|
#5388: gnrc_sixlowpan_iphc_nhc: receiving NHC compressed UDP
|
|
packets hits assert in IPv6 (Fixed by #5281).
|
|
|
|
|
|
Known Issues
|
|
==========
|
|
#3075: nhdp: unnecessary microsecond precision NHDP works with timer
|
|
values of microsecond precision which is not required. Changing to lower
|
|
precision would save some memory.
|
|
#3086: Max. packet length for AT86RF2XX
|
|
#4048: potential racey memory leak According to the packet buffer stats,
|
|
flood-pinging a multicast destination may lead to a memory leak due to a
|
|
race condition. However, it seems to be a rare case and a completely filled
|
|
up packet buffer was not observed.
|
|
#5005: ndp: router advertisement sent with global address Under some
|
|
circumstances a router might send RAs with GUAs. While they are ignored
|
|
on receive (as RFC 4861 specifies), RAs should have link-local addresses
|
|
and not even be send out this way.
|
|
#5007: gnrc icmpv6: Ping reply goes out the wrong interface
|
|
#5055: cpuid: multiple radios will get same EUI-64 Nodes with multiple
|
|
interfaces might get the same EUI-64 for them since they are generated from
|
|
the same CPU ID.
|
|
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers.
|
|
(Fix exists, but was postponed)
|
|
#5390: pkg: OpenWSN does not compile This package still uses deprecated
|
|
modules and was not tested for a long time.
|
|
|
|
native related issues
|
|
---------------------
|
|
#495: native not float safe When the FPU is used when an asynchronous
|
|
context switch occurs, either the stack gets corrupted or a floating point
|
|
exception occurs.
|
|
#534: native debugging on osx fails Using valgrind or gdb with a nativenet
|
|
target in OSX leads to "the network" being stuck (gdb) or the whole process
|
|
being stuck (valgrind).
|
|
#334: nativenet crashes when hammered Flood-pinging a native instance
|
|
from more than one host (either multiple threads on the host system or multiple
|
|
other native instances), leads to a SEGFAULT.
|
|
#2071; WIP: native: overdue fixes
|
|
#4590: pkg: building relic with clang fails.
|
|
#5432: native: valgrind fails
|
|
|
|
other platform related issues
|
|
-----------------------------
|
|
#4560: make: clang is more pedantic than gcc oonf_api is not building with
|
|
clang.
|
|
(Partly solved by #4593)
|
|
#4866: not all GPIO driver implementations are thread safe Due to non-atomic
|
|
operations in the drivers some pin configurations might get lost.
|
|
#5486: at86rf2xx: lost interrupts
|
|
|
|
other issues
|
|
------------
|
|
#1263: TLSF implementation contains (a) read-before-write error(s).
|
|
#2761: core: define default flags If a thread is created without the
|
|
corresponding flag (CREATE_STACKTEST), the ps command will yield wrong
|
|
numbers for the stack usage.
|
|
#2927: core: Automatically select the lowest possible LPM mode Not all
|
|
available low power modes (LPMs) are implemented for each platform and the
|
|
concept of how the LPM is chosen needs some reconsideration.
|
|
#2967: Makefile.features: location is not relevant for all features Provided
|
|
features for the build system should be split up into a board and cpu specific part
|
|
#4488: Making the newlib thread-safe When calling puts/printf after
|
|
thread_create(), the CPU hangs for DMA enabled uart drivers.
|
|
#4841: xtimer: timer already in the list Under some conditions an xtimer can end
|
|
up twice in the internal list of the xtimer module.
|
|
#5338: xtimer: xtimer_now() not ISR safe For non-32-bit platforms.
|
|
|
|
Special Thanks
|
|
===============
|
|
We like to give our special thanks to all the companies that provided us with their
|
|
hardware for porting and testing, namely the people from (in alphabeticalorder):
|
|
Atmel, Freescale, Limifrog, Nordic, OpenMote, Phytec, SiLabs, UDOO,and Zolertia;
|
|
and also companies that directly sponsored development time:Cisco Systems,
|
|
Eistec, Ell-i, Enigeering Spirit, Nordic, FreshTemp LLC, and Phytec.
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
---
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* Most of the code developed by the RIOT community is licensed under the GNU
|
|
Lesser General Public License (LGPL) version 2.1 as published by the Free
|
|
Software Foundation.
|
|
* Some external sources are published under a separate, LGPL compatible license
|
|
(e.g. some files developed by SICS).
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
|
|
|
|
RIOT-2016.04 - Release Notes
|
|
============================
|
|
RIOT is a real-time multi-threading operating system that supports a range of
|
|
devices that are typically found in the Internet of Things: 8-bit
|
|
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.
|
|
|
|
RIOT is based on the following design principles: energy-efficiency, real-time
|
|
capabilities, small memory footprint, modularity, and uniform API access,
|
|
independent of the underlying hardware (this API offers 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 adds support for two additional network stacks: lwIP and emb6.
|
|
A bunch of additional protocols are now available, P2P-RPL in the GNRC
|
|
network stack, Ethernet-over-Serial (ethos). Murdock, the new, blazing fast
|
|
RIOT CI is now available to significantly speed up code merging procedures.
|
|
|
|
This release also adds support for a number of new boards and sensors and a new
|
|
tool for automated border router setup is now provided which greatly simplifies
|
|
that setup for newbies as well as for old-timers. Last but not least: this
|
|
release includes a number of bug fixes, mostly about stabilizing and enhancing
|
|
the networking capabilities of RIOT.
|
|
|
|
About 470 pull requests with about 1196 commits have been merged since the last
|
|
release and 127 additional issues have been solved. 55 people contributed code
|
|
in 124 days. 1521 files have been touched with ~91700 insertions and ~42200
|
|
deletions.
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
New features and changes
|
|
========================
|
|
General
|
|
----------
|
|
+ added Makefile support for creating a "binary distribution", making it easier to create closed source applications while still complying to LGPL
|
|
|
|
Testing
|
|
---
|
|
+ Murdock, the new RIOT CI
|
|
+ unified pexpect code
|
|
+ added various new unittests and test applications
|
|
|
|
Core
|
|
----
|
|
+ added thread flags, a new method to signal events in an efficient and thread safe manner
|
|
+ messaging is now compile-time optional, shaving off some bytes off each thread's state struct for projects not requiring it
|
|
+ new, simpler list implementation increases mutex and msg performance
|
|
|
|
Network Stack
|
|
---
|
|
+ P2P-RPL (RFC6997)
|
|
+ netdev_test: test framework for users of the netdev API
|
|
|
|
Packages
|
|
---
|
|
+ emb6 network stack
|
|
+ jsmn (minimal JSON parser)
|
|
+ lwIP network stack
|
|
+ unified and streamlined git package source handling
|
|
+ added support for caching git repositories
|
|
|
|
Platforms
|
|
---
|
|
+ reworked existing peripheral drivers and added SPI driver for arduino-mega2560
|
|
+ added support for nRF52dk
|
|
+ added support for nucleo-f072 and nucleo-f103
|
|
+ unified LED macros for all boards
|
|
|
|
Drivers
|
|
---
|
|
+ ethos "ethernet over serial" driver, enabling shared uart + network communication over one serial connection
|
|
+ RHOM BH1750FVI ambient light sensor
|
|
+ ST LIS3MDL three-axis magnetic sensor
|
|
+ Silicon Labs Si70xx low-power temperature + humidity sensor
|
|
+ simplified GPIO driver interface
|
|
+ AES encryption for xbee radio driver
|
|
+ added ADC mapping to SAUL
|
|
|
|
System libraries
|
|
---
|
|
- vtimer support was dropped completely and removed
|
|
|
|
Build System
|
|
---
|
|
+ made build system safe for concurrent building of multiple applications
|
|
+ desvirt integration into the RIOT build system
|
|
|
|
Other
|
|
---
|
|
- simplified border router setup tool (single UART and automation script)
|
|
|
|
API changes
|
|
---
|
|
* at86rf2xx was moved from gnrc_netdev to the netdev API
|
|
* genrand_* -> random_*
|
|
* xtimer_remove() no longer returns whether a timer was actually removed
|
|
* disableIRQ(), enableIRQ(), restoreIRQ(), inISR() -> irq_disable(), irq_enable(), irq_restore(), irq_is_in()
|
|
* renamed periph/random to periph/hwrng
|
|
|
|
Fixed Issues from the last release
|
|
==================================
|
|
* #3109: periph/random: random_read should return unsigned int
|
|
* #3970: RPL: Advertise DODAG only over the assigned interface
|
|
* #4462: IPHC/NHC broken between Linux and a RIOT node with a RIOT-based border router in between.
|
|
* #4608: tests/xtimer_usleep_until: unstable behaviour
|
|
|
|
Known Issues
|
|
==========
|
|
----------------------
|
|
* #3075: nhdp: unnecessary microsecond precision
|
|
NHDP works with timer values of microsecond precision which is not required. Changing
|
|
to lower precision would save some memory.
|
|
* #3086: Max. packet length for AT86RF2XX
|
|
The size of the link-layer header is not dynamically calculated, but instead the maximum
|
|
size is always assumed.
|
|
* #4048: potential racey memory leak
|
|
According to the packet buffer stats, flood-pinging a multicast destination may lead to a
|
|
memory leak due to a race condition. However, it seems to be a rare case and a
|
|
completely filled up packet buffer was not observed.
|
|
* #5005: ndp: router advertisement sent with global address
|
|
Under some circumstances a router might send RAs with GUAs. While they are ignored
|
|
on receive (as RFC 4861 specifies), RAs should have link-local addresses and not even
|
|
be send out this way.
|
|
* #5007: gnrc icmpv6: Ping reply goes out the wrong interface
|
|
* #5055: cpuid: multiple radios will get same EUI-64
|
|
Nodes with multiple interfaces might get the same EUI-64 for them since they are generated
|
|
from the same CPU ID
|
|
* #5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
|
|
* #5388: gnrc_sixlowpan_iphc_nhc: receiving NHC compressed UDP packets hits assert in IPv6
|
|
Fix already provided in #5281, but did not made it into the release due to its complexity
|
|
* #5390: pkg: OpenWSN does not compile
|
|
This package still uses deprecated modules and was not tested for a long time
|
|
|
|
native related issues
|
|
---------------------
|
|
* #495: native not float safe
|
|
When the FPU is used when an asynchronous context switch occurs, either the
|
|
stack gets corrupted or a floating point exception occurs.
|
|
* #534: native debugging on osx fails
|
|
Using valgrind or gdb with a nativenet target in OSX leads to "the network"
|
|
being stuck (gdb) or the whole process being stuck (valgrind).
|
|
* #3341 and #3824: nativenet crashes when hammered
|
|
Flood-pinging a native instance from more than one host (either multiple threads on the
|
|
host system or multiple other native instances), leads to a SEGFAULT
|
|
|
|
other platform related issues
|
|
-----------------------------
|
|
* #4560: make: clang is more pedantic than gcc
|
|
oonf_api is not building with clang.
|
|
* #4583: cpp11: clang doesn't allow `mutex_t` to be used with `constexpr`
|
|
All cpp11-* tests fail with clang.
|
|
* #4866: not all GPIO driver implementations are thread safe
|
|
Due to non-atomic operations in the drivers some pin configurations might get lost
|
|
|
|
other issues
|
|
------------
|
|
* #1263: TLSF implementation contains (a) read-before-write error(s)
|
|
* #2761: core: define default flags
|
|
If a thread is created without the corresponding flag (CREATE_STACKTEST),
|
|
the ps command will yield wrong numbers for the stack usage
|
|
* #2927: core: Automatically select the lowest possible LPM mode
|
|
Not all available low power modes (LPMs) are implemented for each platform and the
|
|
concept of how the LPM is chosen needs some reconsideration
|
|
* #2967: Makefile.features: location is not relevant for all features
|
|
Provided features for the build system should be split up into a board and cpu specific
|
|
part
|
|
* #4488: Making the newlib thread-safe
|
|
When calling puts/printf after thread_create(), the CPU hangs for DMA enabled uart drivers.
|
|
* #4841: xtimer: timer already in the list
|
|
Under some conditions an xtimer can end up twice in the internal list of the xtimer module.
|
|
* #5338: xtimer: xtimer_now() not ISR safe
|
|
For non-32-bit platforms
|
|
|
|
Special Thanks
|
|
===============
|
|
We like to give our special thanks to all the companies that provided us with
|
|
their hardware for porting and testing, namely the people from (in alphabetical
|
|
order): Atmel, Freescale, Limifrog, Nordic, OpenMote, Phytec, SiLabs, UDOO,
|
|
and Zolertia; and also companies that directly sponsored development time:
|
|
Cisco Systems, Eistec, Ell-i, Enigeering Spirit, FreshTemp LLC, and Phytec.
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
-----
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
* Most of the code developed by the RIOT community is licensed under the GNU
|
|
Lesser General Public License (LGPL) version 2.1 as published by the Free
|
|
Software Foundation.
|
|
* Some external sources are published under a separate, LGPL compatible license
|
|
(e.g. some files developed by SICS).
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
|
|
|
|
RIOT-2015.12 - Release Notes
|
|
============================
|
|
RIOT is a real-time multi-threading operating system that supports a range of
|
|
devices that are typically found in the Internet of Things: 8-bit
|
|
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.
|
|
|
|
RIOT is based on the following design principles: energy-efficiency, real-time
|
|
capabilities, small memory footprint, modularity, and uniform API access,
|
|
independent of the underlying hardware (this API offers 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).
|
|
|
|
About this release:
|
|
===================
|
|
This release is mostly a clean-up and bug-fixing release. Besides that, it introduces SAUL,
|
|
the [S]ensor [A]ctuator [U]ber [L]ayer, which offers a unified API to interact with all
|
|
different types of sensors and actuators on RIOT supported hardware. Furthermore, it re-enables
|
|
the support for ICN by integrating CCN-Lite as a package. A lot of new overall documentation was
|
|
added and existing documentation was improved (http://riot-os.org/api/). In addition,
|
|
a Vagrant (https://www.vagrantup.com/) configuration file was added to the RIOT repository in
|
|
order to create reproducible and portable environments that contain all necessary toolchains.
|
|
|
|
About 222 pull requests with about 631 commits have been merged since the last release and 48
|
|
additional issues have been solved. 37 people contributed code in 102 days. 980 files have been
|
|
touched with ~59779 insertions and ~12115 deletions.
|
|
|
|
Notations used below:
|
|
=====================
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
|
|
New features and changes
|
|
========================
|
|
|
|
General
|
|
-------
|
|
|
|
Device support
|
|
--------------
|
|
+ SAUL [S]ensor [A]ctuator [U]ber [L]ayer
|
|
|
|
Core
|
|
----
|
|
* replaced deprecated dINT()/eINT() calls by up-to-date disableIRQ()/enableIRQ()/restoreIRQ()
|
|
calls throughout the whole core
|
|
|
|
Network Stack
|
|
-------------
|
|
+ TFTP support
|
|
+ 6LoWPAN: Next Header Compression
|
|
+ leaf mode for RPL nodes
|
|
* RPL: refactoring of instances and dodags (saved 1kB ROM and 0,5kB RAM)
|
|
* FIB: initial source route support
|
|
* change to non-blocking 6LoWPAN fragmentation
|
|
* POSIX sockets: various fixes
|
|
* periodic stats printing for ping6 command
|
|
* convert all vtimer into xtimer calls
|
|
* send router advertisements without PIOs
|
|
|
|
Packages
|
|
--------
|
|
+ CCN-Lite as a ICN network stack
|
|
+ RELIC: efficient cryptography library
|
|
* fix TLSF to compile with -pedantic
|
|
|
|
Supported platforms
|
|
-------------------
|
|
Additional support for the following boards:
|
|
+ weio board with NXP LPC11U34 (ARM Cortex-M0)
|
|
+ Silicon Labs Wireless Eval Kit SLWSTK6220A (Wonder Gecko)
|
|
+ STM32 Nucleo-F401
|
|
|
|
Drivers
|
|
-------
|
|
+ Arduino-mega2560 GPIO
|
|
+ Arduino pin mapping for Mega2560 and Due
|
|
|
|
Network drivers
|
|
---------------
|
|
+ enc28j60 Ethernet chip
|
|
+ at86rf2xx: Add support for channel page
|
|
* at86rf2xx: fix LQI reading
|
|
* implement sleep mode for at86rf2xx
|
|
|
|
Sensors drivers
|
|
---------------
|
|
+ AT30TSE75x temperature sensor
|
|
+ TCS3772 Color Light-to-Digital converter
|
|
|
|
System libraries
|
|
----------------
|
|
+ partial support for the Arduino API
|
|
+ lightweight semaphores
|
|
+ fmt: simple string formatting library
|
|
+ xtimer: 32-bit version of msg_recv_timeout
|
|
* implicit socket binding for POSIX connect() and sendto()
|
|
* posix_semaphore: make API POSIX compliant
|
|
|
|
Examples
|
|
--------
|
|
+ microcoap/conn example
|
|
+ minimal GNRC networking example
|
|
|
|
Build System
|
|
------------
|
|
* split the Cortex-M0 buildtest group to avoid timeout issues with Travis
|
|
* split the Cortex-M4 buildtest group to avoid timeout issues with Travis
|
|
|
|
Other
|
|
-----
|
|
+ vagrant configuration
|
|
+ documentation: various high-level descriptions of crucial features
|
|
+ IoT-LAB: create and connect to debug server
|
|
* pyterm: fix problems with German umlauts as input
|
|
|
|
Fixed Issues from the last release
|
|
==================================
|
|
|
|
#2724: Add support for serial number passing to CMSIS boards, document it
|
|
Documentation about how to discover and set the serial number of CMSIS-DAP chips is missing
|
|
#3201: Odd length packet snips cause invalid check sum
|
|
If an odd length packet snip occurs in a packet and is not the last snip
|
|
(in the order the packet is supposed to be, not in the list's order)
|
|
in a packet it will generate a wrong check sum.
|
|
|
|
Known Issues
|
|
============
|
|
|
|
network related issues
|
|
----------------------
|
|
#3075: nhdp: unnecessary microsecond precision
|
|
NHDP works with timer values of microsecond precision which is not required. Changing
|
|
to lower precision would save some memory.
|
|
#3086: Max. packet length for AT86RF2XX
|
|
The size of the link-layer header is not dynamically calculated, but instead the maximum
|
|
size is always assumed.
|
|
#3970: RPL: Advertise DODAG only over the assigned interface
|
|
gnrc_rpl seems to multicast DIOs over all interfaces, though gnrc_rpl_init expects an
|
|
interface as parameter and sets the RPL-nodes multicast address only for that interface.
|
|
#4048: potential racey memory leak
|
|
According to the packet buffer stats, flood-pinging a multicast destination may lead to a
|
|
memory leak due to a race condition. However, it seems to be a rare case and a
|
|
completely filled up packet buffer was not observed.
|
|
#4462: IPHC/NHC broken between Linux and a RIOT node with a RIOT-based border router in between.
|
|
|
|
native related issues
|
|
---------------------
|
|
#495: native not float safe
|
|
When the FPU is used when an asynchronous context switch occurs, either the
|
|
stack gets corrupted or a floating point exception occurs.
|
|
#534: native debugging on osx fails
|
|
Using valgrind or gdb with a nativenet target in OSX leads to "the network"
|
|
being stuck (gdb) or the whole process being stuck (valgrind).
|
|
#3341 and #3824: nativenet crashes when hammered
|
|
Flood-pinging a native instance from more than one host (either multiple threads on the
|
|
host system or multiple other native instances), leads to a SEGFAULT.
|
|
#4608: tests/xtimer_usleep_until: unstable behaviour
|
|
The test starts to output "too large difference" and fails after a random period of time.
|
|
|
|
other platform related issues
|
|
-----------------------------
|
|
#4560: make: clang is more pedantic than gcc
|
|
oonf_api is not building with clang.
|
|
#4583: cpp11: clang doesn't allow `mutex_t` to be used with `constexpr`
|
|
All cpp11-* tests fail with clang.
|
|
|
|
other issues
|
|
------------
|
|
#2761: core: define default flags
|
|
If a thread is created without the corresponding flag (CREATE_STACKTEST),
|
|
the ps command will yield wrong numbers for the stack usage
|
|
#2927: core: Automatically select the lowest possible LPM mode
|
|
Not all available low power modes (LPMs) are implemented for each platform and the
|
|
concept of how the LPM is chosen needs some reconsideration
|
|
#2967: Makefile.features: location is not relevant for all features
|
|
Provided features for the build system should be split up into a board and cpu specific
|
|
part
|
|
#3109: periph/random: random_read should return unsigned int
|
|
The documentation of this function does not match corresponding implementation.
|
|
#4488: Making the newlib thread-safe
|
|
When calling puts/printf after thread_create(), the CPU hangs for DMA enabled uart drivers.
|
|
|
|
Special Thanks
|
|
--------------
|
|
We like to give our special thanks to all the companies that provided us with their hardware
|
|
for porting and testing, namely the people from (in alphabetical order):
|
|
Atmel, Freescale, Limifrog, Phytec, SiLabs, and Zolertia; and also companies that directly
|
|
sponsored development time:
|
|
Cisco Systems, Google, Eistec, Ell-i, Engineering Spirit, FreshTemp LLC, and Phytec.
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
-----
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
|
|
* Most of the code developed by the RIOT community is licensed under the
|
|
GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
|
|
* Some external sources are published under a separate, LGPL compatible license
|
|
(e.g. some files developed by SICS).
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
|
|
|
|
RIOT-2015.09 - Release Notes
|
|
============================
|
|
RIOT is a real-time multi-threading operating system that supports a range of
|
|
devices that are typically found in the Internet of Things: devices based on
|
|
8-bit microcontrollers, 16-bit microcontrollers and light-weight 32-bit
|
|
processors.
|
|
|
|
RIOT is based on the following design principles: energy-efficiency, real-time
|
|
capabilities, small memory footprint, modularity, and uniform API access,
|
|
independent of the underlying hardware (this API offers 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).
|
|
|
|
About this release:
|
|
============
|
|
This release introduces the GNRC network stack, a completely new, highly
|
|
modularized and configurable IPv6/6LoWPAN stack. It also includes xtimer as a
|
|
new timer subsystem for accurate short- and long-term timers. Moreover,
|
|
peripheral drivers, board, and CPU support has been tidied up and contains
|
|
about 50% less duplication in the build system.
|
|
|
|
About 580 pull requests with about 2,500 commits have been merged since the
|
|
last release and 120 additional issues have been solved. 62 people contributed
|
|
code in 278 days. 2578 files have been touched with ~320,000 insertions and
|
|
~134,000 deletions.
|
|
|
|
Loose notations used below:
|
|
============
|
|
+ means new feature/item
|
|
* means modified feature/item
|
|
- means removed feature/item
|
|
|
|
|
|
|
|
New features
|
|
============
|
|
|
|
General
|
|
-------
|
|
+ complete codebase now compiles with -Werror on all platforms
|
|
|
|
Device support
|
|
--------------
|
|
+ vastly improved hardware abstraction, unified over all devices
|
|
+ unified most common code
|
|
* complete refactoring of MSP430 and ARM7 code
|
|
|
|
Core
|
|
----
|
|
+ new timer subsystem: xtimer
|
|
+ extended atomic API by compare-and-swap, increase/decrease and
|
|
set-to-one/set-to-zero functions
|
|
+ introduced a more energy-saving assert macro
|
|
|
|
Network Stack
|
|
-------------
|
|
+ RFC compliant gnrc network stack (6LoWPAN, IPv6, UDP, RPL) major refactoring
|
|
+ 6LoWPAN ND (including SLAAC)
|
|
+ example applications working out of the box (gnrc_networking for the full
|
|
gnrc experience, gnrc_border_router for a 6LoWPAN border router, and default
|
|
for simple link layer connectivity)
|
|
+ explicit support for border router
|
|
+ auto-init for the network stack
|
|
+ introduction of generic interfaces (netdev, netapi)
|
|
+ introduction of a protocol-independent FIB
|
|
+ introduction of a central packet buffer
|
|
+ wireshark-supported protocol ZEP to send IEEE 802.15.4 frames over UDP on
|
|
non-IEEE-802.15.4 devices
|
|
+ support for SLIP and link-layers without addresses
|
|
+ new low-level driver model
|
|
+ new nativenet based directly on ethernet
|
|
+ conn: general stack-independent transport layer API
|
|
+ POSIX sockets ported for conn
|
|
+ NHDP support
|
|
|
|
Packages
|
|
--------
|
|
+ support for microCoAP
|
|
+ CMSIS DSP
|
|
|
|
Supported platforms
|
|
-------------------
|
|
Additional support for the following boards:
|
|
+ Zolertia ReMote
|
|
+ Atmel SAML21 Xplained Pro (saml21-xpro)
|
|
+ ST Nucleo L1
|
|
+ ST Nucleo F334
|
|
+ ST Nucleo F091
|
|
+ Phytec phyWAVE KW22
|
|
+ Eistec Mulle
|
|
+ Freescale Freedom FRDM-K64F
|
|
+ TI Stellaris Launchpad LM4F120
|
|
+ LimiFrog V1
|
|
+ Silabs EZR32WG
|
|
|
|
Drivers
|
|
-------
|
|
+ various peripheral drivers (ADC, UART, timer, SPI, I²C, RTC, RTT, DAC, PWM...)
|
|
+ basic NVRAM driver (interface)
|
|
|
|
Network drivers
|
|
+ native ethernet driver
|
|
+ ENCx24J600 ethernet driver
|
|
|
|
Sensors drivers
|
|
+ ISL29125 RGB light sensor
|
|
+ PDC8544 LCD display
|
|
+ INA220 current and power monitor
|
|
+ MPU-9150 9-DOF motion sensor
|
|
+ LIS3DH accelerometer
|
|
+ TMP006 temperature sensor
|
|
+ MAG3110 magnetometer
|
|
+ MMA8652 accelerometer
|
|
+ DHT11/DHT22 temperature-humidity sensor
|
|
+ ADT7310 temperature sensor
|
|
|
|
System libraries
|
|
----------------
|
|
+ MD5
|
|
+ Fletcher's checksum
|
|
+ Unified Cipher API and Block cipher operation modes: ECB, CBC, CTR and CCM
|
|
+ Bitfield operations
|
|
+ thread safe ringbuffer
|
|
+ vtimer compatibility layer
|
|
|
|
Build System
|
|
------------
|
|
+ support for the FIT IoT-LAB testbed by direct integration into the Make build
|
|
system
|
|
+ integrated Docker support
|
|
+ integration of llvm's clang static analyzer
|
|
+ added target for the address sanitizer
|
|
+ indicating possible feature conflicts at compile time
|
|
+ unified OpenOCD script
|
|
|
|
|
|
Changes
|
|
=======
|
|
|
|
Core
|
|
----
|
|
* improved documentation
|
|
* fixed several IPC message queue initializations
|
|
- removed hwtimer
|
|
|
|
Drivers
|
|
-------
|
|
* optimized/remodeled GPIO interface
|
|
* optimized/remodeled TIMER interface
|
|
- temporarily removed CC2420 driver (awaiting last bug fixes for a rewrite)
|
|
* re-implementation of the CC110x driver against the peripheral interface
|
|
|
|
Network Stack
|
|
-------------
|
|
* temporarily removed and currently being refactored:
|
|
- TCP support
|
|
- CCN-lite
|
|
- AODVv2
|
|
|
|
System libraries
|
|
----------------
|
|
* new high level UART/stdio interface
|
|
* better modularisation of POSIX wrapper modules
|
|
- removed skipjack crypto library
|
|
|
|
Packages
|
|
--------
|
|
* updated CMSIS HAL to version 4.3
|
|
|
|
Other
|
|
-----
|
|
* clean-up of deprecated system and network libraries
|
|
* clean-up of deprecated boards and drivers
|
|
|
|
Selected Issues Fixed since the Last Release
|
|
============================================
|
|
#21: Deal with stdin in bordermultiplex.c
|
|
A completely new border router implementation is in place
|
|
#715: test_hwtimer_wait fails on native
|
|
Fixed by @benoit-canet in #2870
|
|
#861: neighbor discovery for 6LoWPAN not working
|
|
GNRC implements 6LoWPAN ND in a RFC6775 compliant way
|
|
#1753: vtimer_msg test crashes after ~49'20" and
|
|
#1449: a removed vtimer might still get called back by hwtimer
|
|
vtimer has been replaced by xtimer which does not have these issues
|
|
#1870: IPv6 neighbor advertisements are malformed
|
|
According to Wireshark (and reference implementations) GNRC sends
|
|
well-formed neighbor advertisements
|
|
#1964 and #1955: eventual problems with IoT-LAB M3 nodes in the testbed
|
|
Solved by new driver versions for UART and radio
|
|
#2228: samd21 stack sizes are too small
|
|
The stacksize has been adapted in #2229
|
|
|
|
Known Issues
|
|
============
|
|
|
|
network related issues
|
|
----------------------
|
|
#3075: nhdp: unnecessary microsecond precision
|
|
NHDP works with timer values of microsecond precision which is not
|
|
required. Changing to lower precision would save some memory.
|
|
#3086: Max. packet length for AT86RF2XX
|
|
The size of the link-layer header is not dynamically calculated, but
|
|
instead the maximum# size is always assumed.
|
|
#3201: Odd length packet snips cause invalid check sum
|
|
If an odd length packet snip occurs in a packet and is not the last snip
|
|
(in the order the packet is supposed to be, not in the list's order) in a
|
|
packet it will generate a wrong check sum.
|
|
#4048: potential racey memory leak
|
|
According to the packet buffer stats, flood-pinging a multicast destination
|
|
may lead to a memory leak due to a race condition. However, it seems to be
|
|
a rare case and a completely filled up packet buffer was not observed.
|
|
|
|
native related issues
|
|
---------------------
|
|
#495: native not float safe
|
|
When the FPU is used when an asynchronous context switch occurs, either the
|
|
stack gets corrupted or a floating point exception occurs.
|
|
#499: native is segfaulting on heavy network usage
|
|
Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
|
|
#534: native debugging on osx fails
|
|
Using valgrind or gdb with a nativenet target in OSX leads to "the network"
|
|
being stuck (gdb) or the whole process being stuck (valgrind).
|
|
#3341 and #3824: nativenet crashes when hammered
|
|
Flood-pinging a native instance from more than one host (either multiple
|
|
threads on the host system or multiple other native instances), leads to a
|
|
SEGFAULT.
|
|
|
|
other platform related issues
|
|
-----------------------------
|
|
#2724: Add support for serial number passing to CMSIS boards, document it
|
|
Documentation about how to discover and set the serial number of CMSIS-DAP
|
|
chips is missing
|
|
|
|
other issues
|
|
------------
|
|
#2761: core: define default flags
|
|
If a thread is created without the corresponding flag (CREATE_STACKTEST),
|
|
the ps command will yield wrong numbers for the stack usage
|
|
#2927: core: Automatically select the lowest possible LPM mode
|
|
Not all available low power modes (LPMs) are implemented for each platform
|
|
and the concept of how the LPM is chosen need some reconsideration
|
|
#2967: Makefile.features: location is not relevant for all features
|
|
Provided features for the build system should be split up into a board and
|
|
cpu specific part
|
|
#3109: periph/random: random_read should return unsigned int
|
|
The documentation of this function does not match corresponding
|
|
implementation.
|
|
|
|
Special Thanks
|
|
--------------------
|
|
We like to give our special thanks to all the companies that provided us with
|
|
their hardware for porting and testing, namely the people from (in alphabetical
|
|
order): Atmel, Freescale, Limifrog, Phytec, SiLabs, and Zolertia; and also
|
|
companies that directly sponsored development time: Cisco Systems, Eistec,
|
|
Ell-i, FreshTemp LLC, and Phytec.
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
IRC
|
|
-----
|
|
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
|
|
|
|
License
|
|
=======
|
|
|
|
* Most of the code developed by the RIOT community is licensed under the GNU
|
|
Lesser General Public License (LGPL) version 2.1 as published by the Free
|
|
Software Foundation.
|
|
* Some external sources are published under a separate, LGPL compatible license
|
|
(e.g. some files developed by SICS).
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
|
|
|
|
|
|
RIOT-2014.12 - Release Notes
|
|
============================
|
|
RIOT is a real-time multi-threading operating system that supports a range of
|
|
devices that are typically found in the Internet of Things: from 8-bit
|
|
microcontrollers to light-weight 32-bit processors.
|
|
|
|
RIOT is based on the following design principles: energy-efficiency, real-time
|
|
capabilities, small memory footprint, modularity, and uniform API access,
|
|
independent of the underlying hardware (this API offers partial POSIX
|
|
compliance).
|
|
|
|
New features
|
|
============
|
|
Core
|
|
----
|
|
+ introduced new thread_yield() and renamed the old implementation to thread_yield_higher()
|
|
|
|
Supported platforms
|
|
-------------------
|
|
Additional support for the following boards:
|
|
+ Arduino Mega 2560 (first-time support of an 8-bit platform)
|
|
+ HikoB Fox
|
|
+ Atmel samr21-Xplained Pro
|
|
+ OpenMote
|
|
+ cc2538 Developer Kit
|
|
+ Spark-Core
|
|
+ f4vi1
|
|
+ Airfy-Beacon
|
|
+ STMF0Discovery Board
|
|
+ STMF3Discovery Board
|
|
+ STMF4Discovery Board
|
|
+ nrf51822 Development Kit
|
|
+ yunjia-nrf51822
|
|
+ MSB-IoT
|
|
+ native on ARM platforms
|
|
|
|
Drivers
|
|
-------
|
|
+ various peripheral drivers (ADC, UART, timer, SPI, I²C, RTC, RTT, DAC, PWM...)
|
|
+ MQ-3 alcohol sensor
|
|
+ ISL29020 light sensor
|
|
+ LPS331AP pressure sensor
|
|
+ LSM303DLHC accelerometer
|
|
+ L3G4200D gyroscope
|
|
+ servo motor
|
|
+ TI HDC 1000 low power humidity and temperature digital sensor
|
|
+ SRF02/SRF08 ultrasonic range sensors
|
|
+ PIR motion sensor
|
|
+ RGB LED
|
|
|
|
Network Stack
|
|
---------------
|
|
+ AODVv2
|
|
+ RPL non-storing mode
|
|
+ OF manager for RPL
|
|
+ Source Routing Header support
|
|
+ introduced netapi
|
|
+ introduced netdev, a general interface for network device drivers
|
|
+ introduced global packet buffer
|
|
|
|
System libraries
|
|
----------------
|
|
+ CBOR
|
|
+ UBJSON
|
|
+ color module for PWM
|
|
|
|
Packages
|
|
--------
|
|
+ libfixmath
|
|
|
|
Other
|
|
-----
|
|
+ C++ support for most platforms
|
|
+ PCAP based wireless sniffer
|
|
|
|
Changes
|
|
=======
|
|
Core
|
|
----
|
|
* PIDs begin with 1
|
|
* mamximum 16 priority levels for every platform
|
|
* fixed sched_switch()
|
|
* simplified mutex signatures
|
|
* minimized size of TCB
|
|
* allow hwtimer to run with more than 1MHz
|
|
* imported ringbuffer from sys
|
|
|
|
Supported platforms
|
|
-------------------
|
|
* improved iotlab-m3 support
|
|
* major improvements on the mbed LPC1768
|
|
* improved at86rf231 radio driver
|
|
* fixed hwtimer for MSP430
|
|
* added support for timer B for MSP430
|
|
* fixed thread_yield() for MSP430
|
|
* several fixes for the cc2420
|
|
* improved interrupt handling on ARM
|
|
* adjusted stack sizes for Cortex platforms
|
|
|
|
Network Stack
|
|
---------------
|
|
* refactored CCN-lite
|
|
* refactored RPL
|
|
* renamed destiny to transport_layer and socket_base
|
|
* several fixes for TCP
|
|
* split UDP and TCP
|
|
|
|
System libraries
|
|
----------------
|
|
- removed hashtable implementation
|
|
|
|
Packages
|
|
--------
|
|
* updated and simplified OpenWSN
|
|
|
|
Other
|
|
-----
|
|
* Improved and cleaned up build system
|
|
* various new helper targets (like debug, distclean, reset, objdump...)
|
|
* use newlib's nano specs if available
|
|
* various new features and added Python 3 compatibility for pyterm
|
|
* major reduction of warnings in doxygen and improved html layout
|
|
|
|
Fixed Issues from the last release
|
|
==================================
|
|
#426: Interrupt handling on MSP430 is buggy
|
|
Several fixes by @rousselk
|
|
#1798: core: first thread on runqueue is scheduled twice
|
|
Was fixed along with the thread_yield() refactoring
|
|
#1127: Random build fails on OSX
|
|
native is building stable also on OSX now
|
|
|
|
Known Issues
|
|
============
|
|
network related issues
|
|
----------------------
|
|
#21: Deal with stdin in bordermultiplex.c
|
|
Not all supported platforms provide a stdin in the current release.
|
|
However, the implementation of the 6LoWPAN border router won't work
|
|
without stdin.
|
|
#861: neighbor discovery for 6LoWPAN not working
|
|
Duplicate address detection according to RFC 6775 is also missing.
|
|
#1577: ccn-lite: populate does not work with disabled cache
|
|
If cache is set to zero, the chunks cannot be loaded and therefore also not get populated.
|
|
#1870: IPv6 neighbor advertisements are malformed
|
|
According to Wireshark, ICMPv6 neighbor advertisements are malformed (wrong
|
|
checksum or other reasons).
|
|
|
|
native related issues
|
|
---------------------
|
|
#495: native not float safe
|
|
When the FPU is used when an asynchronous context switch occurs, either the
|
|
stack gets corrupted or a floating point exception occurs.
|
|
#499: native is segfaulting on heavy network usage
|
|
Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
|
|
#534: native debugging on osx fails
|
|
Using valgrind or gdb with a nativenet target in OSX leads to "the network"
|
|
being stuck (gdb) or the whole process being stuck (valgrind).
|
|
#715: test_hwtimer_wait fails on native
|
|
The problem appears to be lost signals and depends on the CPU speed.
|
|
#787: reboot not working with open file descriptors on native
|
|
If for example a tap device is in use, the reboot command fails.
|
|
#862: sometimes the tap bridge does not work in native
|
|
Sometimes (rather suddenly) packages are not received by a TAP and won't be
|
|
received even if I reconfigure the bridge.
|
|
|
|
|
|
other platform related issues
|
|
-----------------------------
|
|
#1232: x86 doesn't build on OS X with clang
|
|
Current version of the x86 port doesn't build for OS X with clang.
|
|
#1442: setting channel is not persistent cc2420
|
|
After changing the channel via a shell command, the channel reverts back to an arbitrary
|
|
value. However, this might be only a shell problem.
|
|
#1753: vtimer_msg test crashes after ~49'20"
|
|
dependent on the platform, vtimer stops working after some time.
|
|
#1891: printf formatting does not work properly on some Cortex platforms for 64 bit numbers
|
|
This problem happens mostly for the Newlib nano, which does not support 64 bit integer
|
|
printing, but sometimes happens also with other toolchains.
|
|
#1964 and #1955: eventual problems with IoT-LAB M3 nodes in the testbed
|
|
The shell is sometimes not properly working after a reboot and the PDR is sometimes
|
|
worse than expected.
|
|
#2143: tests.core doesn't compile for all platforms
|
|
For some missing GCC compiler builtins, the unittests do not compile for MSP430
|
|
platforms.
|
|
#2228: samd21 stack sizes are too small
|
|
The application examples/default for example will crash when issuing the txtsnd command
|
|
|
|
other issues:
|
|
--------------
|
|
#1449: a removed vtimer might still get called back by hwtimer
|
|
The timer callback might still fire even after vtimer_remove() was called.
|
|
#2175: valgrind registers "Invalid write of size 4" in unittests for ubjson
|
|
According to valgrind the stack gets corrupted in UBJSON.
|
|
|
|
For all issues and open pull requests please check the RIOT issue tracker:
|
|
https://github.com/RIOT-OS/RIOT/issues
|
|
|
|
Special Thanks
|
|
--------------------
|
|
We like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabetical order): airfy, Atmel, ELL-i, Intel, IoT-Lab, mbed, Phytec, and Udoo
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
License
|
|
=======
|
|
* All sources and binaries that have been developed at Freie Universität Berlin
|
|
and most of the other code are licensed under the GNU Lesser General Public
|
|
License version 2 as published by the Free Software Foundation.
|
|
* Some external sources, especially files developed by SICS are published under
|
|
a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
RIOT-2014.05 - Release Notes
|
|
============================
|
|
RIOT is a real-time multi-threading operating system that supports a range of
|
|
devices that are typically found in the Internet of Things: from 16-bit
|
|
microcontrollers to light-weight 32-bit processors.
|
|
|
|
RIOT is based on the following design principles: energy-efficiency, real-time
|
|
capabilities, small memory footprint, modularity, and uniform API access,
|
|
independent of the underlying hardware (this API offers partial POSIX
|
|
compliance).
|
|
|
|
New features
|
|
============
|
|
Core
|
|
----
|
|
+ introduced explicit core/cpu interface through a set of header files
|
|
+ added reboot and panic functions
|
|
+ added a node name to the sysconfig struct
|
|
+ added the ability to send a message to the current thread's message queue
|
|
|
|
Supported platforms
|
|
-------------------
|
|
Additional support for the following boards:
|
|
+ Arduino Due
|
|
+ UDOO board
|
|
+ X86 via qemu
|
|
+ Zolertia Z1
|
|
|
|
Network stack
|
|
-------------
|
|
+ added net_if as abstraction layer between transceiver module and L3 protocol
|
|
+ added support for auto initializing of the 6LoWPAN network stack
|
|
+ added support for RFC5444 via oonf_api (from OLSR.org)
|
|
+ added a Wireshark dissector for nativenet packets
|
|
+ introduced low-level radio driver interface
|
|
+ added a default transceiver for all boards
|
|
+ common IEEE 802.15.4 radio driver API definition
|
|
+ added standard way to query CCA (Clear Channel Assessment) status
|
|
+ enabled nonces in interests for CCN-lite (Content Centric Networking)
|
|
+ added a route shell command
|
|
|
|
System libraries
|
|
----------------
|
|
+ added quad-precision math library (quad_math)
|
|
|
|
Automated Testing
|
|
-----------------
|
|
+ added Travis CI based build tests
|
|
+ added support for a Jenkins CI server
|
|
+ added a unittest framework (based on embunit)
|
|
+ added unittests for most core functions
|
|
|
|
POSIX compliance
|
|
----------------
|
|
+ pthread support including
|
|
+ dynamic memory pool and cleanup handlers
|
|
+ mutexes
|
|
+ condition variable implementation
|
|
+ reader/writer lock
|
|
+ pthread_barrier_* functions
|
|
|
|
Native
|
|
------
|
|
+ added a valgrind and cachegrind targets
|
|
+ added profiling support
|
|
|
|
Changes
|
|
=======
|
|
Core
|
|
----
|
|
* initialize hwtimer automatically
|
|
* optimized thread status field usage
|
|
* moved oneway_malloc to sys
|
|
* prefixed API functions correctly
|
|
|
|
Network stack
|
|
-------------
|
|
* major refactoring and decoupling
|
|
* refactor use of vtimer
|
|
* fixed forwarding
|
|
* added IoT-LAB M3 Open Node support and dropped TelosB support temporarily for OpenWSN
|
|
* moved ETX beaconing to a module on its own
|
|
* various byte order and other bug fixes
|
|
|
|
Drivers
|
|
-------
|
|
* added low-level driver interface for unified CPU peripheral abstraction for
|
|
GPIO, ADC, PWM, Timer and UART
|
|
* handle race conditions preventing timers to be set correctly on MSP430 MCUs
|
|
* several CC2420 fixes
|
|
|
|
System libraries
|
|
----------------
|
|
* auto_init is used by default
|
|
* changed function prototype for shell handlers
|
|
|
|
Other
|
|
-----
|
|
* cleaned up Makefile system and simplified binary directory
|
|
* improved documentation for core and sys
|
|
* build system uses PKG dependency
|
|
* build system sets include paths automatically
|
|
* black and white lists for applications and tests
|
|
* add stacksize checker for DEBUG macro
|
|
* styling corrections
|
|
* fixed license boiler plates
|
|
* set lpc2k_pgm return value correctly
|
|
* various bug fixes and cleanups
|
|
|
|
Fixed Issues from the last release
|
|
==================================
|
|
#45: bit field order in the fcf may be wrong
|
|
The CC2420 FIFO expects the IEEE802.15.4 FCF field in reversed bit order.
|
|
With this release the byte order is now handled by the net_if module and
|
|
all device specific handling is done by the driver.
|
|
#82: Setting STATUS_REPLY_BLOCKED thread to STATUS_PENDING though it is not
|
|
handled yet
|
|
In some rare cases the status of a thread might falsely change to
|
|
STATUS_PENDING instead of STATUS_REPLY_BLOCKED.
|
|
#455: sha256 is broken on MSP430
|
|
Fixed.
|
|
#498: native is segfaulting at startup
|
|
Fixed by several PRs (#501, #583, and #588).
|
|
#505: native on FreeBSD is broken
|
|
Fixed by PR #1022.
|
|
|
|
Known Issues
|
|
============
|
|
network related issues
|
|
----------------------
|
|
#21: Deal with stdin in bordermultiplex.c
|
|
Not all supported platforms provide a stdin in the current release.
|
|
However, the implementation of the 6LoWPAN border router won't work
|
|
without stdin.
|
|
#861: neighbor discovery for 6LoWPAN not working
|
|
Duplicate address detection according to RFC 6775 is also missing.
|
|
|
|
native related issues
|
|
---------------------
|
|
#495: native not float safe
|
|
When the FPU is used when an asynchronous context switch occurs, either the
|
|
stack gets corrupted or a floating point exception occurs.
|
|
#499: native is segfaulting on heavy network usage
|
|
Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
|
|
#534: native debugging on osx fails
|
|
Using valgrind or gdb with a nativenet target in OSX leads to "the network"
|
|
being stuck (gdb) or the whole process being stuck (valgrind).
|
|
#715: test_hwtimer_wait fails on native
|
|
The problem appears to be lost signals and depends on the CPU speed.
|
|
#787: reboot not working with open file descriptors on native
|
|
If for example a tap device is in use, the reboot command fails.
|
|
#862: sometimes the tap bridge does not work in native
|
|
Sometimes (rather suddenly) packages are not received by a TAP and won't be
|
|
received even if I reconfigure the bridge.
|
|
#1127: Random build fails on OSX
|
|
Building for native on OSX often fails - Workaround: build using -B flag,
|
|
e.g.: make -B clean all
|
|
|
|
other platform related issues
|
|
-----------------------------
|
|
#426: Interrupt handling on MSP430 is buggy
|
|
UART and timer handling is currently unstable on MSP430 based platforms
|
|
#1232: x86 doesn't build on OS X with clang
|
|
Current version of the x86 port doesn't build for OS X with clang.
|
|
|
|
For all issues and open pull requests please check the RIOT issue tracker:
|
|
https://github.com/RIOT-OS/RIOT/issues
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
License
|
|
=======
|
|
* All sources and binaries that have been developed at Freie Universität Berlin
|
|
and most of the other code are licensed under the GNU Lesser General Public
|
|
License version 2 as published by the Free Software Foundation.
|
|
* Some external sources, especially files developed by SICS are published under
|
|
a separate license.
|
|
|
|
All code files contain licensing information.
|
|
|
|
|
|
RIOT-2014.01 - Release Notes
|
|
============================
|
|
RIOT is a real-time multi-threading operating system that supports a range of
|
|
devices that are typically found in the Internet of Things: from 16-bit
|
|
microcontrollers to light-weight 32-bit processors.
|
|
|
|
RIOT is based on the following design principles: energy-efficiency, real-time
|
|
capabilities, small memory footprint, modularity, and uniform API access,
|
|
independent of the underlying hardware (this API offers partial POSIX
|
|
compliance).
|
|
|
|
New features
|
|
============
|
|
Core
|
|
----
|
|
+ msg_receive() with timeout
|
|
+ LPM support for MSP430 based platforms
|
|
+ introduced a version string
|
|
|
|
Supported platforms
|
|
-------------------
|
|
Additional support for the following boards:
|
|
+ TelosB
|
|
+ mbed LPC1768
|
|
|
|
Sensor drivers
|
|
---------------
|
|
+ drivers for the LM75A Digital temperature sensor and thermal watchdog
|
|
+ SRF02 and SRF08 ultrasonic range finders
|
|
|
|
Native port
|
|
-----------
|
|
+ implemented UART via I/O redirection or TCP and UNIX socket
|
|
|
|
System libraries
|
|
----------------
|
|
+ Mersenne twister pseudorandom number generator
|
|
+ crypto libraries
|
|
+ 3des
|
|
+ aes
|
|
+ rc5
|
|
+ skipjack
|
|
+ twofish
|
|
+ BSD-like package system for easy integration of external libraries
|
|
|
|
Network stack
|
|
-------------
|
|
+ port of CCN lite
|
|
+ POSIX socket wrapper
|
|
+ integration of libcoap
|
|
+ integration of OpenWSN
|
|
|
|
Further Changes
|
|
===============
|
|
* boards and projects repositories have been integrated and are now part of
|
|
the RIOT repository itself
|
|
* full refactoring of the network stack and introducing a substructure
|
|
according to the modules' functionalities
|
|
* cleaned up Makefile system and simplified binary directory
|
|
* more documentation
|
|
* various bug fixes and cleanups
|
|
|
|
Fixed Issues from the last release
|
|
==================================
|
|
#45: bit field order in the fcf may be wrong
|
|
The CC2420 FIFO expects the IEEE802.15.4 FCF field in reversed bit order.
|
|
With this release the byte order is now handled by the net_if module and
|
|
all device specific handling is done by the driver.
|
|
#82: Setting STATUS_REPLY_BLOCKED thread to STATUS_PENDING though it is not
|
|
handled yet
|
|
Pull Request #569 fixed this bug by checking for STATUS_REPLY_BLOCKED in
|
|
msg_receive().
|
|
#455: sha256 is broken on MSP430
|
|
The problem was caused
|
|
|
|
Known Issues
|
|
============
|
|
#21: Deal with stdin in bordermultiplex.c
|
|
Not all supported platforms provide a stdin in the current release.
|
|
However, the implementation of the 6LoWPAN border router won't work
|
|
without stdin.
|
|
#426: Interrupt handling on MSP430 is buggy
|
|
UART and timer handling is still unstable on MSP430 based platforms.
|
|
#495: native not float safe
|
|
When the FPU is used when an asynchronous context switch occurs, either the
|
|
stack gets corrupted or a floating point exception occurs.
|
|
#498: native is segfaulting at startup
|
|
In some cases (about 5-10%) a RIOT native process crashes with a SEGFAULT
|
|
at startup.
|
|
#499: native is segfaulting on heavy network usage
|
|
Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
|
|
#505: native on FreeBSD is broken
|
|
Due to different parameter handling in FreeBSD, native is currently not
|
|
working there.
|
|
|
|
For all issues and open pull requests please check the RIOT issue tracker:
|
|
https://github.com/RIOT-OS/RIOT/issues
|
|
|
|
Release 2013.08
|
|
===============
|
|
Kernel
|
|
------
|
|
- Microkernel with a powerful messaging system
|
|
- Multi-Threading with low overhead
|
|
- an energy-efficient, real-time capable scheduler
|
|
- small memory footprint
|
|
|
|
Userspace
|
|
---------
|
|
- 6LoWPAN according to RFC 4944, RFC 6282, and RFC 6775
|
|
- TCP and UDP
|
|
- RPL according to RFC 6550 and RFC 6719
|
|
- High resolution and long-term timers
|
|
- POSIX IO and BSD socket API
|
|
- Bloom filter
|
|
- SHA256
|
|
|
|
Hardware Support
|
|
----------------
|
|
- various ARM and MSP430 MCUs
|
|
* ARM7 NXP LPC2387
|
|
* TI MSP430F1612
|
|
* TI CC430F6137
|
|
* ARM7 Freescale MC13224v (preliminary)
|
|
* ARM Cortex-M4 STM32f407vgt6 (preliminary)
|
|
* ARM Cortex-M3 STM32f103rey6 (preliminary)
|
|
- radio drivers
|
|
* TI CC1100 and CC1101
|
|
* TI CC2420
|
|
* Atmel AT86RF231
|
|
- sensor drivers
|
|
* Sensirion SHT11
|
|
* Linear Technology LT4150
|
|
|
|
|
|
More information
|
|
================
|
|
http://www.riot-os.org
|
|
|
|
Mailing lists
|
|
-------------
|
|
* RIOT OS kernel developers list
|
|
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
|
|
* RIOT OS users list
|
|
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
|
|
* RIOT commits
|
|
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
|
|
* Github notifications
|
|
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
|
|
|
|
License
|
|
=======
|
|
* All sources and binaries that have been developed at Freie Universität Berlin are
|
|
licensed under the GNU Lesser General Public License version 2 as published by the
|
|
Free Software Foundation.
|
|
* Some external sources, especially files developed by SICS are published under
|
|
a separate license.
|
|
|
|
All code files contain licensing information.
|