RELEASE 2020.10 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) ------------------------------ packet buffer address assertion or completely without error chars address Timer related issues (15) ------------------------- time. _xtimer_now() and irq_disable() Drivers related issues (14) --------------------------- timeout clock cycles supported Native related issues (3) ------------------------- Other platforms related issues (19) ----------------------------------- __WFI() (not previous) CS Build system related issues (14) -------------------------------- evaluation image value Other issues (41) ----------------- LLVM depending on code layout in flash esp32-wroom-32 shell after flashing with J-Link 10 static_asserts in the same scope everywhere There are 148 known issues in this release Fixed Issues since the last release (2020.07) ============================================= ASSERTION. after debug break sometimes boards 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.