Skip to content

Releases: RIOT-OS/RIOT

Release-2021.07

17 Jul 19:24
9f402ad
Compare
Choose a tag to compare

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 PUBLISHs (#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 pro...
Read more

Release-2021.04

06 May 13:22
2021.04
46bc55f
Compare
Choose a tag to compare

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: ...

Read more

Release-2021.01

04 Feb 14:35
2021.01
6dc47da
Compare
Choose a tag to compare

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 QN808x, 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 ...
Read more

Release-2020.10

30 Oct 17:22
2020.10
8292037
Compare
Choose a tag to compare

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 impl...

Read more

Release-2020.07.1

28 Aug 12:40
2020.07.1
608a20f
Compare
Choose a tag to compare

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

Release-2020.07

24 Jul 14:13
2020.07
398a066
Compare
Choose a tag to compare

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 (-).

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...
Read more

Release-2020.04

30 Apr 11:14
2020.04
673187e
Compare
Choose a tag to compare

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...
Read more

Release-2020.01

03 Feb 20:55
2020.01
8735f81
Compare
Choose a tag to compare

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 t...
Read more

Release-2019.10

31 Oct 13:11
2019.10
1b9ec8e
Compare
Choose a tag to compare

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...

Read more

Release-2019.07

25 Jul 09:40
d42c032
Compare
Choose a tag to compare

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 build-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
- 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...
Read more