1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/release-notes.txt
2020-08-27 20:51:47 +02:00

7730 lines
310 KiB
Plaintext

RIOT-2020.07.1 - Release Notes
==============================
This is a bug fixing release for the RIOT 2020.07 release.
The following bugs were fixed:
#14670: tests/lwip_sock_tcp: fix -EADDRINUSE test
#14671: pkg/lwip: Use IS_ACTIVE() and bugfix
- pkg/lwip: Compatibility with IS_USED()
- pkg/lwip: Use IS_ACTIVE() & NETCONNTYPE_ISIPV6()
#14686: gnrc_sixlowpan_frag_vrb: fix cppcheck warning
#14693: cpu/msp430_common: fix thread_yield_higher() when called in isr
#14685: gnrc/nib: fix _idx_dsts() calculation
#14817: gnrc_sixlowpan_frag_rb: Check possibly uninitialized pointers
RIOT-2020.07 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
The 2020.07 release puts a focus on the improvement of automated testing. In
that vein, various new CI integrations such as CircleCI for documentation
building and online presentation, and Github Actions to check the tooling of
RIOT when merged. The `riotctrl_shell` python module allows to abstract shell
commands as python methods for testing using the newly created `riotctrl`
python package [1]. Kconfig migration reached phase 2 with various board
features being exposed to Kconfig. New network protocols were ported for RIOT
such as MQTT (in form of the `paho-mqtt` package) and the lookup client
component for CoRE RD `cord_lc`. The OpenWSN network stack with 6TiSCH support
was reintegrated into RIOT. Support for several new boards and new sensors was
added. Additionally, this release contains a number of bug fixes and test
improvements.
546 pull requests, composed of 10452 commits, have been merged since the
last release, and 84 issues have been solved. 64 people contributed with
code in 106 days. 2371 files have been touched with 822149 (+) insertions and
700313 deletions (-).
[1]: https://pypi.org/project/riotctrl/
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
Core
----
* core: make idle thread optional
+ macros/units: add unit conversion helper macros
+ msg: add message bus
* panic: launch USB bootloader on crash for easy recovery
System libraries
----------------
* auto_init: automatically determine auto_init_*.c
* base64: Clean up / improve implementation
+ hashes: add sha224 and reuse sha256 code
+ luid: provide luid_get_lb()
+ phydat: added phydat to JSON converter
+ posix: initial import of select() function (only support sockets for now)
* ps: show free stack space in addition to used and total
* shell:
+ add optional hooks for shell commands
* native: stop RIOT when the shell reads EOF
* refactor readline function
* refactor tokenizer code
+ shell_commands:
* alias ping=ping6
+ provide command to reboot to bootloader
+ stdio_semihosting: Initial include of Semihosting-based STDIO
+ touch_dev: add generic API for touch device
+ trace: add trace module
+ pm: Add pm_get_blocker()
* random:
+ add option to use HWRNG as source of randomness
* optimize sha1prng
* usb:
* allow for boards to define default custom VID/PID
* warn on test-ID usage in a unified location
+ xtimer: xtimer_rmutex_lock_timeout
* ztimer:
+ add power management for ztimer clocks
* expose ZTIMER_MSEC/USEC_BASE
Networking
----------
+ cord: add CoRE RD lookup client implementation
+ gcoap: add CoAP ping request
* gnrc:
+ gnrc_ipv6_ext_opt: initial import of hop-by-hop and destination option
handling
* gnrc_netif:
+ add IPv6 event bus
+ add option for non-std 6lo MTU
+ add support for internal event loop
* use gnrc_netif-submodules to pull in upper-layer struct members
* gnrc_nettype: indirect NETTYPE definition via pseudo-modules
* gnrc_pktdump: fix dependencies
* gnrc_tcp:
+ add retransmission timer
* rewrite API internal messaging
* rewrite recv buffer allocation/returning
* use exponent to configure message queue sizes
* nanocoap: allow coap_opt_add_string() for non-zero-terminated strings
+ netif: add functions to get and get by identifier
+ sock_dtls: provide getter function for UDP sock
* sock_util: add interface descriptor parsing to str2ep
Packages
--------
* pkg: rework checkout process
* avoid copying Makefiles in package source when possible
* store packages sources in a global package directory
* pkg: cleanup build system integration for
- cryptoauthlib, openthread, semtech-loramac, tinydtls, wakaama, u8g2,
ucglib, wolfssl
* pkg: tools: ensure cmake based packages/tools are built out-of-source
+ cryptoauthlib: wake pulse implementation for CPUs supporting
`periph_i2c_reconfigure`
+ emlearn: add support to RIOT
* gecko_sdk: update to v2.7.6
* lwip:
* add IPv4 support for `netdev_tap`
* add support for nrf802154
* enable IPv4/IPv6 dual stack mode
+ lwip_sock: provide implementation for `sock_*_recv_buf()`
- lua: remove unnecessary patch
+ paho-mqtt: add package and example
* nimble:
+ add static connection manager `statconn`
* netif:
* set host thread prio to 1
* simplify mbuf pool initialization
* update NimBLE ver (cd7d7aa286) + timing param cleanup
+ openwsn: re-integrate the network stack as a package
* tinydtls:
+ add `sock_async` support for `sock_dtls`
+ use latest development version (eda63f000c)
* ucglib: refactoring and fixes
Boards
------
+ cc1352p-launchpad: add support
* common/blxxxpill:
+ provide periph_rtt
* improve adc
+ dwm1001: add support to Decawave DWM1001 dev board
+ mcb2388: misc enhancements
+ nrf52840-dongle: add support
+ nrf52840dk: Add MTD configuration
+ nucleo-g474re: add support
* pic32-clicker: rename to 6lowpan-clicker
+ samr30-xpro: add SPI dev for ext pin header
+ samr3x-xpro: add riotboot feature
+ serpente: add support
+ sltb001a: enable CCS811 sensor
+ sodaq-sff: add support for SODAQ SFF
+ stm32f429i-disco: add support
+ weact-f411ce: add support
+ wemos-zero: add support
CPU
---
* arm7_common: Update to inlineable IRQ API
* atmega_common: Update to inlineable IRQ API
* cortexm:
+ allow to define reserved fields in CortexM vector table
* "free" SVC
* cc26x2_cc13x2:
* add oscillator switching functions
* add periph_i2c implementation
* trim device registers on `cpu_init`
* esp32:
* support of multiple heaps for newlib malloc
* replace RTC implementation by RTT implementation
* fe310: migrate to inlined IRQ API
+ kinetis: implement power modes for pm_layered
* lpc2387:
* pm: enable SLEEP & POWERDOWN mode
* timer: use lpc2387_pclk_scale()
+ mips_pic32_common: Implement GPIO IRQ
+ native:
+ add periph_eeprom driver implementation
* rename trace -> backtrace
+ nrf52:
+ add black magic probe config
+ add missing vendor files
+ implement EasyDMA-based SPI peripheral implementation
+ nrf52811: initial support
* nrf5x_common:
* add configurable RTT_FREQUENCY
* enable bias correction in hwrng
* sam0_common:
+ add DMA peripheral driver
+ add PWM support for saml21, samd5x
+ implement periph/dac
* make SPI peripheral DMA compatible
* move PWM to common code
* spi: move clk pin muxing into spi_acquire / spi_release
+ UART: implement inverted RX & TX
* samd21: PWM don't hard-code number of channels to 3
* samd5x: allow to use XOSC as clock source
* saml1x: pm: set deep flag
+ stm32:
+ add QDEC support for CPU_FAM_STM32F1
+ add non-blocking UART
* decrease latency in SPI DMA path
+ implement reset to bootloader
* filter availability of RNG by CPU not by board
* stm32_common: make RTT_FREQUENCY configurable
+ stm32f4: Add DMA config for SPI
+ stm32g4: add support
Device Drivers
--------------
+ atwinc15x0: add WiFi netdev driver
+ at: Add at_urc_isr module to process URCs upon arrival
+ at24cxxx: MTD wrapper for at24cxxx
+ at86rf215:
+ implement MR-O-QPSK
+ implement MR-OFDM
+ at86rf2xx: add support for high data rates
+ dfplayer: New driver for the DFPlayer Mini MP3 player
* ethos: use luid_get_eui48()
+ edbg_eui: add driver to get MAC address from Atmel EDBG
+ mhz19: initial support
+ mrf24j40: add Turbo Mode
+ mtd_spi_eeprom: add MTD wrapper for AT25XXX EEPROMs
+ pca9633: add new driver
+ periph/timer: add timer_set_periodic()
+ periph/i2c: add periph_i2c_reconfigure feature & implementation for sam0
+ periph/rtt: introduce RTT_MIN_OFFSET
+ periph/spi: add periph_spi_reconfigure feature & implementation for sam0
* pulse_counter: Use C11 atomics & bugfix
+ sdp3x : Add driver for sdp3x sensor
Build System / Tooling
----------------------
+ make:
+ add code generator targets
+ add JLink support for stm32
* docker.inc.mk: add and use generic docker_run_make
+ allow multiple external board dirs
+ info-global.inc.mk: add info-boards-features-blacklisted
* resolve dependencies before Makefile.include
+ riotctrl_shell:
+ initial import of shell interaction spawn
+ provide ipv6_nib interactions and parsers
+ provide netif interactions and parsers
+ tools:
+ add script to run radvd on a tun interface
+ provide tool to parse `pktbuf` output
* kconfiglib:
* add riot_kconfig to override default behaviours
* kconfiglib: bump to v14.1.0
Testing
-------
+ fuzzing framework:
+ add AFL-based fuzzing setup for network modules
+ add fuzzing application for gcoap
+ ci: setup github actions
+ sys/test_utils/dummy_thread: initial commit
+ tests/irq_disable_restore: Add test for irq_disable() / irq_restore()
+ tests/periph_spi: add benchmark for acquire / release
+ tests/periph_spi_dma: Add test for SPI with DMA
+ uncrustify: add auto uncrustify with blacklist
Kconfig migration
-----------------
+ armv7_m/cortexm: declare CPU_ARCH and CPU_CORE
+ boards: Model features in Kconfig
+ arduino-leonardo, arduino-mega2560, atmega128x-based, atmega256rfr2-based,
atmega328p-based, cc2538-based, cc26xx_cc13xx-based, efm32-based, esp-based,
fe310-based, kinetis-based, msp430-based, samr21-xpro, slwstk6220a
* kconfig: Declare common feature symbols
+ drivers: Expose Configurations to Kconfig
+ ads101x, at, at86rf215, bmx055, cc110x, dose.h, fxos8700, hdc1000, isl29020,
l3g4200d, lpsxxx, mag3110, mma8x5x, motor_driver, mtd_sdcard, opt3001,
pn532, rn2xx3, slipdev, sps30, tcs37727, tmp00x
+ networking: Expose configurations to Kconfig
+ asymcute, coap, csma
+ gnrc:
+ gomach, lwmac, mac, pktdump, pktbuf, rpl, tcp
+ usbus/cdc/ecm: Expose configurations to Kconfig
API Changes
===========
- cpu/sam0_common: drop prescaler from timer config
- cpu/sam0_common: PWM config now requires GCLK source
- drivers/mtd: Change API to return 0 on success
- drivers/mtd_mapper: count offset in sectors
- net/sock_dtls: provide getter function for UDP sock
- net/sock_dtls: add timeout to sock_dtls_send and add sock_dtls_session_init
diff --git a/sys/include/net/sock/dtls.h b/sys/include/net/sock/dtls.h
index 96569723fc..6e66048bd4 100644
--- a/sys/include/net/sock/dtls.h
+++ b/sys/include/net/sock/dtls.h
@@ -476,6 +485,13 @@
extern "C" {
#endif
+#ifndef DTLS_HANDSHAKE_BUFSIZE
+#define DTLS_HANDSHAKE_BUFSIZE (256) /**< Size buffer used in handshake to
+ hold credentials */
+#endif
+
+#define SOCK_DTLS_HANDSHAKE (EXDEV) /**< Return value for a successful
+ handshake */
+
/**
* @brief DTLS version number
@@ -546,26 +564,26 @@ void sock_dtls_init(void);
int sock_dtls_create(sock_dtls_t *sock, sock_udp_t *udp_sock,
credman_tag_t tag, unsigned version, unsigned role);
+
/**
- * @brief Creates a new DTLS session
+ * @brief Initialize session handshake.
*
- * Initializes handshake process with a DTLS server at @p ep.
- *
- * @param[in] sock DLTS sock to use
- * @param[in] ep Remote endpoint of the session
- * @param[out] remote The created session, cannot be NULL
+ * Sends a ClientHello message to initialize the handshake. Call
+ * @ref sock_dtls_recv() to finish the handshake.
*
- * @return 0 on success
- * @return -EAGAIN, if DTLS_HANDSHAKE_TIMEOUT is `0` and no data is available.
- * @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
- * @return -EINVAL, if @p remote is invalid or @p sock is not properly
- * initialized (or closed while sock_udp_recv() blocks).
- * @return -ENOBUFS, if buffer space is not large enough to store received
- * credentials.
- * @return -ETIMEDOUT, if timed out when trying to create session.
+ * @param[in] sock DTLS sock to use
+ * @param[in] ep Remote endpoint to start a handshake with
+ * @param[out] remote Resulting session
+ *
+ * @return 1, if new handshake is started
+ * @return 0, if there is an existing session
+ * @return -ENOMEM, not enough memory to allocate for new peer
+ * @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
+ * @return -EINVAL, if @p remote is invalid or @p sock is not properly
+ * initialized (or closed while sock_udp_recv() blocks).
*/
-int sock_dtls_session_create(sock_dtls_t *sock, const sock_udp_ep_t *ep,
- sock_dtls_session_t *remote);
+int sock_dtls_session_init(sock_dtls_t *sock, const sock_udp_ep_t *ep,
+ sock_dtls_session_t *remote);
/**
* @brief Destroys an existing DTLS session
@@ -578,7 +596,7 @@ int sock_dtls_session_create(sock_dtls_t *sock, const sock_udp_ep_t *ep,
void sock_dtls_session_destroy(sock_dtls_t *sock, sock_dtls_session_t *remote);
/**
- * @brief Decrypts and reads a message from a remote peer.
+ * @brief Receive handshake messages and application data from remote peer.
*
* @param[in] sock DTLS sock to use.
* @param[out] remote Remote DTLS session of the received data.
@@ -593,7 +611,8 @@ void sock_dtls_session_destroy(sock_dtls_t *sock, sock_dtls_session_t *remote);
*
* @note Function may block if data is not available and @p timeout != 0
*
- * @return The number of bytes received on success
+ * @return The number of bytes received on success
+ * @return -SOCK_DTLS_HANDSHAKE when new handshake is completed
* @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
* @return -EAGAIN, if @p timeout is `0` and no data is available.
* @return -EINVAL, if @p remote is invalid or @p sock is not properly
@@ -657,28 +676,32 @@ ssize_t sock_dtls_recv_buf(sock_dtls_t *sock, sock_dtls_session_t *remote,
* if no session exist between client and server.
* @param[in] data Pointer where the data to be send are stored
* @param[in] len Length of @p data to be send
+ * @param[in] timeout Handshake timeout in microseconds.
+ * If `timeout > 0`, will start a new handshake if no
+ * session exists yet. The function will block until
+ * handshake completed or timed out.
+ * May be SOCK_NO_TIMEOUT to block indefinitely until
+ * handshake complete.
*
- * @note Function may block until a session is created if there is no
- * existing session with @p remote.
- *
- * @note Initiating a session through this function will require
- * @ref sock_dtls_recv() called from another thread to receive the handshake
- * messages.
+ * @note When blocking, we will need an extra thread to call
+ * @ref sock_dtls_recv() function to handle the incoming handshake
+ * messages.
*
* @return The number of bytes sent on success
+ * @return -ENOTCONN, if `timeout == 0` and no existing session exists with
+ * @p remote
* @return -EADDRINUSE, if sock_dtls_t::udp_sock has no local end-point.
* @return -EAFNOSUPPORT, if `remote->ep != NULL` and
* sock_dtls_session_t::ep::family of @p remote is != AF_UNSPEC and
* not supported.
- * @return -EHOSTUNREACH, if sock_dtls_session_t::ep of @p remote is not
- * reachable.
* @return -EINVAL, if sock_udp_ep_t::addr of @p remote->ep is an
* invalid address.
* @return -EINVAL, if sock_udp_ep_t::port of @p remote->ep is 0.
* @return -ENOMEM, if no memory was available to send @p data.
+ * @return -ETIMEDOUT, `0 < timeout < SOCK_NO_TIMEOUT` and timed out.
*/
ssize_t sock_dtls_send(sock_dtls_t *sock, sock_dtls_session_t *remote,
- const void *data, size_t len);
+ const void *data, size_t len, uint32_t timeout);
/**
* @brief Closes a DTLS sock
@@ -694,6 +717,47 @@ ssize_t sock_dtls_send(sock_dtls_t *sock, sock_dtls_session_t *remote,
*/
void sock_dtls_close(sock_dtls_t *sock);
+/**
+ * @brief Creates a new DTLS session
+ *
+ * Initiates a handshake with a DTLS server at @p ep and wait until it
+ * completes or timed out.
+ *
+ * @deprecated Will not be available after the 2020.10 release.
+ * Please use @ref sock_dtls_session_init() and
+ * @ref sock_dtls_recv() instead.
+ *
+ * @param[in] sock DLTS sock to use
+ * @param[in] ep Remote endpoint of the session
+ * @param[out] remote The created session, cannot be NULL
+ * @param[in] timeout Timeout to wait for handshake to finish.
+ * Returns immediately if 0.
+ * May be SOCK_NO_TIMEOUT to wait indefinitely until
+ * handshake complete.
+ *
+ * @return 0 on success
+ * @return -ENOMEM, if no memory to allocate for new peer
+ * @return -EADDRNOTAVAIL, if the local endpoint of @p sock is not set.
+ * @return -EINVAL, if @p remote is invalid or @p sock is not properly
+ * initialized (or closed while sock_udp_recv() blocks).
+ */
+static inline int sock_dtls_session_create(sock_dtls_t *sock, const sock_udp_ep_t *ep,
+ sock_dtls_session_t *remote, unsigned timeout)
+{
+ int res;
+ uint8_t buf[DTLS_HANDSHAKE_BUFSIZE];
+
+ assert(sock);
+ assert(remote);
+
+ res = sock_dtls_session_init(sock, ep, remote);
+ if (res <= 0) {
+ return res;
+ }
+
+ return sock_dtls_recv(sock, remote, buf, sizeof(buf), timeout);
+}
+
#include "sock_dtls_types.h"
#ifdef __cplusplus
Deprecations
============
Warnings
--------
- GNRC_MAC_ENABLE_DUTYCYCLE_RECORD: Will be removed after 2021.01 release. Use
inverse CONFIG_GNRC_MAC_DISABLE_DUTYCYCLE_RECORD instead.
- saul_reg_rm(): will be removed at a future date
- sock_dtls_session_create(): will be removed after 2020.10 release. Please
use sock_dtls_session_init() and sock_dtls_recv() instead
- pkg/nordic_softdevice_ble: will be removed after the 2020.10 release
Removals
--------
- netdev: remove NETOPT_IPV6_IID support for network devices
Known issues
============
Networking related issues (44)
------------------------------
#13997: ping6 is failing when testing with cc2538dk
#13745: ethos: Unable to choose global source address.
#13496: cpu/stm32/eth, board/nucleo-f767z1: ethernet buffering issue (ping >1s)
after debug break
#13493: ethernet: Missing multicast addr assignment
#13490: cpu/stm32/eth, board/nucleo-f767z1: ethernet initialisation fails
sometimes
#13280: nrf52: Not able to add global or ULA address to interface
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
#12857: examples/gnrc_networking_mac broken on ATmega
#12761: samr30 xpro doesn't seem to use its radio ok
#12642: Emcute cannot create a double-byte name
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
packet buffer
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
#12210: stale border router does not get replaced
#11988: ethos: fails to respond to first message.
#11860: send data with UDP at 10HZ, the program die
#11852: scan-build errors found during 2019.07 testing
#11405: nrfmin: communication not possible after multicast ping with no interval
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8271: app/netdev: application stops working after receiving frames with
assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
chars
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
address
Timer related issues (17)
-------------------------
#14217: tests/periph_timer_periodic is failing
#13321: Sleep mode for Arduino
#13204: xtimer problem with nucleo32 boards
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8251: MSP430: periph_timer clock config wrong
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
_xtimer_now() and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck on native
Drivers related issues (13)
---------------------------
#14506: mdt_erase success, but vfs_format resets board (esp32-heltec-lora32-v2)
#14439: (almost solved) SPI SD-Card driver: SPI initialisation freeze until
timeout
#14424: adc is not a ADC-Driver but a analog pin abstraction
#13527: examples/dtls-wolfssl not working on pba-d-01-kw2x
#13444: Potential security and safety race conditions on attached devices
#13079: drivers/srf04: incorrect values on ATmega based platforms
#12445: driver/hts221: Temperature and Humidity readings incorrect
#12371: fail to send data to can bus
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
#12045: floats and doubles being used all over the place.
#11104: STM32: SPI clock not returning to idle state and generating additional
clock cycles
#9419: cpu/msp430: GPIO driver doesn't work properly
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
supported
Native related issues (3)
-------------------------
#13501: SDL2 does not work due to missing getpid
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe
Other platforms related issues (19)
-----------------------------------
#14572: tests/mpu_noexec_ram: fails on i-nucleo-lrwan1
#14410: MIPS: toolchain objcopy doesn't work and no .bin can be generated
#14237: esp32-wroom-32: tests/netstats_l2 failing sometimes
#14015: stm32152re: hardfault when DBGMCU_CR_DBG* bits are set and branch after
__WFI()
#13606: gcoap/esp8266: Stack overflow with gcoap example
#13390: Cannot use LLVM with Cortex-M boards
#13267: Failing tests on MSP430 (z1)
#13104: boards/hifive1: flashing issue
#13086: Failing tests on FE310 (Hifive1b)
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
#12168: pkg/libb2: blake2s doesn't work on AVR
#11885: arm7: printf() with float/double not working
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
(not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
boards
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
CS
#4954: chronos: compiling with -O0 breaks
Build system related issues (13)
--------------------------------
#14504: BUILD_IN_DOCKER ignores USEMODULE
#14288: pkg/ccn-lite: unable to `make -j -C examples/ccn-lite-relay`
#14264: make: ccache leads to differing binaries
#13492: make -j flash broken on esp* (will always flash the previous binary)
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
#10850: Tracking: remove harmful use of `export` in make and immediate
evaluation
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
image
#8913: make: use of immediate value of variables before they have their final
value
#8122: doxygen: riot.css modified by 'make doc'
#6120: Windows AVR Mega development makefile Error
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
Other issues (41)
-----------------
#14578: tests/cpp11_%: failing on i-nucleo-lrwan1
#14576: riotboot/nrf52840dk: flashing slot1 with JLINK fails
#14568: tests/pkg_libfixmath_unittests: failing on multiple platforms
#14548: edbg: long lines flooded over serial become garbled
#14520: examples / tests: LoRa tests fail on platforms that don't support LoRa
#14514: Uncrustify enforces deviation of coding convention
#14466: Linking C++
#14390: gcoap: Suspected crosstalk between requests (possible NULL call)
#14315: DTLS examples cannot send message to localhost
#14169: Gcoap does not handle separate responses
#14167: Gcoap drops long packages instead of gracefully erring out
#13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode
#13541: Order of auto_init functions
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
#13285: Bug: openocd 0.10.0-6 Ubuntu dies while debugging with -rtos auto
#13277: Y2038 tracking issue / strategy
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
esp32-wroom-32
#13120: tests: broken with stdio_rtt if auto_init is disabled
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
shell after flashing with J-Link
#12897: Can't build relic with benchmarks or tests
#12889: CC2538DK board docs: broken links
#12732: tests: some tests don't work with `newlib` lock functions.
#12621: Potential race condition in compile_and_test_for_board.py
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
#12105: [TRACKING] sys/shell refactoring.
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
10
#9882: sys/tsrb is not thread safe
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
static_asserts in the same scope
#7365: scheduler: priority inversion problem
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables
There are 150 known issues in this release
Fixed Issues since the last release (2020.04)
=============================================
#14521: tests/test_tools: fails on `iotlab-m3` due to `core`/`cpu` regression
#14415: Flashing nrf52dk with bmp breaks board
#14409: doc/search: hitting return while searching on api.riot-os.org reloads
current page
#14407: gnrc/RPL: instance ID not updated on reconnect
#14399: cord_ep example timed out when registering to a resource directory
#14380: dist/tools/flatc: cloning of the tool sporadically fails on the CI
#14361: Bug : bad assertion in cpu/stm32/periph/pwm.c
#14330: Improve driver implementation documentation
#14328: sam0_common: make debug broken for boards using EDBG
#14184: Part of puts/printf output is skipped
#14164: Failed assertion when using netdev_ieee802154_mr_fsk
#14158: kconfig is broken on case-insensitive file systems
#14074: Memory read beyond input buffer boundaries in nanocoap packet parser
#14035: I can't use w5100 to work on Release-2020.04 by using
RIOT/examples/emcute_mqttsn/.
#14034: gcoap server breaks or becomes very unresponsive (sock_async related?)
#13984: tests/pkg_ubasic: failing on esp32-wroom-32
#13920: stm32: ztimer RTT backend overflow
#13838: Global Address remains in state TNT[3] forever
#13834: DHCPv6 client ends up in busy loop after a while
#13419: Can't use nimble as prefix for modules
#13209: examples/gnrc_border_router is crashing after some time
#12909: Bug: Unexpected behavior with xtimer_periodic_wakeup() for large periods
on Nucleo-f401re
#12858: KW2XRF: Broken network communication without netstats-l2
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
#11795: gnrc_tftp: string functions on non-null terminated input
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
#11472: Warnings from objcopy and size (binutils 2.32)
#11388: SD card initialization: timeouts effectively blocking
#11212: POSIX sockets + lwIP: bad file descriptor
#11149: xtimer: hang on xtimer_spin_until (corner case)
#10367: sam0.inc.mk: Did not find a device with serial ATML21xxxxxxxx
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
configured prefix
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#7753: pic32-wifire: race-condition when linking in concurrent build
#5775: cpu: cortex-m: compiling vectors.c with LTO triggers compiler bug
#5774: cpu: cortexm_common: context switching code breaks when compiling with
LTO
#5769: Possible problem in scheduler
#5748: gnrc: nodes crashing with too small packet buffer
42 fixed issues since last release (2020.04)
Acknowledgements
================
We would like to thank all companies that provided us with hardware for porting
and testing RIOT-OS. Further thanks go to companies and institutions that
directly sponsored development time. And finally, big thanks to all of you
contributing in so many different ways to make RIOT worthwhile!
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
General Public License (LGPL) version 2.1 as published by the Free Software
Foundation.
* Some external sources and packages are published under a separate license.
All code files contain licensing information.
RIOT-2020.04 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
The 2020.04 release includes:
- Add support for 6LoWPAN IPv6 extension header next header compression
- Add support for DHCPv6 prefix delegation client
- Add support for kw41zrf and at86rf215 IEEE 802.15.4 radios
- Improvements on power management for ESP32
- Improvements and extensions in support of fe310 and lpc2387
- lwIP: provide support for asynchronous sock
- Improvements on xtimer module and testing
- Initial addition of the new timer subsystem: ztimer
- Migration to Kconfig - phase I: add multiple GNRC and system modules
- +10 new boards, +11 new drivers, +7 new packages
555 pull requests, composed of 1514 commits, have been merged since the
last release, and 22 issues have been solved. 60 people contributed with
code in 102 days. 3346 files have been touched with 358398 (+) insertions and
184720 deletions (-).
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
System libraries
----------------
* core:
+ add optional support for executable space protections
* sched: sched.h: remove not needed bitarithm include to avoid conflict
+ turn kernel_init.c and panic.c into submodules of core
+ sys/auto_init: allow delayed initialization of SAUL & gnrc_netif
* sys/base64: implement Base 64 Encoding with URL and Filename Safe Alphabet
* sys/crypto: define cipher using a module instead of CFLAGS
* sys/crypto/modes/ccm: handle input_len = 0
* sys/ecc: fix assertion in golay2412
* sys/event:
+ add event_wait_timeout64()
+ add shared event threads
* sys/newlib:
+ enable multiple heaps in _sbrk_r()
* syscalls_default: update heap_stats for multiple heaps
* sys/puf_sram: counter based seed after soft reset
* sys/phydat: improvement of phydat_dump including test application
* sys/shell:
+ add rtt command
* correctly detect and handle long lines
+ sys/shell_commands: + provide command to print version
* sys/spp: randomize canary value on each build
* sys/suit:
* cleanup of TinyCBOR to NanoCBOR refactor
* coap: make use of exposed tree handler function
* update to draft-ietf-v3
+ sys/uri_parser: initial import of a minimal and non-destructive URI parsing
* sys/usb: use default VID/PID for RIOT-included peripherals
* sys/xtimer:
* set now pointer correctly in _update_short_timers() loop
+ add xtimer_set_timeout_flag64()
* xtimer_mutex_lock_timeout fix with short timeout
+ sys/ztimer: initial import
Networking
----------
* net/coap:
* deprecate gcoap_add_qstring() and update uses
+ Packet API function to add Uri-Query option
+ net/dhcpv6: initial implementation of a client (with IA_PD support)
* net/dns: fix DNS resolution in ping6
* net/gcoap:
+ add canonical uri query function names
+ allow proxied client requests
* use sock_async and events
+ net/gnrc_dhcpv6_client_6lbr: initial import of a 6LBR DHCPv6 client
+ net/gnrc_ipv6_ext_frag: initial import of statistics module
* net/gnrc_ipv6_nib:
* do not ignore prefix list for route resolution
* fix border router with DNS & Context Compression
* only route to prefix list entry if on-link
* net/gnrc_lorawan:
* fix the handling of downlink frames without payload
* remove netdev layer from MAC
* net/gnrc_netif:
+ add gnrc_netif_send and gnrc_netif_highlander functions
* implementation of dynamic GNRC_NETIF_NUMOF approach
* net/gnrc_nettype: deprecate IOVEC type
* net/gnrc_pktbuf: deprecate gnrc_pktbuf_replace_snip()
+ net/gnrc_sixlowpan_iphc: add support for IPv6 extension header compression
+ net/gnrc_sock: provide implementation for `sock_*_recv_buf()`
* net/gnrc_sock_udp: choose random ephemeral port
- net/gnrc_tftp: remove module
* net/gnrc_uhcpc:
* ensure compression context is managed by the ABR
* only configure 6Lo-ND features if wireless-interface is 6LN
* update compression context with new prefix
* net/nanocoap:
+ add coap_opt_add_uquery2() with parameter key value length
+ add convenience function for adding path elements
* add uquery improvements
* make separate tree handling function
- remove obsolete functions for addition of Uri-Query option
+ net/netdev: add netdev_trigger_event_isr() function
- net/nhdp: remove module
+ net/sock:
* async: add optional callback argument
+ amend with zero-copy receive functions
+ amend API to iterate over stack-internal buffer chunks
Packages
--------
+ pkg/cmsis-nn: add support
+ pkg/cryptoauthlib: add support
+ pkg/libbase58: add support
- pkg/libcose: remove monocypher crypto mode
+ pkg/littlefs2: add support for LittleFS v2.x.y
+ pkg/lvgl: add initial support for LittlevGL
* pkg/lwip:
+ add auto-init support for transceiver ENC28J60
+ provide sock_async support
* pkg/micropython: bump version for FreeBSD fix
* pkg/monocypher: bump to version 3.0.0
* pkg/nanopb: bump version to 0.4.1
* pkg/nimble/autoconn: various improvements
- pkg/oonf_api: remove support
+ pkg/qcbor: add support
* pkg/tinydtls: remove receive buffer indirection via mbox
* pkg/wolfssl: bump version to 4.3.0
+ pkg/yxml: add support Yxml XML parser library package
Boards
------
* boards: include common dfu logic where applicable
+ boards/adafruit-clue: add initial support
* boards/arduino-mkr: feather-m0: sodaq-*: provide stdio over USB and
setup automatic flash with bossa
+ board/arduino-nano-33-ble: add initial support
+ boards/cc1312-launchpad: add support and documentation
* boards/feather-nrf52840:
* use CDC ACM as default STDIO
* fix LED macros
+ boards/esp32-heltec-lora32-v2: add support
+ boards/im880b: add support
+ boards/kw41z-mini: add support
* boards/mega-xplained: fix ADC line definitions
* boards/nrf51: fix UART hardware flow-control configuration
* boards/nucleo-l152re: fix uart1 pinout config
+ boards/nucleo-l412kb: add initial support
* boards/sam[r/d]21-xpro: prefer XOSC32K for RTC/RTT (GCLK2)
* boards/same54-xpro:
* configure remaining EXT connectors
* don't source peripheral clocks from main clock
* boards/samr30: add helper for antenna switch
* boards/stm32l4: add common clock configuration
+ boards/olimexino-stm32: add support
+ boards/openlabs-kw41z-mini-256kib: add support
* boards/openmote-b: add SAUL configuration and note about flashing
+ boards/p-nucleo-wb55: add initial support
+ boards/pic32*: add GPIO SAUL configuration
* boards/pinetime:
* add defines for controlling the backlight pin
* update mtd_spi_nor config
* fix battery ADC line define
* doc/doxygen:
+ add 'Creating boards' section
* improvements on various board's documentation
CPU
---
* cpu:
* add CPU feature for stack smash protections
+ add UART RX implementation on PIC32 devices
* make default idle/main stacksizes configurable on all archs
* move cpu level dependencies in dedicated Makefile.dep files
* unify UART hardware flow control use to a generic module
* cpu/atmega_common: fix reboot issues
* cpu/cc13x2: rename cpu to cc26x2_cc13x2
* cpu/cc2538:
* fix spi_transfer_bytes()
+ implement periph/pm
* timer: handle power mode
* cpu/cc26xx_cc13xx: add power common code
* cpu/cortexm:
+ add support for Cortex-M interrupt sub-priorities
* cleanup dependencies
* move CPU_ARCH/FAM to Makefile.features
* only enable MPU during low low level init
* cpu/efm32:
* cleanup of makefiles
* fix incorrect ADC status register
* cpu/esp_common:
* allow WiFi modem sleep mode
+ esp-wifi: allow connecting to open networks
* fixes in common CPU configurations
* move dependency resolutions to Makefile.dep
* cpu/esp32:
* activate automatic XTAL detection
+ add support for light/deep sleep and pm_layered
* allow external 32 kHz crystal for the RTC hardware time
+ esp_wifi: add WPA2 enterprise mode with IEEE 802.1x/EAP authentication
* fix wake-up sources for sleep mode
+ cpu/esp8266: add RTT implementation
* cpu/fe310:
* fix power management configuration
+ implement driver for watchdog
* cpu/lpc2387:
* fix RTC leap year calculation
+ implement periph/adc
+ implement periph/i2c
* make SPI configurable
* cpu/native: fix c11_atomic sizes on FreeBSD
* cpu/native/can/candev_linux: add check for real can
+ cpu/nrf52/nRF802154: implement CCA
+ cpu/nrf5x: add and enable configuration for the built-in DC/DC converter
* cpu/sam0:
+ add gpio_disable_mux() function
+ add samd21j17d support
* enhance power saving by switching EIC clock source during STANDBY mode
* fix handling of PM_NUM_MODES
+ provide interface to query GCLK frequency
* use generic exti_config
* cpu/samd21: pwm: allow to use channels > 3
* cpu/samd5x: disable RTC on init to prevent undefined RTC state
* cpu/[saml21/1x]: enable buck voltage regulator when possible
* cpu/stm32_common:
+ add USB OTG FS/HS usbdev peripheral driver
* enable EXTI interrupt for rtt
* eth: fix address and multicast filtering
* cpu/stm32f1: make RTC Y2038 safe
+ cpu/stm32wb: add initial support
Device Drivers
--------------
* doc: various fixes in driver documentation
+ drivers/apds99xx: add support for APDS99XX ambient light and proximity sensors
+ drivers/at24cxxx: add support for AT24Cxxx family of EEPROMs
+ drivers/at24mac: add support for unique ID chip
+ drivers/at25xx: add support for AT25xxx family of EEPROMs
+ drivers/at86rf215: add basic support for AT86RF215 dual-band radio
* drivers/at86rf2xx:
* fix receive before send detection
+ implement basic mode
+ drivers/bh1900nux: add support
+ drivers/bme680: add support
+ drivers/can: add CAN support for nucleo-l476rg
+ drivers/cc110x: add support for promiscuous mode
+ drivers/disp_dev: add generic interface for display drivers
* drivers/ds18: fix temperature conversion
+ drivers/hmc5883l: add support for Honeywell HMC5883L magnetometer
+ drivers/kw41zrf: add support for radio
+ drivers/lis2dh12: add interrupt functionality
* drivers/mtd_spi_nor: erase timings in struct
+ drivers/periph_common/rtc: add rtc_mktime() & rtc_localtime() helper functions
+ drivers/rtt_rtc: add RTT-based RTC implementation, enable it for cpu/cc2538,
nrf5x_common
* drivers/slipdev: provide stdio multiplexing over SLIP
+ drivers/sps30: add support for particulate matter sensor
* drivers/srf08: cleanup driver configuration scheme
+ drivers/stmpe811: add support for touchscreen controller
* drivers/ws281x:
+ add support for esp32
+ add VT100 backend for native
Build System / Tooling
----------------------
* build system: Restructure dependency resolution
* dist:
* cc2538-bsl: use upstream version
+ dhcpv6-pd_ia: initial import of a DHCPv6 server bootstrapper
* edbg: update to latest upstream version
* factor out static tests from build_and_test
* packer: update vagrant image to Ubuntu 18.04 + refactoring
+ sliptty: introduce a new SLIP to TUN tool
* sliptty/start_network.sh: configure global address for SLIP interface
* testbed-support:
* fix compatibility with cli-tools v3
* use BINFILE for flashing on iotlab
+ doc: add section on configuration to 'Getting started'
* make:
* disable implicit rules
* remove support for make <4
* native: turn on creation of debug symbols (CFLAGS += -g)
* Makefile:
* arch: mips: Allow CFLAGS_DBG and CFLAGS_OPT to be overridden
* boards: move remaining uses of USEMODULE from Makefile.include to
Makefile.dep
* disable stdio_% modules before they are included
* fix duplicate modules from USEMODULE
* fix sock_udp deps for stnp
* include package deps earlier
* info-global.inc.mk: reset BOARDSDIR
* Makefile.dep: remove usage of DEFAULT_MODULE += stdio%
* mips: cleanup include makefile
* move cpu level dependencies in dedicated Makefile.dep files
* periph_init based on USEMODULE
* pkg/local.mk: add FORCE target to .PHONY
+ provide CPU as a feature
* use simple expansion for widely used variables
Testing
-------
* tests:
+ add check_unittests helper function
+ add interactive_sync adapted to shell
* fix compilation problems with NDEBUG
* fix for `GNRC_NETIF_SINGLE`
* fixes for evtimer_msg and bench_runtime_coreapis
+ tests/bench_xtimer_load: initial commit
* tests/buttons: fix build failure if BTN0_PIN is not declared
+ tests/candev: add initial version with native support
+ tests/driver_netdev_common: add compile-test for network drivers
+ tests/emcute: provide tests
+ tests/gnrc_ipv6_nib_dns: add test of RDNSS option handling
* tests/gnrc_rpl_srh: use AsyncSniffer for sniffing
* tests/periph_rtc: fix system locks in ISR
+ tests/xtimer_overhead: initial commit
Kconfig migration
-----------------
Migration to Kconfig as configuration tool is currently on phase 1. Which means
that we are moving configuration options from modules to Kconfig files, and
leaving its use optional.
+ doc: add Kconfig section
* Kconfig:
* add CPU and Board common symbols
* add Drivers menu
* include application-specific symbols first
* net/gnrc/ipv6: group IPv6 related Kconfig options
+ Expose configurations to Kconfig of:
+ drivers/periph/wdt
+ drivers/mrf24j40
+ net/gcoap
+ net/gnrc/ipv6/ext/frag
+ net/gnrc/ipv6/nib
+ net/gnrc/sixlowpan
+ net/ieee802154
+ net/nanocoap
+ pkg/tinydtls
+ pkg/wakaama
+ sys/usbus
+ usbus/cdc/acm
API Changes
===========
- SUIT: update to draft-ietf-v3
- Makefile.include: remove support for make <4
- net/gnrc_netif: implementation of dynamic GNRC_NETIF_NUMOF approach
- net/sock: amend with zero-copy receive functions:
+ /**
+ * @brief Releases the stack-internal buffer space provided by the
+ * `sock_*_recv_buf()` functions.
+ * @param[in] buf_ctx Stack-internal buffer context to release.
+ */
+ void sock_recv_buf_free(void *buf_ctx);
+ /**
+ * @brief Decrypts and provides stack-internal buffer space containing a
+ * message from a remote peer.
+ *
+ */
+ ssize_t sock_dtls_recv_buf(sock_dtls_t *sock, sock_dtls_session_t *remote,
+ void **data, void **buf_ctx, uint32_t timeout);
+ /**
+ * @brief Provides stack-internal buffer space containing an IPv4/IPv6
+ * message from remote end point
+ */
+ ssize_t sock_ip_recv_buf(sock_ip_t *sock, void **data, void **buf_ctx,
+ uint32_t timeout, sock_ip_ep_t *remote);
+ /**
+ * @brief Provides stack-internal buffer space containing a UDP message from
+ * a remote end point
+ */
+ ssize_t sock_udp_recv_buf(sock_udp_t *sock, void **data, void **buf_ctx,
+ uint32_t timeout, sock_udp_ep_t *remote);
- net/sock/async: add optional callback argument:
+ * @param[in] arg Argument provided when setting the callback using
+ * @ref sock_dtls_set_cb(). May be NULL.
*/
- typedef void (*sock_dtls_cb_t)(sock_dtls_t *sock, sock_async_flags_t flags);
+ typedef void (*sock_dtls_cb_t)(sock_dtls_t *sock, sock_async_flags_t flags,
+ void *arg);
+ * @param[in] arg Argument provided when setting the callback using
+ * @ref sock_ip_set_cb(). May be NULL.
*/
- typedef void (*sock_ip_cb_t)(sock_ip_t *sock, sock_async_flags_t flags);
+ typedef void (*sock_ip_cb_t)(sock_ip_t *sock, sock_async_flags_t flags,
+ void *arg);
+ * @param[in] arg Argument provided when setting the callback using
+ * @ref sock_tcp_set_cb(). May be NULL.
*/
- typedef void (*sock_tcp_cb_t)(sock_tcp_t *sock, sock_async_flags_t flags);
+ typedef void (*sock_tcp_cb_t)(sock_tcp_t *sock, sock_async_flags_t flags,
+ void *arg);
+ * @param[in] arg Argument provided when setting the callback using
+ * @ref sock_tcp_queue_set_cb(). May be NULL.
*/
typedef void (*sock_tcp_queue_cb_t)(sock_tcp_queue_t *queue,
- sock_async_flags_t flags);
+ sock_async_flags_t flags,
+ void *arg);
+ * @param[in] arg Argument provided when setting the callback using
+ * @ref sock_udp_set_cb(). May be NULL.
*/
- typedef void (*sock_udp_cb_t)(sock_udp_t *sock, sock_async_flags_t type);
+ typedef void (*sock_udp_cb_t)(sock_udp_t *sock, sock_async_flags_t type,
+ void *arg);
- net/sock/dns: make sock_dns_query() return the length of the address:
/**
* @brief Get IP address for DNS name
*
- * @return 0 on success
- * @return !=0 otherwise
+ * @return the size of the resolved address on success
+ * @return < 0 otherwise
*/
int sock_dns_query(const char *domain_name, void *addr_out, int family);
- mtd_spi_nor: move const params to separate struct:
+ /**
+ * @brief Compile-time parameters for a serial flash device
+ */
+ typedef struct {
+ const mtd_spi_nor_opcode_t *opcode; /**< Opcode table for the device */
+ spi_clk_t clk; /**< SPI clock */
+ uint16_t flag; /**< Config flags */
+ spi_t spi; /**< SPI bus the device is connected to */
+ spi_mode_t mode; /**< SPI mode */
+ gpio_t cs; /**< CS pin GPIO handle */
+ uint8_t addr_width; /**< Number of bytes in addresses, usually 3 for small devices */
+ } mtd_spi_nor_params_t;
+
typedef struct {
mtd_dev_t base; /**< inherit from mtd_dev_t object */
- const mtd_spi_nor_opcode_t *opcode; /**< Opcode table for the device */
- spi_t spi; /**< SPI bus the device is connected to */
- gpio_t cs; /**< CS pin GPIO handle */
- spi_mode_t mode; /**< SPI mode */
- spi_clk_t clk; /**< SPI clock */
- uint16_t flag; /**< Config flags */
+ const mtd_spi_nor_params_t *params; /**< SPI NOR params */
mtd_jedec_id_t jedec_id; /**< JEDEC ID of the chip */
uint32_t page_addr_mask;
uint32_t sec_addr_mask;
- uint8_t addr_width; /**< Number of bytes in addresses, usually 3 for small devices */
uint8_t page_addr_shift;
uint8_t sec_addr_shift;
} mtd_spi_nor_t;
Deprecations
============
Warnings
--------
- `make all-debug` target will be removed for `native` after the 2020.10 release
- net/gcoap: `gcoap_add_qstring()` will be removed after the 2020.10 release
- net/gnrc/nettype: `GNRC_NETTYPE_IOVEC` type will be removed after 2020.10
release
- net/gnrc_pktbuf: `gnrc_pktbuf_replace_snip()` will be removed after 2020.10
release
- net/gnrc/sixlowpan: Configuration macro
`GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE` will be removed after 2020.10
release.
Removals
--------
- Makefile.include: remove support for GNU make <4
- pkg/oonf_api: remove package
- pkg/tinydtls: remove TINYDTLS_LOG configuration macro
- sys/net/gnrc_tftp: remove module
- sys/net/nhdp: remove module
Known issues (136)
==================
Networking related issues (48)
------------------------------
#13834: DHCPv6 client ends up in busy loop after a while
#13745: ethos: Unable to choose global source address.
#13496: cpu/stm32/eth, board/nucleo-f767z1: ethernet buffering issue (ping >1s)
after debug break
#13490: cpu/stm32/eth, board/nucleo-f767z1: ethernet initialisation fails
sometimes
#13209: examples/gnrc_border_router is crashing after some time
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
#12858: KW2XRF: Broken network communication without netstats-l2
#12857: examples/gnrc_networking_mac broken on ATmega
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
packet buffer
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
#12210: stale border router does not get replaced
#11988: ethos: fails to respond to first message.
#11860: send data with UDP at 10HZ, the program die
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
#11852: scan-build errors found during 2019.07 testing
#11795: gnrc_tftp: string functions on non-null terminated input
#11405: nrfmin: communication not possible after multicast ping with no interval
#11212: POSIX sockets + lwIP: bad file descriptor
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8271: app/netdev: application stops working after receiving frames with
assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
configured prefix
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
chars
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
address
Timer related issues (17)
-------------------------
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
#12909: Bug: Unexpected behavior with xtimer_periodic_wakeup() for large periods
on Nucleo-f401re
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
#11149: xtimer: hang on xtimer_spin_until (corner case)
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8251: MSP430: periph_timer clock config wrong
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
_xtimer_now() and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck on native
Drivers related issues (9)
--------------------------
#13444: Potential security and safety race conditions on attached devices
#12445: driver/hts221: Temperature and Humidity readings incorrect
#12371: fail to send data to can bus
#12045: floats and doubles being used all over the place.
#11388: SD card initialization: timeouts effectively blocking
#11104: STM32: SPI clock not returning to idle state and generating additional
clock cycles
#9419: cpu/msp430: GPIO driver doesn't work properly
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
supported
Native related issues (3)
-------------------------
#11472: Warnings from objcopy and size (binutils 2.32)
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe
Other platforms related issues (18)
-----------------------------------
#13606: gcoap/esp8266: Stack overflow with gcoap example
#13408: Bug: PWM test crashes on Arduino Mega 2560
#13390: Cannot use LLVM with Cortex-M boards
#13267: Failing tests on MSP430 (z1)
#13104: boards/hifive1: flashing issue
#13086: Failing tests on FE310 (Hifive1b)
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
#12168: pkg/libb2: blake2s doesn't work on AVR
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
(not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
boards
#7753: pic32-wifire: race-condition when linking in concurrent build
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with
LTO
#4954: chronos: compiling with -O0 breaks
Build system related issues (11)
--------------------------------
#13492: make -j flash broken on esp* (will always flash the previous binary)
#13419: Can't use nimble as prefix for modules
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
#10850: Tracking: remove harmful use of `export` in make and immediate
evaluation
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
image
#8913: make: use of immediate value of variables before they have their final
value
#8122: doxygen: riot.css modified by 'make doc'
#6120: Windows AVR Mega development makefile Error
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
Other issues (30)
-----------------
#13918: cpu/stm32f1: CPU hangs after wake-up from STOP power mode
#13527: examples/dtls-wolfssl not working on pba-d-01-kw2x
#13345: sys/xtimer: segmentation fault: in function xtimer_msg_received_timeout
#13277: Y2038 tracking issue / strategy
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
esp32-wroom-32
#13120: tests: broken with stdio_rtt if auto_init is disabled
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
shell after flashing with J-Link
#12732: tests: some tests don't work with `newlib` lock functions.
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
#12105: [TRACKING] sys/shell refactoring.
#11885: arm7: printf() with float/double not working
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
static_asserts in the same scope
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5769: Possible problem in scheduler
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables
There are 137 known issues in this release
Fixed Issues since the last release (2020.01)
=============================================
#13920: stm32: ztimer RTT backend overflow
#13680: suit-tool runs on every build - ModuleNotFoundError: No module named
'cbor' when building anything
#13587: drivers/cc110x: Lost IRQs can lead to driver deadlock
#13471: 6ctx: incorrectly removes 6ctx context when the non-zero part of the
address matches
#13460: Makefile.dep: DEFAULT_MODULE += stdio_rtt will always load dependencies
- even if other stdio is selected
#13459: cpu/cortex-m23: gcc 9 bug when compiling c11 atomics
#13447: gnrc_sock_dns is not working
#13442: gnrc_networking not sending packets when hardware has multiple
interfaces
#13369: native:in file gnrc_rpl_p2p.c function trickle_start() has extra and
some undeclared variables.
#13358: iotlab-m3: long HW address is in reversed order
#13353: tests/unittests/tests-ecc: segfault with golay, when enabling asserts
#13309: cpu/native/can: Segmentation fault when manipulating vcan's through
socketcan
#13287: Driver for DS18B20 returns invalid values
#13265: tests: compilation of some test applications fail with NDEBUG
#13015: Quickest start does not build with vagrant
#12854: `pm_reboot()` not working on AVR when compiled with `LTO=1`
#12370: Undocumented uint8_t assumptions in nrf52840 peripherals
#12037: cpu/sam0_common: i2c baudrate calculation fails if CLOCK_CORECLOCK > 51
MHz
#11026: Recent changes effectively killed modular board designs
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8130: gcoap: can't build with network stacks other than GNRC
#7020: isr_rfcoreerrors while pinging between CC2538DKs
22 fixed issues since last release (2020.01)
Acknowledgements
================
We would like to thank all companies that provided us with hardware for porting
and testing RIOT-OS. Further thanks go to companies and institutions that
directly sponsored development time. And finally, big thanks to all of you
contributing in so many different ways to make RIOT worthwhile!
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
General Public License (LGPL) version 2.1 as published by the Free Software
Foundation.
* Some external sources and packages are published under a separate license.
All code files contain licensing information.
RIOT-2020.01 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
The 2020.01 release includes:
- Initial support for MicroPython
- Initial support for GNRC based LoRaWAN stack
- Initial (experimental) asynchronous sock support
- Extend support for lpc2387 and fe310 cpus
- Xtimer concurrency/robustness improvement, fixing #8388, #5338 & #5103
- Complete re-implementation of esp8266 based on ESP8266 RTOS SDK
- Improvements in automatic tests
- Introduce and start using Kconfig as a configuration tool
- +12 new boards, +7 new drivers, +4 new packages
About 527 pull requests, composed of 1367 commits, have been merged since the
last release, and about 29 issues have been solved. 61 people contributed with
code in 111 days. Approximately 3053 files have been touched with 134416 (+)
insertions and 31870 deletions (-).
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
System libraries
----------------
+ core/kernel_defines: Introduce 'IS_ACTIVE' macro
* core/assert: allow multiple static_asserts within a function
* core/ringbuffer: compensate 'ringbuffer_remove' underflow error
+ core/thread: add zombie thread state
+ sys: basic C++ compatibility with C11 atomics
+ sys/arduino:
+ added Wire (I2C) interface
+ added SPI interface
* allow use of arduino libraries without need for arduino sketch
* add implementation for analogWrite
* fixed frequency selection in SPI
* sys/bitfield: unify byte order and bit order to both be most significant
bX first
* sys/checksum: move crc8 implementation from sht3x to common code
* sys/color: add color_rgb_set_brightness() and color_rgb_shift()
* sys/crypto/modes/ccm: support length of AAD > 24
* sys/crypto/modes/ccm: support plain text length < 2^32
+ sys/frac: add frac library for integer scaling by semi-constant fractions
+ sys/luid: add luid_get_eui48() / luid_get_eui64()
+ sys/progress_bar: add module for managing a progress bar in stdout
* sys/posix/pthread/pthread.c: fix pthread reaper
* sys/shell: make shell_run run shell forever
* sys/shell_commands: make 6Lo compression contexts configurable on non-6LBR
+ sys/stdio_null: add null driver
* sys/suit: use c25519 instead of hacl
- sys/suit: remove dependency on tinycbor
* sys/usbus:
* add descriptor prefix support
* unify terminology to use 'descriptor' everywhere
* cdc_acm: add interface association descriptor, enable Windows
enumeration and usage of RIOT CDC ACM
* cdc_acm: fix to avoid lost characters on USBUS CDC ACM STDIO
* sys/xtimer:
* concurrency/robustness improvements
* fix xtimer_mutex_lock_timeout by having _mutex_timeout() check waiting
list
- remove dependency to core_msg
Networking
----------
+ sys/gnrc_lorawan: add initial support for GNRC based LoRaWAN stack
* sys/gnrc_netif: make 6LoENC dynamically configurable
+ sys/gnrc_sock: provide asynchronous event implementation
* sys/gnrc_ipv6: fix source check for loopback address
* sys/gnrc_ipv6_ext_frag: remove fragment header when n-th fragment is first
* sys/gnrc_ipv6_nib: allow for configuration of static link-local addresses
* sys/gnrc_netif: highest source address scope wins selection
* sys/gnrc_netif: only use prefix matching as tie-breaker in source
selection
* sys/gnrc_sixlowpan_frag_rb: split out classic frag specific code
* sys/gnrc_sixlowpan_frag_rb: fix memory-leak in _rm_by_datagram() and in
interval marker inherited from base
* sys/gnrc_sixlowpan_frag: various optimizations on sending
* sys/gnrc_sixlowpan_iphc: add fragment forwarding stubs
* sys/gnrc_sixlowpan_iphc_nhc: determine UDP hdr length from reassembly
buffer, fix fragmented data size allocation
* sys/gnrc_tcp: return immediately on gnrc_tcp_recv if connection is closing
+ sys/net/gcoap: add macro to delay initialization of gcoap
* sys/net/gcoap: do not allocate RX buf on stack
* sys/pthread: check malloc() return value, prevent NULL pointer deference
* sys/shell/gnrc_netif: use netif API for ifconfig
* sys/shell/sc_nimble`_netif: allow connecting by name
+ sys/sock: initial definitions for asynchronous event handling
+ sys/sock_async: initial import of event-based implementation
Packages
--------
* pkg: cleanup management of dependencies
* pkg/pkg.mk: use intermediate state files
* pkg/ccn-lite: bump version
+ pkg/flatbuffers: add support for FlatBuffers serialization library
* pkg/gecko_sdk: update to version 2.7
* pkg/libfixmath: several improvements and fixes to support 8bit
* pkg/littlefs: bump littlefs version to 1.7.2
* pkg/lora-serialization: bump to latest version and update test for AVR
* pkg/lwip:
* add support for esp32 Ethernet device
* add IPv4 support for LWIP-stm32
* start DHCP for a netif with lwip_dhcp
* add stm32 ethernet support
* enable lwIP for ESP8266
+ pkg/nanopb: add Nanopb protocol buffers library package
* pkg/nimble:
* bump version
+ add simple BLE connection manager: autoconn
+ add user event callback to autconn
+ nimble_netif: catch L2CAP connection failures
+ nimble_netif: add additional events
* pkg/tinydtls: add DTLS sock API implementation
* pkg/tinydtls: bump version
+ pkg/tensorflow-lite: add support to RIOT
+ pkg/utensor: add support to RIOT
* pkg/u8g2: refactor the U8g2 package
* pkg/wakaama: add basic LWM2M client implementation
Boards
------
- boards: remove RTT_NUMOF/RTC_NUMOF
- boards: unexport PROGRAMMER
+ boards/adafruit-nrf52840: initial support
* boards/arduino-zero: configure ADC channels
+ boards/atmega328p: initial support for standalone version
* boards/atmega328p: support variable xtimer frequencies
+ boards/atmega1284P: initial support for standalone version
+ boards/atmega256rfr2: initial support
+ boards/avr-rss2: initial support
+ boards/cc1252: initial support
* boards/common: clean up msba2 common files
+ boards/derfmega*: initial support
+ boards/esp32-ttgo-t-beam: initial support
- boards/frdm: remove support for OpenOCD < v0.10.0
+ boards/mcb2288: initial support
+ boards/microduino-corerf: initial support
* boards/nucleo-f207zg: add ethernet configuration
* boards/native: allow for native to be reset via SIGUSR1
* boards/particle-*: configure PCB antenna for 2.4GHz radio
* boards/pic32-clicker: cleanup uart configuration and initialization
* boards/pic32-clicker: use pic32prog as default programmer
+ boards/pinetime: initial support for the PINE64 PineTime smartwatch
+ boards/sodaq-*: add arduino support
* boards/sodaq-*: refactor common code
+ boards/stm32f030f4-demo: initial support
* boards/stm32-common:
* allow SPI signals routed on multiple alternate functions
* add 54MHz and 108MHz SPI divtable entries
* common programmer/debugger/serial config
* boards/thingy: add dependency for on-board hts221/lps22hb sensors
CPU
---
+ cpu/arm7_common: hook up puf_sram
+ cpu/atmega128rfa1: add initial support
+ cpu/atmega256rfr2: symbol counter based RTT support
+ cpu/atmega_common:
* clean ups and fix code run at end of ISR to behave like
`thread_yield_higher`
* fixed atmega_exit_isr
* uart: use TX_ISR to check uart transmission end
+ cpuid: provide for every device
+ rtt: initial peripheral driver support
+ wdt: initial peripheral driver support
* cpu/cortexm: fix -mfpu flag value for CortexM7
* cpu/fe310:
* several cleanup in implementation and clock setup
* change default optimization to "-Os"
* uart: rework driver and fixes
+ i2c: initial peripheral driver support
+ spi: initial peripheral driver support
+ cpp: add feature
* cpu/esp*: esp_wifi used as default netdev for lwip
* cpu/esp32:
* improvements and cleanup of log_module
* fix lwip + esp_wfi, esp_wifi send buffer should not be on stack
* use esptool.py from riot tools
* rtc: fixes, improvements and cleanups
* spi: fix CS handling in spi_transfer_bytes
* uart: workaround uart sporadically set to wrong value when the CPU
clock is changed
* spi: enable use of SPI flash drive with pkg_littlefs
* cpu/esp8266:
* complete re-implementation based on ESP8266 RTOS SDK
* fix of esp_wifi_send function
* fix bootloaders and log outputs in vendor code
* cpu/efm32: fix uart handling of RX when no RX callback is configured
* cpu/efm32: normalize time in rtc_series1
* cpu/lpc2387:
* allow for more flexible clock selection
+ add support for backup RAM
* uart: update the UART driver
+ pm: initial support
+ dac: initial support
* rtc: enable RTC on rtc_init(), align with other RTC implementations
* lpc2387.ld: cleanups and align with cortexm_base.ld
* lpc2387.ld: provide thread_isr_stack_*() - MicroPython
+ cpu/kinetis: add flashpage for W & K series
* cpu/msp430_common: add flashpage_raw
* cpu/native:
+ initial import of stdio_native
* allow Access to Hardware SPI Bus on Linux
* fix all-asan Makefile target
* cpu/stm32:
* i2c_2: fix read bytes flag
- i2c_2: do not support repeated start reading
* stmclk: fix M-factor shift for SAI PLL
* stcmlk: add functions for low power mode clock config
+ stm32f0: add support for stm32f030cc CPU
+ stm32f1: add rtt peripheral driver
+ stm32l0: add stm32l010c6 support
* cpu/sam0_common:
* uart: implement non-blocking uart write
+ uart: add hardware flow control support
* rtt: enable COUNTSYNC in CTRLA, fixes `rtt_get_counter()` return value
* spi: power off spi on release, avoid bus errors affecting application
code
* adc: fix API to return `-1` on unsupported resolution
* cpu/samd21: use dedicated 1kHz GCLK4 for RTC and WDT
Device Drivers
--------------
+ doc/doxygen: add device driver guide
+ drivers: add Differentially Operated Serial Ethernet (DOSE) driver
* drivers/at86rf2xx: add support for ATmegaRF MCUs
* drivers/at86rf2xx: enable Smart Reduced Power Consumption for AT86RFR2
* drivers/bmx280: added SPI models
+ drivers/dcf77: add driver for DCF77
* drivers/hd44780: move params header to the right place
+ drivers/ili9341: initial import of ili9341 LCD driver
* drivers/ina220: re-worked and added SAUL adaptation
+ drivers/ina3221: add driver for INA3221 current, power & voltage monitor
+ drivers/itg320x: add driver for InvenSense ITG-320X 3-axis gyroscope
* driver/mpu9x50: make mpu9150 more generic
* drivers/mrf24j40: allow for basic self-test on init
* drivers/mrf24j40: fix start up code
+ drivers/qmc588rl: add support for QMC5883L
+ drivers/shtc1: add driver for SHTC1 temperature and humidity sensor
+ drivers/ws281x: add driver for WS281x RGB LED driver for ATmega platform
* drivers/xbee: fix reference to device from netif in send function
* periph/adc: change return type of `adc_sample()` to `int32_t`
Build System / Tooling
----------------------
+ dist/tools:
+ add Kconfiglib
+ add helper script for Black Magic Probe
+ add support for miniterm.py
* fix 'make reset' with bootloader in avrdude
+ dist/testbed-support: add nrf52{840,832}mdk in IOTLAB_NODE targets
+ doc/advanced-build-system-tricks: handle multiple boards
+ doc/doxygen: add build system doc page for BOARD, CPU, FEATURE
+ doc/doxygen: add build-system-basics.md with general build system tips
+ Kconfig:
+ add build system integration and test application
+ makefiles: include configuration symbols to build system
+ makefiles: add symbols for used packages
+ expose gnrc/ipv6/whitelist configurations
+ expose gnrc/lorawan configurations
+ expose usb configurations
+ expose net/sock/util configurations
+ expose gnrc/netif configurations
+ expose gnrc/ipv6 configurations
+ make:
+ introduce 'BOARDSDIR' to support external boards using common code in
'RIOTBOARD'
* fail by default when errors are expected
+ add architectures features
+ add features blacklisting
+ add blob utility header
* enable SECONDEXPANSION for module/application builds
+ add CXXEXT and CXXEXCLUDE variable for customizing C++ builds
- makefiles:
- remove use of export with LINKFLAGS variable
+ add possibility to provide board specific application dependencies in
a separate Makefile
* generate proper dependency files when using ccache
* fix LOG_LEVEL handling
- disable `-Watomic-alignment` on LLVM
+ introduce 'PROG_DEV' to specify programmer device
* assert CPU is defined by BOARD/Makefile.features
+ add TERMFLASHDEPS to TERMDEPS so it also applies to `test`
* tools: allow make reset via avrdude
* tools: set DEBUG_ADAPTER_ID as JLINK_SERIAL
Testing
-------
- dist/tests/philip: Removed old code and tests
* dist/tools/testrunner:
* make interactive test sync retries/delay configurable
* reset before opening terminal
- reset after opening terminal only if interactive test sync is not used
* add variable for customizing a delay before reset
* make interactive test sync retries/delay configurable
* dist/tools/compile_and_test_for_board.py: allow use of wildcards for
applications selection
+ murdock: enable esp32-wroom-32 for CI testing
* tests:
+ use test_interactive_test_util
+ add automated tests guidelines in README
- remove APPLICATION definition in tests/*
+ tests/gnrc_sock_neterr: proof of concept test for gnrc_sock + gnrc_neterr
+ tests/bench_xtimer: initial import
* tests/lwip: enable IPv4
* tests/malloc: improve application and add an automatic test script
* tests/memarray: add python script for automatic testing
* tests/nordic_softdevice: cleanup test script and fix test
+ tests/periph_timer_short_relative_set: initial import
* tests/periph_cpuid: add automatic test script
* tests/sys_arduino: fix test synchronization issues
* tests/unittests: fix `tests-pkt` for non-32bit platforms
API Changes
===========
- drivers/ina220: changes to comply with RIOT's design goals & SAUL adaption
- usbus: unified terminology within USBUS to match the terminology from the
specs. `hdr`, `hdrs`, `headers`, etc is replaced everywhere with `descr`
`descriptors` and `descriptors`.
- Makefile.include: fail by default when errors are expected
```diff
/* change return type of `adc_sample()` to `int32_t` to allow support for ADCs
with resolution of more than 16 bits on 8 bit and 16 bit platforms*/
- int adc_sample(adc_t line, adc_res_t res)
= int32_t adc_sample(adc_t line, adc_res_t res)
/* pass memo to resp_handler directly */
- typedef void (*gcoap_resp_handler_t)(unsigned req_state, coap_pkt_t* pdu,
- sock_udp_ep_t *remote);
+ typedef void (*gcoap_resp_handler_t)(const gcoap_request_memo_t *memo,
+ coap_pkt_t* pdu,
+ const sock_udp_ep_t *remote);
/* allow to pass user context to requests */
size_t gcoap_req_send(const uint8_t *buf, size_t len,
const sock_udp_ep_t *remote,
- gcoap_resp_handler_t resp_handler);
+ gcoap_resp_handler_t resp_handler, void *context);
/* assume `netif->ops->init()` to be set to at least a default */
- _init_from_device(netif);
- #ifdef DEVELHELP
- _test_options(netif);
+ netif->ops->init(netif);
+ #if DEVELHELP
+ assert(options_tested);
# endif
- netif->cur_hl = GNRC_NETIF_DEFAULT_HL;
- #ifdef MODULE_GNRC_IPV6_NIB
- gnrc_ipv6_nib_init_iface(netif);
- #endif
- if (netif->ops->init) {
- netif->ops->init(netif);
- }
/* split the semantic of gnrc_netif_is_6ln() into two check functions */
/* is the interface performing 6Lo-ND as specified in RFC 6775. */
- bool gnrc_netif_is_6ln(const gnrc_netif_t *netif);
+ bool gnrc_netif_is_6lo(const gnrc_netif_t *netif);
+ static inline bool gnrc_netif_is_6ln(const gnrc_netif_t *netif
/* add function to start a shell and exit once EOF is reached. */
+ void shell_run_once(const shell_command_t *commands, char *line_buf, int len);
/* return reassembly buffer entry created or updated */
- void gnrc_sixlowpan_frag_rb_add(gnrc_netif_hdr_t *netif_hdr,
- gnrc_pktsnip_t *frag, size_t offset,
- unsigned page);
+ gnrc_sixlowpan_frag_rb_t *gnrc_sixlowpan_frag_rb_add(gnrc_netif_hdr_t *netif_hdr,
+ gnrc_pktsnip_t *frag,
+ size_t offset, unsigned page);
/* move gnrc_sixlowpan_frag_rb_dispatch_when_complete() out of
gnrc_sixlowpan_frag_rb_add(). The caller of the latter function is now
responsible to call it. */
+ int gnrc_sixlowpan_frag_rb_dispatch_when_complete(gnrc_sixlowpan_frag_rb_t *rbuf,
+ gnrc_netif_hdr_t *netif);
/* don't assume interface specifier is an int for splitting, add functions to
split int and string */
- * @return interface number or -1 if none specified
+ * @return string containing the interface specifier.
+ * @return NULL if no interface was specified.
+ */
- static inline int ipv6_addr_split_iface(char *addr_str)
+ static inline char *ipv6_addr_split_iface(char *addr_str)
- int ipv6_addr_split(char *addr_str, char seperator, int _default);
+ int ipv6_addr_split_int(char *addr_str, char seperator, int _default);
+ char *ipv6_addr_split_str(char *addr_str, char separator);
/* change address getter and setter functions to avoid byte order confusion */
- uint16_t at86rf2xx_get_addr_short(const at86rf2xx_t *dev);
+ void at86rf2xx_get_addr_short(const at86rf2xx_t *dev, network_uint16_t *addr);
- void at86rf2xx_set_addr_short(at86rf2xx_t *dev, uint16_t addr);
+ void at86rf2xx_set_addr_short(at86rf2xx_t *dev, const network_uint16_t *addr);
- uint64_t at86rf2xx_get_addr_long(const at86rf2xx_t *dev);
+ void at86rf2xx_get_addr_long(const at86rf2xx_t *dev, eui64_t *addr);
- void at86rf2xx_set_addr_long(at86rf2xx_t *dev, uint64_t addr);
+ void at86rf2xx_set_addr_long(at86rf2xx_t *dev, const eui64_t *addr);
```
Deprecations
============
Warnings
--------
- GNU make <4 will be removed after release 2020.01
- net/gcoap: gcoap_finish() will be removed after release 2020.04
- makefiles/vars.inc.mk: PORT_BSL & AVRDUDE_PORT will be removed after release
2020.04
- gnrc_nettest: will be removed after release 2020.07
Removals
--------
- sys/ubjson: remove module
- dist/tests/philip: removed unneeded and unused tests and code
- net/gcoap: remove gcoap_req_send2()
- cpu/efm32: remove EFM32_UART_MODES
- boards: remove RTT_NUMOF/RTC_NUMOF
Known issues (130)
==================
Networking related issues (45)
------------------------------
#13088: Riot-os freezes with lwip + enc28j60 + stm32L4
#12964: esp32: network devices pull in GNRC dependencies statically
#12943: driver/mrf24j40: blocks shell input with auto_init_gnrc_netif
#12884: examples/cord_ep: Dead lock when (re-)registering in callback function
#12858: KW2XRF: Broken network communication without netstats-l2
#12857: examples/gnrc_networking_mac broken on ATmega
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
packet buffer
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
#12210: stale border router does not get replaced
#11988: ethos: fails to respond to first message.
#11860: send data with UDP at 10HZ, the program die
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
#11852: scan-build errors found during 2019.07 testing
#11795: gnrc_tftp: string functions on non-null terminated input
#11405: nrfmin: communication not possible after multicast ping with no interval
#11212: POSIX sockets + lwIP: bad file descriptor
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8271: app/netdev: application stops working after receiving frames with
assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
configured prefix
#8130: gcoap: can't build with network stacks other than GNRC
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
chars
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
address
Timer related issues (17)
-------------------------
#13072: periph/timer: `timer_set()` underflow safety check (tracking issue)
#12909: Bug: Unexpected behavior with xtimer_periodic_wakeup() for large periods
on Nucleo-f401re
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
#11149: xtimer: hang on xtimer_spin_until (corner case)
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8251: telosb: xtimer config wrong when running on a tmote sky
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
_xtimer_now() and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck on native
Drivers related issues (12)
---------------------------
#12445: driver/hts221: Temperature and Humidity readings incorrect
#12371: fail to send data to can bus
#12370: Undocumented uint8_t assumptions in nrf52840 peripherals
#12045: floats and doubles being used all over the place.
#12037: cpu/sam0_common: i2c baudrate calculation fails if CLOCK_CORECLOCK > 51
MHz
#11388: SD card initialization: timeouts effectively blocking
#11104: STM32: SPI clock not returning to idle state and generating additional
clock cycles
#11026: Recent changes effectively killed modular board designs
#9419: cpu/msp430: GPIO driver doesn't work properly
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
supported
Native related issues (3)
-------------------------
#11472: Warnings from objcopy and size (binutils 2.32)
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe
Other platforms related issues (16)
-----------------------------------
#13267: Failing tests on MSP430 (z1)
#13104: boards/hifive1: flashing issue
#13086: Failing tests on FE310 (Hifive1b)
#12854: `pm_reboot()` not working on AVR when compiled with `LTO=1`
#12763: [TRACKING] Fixes for automatic tests of ESP32 boards.
#12651: Failing tests on AVR (tested with atmega256rfr2-xpro)
#12168: pkg/libb2: blake2s doesn't work on AVR
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
(not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
boards
#7753: pic32-wifire: race-condition when linking in concurrent build
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with
LTO
#4954: chronos: compiling with -O0 breaks
Build system related issues (9)
-------------------------------
#12771: dist/tools/cppcheck/cppchck.sh: errors when running with Cppcheck 1.89
#10850: Tracking: remove harmful use of `export` in make and immediate
evaluation
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
image
#8913: make: use of immediate value of variables before they have their final
value
#8122: doxygen: riot.css modified by 'make doc'
#6120: Windows AVR Mega development makefile Error
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
Other issues (28)
-----------------
#13265: tests: compilation of some test applications fail with NDEBUG
#13133: tests/pkg_tensorflow-lite: tests randomly failing on nrf52dk and
esp32-wroom-32
#13120: tests: broken with stdio_rtt if auto_init is disabled
#13044: _NVIC_SystemReset stuck in infinite loop when calling pm_reboot through
shell after flashing with J-Link
#13015: Quickest start does not build with vagrant
#12732: tests: some tests don't work with `newlib` lock functions.
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
#12105: [TRACKING] sys/shell refactoring.
#11885: arm7: printf() with float/double not working
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
static_asserts in the same scope
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5769: Possible problem in scheduler
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables
Fixed Issues since the last release (2019.10) (29)
=================================================
#13121: tinydtls package has undeclared dependencies
#13109: fe310: xtimer hardfault
#13083: cpu/atmegaxxxx: i2c driver not fully implemented?
#13069: BrokenPipeError when flashing bluepill with BMP
#13055: PKG_SOURCE_LOCAL override is broken
#13030: pkg: always rebuilt when patches are applied
#12920: kconfiglib: only pull when needed
#12905: Potential buffer overflow in dtls-sock
#12859: lwip: multiple sock_udp_send() return ENOMEM. (possible memory leak?)
#12853: sys\net\gnrc\link_layer\gomach: cast error with avg-gcc
#12834: make: piping STDOUT updates `riotbuild.h.in` and leads to full rebuild
#12807: make: rebuild doesn't apply to header files
#12700: Cannot delete files in SD card. And I can't read more bytes than I ever
wrote in tests/pkg_fatfs.
#12652: samr21-xpro: Can't use `make debug` anymore
#12578: ATmega256RFR2 / ATmega128RFA1: `periph/cpu_id` provided without HW
support
#12384: CDC-ACM (serial console) loses characters
#12286: Some tests are failing on STM32F7
#12243: ESP32 programming using BUILD_IN_DOCKER still expects esp-idf toolchain
on host
#12003: bootloaders|tests/riotboot: broken with BUILD_IN_DOCKER and wrong
flashfile
#11941: cpu/esp32: instabilities in multiheap memory management
#11908: cpu/lpc2387: periph_rtc completely broken
#11423: cpu/kinetis: features provided not properly defined according to series
#8388: xtimer_periodic_wakeup is not interrupt safe
#8107: crypto/ccm: bugs in the implementation of CCM mode
#8052: mips: several issues
#5338: xtimer: xtimer_now() not ISR safe
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?
#3366: periph/i2c: handle NACK
Acknowledgements
================
We would like to thank all companies that provided us with hardware for porting
and testing RIOT-OS. Further thanks go to companies and institutions that
directly sponsored development time. And finally, big thanks to all of you
contributing in so many different ways to make RIOT worthwhile!
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
General Public License (LGPL) version 2.1 as published by the Free Software
Foundation.
* Some external sources and packages are published under a separate license.
All code files contain licensing information.
RIOT-2019.10 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
The 2019.10 release includes:
- initial support for SUIT firmware updates
- USB CDC-ACM serial communication
- complete rewrite of TI CC110x radio driver
- initial support for IPv6 fragmentation
- DTLS support in the sock networking stack
- complete blockwise messaging for gcoap and nanocoap
- as always, bug fixes and documentation updates
About 460 pull requests, composed of 950 commits, have been merged since the
last release, and about 60 issues have been solved. 57 people contributed with
code in 105 days. Approximately 2000 files have been touched with 129000
insertions and 25000 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
System libraries
----------------
+ sys/arduino: Added millis()
* sys/arduino: make ADC feature optional
+ sys/fmt: Added submodule fmt_table for printing tables
+ sys/log: add module for colorized logging
+ sys/riotboot: add initial image digest verification
* riotboot: define if building the bootloader
+ sys/shell: add heap command
+ sys/shell: cancel current line on CTRL-C.
* shell/sc_gnrc_ipv6_nib: list and edit authoritative border router (ABR) list
+ sys/suit: initial support for SUIT firmware updates
* sys: add schedstatistics module to remove dependency on xtimer
* can: use memarray for pkt and router allocation
+ sys: single interrupt handler thread for interrupts in modules with blocking
functions (but likely to be removed -- see Deprecations section below)
Networking
----------
+ sys: Add (CoAP) Link Format module
+ sys: add credman (D)TLS credential management module
+ sys: new sock submodule for DTLS
+ gnrc_ipv6_ext_frag: Initial import of IPv6 fragmentation and reassembly
+ gnrc_netif: allow for wait of minimum time between sends
* gnrc_netif: add netif setter (part of refactoring to a pointer-based
approach)
* gnrc_sixlowpan_frag_vrb: add gnrc_sixlowpan_frag_vrb_from_route()
+ gnrc_sixlowpan_frag_rb: move reassembly buffer functions to their own module
+ gcoap: add Blockwise support
* nanocoap: complete Blockwise support
+ nanocoap: add coap_opt_get_next() to iterate over options
+ nanocoap: add coap_opt_get_opaque() to retrieve option bytes
* gnrc_tcp: several small improvements
Packages
--------
* ccn-lite: version bump
* pkg/libcose: bump version and update crypto support
* nimble: adapt to nrf51 family
+ nimble: add IP-over-BLE support via netif/GNRC
* nimble: bump version to 1.2.0
* nimble/netif: set max conn explicitly
* semtech-loramac: add uplink_counter get/set functions
+ Cifra: add AES crypto library
* cayenne-lpp: bump version to 0.1.1
+ wolfSSL pkg addition with examples
Boards
------
+ board: add support for SAMR34-XPRO
+ boards/arduino-mkrwan1300: add initial support (without LoRa)
* boards: Split off 128KiB version of bl*pill
+ boards/doc: Add a guide to find physical board pins
+ boards: Initial support for board HiFive1B
- boards/mips-malta: remove board.
+ boards/nrf52: introduce shared dependencies in common/nrf52 and update
boards
* boards/nrf52832-mdk: enable I2C and use default configuration
* board/nucleo-l031k6: Add i2c to periph_conf
* board/nucleo-l432kc: Implementing I2C for board
* boards: move CPU/CPU_MODEL definition to Makefile.features
+ boards/p-l496g-cell02: add support
- boards: Remove support for the Jiminy-Mega256RFR2
* boards/sam0: refactor ADC_0 into plain ADC
* boards/slwstk6000b-*: split one board for each module
* boards/slwstk6000b: move CPU definition to Makefile.features
+ boards/stm32f723e-disco: add initial support
* boards/stm32: introduce common timer configurations and use them where
possible
+ boards/stm32l0538-disco: add initial support
* pic32-wifire: add support for flashing with pic32prog
CPU
---
+ cpu/esp32: lwIP netdev
* cpu/esp*: various improvements
* cpu/kinetis: enable HWRNG for k64f
- cpu/mips32r2_generic: remove cpu.
* cpu: Moved stdio_init() prior to periph_init() for ARM targets
* cpu/nrf5x: declare radio_nrfble feat for all nrfs
+ cpu/nrf5x: implement wdt peripheral driver
+ cpu/sam0_common: add hwrng driver
* cpu/sam0_common/gpio: don't hard-code number of ports
* cpu/sam0: update doc.txt with new MCU families
* cpu/saml21: Make Low-Power SRAM available to programs
+ cpu/stm32_common: add watchdog for stm32
* stm32-common/spi: allow custom pin modes on spi to minimize power
consumption
* cpu/stm32f(2|4|7): add riotboot requirements
* cpu/stm32l1: optimize power consumption
* stm32l1/vendor: update vendor files to v2.3.0
* sam0: allow flashing with JLinkExe
+ sam0: Implement watchdog driver
* cpu/samr30: update vendor files using ASF 3.35.1
+ cpu/efm32: provide periph_uart_mode
Device Drivers
--------------
+ drivers: add mtd wrapper for periph_flashpage
+ drivers/cc110x: Complete rewrite from scratch, and detailed documentation
* drivers/include/periph/eeprom: Changed uint8_t* to void* in API
* drivers/periph/i2c: Updated i2c_release() to return void
+ drivers/ph_oem: support for Atlas Scientific pH OEM sensor
+ drivers: support for NXP PCA9685 I2C 16-channel, 12-bit PWM controller
+ usbus: Add CDC-ACM (Serial console) function
* periph/timer: Fix return codes of timer API
+ can: add ncv7356 SW transceiver driver
+ drivers/lis2dh12: add I2C mode
+ drivers/periph: add doc on power management aspects
* drivers/mrf24j40: add pseudomodules for MRF24J40MA/B/C/D/E
Build System / Tooling
----------------------
* dist/tools/pyterm: drop loglevel from output
* make: docker: delegate bind mounts to the containers
* Makefile.base: implement relative path linking without 'realpath'
* Makefile.base: use thin static archives.
* Makefile.include: add flash-only as dependency of term
* Makefile.include: do not build HEXFILE by default anymore
* Makefile.include: require make version 4.
* makefiles: add support for sysfs gpio debug adapter
* Makefiles: add support to generate both `.hex` and `.bin` file and add
FLASHFILE variable
* makefiles/docker.inc.mk: various improvements
* makefiles/murdock.inc.mk: change policy to run tests by default
* make: introduce $(CLEAN)
+ murdock: introduce 'TEST_ON_CI_BLACKLIST'
* toolchain/cflags: enable dwarf compression (save 50% HDD)
* edbg: verify before flash
+ ci: add codespell check script for tracking typos
+ Makefile.include: add cleanterm target and use it for tests
* arduino/sketches: build sketches as a module
+ github: use stale-bot to mark and close PRs without activity
Testing
-------
+ tests: add distinct test app for nrfmin driver
+ tests: add Nordic SoftDevice test app
* tests/gnrc_ndp: enhance coverage
* tests/lua_loader: run the test in CI
* tests/mcuboot: handle building in docker
* tests/pkg_u8g2: run the test in CI
* tests: provide test case for malformed IEEE 802.15.4 packets
* tests/pthread_rwlock: run the test in CI
* tests: re-enable utf-8 tests on native
+ tests/riotboot: add automatic test
+ tests/sys_crypto: add RFC3610 and NIST SP 800-38C tests
* tests/test_tools: add a test for the testing tools environment
* tools/compile_and_test_for_board: allow setting the flash targets
* tests/gnrc_tcp: provide regression tests for fixed issues
API Changes
========================
```
/* no error handling possible, so no need to return a value */
- int i2c_release(i2c_t dev)
+ void i2c_release(i2c_t dev)
/* return 0 on success, rather than 1; so like timer_init() */
int timer_set(tim_t dev, int channel, unsigned int timeout)
int timer_set_absolute(tim_t dev, int channel, unsigned int value)
int timer_clear(tim_t dev, int channel)
/* implementations already cast the argument to uint8_t* internally, so not
a significant semantic change */
- size_t eeprom_read(uint32_t pos, uint8_t *data, size_t len)
+ size_t eeprom_read(uint32_t pos, void *data, size_t len)
- size_t eeprom_write(uint32_t pos, const uint8_t *data, size_t len)
+ size_t eeprom_write(uint32_t pos, const void *data, size_t len)
/* now returns CIPHER_ERR_INVALID_KEY_SIZE on invalid keySize */
int aes_init(cipher_context_t *context, const uint8_t *key, uint8_t keySize)
/* add setter for netif of interface header */
+ void gnrc_netif_hdr_set_netif(gnrc_netif_hdr_t *hdr, const gnrc_netif_t *netif)
```
Deprecations
========================
Warnings
--------
net/emb6
net/nhdp
pkg/oonf_api
As the release was finalized, rough consensus was reached on a system event
thread handler (#12474) that likely will remove the interrupt handler thread
(#10555) just introduced with this release.
Removals
--------
net/coap: remove deprecated COAP_CT_... defines
Known issues
============
Networking related issues
-------------------------
#12565: gnrc_icmpv6_echo: flood-pinging another node leads to leaks in own
packet buffer
#12264: ethos: Unable to handle fragmented IPv6 packets from Linux kernel
#12210: stale border router does not get replaced
#11988: ethos: fails to respond to first message.
#11860: send data with UDP at 10HZ, the program die
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
#11852: scan-build errors found during 2019.07 testing
#11405: nrfmin: communication not possible after multicast ping with no interval
#11212: POSIX sockets + lwIP: bad file descriptor
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8271: app/netdev: application stops working after receiving frames with
assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
configured prefix
#8130: gcoap: can't build with network stacks other than GNRC
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#7304: General 802.15.4/CC2538 RF driver dislikes fast ACKs
#6018: nRF52: gnrc_6lowpan_ble: memory leak with nordic_softdevice_ble
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
chars
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
address
Timer related issues
--------------------
#11523: xtimer_periodic_wakeup crashing at high frequencies on frdm-kw41z
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8388: xtimer_periodic_wakeup is not interrupt safe
#8251: telosb: xtimer config wrong when running on a tmote sky
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
_xtimer_now() and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck
#5338: xtimer: xtimer_now() not ISR safe
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?
Drivers related issues
----------------------
#12445: driver/hts221: Temperature and Humidity readings incorrect
#12371: fail to send data to can bus
#12370: Undocumented uint8_t assumptions in nrf52840 peripherals
#12045: floats and doubles being used all over the place.
#12037: cpu/sam0_common: i2c baudrate calculation fails if CLOCK_CORECLOCK > 51
MHz
#11388: SD card initialization: timeouts effectively blocking
#11104: STM32: SPI clock not returning to idle state and generating additional
clock cycles
#11026: Recent changes effectively killed modular board designs
#9419: cpu/msp430: GPIO driver doesn't work properly
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
supported
#3366: periph/i2c: handle NACK
Native related issues
---------------------
#11472: Warnings from objcopy and size (binutils 2.32)
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe
Other platforms related issues
------------------------------
#12286: Some tests are failing on STM32F7
#12243: ESP32 programming using BUILD_IN_DOCKER still expects esp-idf toolchain
on host
#12168: pkg/libb2: blake2s doesn't work on AVR
#12057: ESP32 + DHT + SAUL reading two endpoints causes freeze.
#11941: cpu/esp32: instabilities in multiheap memory management
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
(not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
boards
#8052: mips: several issues
#7753: pic32-wifire: race-condition when linking in concurrent build
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with
LTO
#4954: chronos: compiling with -O0 breaks
Build system related issues
---------------------------
#12003: bootloaders|tests/riotboot: broken with BUILD_IN_DOCKER and wrong
flashfile
#10850: Tracking: remove harmful use of `export` in make and immediate
evaluation
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
image
#8913: make: use of immediate value of variables before they have their final
value
#8122: doxygen: riot.css modified by 'make doc'
#6120: Windows AVR Mega development makefile Error
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
Other issues
------------
-none- tests/pkg_fatfs: vol_idx print overflow on large negative value
#12384: CDC-ACM (serial console) loses characters
#12205: core: atomic: Unable to compile starting with gcc 9.1.0
#12108: `make term` output is inconsistent between boards, `ethos` and `native`
#12105: [TRACKING] sys/shell refactoring.
#11908: cpu/lpc2387: periph_rtc completely broken
#11885: arm7: printf() with float/double not working
#11423: cpu/kinetis: features provided not properly defined according to series
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
static_asserts in the same scope
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8107: crypto/ccm: bugs in the implementation of CCM mode
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5769: Possible problem in scheduler
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables
Fixed Issues from the last release (2019.07)
============================================
#12373: Leds not working on some stm32 based boards
#12311: riotboot: irq not enabled after jumping to slot
#12258: Rebootloop when using esp_now on the ESP32
#12247: esp8266: make flash fails
#12244: Flashing on OSX uses /bin/sh instead of bash, resulting in problems with
echo -n
#12219: genconfigheader doesn't like defines with spaces
#12213: sys/base64: cannot handle zero length buffers
#12138: boards/common/nucleo32/include/arduino_pinmap.h not correct/complete
#12125: i2c_scan not working on ESP32
#12115: nrfmin: driver not included in buildtest (anymore)
#12110: fe310: handle_trap only handles interrupts
#12090: boards/lobaro-lorabox: blindly sets TERMFLAGS
#12089: boards/msba2: blindly sets TERMFLAGS
#12086: gnrc_tcp: option parsing doesn't terminate on all inputs, potential DOS
#12081: gnrc_tcp leaks memory when gnrc_netapi_send fails
#12058: travis: flake8 not running
#12002: usb: fails to respond ro ping when used with 802.15.4
#11980: Sending a packet to the Multicast Address with multiple interfaces
causes Segmentation fault
#11978: Loramac Example Kernel Panic
#11948: examples: ccn-lite-relay example broken
#11913: drivers/sx127x: Enforces reset pin to be defined
#11910: TCP lwIP Error Connecting Sock Problem on ESP32
#11842: buildtest with BUILD_IN_DOCKER hides host toolchain errors
#11820: stm32l152re: hard-fault unless power-cycled after flash, or depending on
optimization
#11763: spi_transfer_reg behavior doesn't follow doc
#11691: murdock and tests using `utf-8` characters
#11631: examples / tests: return value of `gnrc_netif_hdr_build()` not checked
in udp.c
#11603: NATIVEINCLUDES Does not include USEMODULE_INCLUDES from
log_printfnoformat
#11519: shell/ping6: Incorrect handling of unexpected pongs
#11499: rn2xx3_cmd_append - Not terminating strings
#11447: frdm-k64f: hwrng support broken, applications using RNG crash
#11390: gnrc networking crashes on nRF51dk
#10878: nrfmin can get stuck and never reach RX (while TX works)
#10842: Preemption of malloc on AVR
#10459: make: `make clean all` does not make sense and should be removed
#10351: sam0_common/periph/rtt: Interrupt flags are not correctly cleared
#10345: frdm-k22f cannot flash after certain firmware flashed
#10175: No error returned from aes_init when a key with a bad size is used
#10047: Make warns to expect errors when disabling optional modules
#9589: application/Makefile: environment settings after inclusion of
Makefile.include
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAM
R21
#8975: dist/tools/openocd: cannot debug some stlink based boards
#8664: pkg: doxygen documentation is not fully processed
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
#8028: diskio: failed assertion in send_cmd() on lpc2387
#7918: Usage of GCC extension for binary constants
#7875: "Minor" compiling issues found by clang
#7206: native: race-condition in IPC
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#5848: arduino: Race condition in sys/arduino/Makefile.include
#5776: make: Predefining CFLAGS are parsed weirdly
#5218: some use of asm keyword might be missing volatile
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4490: pkg: tlsf: initialize memory pool early
#4470: Hard fault triggered depending on power supply?
#2175: ubjson: valgrind registers "Invalid write of size 4" in unittests
#1891: newlib-nano: Printf formatting does not work properly for some numeric
types
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
Acknowledgements
================
We would like to thank all companies that provided us with hardware for porting
and testing RIOT-OS. Further thanks go to companies and institutions that
directly sponsored development time. And finally, big thanks to all of you
contributing in so many different ways to make RIOT worthwhile!
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
General Public License (LGPL) version 2.1 as published by the Free Software
Foundation.
* Some external sources and packages are published under a separate license.
All code files contain licensing information.
RIOT-2019.07 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
The 2019.07 release includes a number of new features including many new
boards and cpu, riotboot added to many new and old boards, USB is now available,
BLE improvements, Ethernet on stm32 platforms, as well as many bug fixes and
documentation updates. Testing has also improved with both On-Target Testing
increasing and now Hardware Assisted Automated Tests being run.
About 300 pull requests with about 659 commits have been merged since the last
release and about 50 issues have been solved. 26 people contributed with code
in 106 days. Approximately 1377 files have been touched with 181993 insertions
and 19668 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
System libraries
----------------
+ Add OCB encryption mode
+ sys/shell: add loramac shell command
* Fletcher16: extend with multi-part functions
+ USBUS: Initial work towards an USB stack
+ usbus: Initial simple auto init structure
* sys: make uart_stdio RX optional
+ sys/event: add event_wait_until()
+ sys/bluetil: add bluetil_addr_from_str()
+ usbus: Add CDC-ECM (Ethernet Control Model) function
* usbus: simplify adding entry to list
* sys/stdio_ethos: replace USE_ETHOS_FOR_STDIO by stdio_ethos pseudomodule
Networking
----------
* gnrc_ipv6_nib: add address from netif to address validation timer
+ netdev_ieee802154: add txpower and page
+ net/lorawan/hdr: add lorawan header helpers
+ ble/nimble: add support for 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
```c
- void isrpipe_init(isrpipe_t *isrpipe, char *buf, size_t bufsize);
+ void isrpipe_init(isrpipe_t *isrpipe, uint8_t *buf, size_t bufsize);
- int isrpipe_write_one(isrpipe_t *isrpipe, char c);
+ int isrpipe_write_one(isrpipe_t *isrpipe, uint8_t c);
- int isrpipe_read(isrpipe_t *isrpipe, char *buf, size_t count);
+ int isrpipe_read(isrpipe_t *isrpipe, uint8_t *buf, size_t count);
- int isrpipe_read_timeout(isrpipe_t *isrpipe, char *buf, size_t count,\
int32_t timeout);
+ int isrpipe_read_timeout(isrpipe_t *isrpipe, uint8_t *buf, size_t count,\
uint32_t timeout);
- int isrpipe_read_all_timeout(isrpipe_t *isrpipe, char *buf, size_t count,\
uint32_t timeout);
+ int isrpipe_read_all_timeout(isrpipe_t *isrpipe, uint8_t *buf, size_t count,\
uint32_t timeout);
typedef struct tsrb {
...
- char *buf; /**< Buffer to operate on. */
+ uint8_t *buf; /**< Buffer to operate on. */
...
} tsrb_t
- int tsrb_get(tsrb_t *rb, char *dst, size_t n);
+ int tsrb_get(tsrb_t *rb, uint8_t *dst, size_t n);
- int tsrb_add_one(tsrb_t *rb, char c);
+ int tsrb_add_one(tsrb_t *rb, uint8_t c);
- int tsrb_add(tsrb_t *rb, const char *src, size_t n);
+ int tsrb_add(tsrb_t *rb, const uint8_t *src, size_t n);
typedef struct {
...
- uint16_t (*calc_rank)(gnrc_rpl_parent_t *parent, uint16_t base_rank);
- gnrc_rpl_parent_t *(*which_parent)(gnrc_rpl_parent_t *, gnrc_rpl_parent_t *);
+ uint16_t (*calc_rank)(gnrc_rpl_dodag_t *dodag, uint16_t base_rank);
- void (*reset)(gnrc_rpl_dodag_t *); /**< resets the OF */
+ void (*reset)(gnrc_rpl_dodag_t *dodag);
...
- void (*init)(void); /**< OF specific init function */
+ void (*init)(gnrc_rpl_dodag_t *dodag);
} gnrc_rpl_of_t;
- thread_state_t
+ thread_status_t
- void sched_set_status(thread_t *process, thread_state_t status);
+ void sched_set_status(thread_t *process, thread_status_t status);
struct _thread {
...
- thread_state_t status;
+ thread_status_t status;
...
}
- bool mrf24j40_cca(mrf24j40_t *dev);
+ bool mrf24j40_cca(mrf24j40_t *dev, int8_t *rssi);
```
Deprecations
========================
Warnings
--------
`gnrc_tftp` module
`ubjson` module
Removals
--------
`gcoap_req_send()` replaced with `gcoap_req_send2()->gcoap_req_send2()`
Known issues
============
Networking related issues
-------------------------
#11860: send data with UDP at 10HZ, the program die
#11859: examples: dtls-echo fails silently when DTLS_ECC flag enabled
#11519: shell/ping6: Incorrect handling of unexpected pongs
#11405: nrfmin: communication not possible after multicast ping with no interval
#11390: gnrc networking crashs on nRF51dk
#11212: POSIX sockets + lwIP: bad file descriptor
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
#8271: app/netdev: application stops working after receiving frames with
assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
configured prefix
#8130: gcoap: can't build with network stacks other than GNRC
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#6018: nRF52 gnrc 6lowpan ble memory leak
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
chars
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
address
Timer related issues
--------------------
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall
time.
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8388: xtimer_periodic_wakeup is not interrupt safe
#8251: telosb: xtimer config wrong when running on a tmote sky
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
_xtimer_now() and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck
#5338: xtimer: xtimer_now() not ISR safe
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?
Drivers related issues
----------------------
#11763: spi_transfer_reg behavior doesn't follow doc
#11104: STM32: SPI clock not returning to idle state and generating additional
clock cycles
#10620: rn2xx3: rn2xx3_write_cmd_no_wait can't be correct
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAM
R21
#9419: cpu/msp430: GPIO driver doesn't work properly
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#8028: diskio: failed assertion in send_cmd() on lpc2387
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
supported
#3366: periph/i2c: handle NACK
Native related issues
---------------------
#11603: NATIVEINCLUDES Does not include USEMODULE_INCLUDES from
log_printfnoformat
#7206: native: race-condition in IPC
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe
Other platforms related issues
------------------------------
#10842: Preemption of malloc on AVR
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
(not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
boards
#8052: mips: several issues
#7753: pic32-wifire: race-condition when linking in concurrent build
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with
LTO
#4954: chronos: compiling with -O0 breaks
#1891: newlib-nano: Printf formatting does not work properly for some numeric
types
Build system related issues
---------------------------
#10857: frdm-kw41z: requires newer flasher than openocd `0.10` from `ubuntu-
bionic`.
#10850: Tracking: remove harmful use of `export` in make and immediate
evaluation
#10459: make: `make clean all` does not make sense and should be removed
#10047: Make warns to expect errors when disabling optional modules
#9913: Build dependencies - processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
image
#9589: application/Makefile: environment settings after inclusion of
Makefile.include
#8913: make: use of immediate value of variables before they have their final
value
#8122: doxygen: riot.css modified by 'make doc'
#7918: Usage of GCC extension for binary constants
#6120: Windows AVR Mega development makefile Error
#5848: arduino: Race condition in sys/arduino/Makefile.include
#5776: make: Predefining CFLAGS are parsed weirdly
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
* buildtest with BUILD_IN_DOCKER hides host toolchain errors
Other issues
------------
#11861: msba2: floating point tests fail
#11842: buildtest with BUILD_IN_DOCKER hides host toolchain errors
#11820: stm32l152re: hard-fault unless power-cycled after flash, or depending on
optimization
#11691: murdock and tests using `utf-8` characters
#11631: examples / tests: return value of `gnrc_netif_hdr_build()` not checked
in udp.c
#11447: frdm-k64f: hwrng support broken, applications using RNG crash
#11423: cpu/kinetis: features provided not properly defined according to series
#11243: sys/riotboot: documentation issues
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10175: No error returned from aes_init when a key with a bad size is used
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode
10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
static_asserts in the same scope
#8975: dist/tools/openocd: cannot debug some stlink based boards
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8107: crypto/ccm: bugs in the implementation of CCM mode
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6533: tests/lwip target board for python test is hardcoded to native
#5218: some use of asm keyword might be missing volatile
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
Fixed Issues from the last release (2019.04)
============================================
#11626: tests/pkg_semtech-loramac: hardfault on lobaro-lorabox
#11605: ruuvitag: Shell test fails without auto_init
#11530: pkg/semtech_loramac: deadlock with UNCONFIRMED messages
#11525: API change, uart input not working anymore on previously working setups
#11508: core: thread_state_t makes RIOT not compilable on MAC OSX
#11498: Cannot compile OpenThread example without the CLI-APP.
#11494: emcute_mqttsn example setup contains invalid steps
#11344: RTT: `make test` not working
#11274: riotboot_flashwrite: Failure on the nrf52
#11091: gnrc_minimal on nRF52DK do not work anymore
#11059: board/sltb001a: cannot flash with JLink when 'hello-world' is running
and no error
#11043: boards/z1: tests/rng resets board
#10878: nrfmin can get stuck and never reach RX (while TX works)
#10800: iotlab-m3: thread tests failing
#10559: I2C API write_regs does not fit implementation
#10468: Tinycryt upstream rewrote history in master branch
#8653: msba2: default example fails on assert
Acknowledgements
================
We would like to thank all companies that provided us with hardware for porting
and testing RIOT-OS. Further thanks go to companies and institutions that
directly sponsored development time. And finally, big thanks to all of you
contributing in so many different ways to make RIOT worthwhile!
A special thanks to @fjmolinas, @leandrolanzieri, @cladmi, @jia200x, @miri64
for helping run the release tests
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
General Public License (LGPL) version 2.1 as published by the Free Software
Foundation.
* Some external sources and packages are published under a separate license.
All code files contain licensing information.
RIOT-2019.04 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
The 2019.04 release includes a number of new features including porting of
riotboot to a number of new platforms, 802.15.4 support on the nRF52, and the
ability for firmware to flash images into a separate boot slot. Support for
several new boards and new sensors was added. Additionally, this release
contains a number of bug fixes and test improvements.
About 320 pull requests with about 569 commits have been merged since the last
release and about 40 issues have been solved. 44 people contributed with code
in 88 days. Approximately 825 files have been touched with 32716 insertions
and 5149 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
System libraries
----------------
+ riotboot_flashwrite: added module to reliably write a firmware image to
flash
+ crypto: added support for chacha20poly1305 AEAD symmetric key cypher
algorithm
* threads: added usage of thread_state_t enum to define thread states,
instead of an integer
* random: added usage of hwrng as seed if available
+ app_metadata: added module to print application metadata
+ unaligned.h: added functions to safely read values from potentially
unaligned pointers
+ isrpipe: split isrpipe_read_timeout to isolate xtimer dependency
Networking
----------
* gnrc_ipv6: adapted ping6 to original-ping-like implementation
* gnrc_ipv6: allowed sending empty IPv6 packets
+ gnrc_netif_ieee802154: optional support to drop duplicate broadcast
packets
- gnrc_pktbuf: removed deprecated gnrc_pktbuf_get_iovec() function
+ l2util: initial import of a general IPv6 over X helper module
+ NimBLE: added Bluetooth device scanner
+ NimBLE: added helper functions for address printing
* NimBLE: updated package to the latest version
Packages
--------
+ c25519: add support (embedded x25519 crypto library)
Boards
------
+ Arduino nano: added support
+ nrf52832-mdk: added support
+ PhyTec reel board: added support
+ MicroPython pyboard v1.1: added support
+ Hamilton: added support
+ saml10-xpro and saml11-xpro: added riotboot support
+ nrf52: added riotboot support
+ ESP32 and stm32: added command to allow runtime configuration of uart mode
+ ESP32 and ESP8266: add support for ESP-NOW network device driver
* ESP8266: freed up RAM by moving most .rodata sections from DRAM to IROM
+ Arduino: added test to verify pin mappings
+ b-l072z-lrwan1: enabled RTT feature
+ STM32l0: added support for dual bank flashing with OpenOCD
* Autonomo: changed flasher to BOSSA
* stm32: rework common clock configuration for stm32f4
* stm32f3discovery: Fix no external low speed crystal
CPU
---
+ stm32l0: added riotboot support
+ stm32f0: added support for periph_pm
+ stm32f3, f7, l1 and l4: added stop and standby low power modes. All
STM32 families now provide periph_pm
+ samd21: enabled idle modes
+ sam0: added support for RWWEE on-chip memory
+ Kinetis: added support for EA series and S9KEAZ129 MCU
+ TI CC2650: added I2C periph implementation
Device Drivers
--------------
+ i2c: added slave scan shell command
+ USB: added device driver initialization function and API definition
+ USB: added peripheral driver for sam0_common
+ nrf5x temperature sensor: added driver
+ nrf52: added initial 802.15.4 support
+ add7746 capacitance sensor: added driver
+ ds323x extremely accurate RTC: added driver
+ ltc4150 coulomb counter: added driver
+ sht2x temperature and humidity sensor: added driver
+ sds011 dust sensor: added driver
+ added high level driver for H bridge ICs to drive DC motors
* lpsxxx pressure and temperature sensor: add support for lps22hb and
lps25hb
Build System / Tooling
----------------------
+ nrf52: added support for openocd
* improved avrdude integration
+ added support for socat as a RIOT terminal
+ added script for backporting PRs during release testing
* pyterm: specified use of python3 by default
* flasher: support for flashing images at offset addresses `pyocd`, `jlink`
* Texas Instruments UniFlash: put configuration in common
* makefiles: introduce FLASHFILE
* Use FLASHFILE for `riotboot` and `mcuboot`
* Update flashers `avrdude`, `edbg`, `jlink`, lpc2k_pgm`, `openocd`
* makefiles/docker.inc.mk: Use directories in RIOT when possible
* make: unexport `TERM*` variables
* msba2: compile 'lpc2k_pgm' when flashing
Testing
-------
+ documentation: added initial guide to running tests
+ Makefile.include: add a 'test/available' target
* testrunner: Fix bug matching local echo
* tests/rng: replace printf_float with fmt/print_float
* tests/bloom_bytes: replace %f with fmt/print_float
* tests/posix_semaphore: sem_timedwait should not return before abstime
Known issues
============
Networking related issues
-------------------------
#11295: RFC 3306 Unicast-Prefix-based-IPv6 Multicast with BorderRouter
#11212: POSIX TCP API: bad file descriptor
#11091: gnrc_minimal on nRF52DK do not work anymore
#11033: 6lo: RIOT does not receive packets from Linux when short_addr is set
#10969: net: netdev_driver_t::send() doc unclear
#10927: gnrc_tftp: Missing minimum length check
#10878: nrfmin can get stuck and never reach RX (while TX works)
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
#8271: app/netdev: application stops working after receiving frames with
assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
configured prefix
#8130: gcoap: can't build with network stacks other than GNRC
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#6018: nRF52 gnrc 6lowpan ble memory leak
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
address
Timer related issues
--------------------
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall time
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8388: xtimer_periodic_wakeup is not interrupt safe
#8251: telosb: xtimer config wrong when running on a tmote sky
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
_xtimer_now() and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck
#5338: xtimer: xtimer_now() not ISR safe
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?
Drivers related issues
----------------------
#11405: nrfmin: communication not possible after multicast ping with no interval
#10559: I2C API write_regs does not fit implementation
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAMR21
#9419: cpu/msp430: GPIO driver doesn't work properly
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#8028: diskio: failed assertion in send_cmd() on lpc2387
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
supported
#3366: periph/i2c: handle NACK
Native related issues
---------------------
#7206: native: race-condition in IPC
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe
Other platform related issues
-----------------------------
#11447: frdm-k64f: hwrng support broken, applications using RNG crash
#11354: ESP32: `write(STDIO_FILENO, ...)` not working
#11104: STM32: SPI clock not returning to idle state and generating additional
clock cycles
#11059: board/sltb001a: cannot flash with JLink when 'hello-world' is running
and no error
#11043: boards/z1: tests/rng resets board
#10979: Missing SPI pre-scalars for STM32F7
#10842: Preemption of malloc on AVR
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
(not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
boards
#8052: mips: several issues
#7753: pic32-wifire: race-condition when linking in concurrent build
#7667: sam0 flashpage_write issue
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with LTO
#4954: chronos: compiling with -O0 breaks
#4612: pkg: TLSF does not build for 16 bit platforms
#1891: newlib-nano: Printf formatting does not work properly for some numeric
types
Build system related issues
---------------------------
#11343: RTT: `make term` without `make debug`
#11344: RTT: `make test` not working
#11179: stm32l4: can't flash bin files
#10857: frdm-kw41z: error with `SLOT_LEN` handling and flasher not working
#10850: Tracking: remove harmfull use of `export` in make and immediate
evaluation
#10459: make: `make clean all` does not make sense and should be removed
#10047: Make warns to expect errors when disabling optional modules
#9913: Dependencies processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
image
#9589: application/Makefile: environment settings after inclusion of
Makefile.include
#8913: make: use of immediate value of variables before they have their final
value
#8122: doxygen: riot.css modified by 'make doc'
#7918: Usage of GCC extension for binary constants
#6120: Windows AVR Mega development makefile Error
#5848: arduino: Race condition in sys/arduino/Makefile.include
#5776: make: Predefining CFLAGS are parsed weirdly
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
Other issues
------------
#11274: riotboot_flashwrite: Failure on the nrf52
#11243: sys/riotboot: documentation issues
#10800: iotlab-m3: thread tests failing
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10468: Tinycryt upstream rewrote history in master branch
#10175: No error returned from aes_init when a key with a bad size is used
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
static_asserts in the same scope
#8975: dist/tools/openocd: cannot debug some stlink based boards
#8653: msba2: default example fails on assert
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8107: crypto/ccm: bugs in the implementation of CCM mode
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6874: SAMD21: possible CMSIS bug ?
#6533: tests/lwip target board for python test is hardcoded to native
#5218: some use of asm keyword might be missing volatile
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
Fixed Issues from the last release (2019.01)
============================================
#11163: netdev: iolist not checked for empty elements on send
#11162: nrfmin is broken when DEVELHELP is activated
#11151: drivers/l3g42000d: scale has wrong data type
#11147: 6LoWPAN over BLE: Device not pingable
#11113: RPL global DODAG repair
#11101: `nib route add` for routing to Raspberry Pi gateway not working
#11052: tests/bloom_bytes does not print float
#11051: NimBLE port should be always building all NimBLE files
#11029: Default example does not work on stm32f4discovery
#11013: hts221: wrong bit for "one-shot enable" register
#10956: tests/gnrc_tcp_*: #2 not working on 6Lo-based boards
#10972: examples/nanocoap_server hangs after > 256 bytes packet
#10463: stm32f4discovery isn't visible as ttyUSB after flashing with tests/leds
#10427: doxygen: *_params.h files are excluded
#10341: driver_my9221 prevents further flashing of nucleo-l073rz
#10294: tests/leds doesn't work on Nucleo-F401RE
#10206: Lua_basic example doesn't flash in b-l072z-lrwan1
#9387: shell `ping6` doesn't display duplicate packages
#8663: /sys/random/seed: why not use hwrng if available?
#8523: tools: need backport script
#6123: gnrc: crash with (excessive) traffic in native
You can get the complete detail in the git history and in the release milestone
[Release 2019.04](https://github.com/RIOT-OS/RIOT/milestone/26?closed=1).
Acknowledgements
================
We would like to thank all companies (vendors) that provided us with (their)
hardware for porting and testing RIOT-OS. Further thanks go to companies and
institutions that directly sponsored development time. And finally, big thanks
to all of you contributing in so many different ways to make RIOT worthwhile!
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
General Public License (LGPL) version 2.1 as published by the Free Software
Foundation.
* Some external sources and packages are published under a separate license.
All code files contain licensing information.
RIOT-2019.01 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
The 2019.01 release includes a number of new features including DMA support on
all STM32 boards, WiFi with IP connectivity on ESP32 and ESP8266, and riotboot,
a simple bootloader supporting multiple firmware slots, compatible with most Arm
Cortex-M boards supported by RIOT. Support for several new boards and new sensors
was added, as well as for the new CPU architecture Armv8-M (Cortex-M23). Last
but not least, this release contains a number of bug fixes and enhances test
automation.
About 387 pull requests with about 912 commits have been merged since the last
release and about 36 issues have been solved. 54 people contributed with code
in 110 days. Approximately 1554 files have been touched with 176241 insertions
and 50593 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
System libraries
----------------
+ riotboot: initial implementation of a bootloader with multi-slots
and firmware header management
+ base64: add size estimation functions
Networking
----------
* gnrc_ipv6: send IPv6 error messages on error
* gnrc_ipv6: refactor and improve IPv6 message reception
* gnrc_netif: refactor for easier device type integration
+ pkg_semtech-loramac: added timer calibation
* nanocoap: fix confirmable retry countdown
Packages
--------
* gecko_sdk: bumped to version 2.5
Boards
------
+ added support for Kinetic USB-KW41Z
+ added support for Makerdiary nrf52840-mdk
+ added support for Microchip saml10-xpro and saml11-xpro
+ added support for Nordic nrf51-dk
+ added support for Phytec phynode-kw41z
+ added support for SODAQ SARA AFF
* b-l475e-iot01a: provide RTC and RTT features
* stm32: factorize common I2C configurations
* nucleo-l433rc/nucleo-f072rb/nucleo-f767zi: provide I2C configuration
* nucleo-l433rc: use LPUART (USB port) as stdio
* nucleo-l496zg: use LPUART (USB port) as stdio
* frdm-k64f: updated LPTMR configuration
* sensebox_samd21: add MTD configuration
* nrf51: factorize files and configurations of nrf51 based boards
* nrf52: better factorize files and configurations of nrf52 based boards
CPU
---
+ cortexm-common: add FPU support for cortex-m4f and cortex-m7
+ cortexm-common: added support for cortex-m23
+ added support for saml10 and saml11
+ efm32: added support for 32-bit timers
+ esp32: added esp_wifi netdev driver
+ esp8266: added esp_wifi netdev driver
+ stm32-common: add DMA support for all STM32
+ stm32-common: add LPUART driver
+ atmega-common: Add PUF SRAM feature
* nrf5x: added management of multiple exti pins in gpio driver
* nrf5x: rework UART driver to allow using multiple UARTs on nrf52840
Device Drivers
--------------
+ added support for CCS811 gas sensor
+ added support for SHT3x temperature and humidity sensor
+ added support for TPS6274x step-down dcdc converter
* periph_eeprom: added clear and erase functions
Build System / Tooling
----------------------
+ added support for PyOCD programmer
+ added compile_and_test_for_board script + checks
* updated EDBG version
* testbed-support: added frdm-kw41z, pba-d-01-kw2x, samr30-xpro to
supported archis
* pyterm: correctly catch exception when serial port is busy
* print_toolchain_version: added 'make' version
Testing
-------
+ periph_dma: added automatic test script
+ periph_rtc: added automatic test script
Known issues
============
Networking related issues
-------------------------
#10969: net: netdev_driver_t::send() doc unclear
#10956: tests/gnrc_tcp_*: #2 not working on 6Lo-based boards
#10927: gnrc_tftp: Missing minimum length check
#10878: nrfmin can get stuck and never reach RX (while TX works)
#10861: cpu/esp8266: Tracking open problems of esp_wifi netdev driver
#10809: openthread: does not build on current Arch
#10410: Missing drop implementations in netdev_driver_t::recv
#10389: gnrc_sock_udp: Possible Race condition on copy in application buffer
#10380: netdev_ieee802154: Mismatch between radio ll address and in memory
address
#10370: gomach: Resetting netif with cli doesn't return
#10338: xbee: setting PAN ID sometimes fails
#9709: examples: failed assertion in dtls-echo example
#9656: gnrc/netif: various problems after resetting interface a second time
#8859: cc1101 work instability
#8779: CC2538 RF overlapping PIN usage
#8752: mrf24j40: does not link for examples/default
#8631: at86rf2xx/kw2xrf: scalar NETOPT options checked as arrays
#8271: app/netdev: application stops working after receiving frames with
assertion or completely without error
#8242: at86rf2xx: Dead lock when sending while receiving
#8199: gcoap example request on tap I/F fails with NIB issue
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
configured prefix
#8130: gcoap: can't build with network stacks other than GNRC
#8086: gnrc_rpl_p2p: port to nib and fix compile errors
#7737: pkg: libcoap is partially broken and outdated
#7474: 6lo gnrc fragmentation expects driver to block on TX
#6018: nRF52 gnrc 6lowpan ble memory leak
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#5849: pkg: ccn-lite: rework convenience functions
#5748: gnrc: nodes crashing with too small packet buffer
#5486: at86rf2xx: lost interrupts
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5051: Forwarding a packet back to its link layer source should not be allowed
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
address
Timer related issues
--------------------
#10545: periph_timer: systematic proportional error in timer_set
#10523: saml21 system time vs rtc
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
#10073: xtimer_usleep wrong delay time
#9187: sys/newlib: gettimeofday() returns time since boot, not current wall time
#9052: misc issues with tests/trickle
#9049: xtimer mis-scaling with long sleep times
#8746: stm32_common/periph/rtc: current implementation broken/poor accuracy
#8388: xtimer_periodic_wakeup is not interrupt safe
#8251: telosb: xtimer config wrong when running on a tmote sky
#7347: xtimer_usleep stuck for small values
#7114: xtimer: add's items to the wrong list if the timer overflows between
_xtimer_now() and irq_disable()
#6442: cpu/native: timer interrupt issue
#6052: tests: xtimer_drift gets stuck
#5338: xtimer: xtimer_now() not ISR safe
#5103: xtimer: weird behavior of tests/xtimer_drift, bug?
Drivers related issues
----------------------
#10559: I2C API write_regs does not fit implementation
#9546: dht: driver for dht11 sensor sometimes stuck in dht_read() on Atmel SAMR21
#9419: cpu/msp430: GPIO driver doesn't work properly
#8213: at86rf2xx: Basic mode and NETOPT_AUTOACK
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#8028: diskio: failed assertion in send_cmd() on lpc2387
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
supported
#3366: periph/i2c: handle NACK
Native related issues
---------------------
#10972: examples/nanocoap_server hangs after > 256 bytes packet
#8444: release test 2018.01 RC1: tests/thread_priority_inversion, hangup
#7206: native: race-condition in IPC
#5796: native: tlsf: early malloc will lead to a crash
#495: native not float safe
Other platforms related issues
------------------------------
#10842: Preemption of malloc on AVR
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10122: Indeterministic hard fault in _mutex_lock(), with nRF52 SoftDevice
#10076: cpu/cortexm_common: irq_enable returns the current state of interrupts
(not previous)
#8408: pkg/fatfs: linker error when build tests/pkg_fatfs_vfs for msb430 based
boards
#8052: mips: several issues
#7753: pic32-wifire: race-condition when linking in concurrent build
#7667: sam0 flashpage_write issue
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software CS
#5774: cpu: cortexm_common: context switching code breaks when compiling with LTO
#4954: chronos: compiling with -O0 breaks
#4612: pkg: TLSF does not build for 16 bit platforms
#1891: newlib-nano: Printf formatting does not work properly for some numeric
types
Build system related issues
---------------------------
#10857: frdm-kw41z: error with `SLOT_LEN` handling and flasher not working
#10850: Tracking: remove harmfull use of `export` in make and immediate
evaluation
#10459: make: `make clean all` does not make sense and should be removed
#10047: Make warns to expect errors when disabling optional modules
#9913: Dependencies processing order issues
#9742: `buildtest` uses wrong build directory
#9645: Different build behavior between `murdock` and `riot/riotbuild:latest`
image
#9589: application/Makefile: environment settings after inclusion of
Makefile.include
#8913: make: use of immediate value of variables before they have their final
value
#8122: doxygen: riot.css modified by 'make doc'
#7918: Usage of GCC extension for binary constants
#6120: Windows AVR Mega development makefile Error
#5848: arduino: Race condition in sys/arduino/Makefile.include
#5776: make: Predefining CFLAGS are parsed weirdly
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
Other issues
------------
#10800: iotlab-m3: thread tests failing
#10751: Possible memset optimized out in crypto code
#10731: nanocoap: incomplete response to /.well-known/core request
#10639: sys/stdio_uart: dropped data when received at once
#10510: xtimer_set_msg: crash when using same message for 2 timers
#10468: Tinycryt upstream rewrote history in master branch
#10463: stm32f4discovery isn't visible as ttyUSB after flashing with tests/leds
#10341: driver_my9221 prevents further flashing of nucleo-l073rz
#10206: Lua_basic example doesn't flash in b-l072z-lrwan1
#10175: No error returned from aes_init when a key with a bad size is used
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10
#9882: sys/tsrb is not thread safe on AVR
#9518: periph/i2c: tracking bugs and untested acks
#9371: assert: c99 static_assert macro doesn't function for multiple
static_asserts in the same scope
#8975: dist/tools/openocd: cannot debug some stlink based boards
#8653: msba2: default example fails on assert
#8589: Why using -F in avrdude?
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8107: crypto/ccm: bugs in the implementation of CCM mode
#7220: sys/fmt: Missing tests for fmt_float, fmt_lpad
#6874: SAMD21: possible CMSIS bug ?
#6533: tests/lwip target board for python test is hardcoded to native
#5218: some use of asm keyword might be missing volatile
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#4866: periph: GPIO drivers are not thread safe
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4488: Making the newlib thread-safe
#3256: make: Setting constants on compile time doesn't really set them
everywhere
#2346: Tracker: Reduce scope on unintended COMMON variables
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
#9: Manual calibration of the CC1100
Fixed Issues from the last release (2018.10)
============================================
#10947: tests/gnrc_tcp_*: not working on 6Lo-based boards
#10945: net/gnrc_tcp: timeout of connection establishment
#10881: core: `msg_receive()` on native sometimes returns without `msg` being
re-set
#10875: gnrc_ipv6: crash on heavy network load on native
#10827: boards/nrf51dk: multiple external interrupts not working
#10768: Build is failing with latest RIOT on windows
#10761: iotlab-m3: poor ping6 performance and a possibly broken 6lo
fragmentation?
#10753: nanocoap: options buffer overflow
#10739: sock_dns: Security issues (including remote code execution)
#10723: gnrc_ipv6_nib: 6Lo-ND EUI-64 checks not portable
#10701: gnrc: packet space in gnrc packet buffer is not released on very heavy
load
#10672: gnrc: runs full on very heavy load
#10634: pyterm: weird behaviour with long lines.
#10628: Can't read data from BH1750 senseor using STM32F3Discovery
#10614: DEBUG stops shell if used in i2c init
#10611: Board z1: BTN0_IN is not defined
#10598: edbg: not compiling on OS X
#10594: cpu/esp32: esp_eth is not working correctly for packet size > 255 octets
#10531: ESP-now: ESP_NOW_MAX_SIZE < IPv6 minimum MTU?
#10517: Arduino UART cannot set 16 bit baudrate
#10508: tracking issue: bionic compile errors
#10432: ESP32 toolchain linked to in doc.txt is broken
#10419: gnrc_icmpv6_error: Able to bounce up to 64 ICMPv6 error messages between
2 instances
#10395: stm32f103xx: I2C has no internal pullups and af config
#10353: cpu/nrf5x_common: hwrng hangs
#10352: lorawan-example not working
#10287: docker: docker cannot access /etc/localtime on OS X
#10091: Murdock fails on tests/xtimer_usleep on native
#10079: Codacy: several problems (false positives)
#10068: sam0_common flash write not working at least for SAML21J18B
#9889: ethos: desync between ethos::last_framesize and tsrb content possible
#9619: ATmega platform issues
#9248: __libc_init_array() crash (newlib)
#9191: Logic errors in nanocoap_get()
#7877: SPI connection can't read 16 bit size register.
#6123: gnrc: crash with (excessive) traffic in native
You can get the complete detail in the git history and in the release milestone
[Release 2019.01](https://github.com/RIOT-OS/RIOT/milestone/25?closed=1).
Acknowledgements
================
We would like to thank all companies (vendors) that provided us with (their)
hardware for porting and testing RIOT-OS. Further thanks go to companies and
institutions that directly sponsored development time. And finally, big thanks
to all of you contributing in so many different ways to make RIOT worthwhile!
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
General Public License (LGPL) version 2.1 as published by the Free Software
Foundation.
* Some external sources and packages are published under a separate license.
All code files contain licensing information.
RIOT-2018.10.1 - Release Notes
==============================
This is a bug fixing release for the RIOT 2018.10 release.
The following bugs were fixed:
#10757: sock_dns: fix out-of-bound errors
- sock_dns: remove out-of-place puts() call
- sock_dns: remove some magic numbers
- sock_dns: fix out-of-bound errors
#10759: 2018.10 compile fixes
- pkg/jerryscript: disable -Wconversion for llvm
- pkg/nimble: disable -Waddress-of-packed-member for llvm
- pkg/tinycrypt: update commit hash after upstream rewrote history
#10285: at86rf2xx: release framebuffer on recv with (len > 0) && (buf == NULL)
- at86rf2xx: correct framebuffer release
RIOT-2018.10 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
The 2018.10 release includes new features, like CoAP Resource Directory and
Block2, ESP32 support, rework of I2C interface, EEPROM registry,
Full and Minimal Thread Devices support in OpenThread and compliance of
LoRaWAN 1.0.2 (ABP counters stored in EEPROM). Several boards were introduced.
During the last release the board documentation was migrated from the wiki to
the [RIOT API documentation](https://doc.riot-os.org) to improve the
maintenance of these entries and provide a better user experience when
browsing the documentation. There were also some efforts in grouping some
modules to make them easier to access in the documentation.
There were also some efforts on refactoring, test improvements and bug fixes.
About 392 pull requests with about 914 commits have been merged since the last
release and about 20 issues have been solved. 57 people contributed with code
in 100 days. Approximately 2184 files have been touched with 211964 insertions
and 34806 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
Community
---------
+ Initial RIOT developer memo + directory structure
+ GitHub feature request template
+ 'testing' in Github PR template
* Rework and documented labeling system
* Rework MAINTAINING.md document
* Rework CONTRIBUTING.md document
Documentation
-------------
+ Add boards `slstk3401a`, `slstk3402a` and `sltb001a`
+ Migrate boards documentation to Doxygen
+ New groups under `sys` (serialization, math, memory management, hashes)
+ `arduino` docs for analog map
+ nanocoap
+ tinycbor pkg
* Drivers with `saul` support are now also part of the `drivers_saul` group
Core
----
+ Architecture dependent thread information
* Fix `byteorder` bebuftohs() / htobebufs() on big endian
* Make `pthread` compilable with g++
System libraries
----------------
+ Add EEPROM registration support
+ Add `arduino` time functions micros() and delayMicroseconds()
+ Add `fmt` hex byte
+ ecc: add golay(24,12) half rate and repetition code
+ tsrb: add drop function
* Change `base64` api (const + void*)
* Configure Arduino serial port at compile time
* Move `hamming256` module to generic `ecc`
* sys/auto_init: Fixed initialization of `sht1x`
* crypto/ccm: fix auth_data_len check
- Remove `cbor` module
Networking
----------
+ cord_ep: Full CoRE Resource Directory endpoint support
+ nanocoap: add server-side Block2 support
* emb6_sock_udp: copy receive remote correctly
* ethos: Add drop frame case to recv function
* examples/gcoap: fix post/put without port number
* gnrc/6lo: set more data flag on all but last fragment
* gnrc_ipv6_nib: always configure 802.15.4 long address with IPv6 included
* gnrc_ipv6_nib: fallback to SLAAC if ARO is ignored by upstream
* gnrc_ipv6_nib: make automatic NDP packet emission (NS/RS) configurable
* gnrc_netif: fix l2addr_len > 0, but no l2addr edge-case
* gnrc_netif: reapply event flags on device reset
* gnrc_netif_ieee802154: set FCF Frame Pending when more data is expected
* gnrc_sixlowpan_frag: add page context to reassembly buffer
* gnrc_sixlowpan: refactored for better interchangability of sub-components
* gnrc_sock_[udp|ip]: read return value for _recv after release
* nanocoap: allow empty uri/location path option
Packages
--------
+ libb2: add support (BLAKE2)
+ libhydrogen: add support
+ lora_serialization: LoRa Serialization format support
+ openthread: FTD and MTD support
+ semtech-loramac: add support for RU864 ISM band
* ccn-lite: update and adapt shell commands
* jerryscript: bump version
* littlefs: bump version to v1.6.20
* lwip: bump to version 2.1.0
* semtech-loramac: bump to version 4.4.1
* semtech-loramac: fix uninitialized datarate
* semtech-loramac: lorawan support is not considered experimental anymore
* semtech-loramac: use periph_eeprom to store lorawan configuration
* tiny-asn1: bump version
* tinycbor: Version bump to 0.5.2
Boards
------
+ i2c configuration for `nucleo-f070`, `nucleo-f091rc`,
`nucleo-f722ze`, `nucleo-l476rg`, `slstk3402a`.
+ second i2c configuration for `b-l475e-iot01a`
+ esp32-mh-et-live-minikit: add support
+ esp32-olimex-evb: add support
+ esp32-wemos-lolin-d32-pro: add support
+ esp32-wroom-32: add support
+ esp32-wrover-kit: add support
+ esp8266-esp-12x: add support
+ esp8266-olimex-mod: add support
+ esp8266-sparkfun-mod: add support
+ firefly: add support for Zolertia FireFly
+ lobaro_lorabox: add support
+ openmoteb-cc2538: add support
+ samr30-xpro: add support
+ sensebox: add support for `sensebox` and `sensebox_samd21`
+ sodaq_one: add support
+ ublox-c030-u201: add support
* frdm-k64f: update ADC and `saul` configuration
* nrf52xxxdk: make reset pin work
* stm32mindev: rename to `blackpill`
CPU
---
+ efm32: add support for enabling/disabling DC-DC converter
+ esp32: add initial support
+ esp8266: add initial support
+ i2c: introduce and adapt new I2C interface
+ kinetis: add ADC hardware averaging configuration
+ nrf52: add PWM support
+ samr30: add initial support
+ stm32l4: add support for periph_flashpage
* Add PUF SRAM feature in `nrf5x` and `stm32` families
* atmega_common: allow defining ROM and RAM length for link
* cortexm_common/ldscript: simplify generation of firmwares in section of
the ROM
* nrf5x_common: fix `gpio` port 1 functionality
* stm32-common: unified support for periph_i2c. I2C is now supported by
all stm32 families (F0/1/2/3/4/7, L0/1/4)
* stm32_common: fix source selection declared as module dependencies
Device Drivers
--------------
+ drivers/ds18: add limited support for Maxim Integrated 1-Wire temperature
sensor
+ drivers/mma7660: initial support
+ drivers/srf04: add range finder sensor
+ drivers/sx127x: add initial support for multi interrupt pins
+ drivers/tsl4531x: add support for visible light intensity sensor
+ drivers/vcnl40x10: add initial support
* drivers/*: unify driver initialization parameters scheme
* drivers/adxl345: fix driver
* drivers/at86rf2xx: add smart idle listening feature
* drivers/kw2xrf: Fix ack flag handling
* drivers/mtd_spi_nor: add 4-byte address flash support
* drivers/periph_i2c: rework API
* drivers/sx127x: return correct state when device is receiving
Build System / Tooling
----------------------
+ Makefile.include: Include VERSION file for release
+ dist/tools: add lazysponge tool
+ docker: Use system GIT_CACHE_DIR if available
+ docker: allow using sudo for docker
+ make: introduce periph_gpio_irq
+ make: process include and dep for external modules
+ makefile.iotlab.single.inc.mk: add new supported nodes
* cflags: use gnu99 only if nothing else is specified (mips, msp430, native)
* docker/Makefile.include: Fix BUILDRELPATH when RIOTPROJECT is CURDIR
* docker: export RIOT_CI_BUILD_to docker
* docker: handle building in git worktree
* edbg.inc.mk: allow flashing with an offset in rom without erasing all ROM
* make: add APPDIR to info-build target
* make: provide support for listing supported and blacklisting toolchains
* make: unify app folder search (examples/*, tests/*, ...)
* makefiles/buildtests.inc.mk: fix 'clean-intermediates' not cleaning
* makefiles/docker.inc.mk: handle building in git worktree
* openocd.sh: allow flashing binary files without configuration
* pkg.mk: do not use user identity when applying patches
* pyterm: handle ctrl+d shortcut nicely
Testing
-------
+ automatic compile tests for LLVM for selected boards
+ shellcheck: add CI check script
+ tests/bench_runtime_coreapis: add benchmark for selected core functions
+ tests/bench_sizeof_coretypes: initial include
+ tests/periph_uart: add automated testing script
+ tests/periph_eeprom: add automated testing script
+ tests/periph_flashpage: add automated testing script
* murdock: also compile with LLVM/clang
* murdock: add hook support
+ tests/arduino: add automatic test for arduino module
+ tests/libc_newlib: add test for newlib-nano inclusion
+ tests/periph_uart: add automated testing script
+ tests/gnrc_netif: add test for ULA source selection
+ tests/periph_gpio: add interrupt enable disable command
+ sock_util: Add unittest and fix detected issues
Known Issues
============
Networking related issues
-------------------------
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
address
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up rooting
#5051: Forwarding a packet back to its link layer source should not be allowed
#5230: gnrc_ipv6: multicast packes are not dispatched to the upper layers
#5748: gnrc: nodes crashing with too small packet buffer
#6123: gnrc: crash with (excessive) traffic in native
#7474: 6lo: gnrc fragmentation expects driver to block on TX
#7737: pkg: libcoap is partially broken and outdated
#8086: gnrc_rpl_p2p: not compiling
#8130: gcoap: can't build witth network stacks other than gnrc
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
configured prefix
#8271: app/netdev: application stops working after receiving frames with
assertion or completely without error
#9656: gnrc/netif: various problems after resetting interface a second time
#9889: ethos: desync between ethos::last_framesize and tsrb content possible
#10370: gomach: Resetting netif with cli doesn't return
Timer related issues
--------------------
#5103: xtimer: weird behavior of tests/xtimer_drift
#5338: xtimer: xtimer_now() is not ISR safe
#6052: tests: xtimer_drift_gets_stuck
#7114: xtimer: adds items to the wrong list if the timer overflows between
_xtimer_now() and irq_disable()
#7347: xtimer_usleep stuck for small values
#8251: telosb: timer config wrong when running o a tmote sky
#9052: misc issues with tests/trickle
#10073: xtimer_usleep wrong delay time
Native related issues
---------------------
#495: native not float safe
#5796 native: tlsf: early malloc will lead to a crash
#6442: cpu/native: timer interrupt issue
#7206: native: race-condition in IPC
Other platforms related issues
------------------------------
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4612: pkg: TLSF does not build for 16 bit platforms
#4872: at86rf2xx: Simultaneous use of different transceiver types is not
supported
#4954: chronos: compiling with -O0 breaks
#4866: periph: GPIO drivers are not thread tafe
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#5218: some use of asm keyword might be missing volatile
#5486: at86rf2xx: lost interrupts
#5774: cpu: cortexm_common: context switching code breaks when compiling with
LTO
#5848: arduino: Race condition in sys/arduino/Makefile.include
#6018: nRF52: gnrc 6lowpan ble memory leak
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
CS
#6874: SAMD21: possible CMSIS bug
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#7667: sam0 flashpage_write issues
#8028: diskio: failed assertion in send_cmd() on lpc2387
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8444: tests/thread_priority_inversion hangup
#9619: ATmega platform issues.
#9882: sys/tsrb is not thread safe on AVR
#10338: xbee: setting PAN ID sometimes fails
#10341: driver_my9221 prevents further flashing of nucleo-l073rz
#10345: frdm-k22f cannot flash after certain firmware flashed
#10351: samd21/periph/rtt: Interrupt flags are not correctly cleared
#10353: cpu/nrf5x_common: hwrng hangs
Other issues
------------
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
#4488: making the newlib thread-safe
#5561: C++11 extensions in header files
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX+SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#6120: Windows AVR Mega development makefile Error
#7220: sys/fmt: Missing tests for fmt_float,fmt_lpad
#7877: SPI connection can't read 16bit size register
#8107: crypto/ccm: bugs in the implementation of CCM mode
#9548: Many i2c bugs found with the i2c api rework but did not reach the release
#9709: examples: failed assertion in dtls-echo example
#9742: `buildtest` uses wrong build directory
#10121: RIOT cannot compile with the latest version of macOS (10.14) and Xcode 10
#10175: No error returned from aes_init when a key with a bad size is used
#10206: Lua_basic example doesn't flash in b-l072z-lrwan1
#10258: Incorrect default $PORT building for esp32-wroom-32 on macOS
#10287: docker: docker cannot access /etc/localtime on OS X
#10367: sam0.inc.mk: Did not find a device with serial ATML21xxxxxxxx
Fixed Issues from the last release (2018.07)
============================================
#9573: pkg/lwip: assert on samr21-xpro
#9584: drivers/cc2420: add netopt NETOPT_MAX_PACKET_SIZE
#6437: periph/spi: Leftovers from SPI rework in #4780
#6650: GPIO Port shift in cc2538 is unconsistent
#6836: Issuing a reboot on ATmega328p makes the board loop-reboot
#7846: stm32f1: I2C read functions return bogus values with unconnected devices
#9616: at86rf2xx: can not correctly set channel after `NETOPT_STATE_RESET`
You can get the complete detail in the git history and in the release milestone
[Release 2018.10](https://github.com/RIOT-OS/RIOT/milestone/24?closed=1).
Acknowledgements
================
We would like to thank all companies (vendors) that provided us with (their)
hardware for porting and testing RIOT-OS. Further thanks go to companies and
institutions that directly sponsored development time. And finally, big thanks
to all of you contributing in so many different ways to make RIOT worthwhile!
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
General Public License (LGPL) version 2.1 as published by the Free Software
Foundation.
* Some external sources and packages are published under a separate license.
All code files contain licensing information.
RIOT-2018.07 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
The 2018.07 release includes new features, like NimBLE (ble stack),
a MQTT-SN client, SHA-1 based PRNG, an UUID implementation. The RISC-V CPU
architecture support used by the hifive1 board.
Effort was done on refactoring, documentation, test improvements and bug fixes.
During the last release, maintainers contributed by running the automated test
suites on their boards. This gave valuable feedback on the board support state,
test reliability and where to focus effort to make testing easier and more
reliable.
About 380 pull requests with about 675 commits have been merged since the last
release and about 27 issues have been solved. 45 people contributed with code
in 93 days. Approximately 1678 files have been touched with 147122 insertions
and 16060 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
Community
---------
+ Maintainers guidelines have been written and added to the repository
Documentation
-------------
+ Fix undefined doxygen groups and add a dedicated static check
+ Extend `auto_init` documentation
Core
----
+ core: clist_foreach() now returns break-causing node
System libraries
----------------
+ puf_sram: SRAM PUF feature to seed PRNGs cortex-m platforms
+ random: SHA-1 based PRNG
+ matstat: Integer mathematical statistics library
+ UUID: [RFC4122](https://tools.ietf.org/html/rfc4122) Unique ID library
* analog_util: Refactor, add unit test
- cbor: Deprecation of this module, use cn-cbor or tinycbor package
instead
Networking
----------
+ asymcute: an asynchronous MQTT-SN client
+ gnrc_ipv6: full duplicate address detection support according to
[RFC4862](https://tools.ietf.org/html/rfc4862)
+ gnrc_ipv6: support to handle RDNSS option in neighbor discovery
+ netif.h: a network-stack agnostic API to network interfaces
+ lorawan: add example application of autonomous class A device
* sock_udp: allocate ephemeral port on sock creation when port is 0
* gnrc_netif: Enable RX and TX complete events after netdev initialization
* net/gcoap: Refine Observe re-registration
* net/nanocoap: Build message with coap_pkt_t
Packages
--------
+ NimBLE: Bluetooth Low Energy stack used in mynewt
+ TLSF: re-enable original API to have different pools
+ LUA: Add an example with the shell
+ semtech-loramac: add support for link_check MAC command
* libcose: Use RIOT random_bytes instead of randombytes
* tweetnacl: Use RIOT random_bytes instead of randombytes
* hacl: Use RIOT random_bytes instead of randombytes
Boards
------
+ Nucleo boards use their marketing names
+ HiFive1 (RISC-V)
+ slstk3402a
+ stm32f429i-disc1
+ stm32l476-disco
+ nucleo-l496zg
+ stm32mindev
+ frdm-k22f, frdm-k64f, frdm-kw41z: Add bus configuration for onboard FXOS8700CQ sensor
* mulle: Fix mixed up RX TX pins on UART0
CPU
---
+ E310 (RISC-V)
* kinetis: GPIO: Enable the correct IRQn on CM0+
* kinetis: Refactor PIT timer driver implementation
* kinetis: Refactor RTT driver
* kinetis: Refactor clock initialization code
* kinetis: Refactor LPTMR timer implementation
* kinetis: Clean up SPI module power handling
* kinetis: Conditionally enable MCG
Device Drivers
--------------
+ periph_eeprom API with support for STM32 L0/L1 and AVR
+ AT commands parser
+ Fix periph_flashpage for iotlab-a8-m3/iotlab-m3/fox boards
+ IO1 Xplained extension: add support for light sensor and SD card, fix
GPIOs initialization and SAUL support
+ tests/bench_timers: A comprehensive benchmark for periph_timer
Build System / Tooling
----------------------
+ Correctly set the RIOT_VERSION on release archives
+ iotlab-m3/iotlab-a8-m3: fix boards flashing
+ Fix use of non completely initialized BASELIBS variable
+ newlib.mk: extract gcc include search directories for newlib-nano support
+ llvm: many compatibilities issues have been resolved
* testbed-support: use new iot-lab command names
Testing
-------
+ Address some of the failing tests
+ New tests enabled by default in CI
+ Improve testing automation for release testing
Known Issues
============
Networking related issues
-------------------------
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
address
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up rooting
#5051: Forwarding a packet back to its link layer source should not be allowed
#5230: gnrc_ipv6: multicast packes are not dispatched to the upper layers
#5748: gnrc: nodes crashing with too small packet buffer
#6123: gnrc: crash with (excessive) traffic in native
#7474: 6lo: gnrc fragmentation expects driver to block on TX
#7737: pkg: libcoap is partially broken and outdated
#8086: gnrc_rpl_p2p: not compiling
#8130: gcoap: can't build witth network stacks other than gnrc
#8172: gnrc_netif, gnrc_uhcpc: Replacing prefix on border router results in no
configured prefix
#8271: app/netdev: application stops working after receiving frames with
assertion or completely without error
#9616: at86rf2xx: can not correctly set channel after `NETOPT_STATE_RESET`
#9656: gnrc/netif: various problems after resetting interface a second time
#9573: pkg/lwip: assert on samr21-xpro
#9584: drivers/cc2420: add netopt NETOPT_MAX_PACKET_SIZE
Timer related issues
--------------------
#5103: xtimer: weird behavior of tests/xtimer_drift
#5338: xtimer: xtimer_now() is not ISR safe
#6052: tests: xtimer_drift_gets_stuck
#7114: xtimer: adds items to the wrong list if the timer overflows between
_xtimer_now() and irq_disable()
#7347: xtimer_usleep stuck for small values
#8251: telosb: timer config wrong when running o a tmote sky
#9052: misc issues with tests/trickle
Native related issues
---------------------
#495: native not float safe
#5796 native: tlsf: early malloc will lead to a crash
#6442: cpu/native: timer interrupt issue
#7206: native: race-condition in IPC
Other platforms related issues
------------------------------
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4612: pkg: TLSF does not build for 16 bit platforms
#4872: at86rf2xx: Simultaneous use of different transceiver types is not
supported
#4954: chronos: compiling with -O0 breaks
#4866: periph: GPIO drivers are not thread tafe
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#5128: some use of asm keyword might be missing volatile
#5486: at86rf2xx: lost interrupts
#5774: cpu: cortexm_common: context switching code breaks when compiling with
LTO
#5848: arduino: Race condition in sys/arduino/Makefile.include
#6018: nRF52: gnrc 6lowpan ble memory leak
#6437: periph/spi: Leftovers from SPI rework in #4780
#6567: periph/spi: Switching between CPOL=0,1 problems on Kinetis with software
CS
#6650: GPIO Port shift in cc2538 is unconsistent
#6838: Issuing a reboot on ATmega328p makes the board loop-reboot
#6874: SAMD21: possible CMSIS bug
#7020: isr_rfcoreerrors while pinging between CC2538DKs
#7667: sam0 flashpage_write issues
#7846: stm32f1: I2C read functions return bogus values with unconnected devices
#8028: diskio: failed assertion in send_cmd() on lpc2387
#8045: stm32/periph/uart: extra byte transmitted on first transmission
#8436: Kinetis PhyNode: failed to flash binary > 256K
#8444: tests/thread_priority_inversion hangup
#9616: ATmega platform issues.
Other issues
------------
#1263: sys: the TLSF implementation contains (a) read-before-write error(s)
#4053: macros: RIOT_FILE_RELATIVE printing wrong file name for headers
#4488: making the newlib thread-safe
#5561: C++11 extensions in header files
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX+SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#6120: Windows AVR Mega development makefile Error
#7220: sys/fmt: Missing tests for fmt_float,fmt_lpad
#7877: SPI connection can't read 16bit size register
#8107: crypto/ccm: bugs in the implementation of CCM mode
#9548: Many i2c bugs found with the i2c api rework but did not reach the release
#9709: examples: failed assertion in dtls-echo example
Fixed Issues from the last release (2018.04)
============================================
#8112 crypto/ccm: fix input_len checking with length_encoding
#8532 kinetis: timer_set_absolute randomly misses its target
#8778 sys/random: random_uint32_range is only uniform if range is a power of 2
bug quality defect
#9065 flashpage_write broken on iotlab-m3
#9154 cpu/lpc2387: Fixed broken SPI driver
#9451 Makefile.include: fully define BASELIBS before using its value
#9579 stm32_common: fix ram length for MCUs with non-contiguous ram regions
#9675 tests: gnrc_netif: fix group join iteration macro
You can get the complete detail in the git history and in the release milestone
[Release 2018.07](https://github.com/RIOT-OS/RIOT/milestone/23?closed=1).
Acknowledgements
================
We would like to thank all companies (vendors) that provided us with (their)
hardware for porting and testing RIOT-OS. Further thanks go to companies and
institutions that directly sponsored development time. And finally, big thanks
to all of you contributing in so many different ways to make RIOT worthwhile!
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
General Public License (LGPL) version 2.1 as published by the Free Software
Foundation.
* Some external sources and packages are published under a separate license.
All code files contain licensing information.
RIOT-2018.04 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
The 2018.04 release includes major progress in support for current crypto
libraries. A lot of work has gone into updating drivers to RIOT's unified
configuration scheme. Support for ten new boards has been added. In our quest
to improve and automate testing, many test scripts have been fixed and
improved, and RIOT's CI now runs many tests on real hardware during its nightly
build testing. And as usual, many tiny fixes and improvements have been merged.
About 390 pull requests with about 1073 commits have been merged since the last
release and about 54 issues have been solved. 44 people contributed with code
in 98 days. Approximately 1491 files have been touched with 208426 insertions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
System libraries
----------------
- cbor: deprecated in favour of cn-cbor
+ hashes: add sha-3 implementation
Networking
----------
* netdev: replaced "struct iovec" with iolist_t
+ nanocoap: added server-side block1 support
+ skald: a BLE advertising stack
Packages
--------
+ cayenne-lpp: A Cayenne LPP library written in C
+ HACL*: a formally verified cryptographic library written in F*
+ qDSA: Small and Secure Digital Signatures with Curve-based
Diffie--Hellman Key Pairs
+ libcose: Constrained node COSE library
+ cn-cbor: A constrained node implementation of CBOR in C
+ ucglib
Boards
------
+ arduino-mkrfox1200
+ frdm-kw41z
+ jiminy-mega256rfr2
+ mega-xplained
+ nucleo-l433rc
+ nucleo-l452re
+ slstk3401a
+ slwstk6000b
+ stk3600
+ stk3700
CPU
---
+ atmega1284p
+ NXP Kinetis KW41Z
Device Drivers
--------------
+ bmx055: Bosch bmx055 9-axis IMU
+ ata8520e: Microchip ATA8520E Sigfox(tm) transceiver
Build System / Tooling
----------------------
+ ci: initial on-hardware test support
Known Issues
===========
Please refer to the issue tracker at https://github.com/RIOT-OS/RIOT/issues.
Acknowledgements
================
We would like to thank all companies (vendors) that provided us with (their)
hardware for porting and testing RIOT-OS. Further thanks go to companies and
institutions that directly sponsored development time. And finally, big thanks
to all of you contributing in so many different ways to make RIOT worthwhile!
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
General Public License (LGPL) version 2.1 as published by the Free Software
Foundation.
* Some external sources and packages are published under a separate license.
All code files contain licensing information.
RIOT-2018.01 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as
light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
The 2018.01 release includes major progress in RIOTs network communication
capabilities, i.e., rewrite of GNRC's neighbour discovery, confirmable messages
in (g)CoAP, LoRa, and GoMacH as well as updates on CCN-lite and LWIP.
Furthermore, RIOT contributes to _IKEA-Hacking_ by bringing support for
the smart home lighting system TRADFRI (note: this will void the warranty).
Needless to say that this release also adds and updates support for several
platforms, drivers, and of course lots of enhancements to the documentation
as well as numerous bug fixes. Last but not least, RIOT now has an official
code of conduct (https://github.com/RIOT-OS/RIOT/blob/master/CODE_OF_CONDUCT.md)
More than 442 pull requests with about 865 commits have been merged since the
last release and about 96 issues have been solved. 54 people contributed with code
in 96 days. Approximately 2370 files have been touched with 223970 insertions
and 181409 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
System libraries
----------------
+ event: event queue framework like libevent
Networking
----------
+ gcoap: confirmable messages
+ nanocoap: no external package anymore
* GNRC: major rewrite of neighbour discovery
* GNRC: new API for network interface handling
Packages
--------
+ gecko_sdk: library for EFM/EFR/EZR32 MCUs
* libcoap: git patching fixed
+ littlefs: filesystem for constraint devices
- nanocoap: now part of RIOT
* openthread: updated
+ semtech-loramac: LoRa MAC
+ umorse: morse encoder
Boards
------
+ acd52832
* common: restructured shared code for boards
+ b-l475e-iot01a
+ bluepill
+ ikea-tradfri
- pca10000
- pca10005
- qemu-i386
+ ruuvitag
+ sltb001a
+ teensy31
+ thingy52
- x86
CPU
---
+ efm32
* kinetis: unified all MCU variants
- x86
Device Drivers
--------------
+ socket_zep: emulated IEEE 802.15.4 device over a UDP for native
+ hts221
+ lc709203f
+ lis2dh12
+ rn2xx3
+ soft_spi
+ tja1042
Build System / Tooling
----------------------
+ flake8: python code checker
* make: set `-Wall -Wextra` as default for all compilers and platforms
- sniffer: moved to applications repository
+ tests: add automated test scripts for many apps
Fixed Issues from the last release (2017.10)
============================================
#2143: unittests: tests-core doesn't compile for all platforms
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle
#4822: kw2xrf: packet loss when packets get fragmented
#5005: ndp: router advertisement sent with global address
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while
#5656: Possible Weakness with locking in the GNRC network stack
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR
#5944: msp430: ipv6_hdr unittests fail
#6451: Wrong value in SRF08 driver
#6502: cpu/stm32l1: RTC broken
Known Issues
============
Networking related issues
-------------------------
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame
gets lost the reassembly state machine might get out of sync
#7035: lwIP: hangs due to sema change after a while
Timer related issues
--------------------
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly
jumps a few seconds on nrf52
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
#6052: tests: xtimer_drift gets stuck: application freezes after ~30-200 seconds
#7114: xtimer: add's items to the wrong list if the timer overflows between
_xtimer_now() and irq_disable()
native related issues
---------------------
#495: native not float safe: When FPU is used and an asynchronous context
switch occurs, either the stack gets corrupted or a floating point
exception occurs.
#6442: cpu/native: timer interrupt does not yield thread
other platform related issues
-----------------------------
#1891: newlib-nano: Printf formatting does not work properly for some numeric
types: PRI[uxdi]64, PRI[uxdi]8 and float are not parsed in newlib-nano
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic
operations in the drivers some pin configurations might get lost.
#5848: Arduino: Race condition in sys/arduino/Makefile.include
#6018: nRF52 gnrc 6lowpan ble memory leak
#6261: SAMD21: TC3 & TC4 issue when using TCC2
#6379: nrf52dk/nordic_soft_device: not working anymore
#6437: periph/spi: Leftovers from SPI rework
#6526: atmega based boards freeze when main thread is over
#6836: Issuing a reboot on ATmega328p makes the board loop-reboot
#7753: pic32-wifire: race-condition when linking in concurrent build
other issues
------------
#1263: TLSF implementation contains (a) read-before-write error(s).
#3366: periph/i2c: handle NACK
#4488: Making the newlib thread-safe: When calling puts/printf after
thread_create(), the CPU hangs for DMA enabled UART drivers.
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX + SAMR21-xpro: shell cannot handle inputs of length >64 chars
#5962: Makefile: UNDEF variable is not working as documented
Acknowledgements
================
We would like to thank all companies (vendors) that provided us with (their)
hardware for porting and testing RIOT-OS. Further thanks go to companies and
institutions that directly sponsored development time. And finally, big thanks
to all of you contributing in so many different ways to make RIOT worthwhile!
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser
General Public License (LGPL) version 2.1 as published by the Free Software
Foundation.
* Some external sources and packages are published under a separate license.
All code files contain licensing information.
RIOT-2017.10 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit microcontrollers, 16-bit
microcontrollers and light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
Most notable, this release is bringing RIOT a step closer to supporting
over-the-air-updates by containing initial support for MCUBoot.
Furthermore, it adds support for some new platforms (e.g. arduino-mkzero,
nucleos, and frdm-k22f), drivers (e.g. my9221, apa102, ds1307), and of course
a large number of bug fixes (e.g. `make buildtest` now working properly,
various fixes to `xtimer`).
About 390 pull requests with about 500 commits have been merged since the last
release and about 60 issues have been solved. 39 people contributed with code
in 113 days. 1825 files have been touched with 223454 insertions and 66146 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
Bootloader
-----------
+ MCUBoot: A secure bootloader for ARM MCUs is now supported. This initial support
includes only the nrf52dk board. For more information about it refer to the mcuboot github
page at https://github.com/runtimeco/mcuboot/blob/master/README-RIOT.rst
System libraries
----------------
+ bcd: binary coded decimal en/decoder
Networking
----------
+ gcoap: Add URI-query strings for requests + various fixes
Packages
--------
* lwip: Updated to v2.0.3
Boards
------
+ NXP frdm-k22f
+ STM nucleo144-f722
+ Arduino arduino-mkzero
+ ti CC2650 LaunchPad
- weio
CPU
---
+ NXP k22f
+ cc2538: ADC
+ stm32l4: RTC
+ samr21e18a
+ msp430: added flashpage driver
- lpc11u34
* stm32: unified stmclk implementations, reworked RTC
* sam0: heavy unification and refactoring, updated vendor headers
+ sam_common: started unification of sam0 and sam3
* cortexm: interrupt vector cleanup
Device Drivers
--------------
+ my9221 - LED controller + Seeed Studio Grove LED bar
+ apa102 - RGB LED
+ ds1307: RTC
+ SAUL support: lps331ap
* SAUL gpio: allow configuration of initial state and low-active signals
* sdcard_spi: added mtd interface
* PM: fixed selection of default implementations for `pm_off` and `pm_set_lowest`
Build System / Tooling
------------
+ make: added pkt-prepare target
* gcc: enabled `-fdiagnostics-color` per default for `arm` and `native` targets
* edbg: use as default flash tool for sam0-based boards
+ added LOSTANDFOUND.md for listing removed features
Fixed Issues from the last 3 releases (known issues missing in 2017.04 and 2017.07)
===================================================================================
#2006: cpu/nrf51822: timer callback may be fired too early
#4841: xtimer: timer already in the list:
#4590: pkg: building relic with clang fails.
#4694: drivers/lm75a: does not build
#4902: xtimer: xtimer_set: xtimer_set does not handle integer overflows well
#5128: make: buildtest breaks when exporting FEATURES_PROVIDED var
#5207: make: buildest fails with board dependent application Makefiles
#5361: cpu/cc26x0: timer broken
#5460: cpu/samd21: i2c timing with compiler optimization
#5489: cpu/lpc11u34: ADC broken
#5799: kw2x: 15.4 duplicate transmits
#5928: xtimer: usage in board_init() crashes: some boards use the xtimer in there board_init()
function. The xtimer is however first initialized in the auto_init module which is executed
after board_init()
#6022: pkg: build order issue
#6331: RTC alarm triggered with 1s delay
#6419: cpu/cc2538: timer broken
#6427: xtimer: infinite loop with xtimer_mutex_lock_timeout
#6501: boards/nucleo: Pin usage collision (SPI clk vs. LED0)
#6542: boards/nucle-f0xx: misconfigured timer configuration
#6904: cpu/saml21: cannot use several EXTI
Known Issues
============
Networking related issues
-------------------------
#3075: nhdp: unnecessary microsecond precision: NHDP works with timer values of microsecond precision
which is not required. Changing to lower precision would save some memory.
#4048: gnrc: potential racey memory leak
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5656: Possible Weakness with locking in the GNRC network stack: For some operations mutexes to the
network interfaces need to get unlocked in the current implementation to not get deadlocked.
Recursive mutexes as provided in #5731 might help to solve this problem.
#5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of size ~512 B might lead
to crashes. The issue describes this for several hundret nodes, but agressive flooding with
just two nodes was also shown to lead to this problem.
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame gets lost the reassembly
state machine might get out of sync
#6123: gnrc: crash with (excessive) traffic
#7035: lwIP: hangs due to sema change after a while
#7737: pkg: libcoap is partially broken and outdated
NDP is not working properly
---------------------------
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle: Reception of a router solicitation might lead
to invalid zero-length link-layer addresses in neighbor cache.
#5005: ndp: router advertisement sent with global address: Under some circumstances a router might
send RAs with GUAs. While they are ignored on receive (as RFC-4861 specifies), RAs should have
link-local addresses and not even be send out this way.
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while: Several issues
(also see #5760) lead to a global unicast address effectively being banned from the network
(disappears from neighbor cache, is not added again)
#5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by outdated ncache at router
#5539: Border Router: packet not forwarded from ethos to interface 6
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR
Timer related issues
--------------------
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
#6052: tests: xtimer_drift gets stuck: xtimer_drift application freezes after ~30-200 seconds
#6502: cpu/stm32l1: RTC broken
#7114: xtimer: add's items to the wrong list if the timer overflows between _xtimer_now() and irq_disable()
native related issues
---------------------
#495: native not float safe: When the FPU is used when an asynchronous context switch occurs, either
the stack gets corrupted or a floating point exception occurs.
#2175: ubjson: valgind registers "Invalid write of size 4" in unittests
#5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be initialized (which is
currently expected to be done in an application). If a malloc is needed before an application's
main started (e.g. driver initialization) the node can crash, since no pool is allocated yet.
#6145: native: system reboots on SIGTRAP
#6442: cpu/native: timer interrupt does not yield thread
#7206: native: race-condition in IPC
other platform related issues
-----------------------------
#1891: newlib-nano: Printf formatting does not work properly for some numeric types: PRI[uxdi]64,
PRI[uxdi]8 and float are not parsed in newlib-nano
#2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins were used in the
unittests which are not available with msp430-gcc
#2300: qemu unittest fails because of a page fault
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4560: make: clang is more pedantic than gcc oonf_api is not building with clang (partly fixed by #4593)
#4822: kw2xrf: packet loss when packets get fragmented
#4876: at86rf2xx: Simultaneous use of different transceiver types is not supported
#4954: chronos: compiling with -O0 breaks
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic operations in the drivers
some pin configurations might get lost.
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly jumps a few seconds on nrf52
#5405: Eratic timings on iotlab-m3 with compression context activated
#5486: at86rf2xx: lost interrupts
#5678: at86rf2xx: failed assertion in _isr
#5944: msp430: ipv6_hdr unittests fail
#5848: arduino: Race condition in sys/arduino/Makefile.include
#6018: nRF52 gnrc 6lowpan ble memory leak
#6261: SAMD21 TC3 & TC4 issue when using TCC2
#6379: nrf52dk/nordic_soft_device: not working anymore
#6437: periph/spi: Leftovers from SPI rework
#6526: atmega based boards freeze when main thread is over
#6836: Issuing a reboot on ATmega328p makes the board loop-reboot
#7347: xtimer_usleep stuck for small values on nucleo-l1
#7753: pic32-wifire: race-condition when linking in concurrent build
#7846: stm32f1: I2C read functions return bogus values with unconnected devices
other issues
------------
#1263: TLSF implementation contains (a) read-before-write error(s).
#3256: make: Setting constants on compile time doesn't really set them everywhere
#3366: periph/i2c: handle NACK
#4488: Making the newlib thread-safe: When calling puts/printf after thread_create(), the CPU hangs
for DMA enabled uart drivers.
#5561: C++11 extensions in header files
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#5962: Makefile: UNDEF variable is not working as documented
#6451: Wrong value in SRF08 driver
#7800: CBOR is broken
Special Thanks
==============
We would like to give our special thanks to all the companies that provided us
with their hardware for porting and testing, namely the people from (in alphabeticalorder):
Atmel, Freescale, Imagination Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO,
and Zolertia;
and also companies that directly sponsored development time:
Cisco Systems, Eïsox, Eistec, Ell-i, Engineering Spirit, Mesotic, Nordic, OTA keys and Phytec.
We also would like to thank people from Inria Chile for their work on
OpenThread integration and Semtech LoRa drivers.
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser General Public
License (LGPL) version 2.1 as published by the Free Software Foundation.
* Some external sources and pkg are published under a separate license.
All code files contain licensing information.
RIOT-2017.07 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit microcontrollers, 16-bit
microcontrollers and light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
This release provides fixes, code cleanup and improved documentation, as well as
enhancements.
New features brought by this release include:
* CAN support (Controller Area Network)
* Support for CoAP OBSERVE requests
* Basic Thread stack support (initial support for OpenThread)
* radio duty cycling with LwMAC protocol
* LoRa radio drivers supporting Semtech hardware
About 230 pull requests with about 442 commits have been merged since the last
release and about 13 issues have been solved. 45 people contributed with code
in 56 days. 1395 files have been touched with 211720 insertions and 65729 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
API changes
-----------
- removed conn API
System libraries
----------------
+ AES CMAC encryption
+ GCC's Stack Smashing Protector (SSP) support
- Remove 3-DES crypto
Networking
----------
+ CAN stack
+ CoAP OBSERVE request
+ LwMAC protocol
+ OpenThread
+ Layer 2 filtering (l2filter)
* LwIP port to v2.0.2
* NHDP port to sock API
- removed conn API
Packages
--------
+ OpenThread
Boards
------
+ Arduino MKR1000 (without WiFi)
+ Nucleo144-f412
+ Nucleo144-f746
+ Nucleo144-f767
+ NZ32-SC151 (STM32L1)
+ ST B-L072-LRWAN1 (with LoRa radio)
+ STM32F769 discovery
* Full support for PhyNode
CPU
---
+ lm4120: SPI support
+ SAM3: ADC support, DAC support
+ SAMD21: flashpage, ADC support
+ SAML21: ADC, I2C support
+ STM32F413vg support
+ STM32F7 family (ARM Cortex-M7)
+ STM32L0 family: I2C support
* STM32: unified DAC support
* STM32F1/F2/F4 clock initialization refactoring
Device Drivers
--------------
+ ADCXX1C I2C ADC support
+ BMP280 temperature/pressure sensor
+ DSP0401 4 digits 16 segment alphanumeric display
+ MMA8x5x motion detection sensor
+ Semtech SX1272 and SX1276 LoRa drivers
Build System
------------
+ EDBG support
+ http download with caching (dlcache)
+ Use Coccinelle static code checker in CI
Special Thanks
==============
We would like to give our special thanks to all the companies that provided us
with their hardware for porting and testing, namely the people from (in alphabeticalorder):
Atmel, Freescale, Imagination Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO,
and Zolertia;
and also companies that directly sponsored development time:
Cisco Systems, Eïsox, Eistec, Ell-i, Engineering Spirit, Mesotic, Nordic, OTA keys and Phytec.
We also would like to thank people from Inria Chile for their work on
OpenThread integration and Semtech LoRa drivers.
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* The code developed by the RIOT community is licensed under the GNU Lesser General Public
License (LGPL) version 2.1 as published by the Free Software Foundation.
* Some external sources and pkg are published under a separate license.
All code files contain licensing information.
RIOT-2017.04 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time
capabilities and comes with support for a range of devices that are typically
found in the Internet of Things: 8-bit microcontrollers, 16-bit
microcontrollers and light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft
real-time capabilities, small memory footprint, modularity, and uniform API
access, independent of the underlying hardware (with partial POSIX compliance).
RIOT is developed by an international open-source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by RIOT.
About this release:
===================
This release provides a lot of new features, fixes and enhancements. Among
these has been a huge cleanup regarding cppcheck and documentation, and we're
pleased to announce that all remaining doxygen and cppcheck warnings have been
fixed. We're also proud to present a Virtual File System layer and integration
of the SPIFFS file system. A lot of work has gone into support for
STMicroelectronics's Nucleo family, with RIOT now supporting 28 (up from 13)
Nucleo boards. And as always, there was a lot of under-the-hood cleanup, bug
fixing and documentation work.
About 200 pull requests with about 562 commits have been merged since the last release and about 23
issues have been solved. 32 people contributed with code in 91 days. 2697 files have been touched with
716950 insertions and 492623 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
Core
----
+ full C11 atomics support
+ rmutex, a recursive mutex implementation
API changes
-----------
* renamed NTOH*() -> ntoh*(), HTON*() -> hton*()
- removed gpioint API, which was unnused and obsoleted by periph/gpio
* renamed uuid module to luid
System libraries
----------------
+ VFS: virtual file system layer
+ fmt: add print_byte_hex(), fmt_lpad()
- 3DES: removed support as 3DES is considered legacy crypto
Networking
----------
+ emCute - a small MQTT-SN implementation
+ sock_dns: a simple DNS resolver
Packages
--------
+ SPIFFS, the first file system supported by RIOT's VFS layer
+ jerryscript, a Javascript interpreter
Drivers
-------
- added dynamixel server motor driver
- removed ltc4150 driver
- removed smb380 driver
Build System
------------
+ Experimental distributed building using Murdock
+ most makfiles moved from root into makefiles/
+ added submodule support
Special Thanks
==============
We like to give our special thanks to all the companies that provided us with their hardware for
porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination
Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly
sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, OTAkeys and Phytec.
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* Most of the code developed by the RIOT community is licensed under the GNU Lesser General Public
License (LGPL) version 2.1 as published by the Free Software Foundation.
* Some external sources are published under a separate, LGPL compatible license
(e.g. some files developedby SICS).
All code files contain licensing information.
RIOT-2017.01 - Release Notes
============================
RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with
support for a range of devices that are typically found in the Internet of Things: 8-bit microcontrollers,
16-bit microcontrollers and light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, soft real-time capabilities,
small memory footprint, modularity, and uniform API access, independent of the underlying hardware
(with partial POSIX compliance).
RIOT is developed by an international open-source community which is independent of specific vendors
(e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1),
which allows indirect business models around the free open-source software platform provided by RIOT.
About this release:
===================
This release provides a lot of new features, fixes and enhancements. Among others these features
contain an initial - still experimental - TCP implementation based on the GNRC network stack, support
for reading from and writing to SD cards, a new power management architecture as well additional third
party packages such as TweetNaCl, a cryptographic library, and Heatshrink a data compression library
optimized for embedded real-time systems.
We added support for new platforms including the Calliope mini, Maple mini, and a couple of STMs
Nucleo boards. Device support was extended by several new drivers, e.g., for NXP PN532 NFC, Microchip
MRF24J40 802.15.4 radio (experimental), or Bosch BME280 pressure/humidity/temperature sensor.
We completely refactored the SPI interface, allowing for internally handled hardware or software chip
select lines and shared bus usage for multiple devices with different SPI configurations.
About 278 pull requests with about 606 commits have been merged since the last release and about 84
issues have been solved. 44 people contributed with code in 87 days. 2230 files have been touched with
220275 insertions and 159840 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
General
-------
+ New power management architecture
Core
----
+ Initial (experimental) OpenOCD/GDB thread support
* Make Semaphore implementation IPC independent
API changes
-----------
* SPI driver interface (rework)
* Add Mutex lock with timeout parameter
* Xtimer allow for arbitrary frequency & additional convenience functions
* HDC1000 driver remodeling
* MMA8652 driver remodeling (MMA8x5x now)
System libraries
----------------
+ Lightweight CRC16 implementation
- Remove Twofish and RC5 implementation
Networking
----------
+ Initial (experimental) GNRC TCP implementation
* Provide sock-port for POSIX SOCKETS
* Provide sock-port for GCOAP
* Provide sock-port for UHCPC
* Provide sock_ip wrapper for LWIP
* Native: allow for multiple netdev_tap devices
Packages
--------
+ TweetNaCl: cryptographic library
+ Heatshrink: compression/decompression library
- Removed: OpenWSN
Platforms
---------
+ Support for Maple mini board
+ Support for ST Nucleo-32 F303 board
+ Support for ST Nucleo-32 F042 board
+ Support for Calliope mini board
- Drop support for PTTU platform
Drivers
-------
* Rework SPI driver interface
+ Peripheral flashrom driver interface
+ SD Card driver (SPI)
+ NXP PN532 NFC driver
+ Initial (experimental) Microchip MRF24J40 radio driver
+ JEDEC JC42.4 temperatur sensors
+ Bosch BME280 pressure, humidity and temperature sensor
* NXP MMA8x5x accelerometer (previously MMA8652)
* Unified STM32 RTC driver
* Unified STM32 UART driver
* Unified STM32 PWM driver
* Unified STM32 timer driver
* Unified NRF5x low power modes
+ Low power modes for the STM32F1 family
* Unified Kinetis low power modes
* Xbee port to netdev API
* W5100 port to netdev API
* NRF5x/'nrfmin' port to netdev API (w/o 6LoWPAN support currently)
* Refactor synchronous UART by new 'isrpipe' module
Build System
------------
+ Experimental Jenkins CI
* Python3 support for compile script (compile_test.py)
Other
-----
+ UUID module for central ID/address generation
Fixed Issues from the last release
==================================
#4388: POSIX sockets: open socket is bound to a specific thread
#4737: cortex-m: Hard fault after a thread exits
#4874: Using single RSSI_BASE_VALUE for all Atmel radios
#5034: gnrc_networking: offers txtsnd, does not print received packets
#5083: AVR8: Reboots after `return 0;`
#5719: cc2538: rf driver doesn't handle large packets
#5954: nRF52 uart_write gets stuck
#6036: tinydtls: DTLS randomly missing functions
#6037: pkg/nanocoap: native build fails on macOS
#6358: arduino uno : xtimer accuracy problem
Known Issues
============
Networking related issues
-------------------------
#3075: nhdp: unnecessary microsecond precision: NHDP works with timer values of microsecond precision
which is not required. Changing to lower precision would save some memory.
#4048: potential racey memory leak: According to the packet buffer stats, flood-pinging a multicast
destination may lead to a memory leak due to a race condition. However, it seems to be a rare
case and a completely filled up packet buffer was not observed.
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
#5656: Possible Weakness with locking in the GNRC network stack: For some operations mutexes to the
network interfaces need to get unlocked in the current implementation to not get deadlocked.
Recursive mutexes as provided in #5731 might help to solve this problem.
#5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of size ~512 B might lead
to crashes. The issue describes this for several hundret nodes, but agressive flooding with
just two nodes was also shown to lead to this problem.
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame gets lost the reassembly
state machine might get out of sync
#6123: gnrc: crash with (excessive) traffic
NDP is not working properly
---------------------------
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle: Reception of a router solicitation might lead
to invalid zero-length link-layer addresses in neighbor cache.
#5005: ndp: router advertisement sent with global address: Under some circumstances a router might
send RAs with GUAs. While they are ignored on receive (as RFC-4861 specifies), RAs should have
link-local addresses and not even be send out this way.
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while: Several issues
(also see #5760) lead to a global unicast address effectively being banned from the network
(disappears from neighbor cache, is not added again)
#5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by outdated ncache at router
#5539: Border Router: packet not forwarded from ethos to interface 6
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR
Timer related issues
--------------------
#4841: xtimer: timer already in the list: Under some conditions an xtimer can end up twice in the
internal list of the xtimer module
#4902: xtimer: xtimer_set: xtimer_set does not handle integer overflows well
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
#5928: xtimer: usage in board_init() crashes: some boards use the xtimer in there board_init()
function. The xtimer is however first initialized in the auto_init module which is executed
after board_init()
#6052: tests: xtimer_drift gets stuck: xtimer_drift application freezes after ~30-200 seconds
#6331: RTC alarm triggered with 1s delay
#6419: cpu/cc2538: timer broken
#6427: xtimer: infinite loop with xtimer_mutex_lock_timeout
#6502: cpu/stm32l1: RTC broken
#6542: boards/nucle-f0xx: misconfigured timer configuration (fix in #6494)
native related issues
---------------------
#495: native not float safe: When the FPU is used when an asynchronous context switch occurs, either
the stack gets corrupted or a floating point exception occurs.
#2175: ubjson: valgind registers "Invalid write of size 4" in unittests
#4590: pkg: building relic with clang fails.
#5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be initialized (which is
currently expected to be done in an application). If a malloc is needed before an application's
main started (e.g. driver initialization) the node can crash, since no pool is allocated yet.
#6145: native: system reboots on SIGTRAP
#6442: cpu/native: timer interrupt does not yield thread
other platform related issues
-----------------------------
#1891: newlib-nano: Printf formatting does not work properly for some numeric types: PRI[uxdi]64,
PRI[uxdi]8 and float are not parsed in newlib-nano
#2006: cpu/nrf51822: timer callback may be fired too early
#2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins were used in the
unittests which are not available with msp430-gcc
#2300: qemu unittest fails because of a page fault
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4560: make: clang is more pedantic than gcc oonf_api is not building with clang (partly fixed by #4593)
#4694: drivers/lm75a: does not build
#4822: kw2xrf: packet loss when packets get fragmented
#4876: at86rf2xx: Simultaneous use of different transceiver types is not supported
#4954: chronos: compiling with -O0 breaks
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic operations in the drivers
some pin configurations might get lost.
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly jumps a few seconds on nrf52
#5361: cpu/cc26x0: timer broken
#5405: Eratic timings on iotlab-m3 with compression context activated
#5460: cpu/samd21: i2c timing with compiler optimization
#5486: at86rf2xx: lost interrupts
#5489: cpu/lpc11u34: ADC broken
#5678: at86rf2xx: failed assertion in _isr
#5799: kw2x: 15.4 duplicate transmits
#5944: msp430: ipv6_hdr unittests fail
#5848: arduino: Race condition in sys/arduino/Makefile.include
#6018: nRF52 gnrc 6lowpan ble memory leak
#6261: SAMD21 TC3 & TC4 issue when using TCC2
#6379: nrf52dk/nordic_soft_device: not working anymore
#6437: periph/spi: Leftovers from SPI rework
#6501: boards/nucleo: Pin usage collision (SPI clk vs. LED0)
#6526: atmega based boards freeze when main thread is over
other issues
------------
#1263: TLSF implementation contains (a) read-before-write error(s).
#3256: make: Setting constants on compile time doesn't really set them everywhere
#3366: periph/i2c: handle NACK
#4488: Making the newlib thread-safe: When calling puts/printf after thread_create(), the CPU hangs
for DMA enabled uart drivers.
#4866: periph: GPIO drivers are not thread safe
#5128: make: buildtest breaks when exporting FEATURES_PROVIDED var
#5207: make: buildest fails with board dependent application Makefiles
#5561: C++11 extensions in header files
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64 chars
#5962: Makefile: UNDEF variable is not working as documented
#6022: pkg: build order issue
#6451: Wrong value in SRF08 driver
#6519: driver/mrf24j40: broken on stm32f4discovery
Special Thanks
==============
We like to give our special thanks to all the companies that provided us with their hardware for
porting and testing, namely the people from (in alphabeticalorder): Atmel, Freescale, Imagination
Technologies, Nordic, OpenMote, Phytec, SiLabs, UDOO, and Zolertia; and also companies that directly
sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering Spirit, Nordic, OTAkeys and Phytec.
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* Most of the code developed by the RIOT community is licensed under the GNU Lesser General Public
License (LGPL) version 2.1 as published by the Free Software Foundation.
* Some external sources are published under a separate, LGPL compatible license
(e.g. some files developedby SICS).
All code files contain licensing information.
RIOT-2016.10 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: 8-bit
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers partial POSIX
compliance).
RIOT is developed by an international open source community which is
independent of specific vendors (e.g. similarly to the Linux community) and is
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect
business models around the free open-source software platform provided by
RIOT.
About this release:
===================
This release provides a lot of new features as well as it fixes several major
bugs. Among these new features are the new simplified network socket API
called sock, the GNRC specific CoAP implementation gcoap and several new
packages: TinyDTLS, the Aversive++ microcontroller library for robotics, the
u8g2 graphic library, and nanocoap.
Using the new sock API an implementation of the Simple Time Network Protocol
(SNTP) was also introduced, allowing for time synchronization between nodes.
New platforms include the Arduino Uno, the Arduino Duemilanove, the Arduino
Zero, SODAQ Autonomo, and the Zolertia remote (rev. B).
The most significant bug fix was done in native which led to a significantly
more robust handling of ISRs and now allows for at least 1,000 native
instances running stably on one machine.
About 263 pull requests with about 398 commits have been merged since the last
release and about 42 issues have been solved. 37 people contributed with code
in 100 days. 1006 files have been touched with 166500 insertions and 26926
deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
General
-------
* Verbose behavior for assert() macro
Core
----
+ MPU support for Cortex-M
API changes
-----------
+ Socket-like sock API (replacing conn)
* netdev: Add Testmodes and CCA modes
* IEEE 802.15.4: clean-up Intra-PAN behavior
* IEEE 802.15.4: centralize default values
* gnrc_pktbuf: allow for 0-sized snips
+ gnrc_netapi: mbox and arbitrary callback support
System libraries
----------------
No new features or changes
Networking
----------
+ Provide sock-port for GNRC
+ gcoap: a GNRC-based CoAP implementation
+ Simple Network Time Protocol (RFC 5905, section 14)
+ Priority Queue for packet snips
+ IPv4 header definitions
Packages
--------
+ nanocoap: CoAP header parser/builder
+ TinyDTLS: DTLS library
+ tiny-asn1: asn.1/der decoder
+ Aversive++ microcontroller programming library
+ u8g2 graphic library
Platforms
---------
+ Support for stm32f2xx MCU family
+ Low power modes for samd21 CPUs
+ More Arduino-based platforms:
+ Arduino Uno
+ Arduino Duemilanove
+ Arduino Zero
+ More boards of ST's Nucleo platforms:
+ ST Nucleo F030 board support
+ ST Nucleo F070 board support
+ ST Nucleo F446 board support
+ SODAQ Automono
+ Zolertia remote rev. B
Drivers
-------
+ W5100 Ethernet device
+ Atmel IO1 Xplained extension
+ LPD8808 LED strips
* at86rf2xx: provide capability to access the RND_VALUE random value register
Build System
------------
+ static-tests build target for easy local execution of CI's static tests
Other
-----
+ Provide Arduino API to Nucleo boards
+ Packer configuration file to build vagrant boxes
+ CC2650STK Debugger Support
+ ethos: add Ethos over TCP support
Fixed Issues from the last release
==================================
#534: native debugging on osx fails
#2071: native: *long* overdue fixes
#3341: netdev_tap crashes when hammered
#5007: gnrc icmpv6: Ping reply goes out the wrong interface
#5432: native: valgrind fails
Known Issues
============
Networking related issues
-------------------------
#3075: nhdp: unnecessary microsecond precision: NHDP works with timer values
of microsecond precision which is not required. Changing to lower
precision would save some memory.
#4048: potential racey memory leak: According to the packet buffer stats,
flood-pinging a multicast destination may lead to a memory leak due to
a race condition. However, it seems to be a rare case and a completely
filled up packet buffer was not observed.
#4388: POSIX sockets: open socket is bound to a specific thread: This was an
inherit problem of the conn API under GNRC. Since the POSIX sockets are
still based on conn for this release, this issue persists
#4527: gnrc_ipv6: Multicast is not forwarded if routing node listens to the
address (might still be fixable for release, see #5729, #5230: gnrc
ipv6: multicast packets are not dispatched to the upper layers)
#5016: gnrc_rpl: Rejoining RPL instance as root after reboot messes up routing
#5055: cpuid: multiple radios will get same EUI-64 Nodes with multiple
interfaces might get the same EUI-64 for them since they are generated
from the same CPU ID.
#5656: Possible Weakness with locking in the GNRC network stack: For some
operations mutexes to the network interfaces need to get unlocked in
the current implementation to not get deadlocked. Recursive mutexes as
provided in #5731 might help to solve this problem.
#5748: gnrc: nodes crashing with too small packet buffer: A packet buffer of
size ~512 B might lead to crashes. The issue describes this for several
hundret nodes, but agressive flooding with just two nodes was also
shown to lead to this problem.
#5858: gnrc: 6lo: potential problem with reassembly of fragments: If one frame
gets lost the reassembly state machine might get out of sync
### NDP is not working properly
#4499: handle of l2src_len in gnrc_ndp_rtr_sol_handle: Reception of a router
solicitation might lead to invalid zero-length link-layer addresses in
neighbor cache.
#5005: ndp: router advertisement sent with global address: Under some
circumstances a router might send RAs with GUAs. While they are ignored
on receive (as RFC 4861 specifies), RAs should have link-local
addresses and not even be send out this way.
#5122: NDP: global unicast address on non-6LBR nodes disappears after a while:
Several issues (also see #5760) lead to a global unicast address
effectively being banned from the network (disappears from neighbor
cache, is not added again)
#5467: ipv6 address vanishes when ARO (wrongly) indicates DUP caused by
outdated ncache at router
#5539: Border Router: packet not forwarded from ethos to interface 6
#5790: ND: Lost of Global IPV6 on node after sending lot of UDP frame from BR
Timer related issues
--------------------
#4841: xtimer: timer already in the list: Under some conditions an xtimer can
end up twice in the internal list of the xtimer module
#4902: xtimer: xtimer_set: xtimer_set does not handle integer overflows well
#5338: xtimer: xtimer_now() not ISR safe for non-32-bit platforms.
#5928: xtimer: usage in board_init() crashes: some boards use the xtimer in
there board_init() function. The xtimer is however first initialized in
the auto_init module which is executed after board_init()
#6052: tests: xtimer_drift gets stuck: xtimer_drift application freezes after
~30-200 seconds
native related issues
---------------------
#495: native not float safe: When the FPU is used when an asynchronous context
switch occurs, either the stack gets corrupted or a floating point
exception occurs.
#2175: ubjson: valgind registers "Invalid write of size 4" in unittests
#4590: pkg: building relic with clang fails.
#5796: native: tlsf: early malloc will lead to a crash: TLSF needs pools to be
initialized (which is currently expected to be done in an application).
If a malloc is needed before an application's main started (e.g. driver
initialization) the node can crash, since no pool is allocated yet.
other platform related issues
-----------------------------
#1891: newlib-nano: Printf formatting does not work properly for some numberic
types: PRI[uxdi]64, PRI[uxdi]8 and float are not parsed in newlib-nano
#2006: cpu/nrf51822: timer callback may be fired too early
#2143: unittests: tests-core doesn't compile for all platforms: GCC build-ins
were used in the unittests which are not available with msp430-gcc
#2300: qemu unittest fails because of a page fault
#4512: pkg: tests: RELIC unittests fail on iotlab-m3
#4522: avsextrem: linker sometimes doesn't find `bl_init_clks()`
#4560: make: clang is more pedantic than gcc oonf_api is not building with
clang. (Partly solved by #4593)
#4694: drivers/lm75a: does not build
#4737: cortex-m: Hard fault after a thread exits (under some circumstances)
#4822: kw2xrf: packet loss when packets get fragmented
#4876: at86rf2xx: Simultaneous use of different transceiver types is not
supported
#4954: chronos: compiling with -O0 breaks
#4866: not all GPIO driver implementations are thread safe: Due to non-atomic
operations in the drivers some pin configurations might get lost.
#5009: RIOT is saw-toothing in energy consumption (even when idling)
#5103: xtimer: weird behavior of tests/xtimer_drift: xtimer_drift randomly
jumps a few seconds on nrf52
#5361: cpu/cc26x0: timer broken
#5405: Eratic timings on iotlab-m3 with compression context activated
#5460: cpu/samd21: i2c timing with compiler optimization
#5486: at86rf2xx: lost interrupts
#5489: cpu/lpc11u34: ADC broken
#5603: atmega boards second UART issue
#5678: at86rf2xx: failed assertion in _isr
#5719: cc2538: rf driver doesn't handle large packets
#5799: kw2x: 15.4 duplicate transmits
#5944: msp430: ipv6_hdr unittests fail
#5848: arduino: Race condition in sys/arduino/Makefile.include
#5954: nRF52 uart_write get stuck
#6018: nRF52 gnrc 6lowpan ble memory leak
other issues
------------
#1263: TLSF implementation contains (a) read-before-write error(s).
#3256: make: Setting constants on compile time doesn't really set them
everywhere
#3366: periph/i2c: handle NACK
#4488: Making the newlib thread-safe: When calling puts/printf after
thread_create(), the CPU hangs for DMA enabled uart drivers.
#4866: periph: GPIO drivers are not thread safe
#5128: make: buildtest breaks when exporting FEATURES_PROVIDED var
#5207: make: buildest fails with board dependent application Makefiles
#5390: pkg: OpenWSN does not compile: This package still uses deprecated
modules and was not tested for a long time.
#5520: tests/periph_uart not working
#5561: C++11 extensions in header files
#5776: make: Predefining CFLAGS are parsed weirdly
#5863: OSX + SAMR21-xpro: shell cannot handle command inputs larger than 64
chars
#5962: Makefile: UNDEF variable is not working as documented
#6022: pkg: build order issue
Special Thanks
==============
We like to give our special thanks to all the companies that provided us with
their hardware for porting and testing, namely the people from (in
alphabeticalorder): Atmel, Freescale, Imagination Technologies, Limifrog,
Nordic, OpenMote, Phytec, SiLabs, UDOO,and Zolertia; and also companies that
directly sponsored development time: Cisco Systems, Eistec, Ell-i, Enigeering
Spirit, Nordic, FreshTemp LLC, OTAkeys and Phytec.
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* Most of the code developed by the RIOT community is licensed under the GNU
Lesser General Public License (LGPL) version 2.1 as published by the Free
Software Foundation.
* Some external sources are published under a separate, LGPL compatible
license (e.g. some files developed by SICS).
All code files contain licensing information.
RIOT-2016.07 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: 8-bit
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers partial POSIX
compliance).
RIOT is developed by an international open source community which is
independent of specific vendors (e.g. similarly to the Linux community)
and is licensed with a non-viral copyleft license (LGPLv2.1), which allows
indirect business models around the free open-source software platform
provided by RIOT.
About this release:
===================
This release was focused primarily on fixing bugs, but also adds two new
supported radio transceivers: CC2420 and CC2538.
This new radio support allows to new interoperability tests with other OS,
allowing code size comparison and overall network performance for
platforms based on these radios.
About 198 pull requests with about 325 commits have been merged since the
last release and about 65 issues have been solved. 46 people contributed with
code in 112 days. 632 files have been touched with 19863 insertions and
3682 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
General
----------
* No major changes or new features coming on this release.
Core
----
+ Introduced Mailbox IPC API (#4919)
* Improved clist
Network Stack
---
+ Introduction of netstats in several platforms.
* RPL optional auto initialization
Packages
---
+ Added statistics for TLSF package (#5418)
+ Added U8g2 library for monochrome displays (#5549)
* Added on-the-fly content creation for CCN-lite.
Platforms
---
+ nrf52dk: add support for building with Nordic SoftDevice (6lo over BLE)
+ Added support for Libellium's waspmote-pro board.
+ Added support for the iotlab A8/M3 node (https://www.iot-lab.info/hardware/a8/)
+ Added initial and rudimentary port for TI cc2650stk "SensorTag" (#4675)
+ Split Zolertia Remote support into Remote Prototype A (remote-pa) and
Remote Revision A (remote-reva)
Drivers
---
+ Texas Instruments CC2538 RF driver (PR #5291)
+ Texas Instruments CC2420 RF driver (PR #5591)
+ Bosch BM180 sensor.
+ Added XBee optional AES encryption support
System libraries
---
* Several xtimer bug fixes
Build System
---
+ Ubuntu 16.04 packaged gcc-arm-none-eabi toolchain can now be used to compile
RIOT for ARM boards
Other
---
* Reworked UART and code factorisation for ATmega CPUs.
API changes
---
* Unified interface of hashing functions
Fixed Issues from the last release
==================================
#3824: native: gnrc: hardcore pinging crashes.
#4583: cpp11: clang doesn't allow mutex_t to be used with constexpr All
cpp11-* tests fail with clang.
#5388: gnrc_sixlowpan_iphc_nhc: receiving NHC compressed UDP
packets hits assert in IPv6 (Fixed by #5281).
Known Issues
==========
#3075: nhdp: unnecessary microsecond precision NHDP works with timer
values of microsecond precision which is not required. Changing to lower
precision would save some memory.
#3086: Max. packet length for AT86RF2XX
#4048: potential racey memory leak According to the packet buffer stats,
flood-pinging a multicast destination may lead to a memory leak due to a
race condition. However, it seems to be a rare case and a completely filled
up packet buffer was not observed.
#5005: ndp: router advertisement sent with global address Under some
circumstances a router might send RAs with GUAs. While they are ignored
on receive (as RFC 4861 specifies), RAs should have link-local addresses
and not even be send out this way.
#5007: gnrc icmpv6: Ping reply goes out the wrong interface
#5055: cpuid: multiple radios will get same EUI-64 Nodes with multiple
interfaces might get the same EUI-64 for them since they are generated from
the same CPU ID.
#5230: gnrc ipv6: multicast packets are not dispatched to the upper layers.
(Fix exists, but was postponed)
#5390: pkg: OpenWSN does not compile This package still uses deprecated
modules and was not tested for a long time.
native related issues
---------------------
#495: native not float safe When the FPU is used when an asynchronous
context switch occurs, either the stack gets corrupted or a floating point
exception occurs.
#534: native debugging on osx fails Using valgrind or gdb with a nativenet
target in OSX leads to "the network" being stuck (gdb) or the whole process
being stuck (valgrind).
#334: nativenet crashes when hammered Flood-pinging a native instance
from more than one host (either multiple threads on the host system or multiple
other native instances), leads to a SEGFAULT.
#2071; WIP: native: overdue fixes
#4590: pkg: building relic with clang fails.
#5432: native: valgrind fails
other platform related issues
-----------------------------
#4560: make: clang is more pedantic than gcc oonf_api is not building with
clang.
(Partly solved by #4593)
#4866: not all GPIO driver implementations are thread safe Due to non-atomic
operations in the drivers some pin configurations might get lost.
#5486: at86rf2xx: lost interrupts
other issues
------------
#1263: TLSF implementation contains (a) read-before-write error(s).
#2761: core: define default flags If a thread is created without the
corresponding flag (CREATE_STACKTEST), the ps command will yield wrong
numbers for the stack usage.
#2927: core: Automatically select the lowest possible LPM mode Not all
available low power modes (LPMs) are implemented for each platform and the
concept of how the LPM is chosen needs some reconsideration.
#2967: Makefile.features: location is not relevant for all features Provided
features for the build system should be split up into a board and cpu specific part
#4488: Making the newlib thread-safe When calling puts/printf after
thread_create(), the CPU hangs for DMA enabled uart drivers.
#4841: xtimer: timer already in the list Under some conditions an xtimer can end
up twice in the internal list of the xtimer module.
#5338: xtimer: xtimer_now() not ISR safe For non-32-bit platforms.
Special Thanks
===============
We like to give our special thanks to all the companies that provided us with their
hardware for porting and testing, namely the people from (in alphabeticalorder):
Atmel, Freescale, Limifrog, Nordic, OpenMote, Phytec, SiLabs, UDOO,and Zolertia;
and also companies that directly sponsored development time:Cisco Systems,
Eistec, Ell-i, Enigeering Spirit, Nordic, FreshTemp LLC, and Phytec.
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
---
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* Most of the code developed by the RIOT community is licensed under the GNU
Lesser General Public License (LGPL) version 2.1 as published by the Free
Software Foundation.
* Some external sources are published under a separate, LGPL compatible license
(e.g. some files developed by SICS).
All code files contain licensing information.
RIOT-2016.04 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: 8-bit
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers partial POSIX
compliance).
RIOT is developed by an international open source community which is
independent of specific vendors (e.g. similarly to the Linux community)
and is licensed with a non-viral copyleft license (LGPLv2.1), which allows
indirect business models around the free open-source software platform
provided by RIOT.
About this release:
===================
This release adds support for two additional network stacks: lwIP and emb6.
A bunch of additional protocols are now available, P2P-RPL in the GNRC
network stack, Ethernet-over-Serial (ethos). Murdock, the new, blazing fast
RIOT CI is now available to significantly speed up code merging procedures.
This release also adds support for a number of new boards and sensors and a new
tool for automated border router setup is now provided which greatly simplifies
that setup for newbies as well as for old-timers. Last but not least: this
release includes a number of bug fixes, mostly about stabilizing and enhancing
the networking capabilities of RIOT.
About 470 pull requests with about 1196 commits have been merged since the last
release and 127 additional issues have been solved. 55 people contributed code
in 124 days. 1521 files have been touched with ~91700 insertions and ~42200
deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
General
----------
+ added Makefile support for creating a "binary distribution", making it easier to create closed source applications while still complying to LGPL
Testing
---
+ Murdock, the new RIOT CI
+ unified pexpect code
+ added various new unittests and test applications
Core
----
+ added thread flags, a new method to signal events in an efficient and thread safe manner
+ messaging is now compile-time optional, shaving off some bytes off each thread's state struct for projects not requiring it
+ new, simpler list implementation increases mutex and msg performance
Network Stack
---
+ P2P-RPL (RFC6997)
+ netdev_test: test framework for users of the netdev API
Packages
---
+ emb6 network stack
+ jsmn (minimal JSON parser)
+ lwIP network stack
+ unified and streamlined git package source handling
+ added support for caching git repositories
Platforms
---
+ reworked existing peripheral drivers and added SPI driver for arduino-mega2560
+ added support for nRF52dk
+ added support for nucleo-f072 and nucleo-f103
+ unified LED macros for all boards
Drivers
---
+ ethos "ethernet over serial" driver, enabling shared uart + network communication over one serial connection
+ RHOM BH1750FVI ambient light sensor
+ ST LIS3MDL three-axis magnetic sensor
+ Silicon Labs Si70xx low-power temperature + humidity sensor
+ simplified GPIO driver interface
+ AES encryption for xbee radio driver
+ added ADC mapping to SAUL
Sytem libraries
---
- vtimer support was dropped completely and removed
Build System
---
+ made build system safe for concurrent building of multiple applications
+ desvirt integration into the RIOT build system
Other
---
- simplified border router setup tool (single UART and automation script)
API changes
---
* at86rf2xx was moved from gnrc_netdev to the netdev API
* genrand_* -> random_*
* xtimer_remove() no longer returns whether a timer was actually removed
* disableIRQ(), enableIRQ(), restoreIRQ(), inISR() -> irq_disable(), irq_enable(), irq_restore(), irq_is_in()
* renamed periph/random to periph/hwrng
Fixed Issues from the last release
==================================
* #3109: periph/random: random_read should return unsigned int
* #3970: RPL: Advertise DODAG only over the assigned interface
* #4462: IPHC/NHC broken between Linux and a RIOT node with a RIOT-based border router in between.
* #4608: tests/xtimer_usleep_until: unstable behaviour
Known Issues
==========
----------------------
* #3075: nhdp: unnecessary microsecond precision
NHDP works with timer values of microsecond precision which is not required. Changing
to lower precision would save some memory.
* #3086: Max. packet length for AT86RF2XX
The size of the link-layer header is not dynamically calculated, but instead the maximum
size is always assumed.
* #4048: potential racey memory leak
According to the packet buffer stats, flood-pinging a multicast destination may lead to a
memory leak due to a race condition. However, it seems to be a rare case and a
completely filled up packet buffer was not observed.
* #5005: ndp: router advertisement sent with global address
Under some circumstances a router might send RAs with GUAs. While they are ignored
on receive (as RFC 4861 specifies), RAs should have link-local addresses and not even
be send out this way.
* #5007: gnrc icmpv6: Ping reply goes out the wrong interface
* #5055: cpuid: multiple radios will get same EUI-64
Nodes with multiple interfaces might get the same EUI-64 for them since they are generated
from the same CPU ID
* #5230: gnrc ipv6: multicast packets are not dispatched to the upper layers
* #5388: gnrc_sixlowpan_iphc_nhc: receiving NHC compressed UDP packets hits assert in IPv6
Fix already provided in #5281, but did not made it into the release due to its complexity
* #5390: pkg: OpenWSN does not compile
This package still uses deprecated modules and was not tested for a long time
native related issues
---------------------
* #495: native not float safe
When the FPU is used when an asynchronous context switch occurs, either the
stack gets corrupted or a floating point exception occurs.
* #534: native debugging on osx fails
Using valgrind or gdb with a nativenet target in OSX leads to "the network"
being stuck (gdb) or the whole process being stuck (valgrind).
* #3341 and #3824: nativenet crashes when hammered
Flood-pinging a native instance from more than one host (either multiple threads on the
host system or multiple other native instances), leads to a SEGFAULT
other platform related issues
-----------------------------
* #4560: make: clang is more pedantic than gcc
oonf_api is not building with clang.
* #4583: cpp11: clang doesn't allow `mutex_t` to be used with `constexpr`
All cpp11-* tests fail with clang.
* #4866: not all GPIO driver implementations are thread safe
Due to non-atomic operations in the drivers some pin configurations might get lost
other issues
------------
* #1263: TLSF implementation contains (a) read-before-write error(s)
* #2761: core: define default flags
If a thread is created without the corresponding flag (CREATE_STACKTEST),
the ps command will yield wrong numbers for the stack usage
* #2927: core: Automatically select the lowest possible LPM mode
Not all available low power modes (LPMs) are implemented for each platform and the
concept of how the LPM is chosen needs some reconsideration
* #2967: Makefile.features: location is not relevant for all features
Provided features for the build system should be split up into a board and cpu specific
part
* #4488: Making the newlib thread-safe
When calling puts/printf after thread_create(), the CPU hangs for DMA enabled uart drivers.
* #4841: xtimer: timer already in the list
Under some conditions an xtimer can end up twice in the internal list of the xtimer module.
* #5338: xtimer: xtimer_now() not ISR safe
For non-32-bit platforms
Special Thanks
===============
We like to give our special thanks to all the companies that provided us with
their hardware for porting and testing, namely the people from (in alphabetical
order): Atmel, Freescale, Limifrog, Nordic, OpenMote, Phytec, SiLabs, UDOO,
and Zolertia; and also companies that directly sponsored development time:
Cisco Systems, Eistec, Ell-i, Enigeering Spirit, FreshTemp LLC, and Phytec.
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
-----
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* Most of the code developed by the RIOT community is licensed under the GNU
Lesser General Public License (LGPL) version 2.1 as published by the Free
Software Foundation.
* Some external sources are published under a separate, LGPL compatible license
(e.g. some files developed by SICS).
All code files contain licensing information.
RIOT-2015.12 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: 8-bit
microcontrollers, 16-bit microcontrollers and light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers partial POSIX
compliance).
RIOT is developed by an international open source community which is
independent of specific vendors (e.g. similarly to the Linux community).
About this release:
===================
This release is mostly a clean-up and bug-fixing release. Besides that, it introduces SAUL,
the [S]ensor [A]ctuator [U]ber [L]ayer, which offers a unified API to interact with all
different types of sensors and actuators on RIOT supported hardware. Furthermore, it re-enables
the support for ICN by integrating CCN-Lite as a package. A lot of new overall documentation was
added and existing documentation was improved (http://riot-os.org/api/). In addition,
a Vagrant (https://www.vagrantup.com/) configuration file was added to the RIOT repository in
order to create reproducible and portable environments that contain all necessary toolchains.
About 222 pull requests with about 631 commits have been merged since the last release and 48
additional issues have been solved. 37 people contributed code in 102 days. 980 files have been
touched with ~59779 insertions and ~12115 deletions.
Notations used below:
=====================
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features and changes
========================
General
-------
Device support
--------------
+ SAUL [S]ensor [A]ctuator [U]ber [L]ayer
Core
----
* replaced deprecated dINT()/eINT() calls by up-to-date disableIRQ()/enableIRQ()/restoreIRQ()
calls throughout the whole core
Network Stack
-------------
+ TFTP support
+ 6LoWPAN: Next Header Compression
+ leaf mode for RPL nodes
* RPL: refactoring of instances and dodags (saved 1kB ROM and 0,5kB RAM)
* FIB: initial source route support
* change to non-blocking 6LoWPAN fragmentation
* POSIX sockets: various fixes
* periodic stats printing for ping6 command
* convert all vtimer into xtimer calls
* send router advertisements without PIOs
Packages
--------
+ CCN-Lite as a ICN network stack
+ RELIC: efficient cryptography library
* fix TLSF to compile with -pedantic
Supported platforms
-------------------
Additional support for the following boards:
+ weio board with NXP LPC11U34 (ARM Cortex-M0)
+ Silicon Labs Wireless Eval Kit SLWSTK6220A (Wonder Gecko)
+ STM32 Nucleo-F401
Drivers
-------
+ Arduino-mega2560 GPIO
+ Arduino pin mapping for Mega2560 and Due
Network drivers
---------------
+ enc28j60 Ethernet chip
+ at86rf2xx: Add support for channel page
* at86rf2xx: fix LQI reading
* implement sleep mode for at86rf2xx
Sensors drivers
---------------
+ AT30TSE75x temperature sensor
+ TCS3772 Color Light-to-Digital converter
System libraries
----------------
+ partial support for the Arduino API
+ lightweight semaphores
+ fmt: simple string formatting library
+ xtimer: 32-bit version of msg_recv_timeout
* implicit socket binding for POSIX connect() and sendto()
* posix_semaphore: make API POSIX compliant
Examples
--------
+ microcoap/conn example
+ minimal GNRC networking example
Build System
------------
* split the Cortex-M0 buildtest group to avoid timeout issues with Travis
* split the Cortex-M4 buildtest group to avoid timeout issues with Travis
Other
-----
+ vagrant configuration
+ documentation: various high-level descriptions of crucial features
+ IoT-LAB: create and connect to debug server
* pyterm: fix problems with German umlauts as input
Fixed Issues from the last release
==================================
#2724: Add support for serial number passing to CMSIS boards, document it
Documentation about how to discover and set the serial number of CMSIS-DAP chips is missing
#3201: Odd length packet snips cause invalid check sum
If an odd length packet snip occurs in a packet and is not the last snip
(in the order the packet is supposed to be, not in the list's order)
in a packet it will generate a wrong check sum.
Known Issues
============
network related issues
----------------------
#3075: nhdp: unnecessary microsecond precision
NHDP works with timer values of microsecond precision which is not required. Changing
to lower precision would save some memory.
#3086: Max. packet length for AT86RF2XX
The size of the link-layer header is not dynamically calculated, but instead the maximum
size is always assumed.
#3970: RPL: Advertise DODAG only over the assigned interface
gnrc_rpl seems to multicast DIOs over all interfaces, though gnrc_rpl_init expects an
interface as parameter and sets the RPL-nodes multicast address only for that interface.
#4048: potential racey memory leak
According to the packet buffer stats, flood-pinging a multicast destination may lead to a
memory leak due to a race condition. However, it seems to be a rare case and a
completely filled up packet buffer was not observed.
#4462: IPHC/NHC broken between Linux and a RIOT node with a RIOT-based border router in between.
native related issues
---------------------
#495: native not float safe
When the FPU is used when an asynchronous context switch occurs, either the
stack gets corrupted or a floating point exception occurs.
#534: native debugging on osx fails
Using valgrind or gdb with a nativenet target in OSX leads to "the network"
being stuck (gdb) or the whole process being stuck (valgrind).
#3341 and #3824: nativenet crashes when hammered
Flood-pinging a native instance from more than one host (either multiple threads on the
host system or multiple other native instances), leads to a SEGFAULT.
#4608: tests/xtimer_usleep_until: unstable behaviour
The test starts to output "too large difference" and fails after a random period of time.
other platform related issues
-----------------------------
#4560: make: clang is more pedantic than gcc
oonf_api is not building with clang.
#4583: cpp11: clang doesn't allow `mutex_t` to be used with `constexpr`
All cpp11-* tests fail with clang.
other issues
------------
#2761: core: define default flags
If a thread is created without the corresponding flag (CREATE_STACKTEST),
the ps command will yield wrong numbers for the stack usage
#2927: core: Automatically select the lowest possible LPM mode
Not all available low power modes (LPMs) are implemented for each platform and the
concept of how the LPM is chosen needs some reconsideration
#2967: Makefile.features: location is not relevant for all features
Provided features for the build system should be split up into a board and cpu specific
part
#3109: periph/random: random_read should return unsigned int
The documentation of this function does not match corresponding implementation.
#4488: Making the newlib thread-safe
When calling puts/printf after thread_create(), the CPU hangs for DMA enabled uart drivers.
Special Thanks
--------------
We like to give our special thanks to all the companies that provided us with their hardware
for porting and testing, namely the people from (in alphabetical order):
Atmel, Freescale, Limifrog, Phytec, SiLabs, and Zolertia; and also companies that directly
sponsored development time:
Cisco Systems, Google, Eistec, Ell-i, Engineering Spirit, FreshTemp LLC, and Phytec.
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
-----
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* Most of the code developed by the RIOT community is licensed under the
GNU Lesser General Public License (LGPL) version 2.1 as published by the Free Software Foundation.
* Some external sources are published under a separate, LGPL compatible license
(e.g. some files developed by SICS).
All code files contain licensing information.
RIOT-2015.09 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: devices based on
8-bit microcontrollers, 16-bit microcontrollers and light-weight 32-bit
processors.
RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers partial POSIX
compliance).
RIOT is developed by an international open source community which is
independent of specific vendors (e.g. similarly to the Linux community).
About this release:
============
This release introduces the GNRC network stack, a completely new, highly
modularized and configurable IPv6/6LoWPAN stack. It also includes xtimer as a
new timer subsystem for accurate short- and long-term timers. Moreover,
peripheral drivers, board, and CPU support has been tidied up and contains
about 50% less duplication in the build system.
About 580 pull requests with about 2,500 commits have been merged since the
last release and 120 additional issues have been solved. 62 people contributed
code in 278 days. 2578 files have been touched with ~320,000 insertions and
~134,000 deletions.
Loose notations used below:
============
+ means new feature/item
* means modified feature/item
- means removed feature/item
New features
============
General
-------
+ complete codebase now compiles with -Werror on all platforms
Device support
--------------
+ vastly improved hardware abstraction, unified over all devices
+ unified most common code
* complete refactoring of MSP430 and ARM7 code
Core
----
+ new timer subsystem: xtimer
+ extended atomic API by compare-and-swap, increase/decrease and
set-to-one/set-to-zero functions
+ introduced a more energy-saving assert macro
Network Stack
-------------
+ RFC compliant gnrc network stack (6LoWPAN, IPv6, UDP, RPL) major refactoring
+ 6LoWPAN ND (including SLAAC)
+ example applications working out of the box (gnrc_networking for the full
gnrc experience, gnrc_border_router for a 6LoWPAN border router, and default
for simple link layer connectivity)
+ explicit support for border router
+ auto-init for the network stack
+ introduction of generic interfaces (netdev, netapi)
+ introduction of a protocol-independent FIB
+ introduction of a central packet buffer
+ wireshark-supported protocol ZEP to send IEEE 802.15.4 frames over UDP on
non-IEEE-802.15.4 devices
+ support for SLIP and link-layers without addresses
+ new low-level driver model
+ new nativenet based directly on ethernet
+ conn: general stack-independent transport layer API
+ POSIX sockets ported for conn
+ NHDP support
Packages
--------
+ support for microCoAP
+ CMSIS DSP
Supported platforms
-------------------
Additional support for the following boards:
+ Zolertia ReMote
+ Atmel SAML21 Xplained Pro (saml21-xpro)
+ ST Nucleo L1
+ ST Nucleo F334
+ ST Nucleo F091
+ Phytec phyWAVE KW22
+ Eistec Mulle
+ Freescale Freedom FRDM-K64F
+ TI Stellaris Launchpad LM4F120
+ LimiFrog V1
+ Silabs EZR32WG
Drivers
-------
+ various peripheral drivers (ADC, UART, timer, SPI, I²C, RTC, RTT, DAC, PWM...)
+ basic NVRAM driver (interface)
Network drivers
+ native ethernet driver
+ ENCx24J600 ethernet driver
Sensors drivers
+ ISL29125 RGB light sensor
+ PDC8544 LCD display
+ INA220 current and power monitor
+ MPU-9150 9-DOF motion sensor
+ LIS3DH accelerometer
+ TMP006 temperature sensor
+ MAG3110 magnetometer
+ MMA8652 accelerometer
+ DHT11/DHT22 temperature-humidity sensor
+ ADT7310 temperature sensor
System libraries
----------------
+ MD5
+ Fletcher's checksum
+ Unified Cipher API and Block cipher operation modes: ECB, CBC, CTR and CCM
+ Bitfield operations
+ thread safe ringbuffer
+ vtimer compatibility layer
Build System
------------
+ support for the FIT IoT-LAB testbed by direct integration into the Make build
system
+ integrated Docker support
+ integration of llvm's clang static analyzer
+ added target for the address sanitizer
+ indicating possible feature conflicts at compile time
+ unified OpenOCD script
Changes
=======
Core
----
* improved documentation
* fixed several IPC message queue initializations
- removed hwtimer
Drivers
-------
* optimized/remodeled GPIO interface
* optimized/remodeled TIMER interface
- temporarily removed CC2420 driver (awaiting last bug fixes for a rewrite)
* re-implementation of the CC110x driver against the peripheral interface
Network Stack
-------------
* temporarily removed and currently being refactored:
- TCP support
- CCN-lite
- AODVv2
System libraries
----------------
* new high level UART/stdio interface
* better modularisation of POSIX wrapper modules
- removed skipjack crypto library
Packages
--------
* updated CMSIS HAL to version 4.3
Other
-----
* clean-up of deprecated system and network libraries
* clean-up of deprecated boards and drivers
Selected Issues Fixed since the Last Release
============================================
#21: Deal with stdin in bordermultiplex.c
A completely new border router implementation is in place
#715: test_hwtimer_wait fails on native
Fixed by @benoit-canet in #2870
#861: neighbor discovery for 6LoWPAN not working
GNRC implements 6LoWPAN ND in a RFC6775 compliant way
#1753: vtimer_msg test crashes after ~49'20" and
#1449: a removed vtimer might still get called back by hwtimer
vtimer has been replaced by xtimer which does not have these issues
#1870: IPv6 neighbor advertisements are malformed
According to Wireshark (and reference implementations) GNRC sends
well-formed neighbor advertisements
#1964 and #1955: eventual problems with IoT-LAB M3 nodes in the testbed
Solved by new driver versions for UART and radio
#2228: samd21 stack sizes are too small
The stacksize has been adapted in #2229
Known Issues
============
network related issues
----------------------
#3075: nhdp: unnecessary microsecond precision
NHDP works with timer values of microsecond precision which is not
required. Changing to lower precision would save some memory.
#3086: Max. packet length for AT86RF2XX
The size of the link-layer header is not dynamically calculated, but
instead the maximum# size is always assumed.
#3201: Odd length packet snips cause invalid check sum
If an odd length packet snip occurs in a packet and is not the last snip
(in the order the packet is supposed to be, not in the list's order) in a
packet it will generate a wrong check sum.
#4048: potential racey memory leak
According to the packet buffer stats, flood-pinging a multicast destination
may lead to a memory leak due to a race condition. However, it seems to be
a rare case and a completely filled up packet buffer was not observed.
native related issues
---------------------
#495: native not float safe
When the FPU is used when an asynchronous context switch occurs, either the
stack gets corrupted or a floating point exception occurs.
#499: native is segfaulting on heavy network usage
Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
#534: native debugging on osx fails
Using valgrind or gdb with a nativenet target in OSX leads to "the network"
being stuck (gdb) or the whole process being stuck (valgrind).
#3341 and #3824: nativenet crashes when hammered
Flood-pinging a native instance from more than one host (either multiple
threads on the host system or multiple other native instances), leads to a
SEGFAULT.
other platform related issues
-----------------------------
#2724: Add support for serial number passing to CMSIS boards, document it
Documentation about how to discover and set the serial number of CMSIS-DAP
chips is missing
other issues
------------
#2761: core: define default flags
If a thread is created without the corresponding flag (CREATE_STACKTEST),
the ps command will yield wrong numbers for the stack usage
#2927: core: Automatically select the lowest possible LPM mode
Not all available low power modes (LPMs) are implemented for each platform
and the concept of how the LPM is chosen need some reconsideration
#2967: Makefile.features: location is not relevant for all features
Provided features for the build system should be split up into a board and
cpu specific part
#3109: periph/random: random_read should return unsigned int
The documentation of this function does not match corresponding
implementation.
Special Thanks
--------------------
We like to give our special thanks to all the companies that provided us with
their hardware for porting and testing, namely the people from (in alphabetical
order): Atmel, Freescale, Limifrog, Phytec, SiLabs, and Zolertia; and also
companies that directly sponsored development time: Cisco Systems, Eistec,
Ell-i, FreshTemp LLC, and Phytec.
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
IRC
-----
* Join the RIOT IRC channel at: irc.freenode.net, #riot-os
License
=======
* Most of the code developed by the RIOT community is licensed under the GNU
Lesser General Public License (LGPL) version 2.1 as published by the Free
Software Foundation.
* Some external sources are published under a separate, LGPL compatible license
(e.g. some files developed by SICS).
All code files contain licensing information.
RIOT-2014.12 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: from 8-bit
microcontrollers to light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers partial POSIX
compliance).
New features
============
Core
----
+ introduced new thread_yield() and renamed the old implementation to thread_yield_higher()
Supported platforms
-------------------
Additional support for the following boards:
+ Arduino Mega 2560 (first-time support of an 8-bit platform)
+ HikoB Fox
+ Atmel samr21-Xplained Pro
+ OpenMote
+ cc2538 Developer Kit
+ Spark-Core
+ f4vi1
+ Airfy-Beacon
+ STMF0Discovery Board
+ STMF3Discovery Board
+ STMF4Discovery Board
+ nrf51822 Development Kit
+ yunjia-nrf51822
+ MSB-IoT
+ native on ARM platforms
Drivers
-------
+ various peripheral drivers (ADC, UART, timer, SPI, I²C, RTC, RTT, DAC, PWM...)
+ MQ-3 alcohol sensor
+ ISL29020 light sensor
+ LPS331AP pressure sensor
+ LSM303DLHC accelerometer
+ L3G4200D gyroscope
+ servo motor
+ TI HDC 1000 low power humidity and temperature digital sensor
+ SRF02/SRF08 ultrasonic range sensors
+ PIR motion sensor
+ RGB LED
Network Stack
---------------
+ AODVv2
+ RPL non-storing mode
+ OF manager for RPL
+ Source Routing Header support
+ introduced netapi
+ introduced netdev, a general interface for network device drivers
+ introduced global packet buffer
System libraries
----------------
+ CBOR
+ UBJSON
+ color module for PWM
Packages
--------
+ libfixmath
Other
-----
+ C++ support for most platforms
+ PCAP based wireless sniffer
Changes
=======
Core
----
* PIDs begin with 1
* mamximum 16 priority levels for every platform
* fixed sched_switch()
* simplified mutex signatures
* minimized size of TCB
* allow hwtimer to run with more than 1MHz
* imported ringbuffer from sys
Supported platforms
-------------------
* improved iotlab-m3 support
* major improvements on the mbed LPC1768
* improved at86rf231 radio driver
* fixed hwtimer for MSP430
* added support for timer B for MSP430
* fixed thread_yield() for MSP430
* several fixes for the cc2420
* improved interrupt handling on ARM
* adjusted stack sizes for Cortex platforms
Network Stack
---------------
* refactored CCN-lite
* refactored RPL
* renamed destiny to transport_layer and socket_base
* several fixes for TCP
* split UDP and TCP
System libraries
----------------
- removed hashtable implementation
Packages
--------
* updated and simplified OpenWSN
Other
-----
* Improved and cleaned up build system
* various new helper targets (like debug, distclean, reset, objdump...)
* use newlib's nano specs if available
* various new features and added Python 3 compatibility for pyterm
* major reduction of warnings in doxygen and improved html layout
Fixed Issues from the last release
==================================
#426: Interrupt handling on MSP430 is buggy
Several fixes by @rousselk
#1798: core: first thread on runqueue is scheduled twice
Was fixed along with the thread_yield() refactoring
#1127: Random build fails on OSX
native is building stable also on OSX now
Known Issues
============
network related issues
----------------------
#21: Deal with stdin in bordermultiplex.c
Not all supported platforms provide a stdin in the current release.
However, the implementation of the 6LoWPAN border router won't work
without stdin.
#861: neighbor discovery for 6LoWPAN not working
Duplicate address detection according to RFC 6775 is also missing.
#1577: ccn-lite: populate does not work with disabled cache
If cache is set to zero, the chunks cannot be loaded and therefore also not get populated.
#1870: IPv6 neighbor advertisements are malformed
According to Wireshark, ICMPv6 neighbor advertisements are malformed (wrong
checksum or other reasons).
native related issues
---------------------
#495: native not float safe
When the FPU is used when an asynchronous context switch occurs, either the
stack gets corrupted or a floating point exception occurs.
#499: native is segfaulting on heavy network usage
Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
#534: native debugging on osx fails
Using valgrind or gdb with a nativenet target in OSX leads to "the network"
being stuck (gdb) or the whole process being stuck (valgrind).
#715: test_hwtimer_wait fails on native
The problem appears to be lost signals and depends on the CPU speed.
#787: reboot not working with open file descriptors on native
If for example a tap device is in use, the reboot command fails.
#862: sometimes the tap bridge does not work in native
Sometimes (rather suddenly) packages are not received by a TAP and won't be
received even if I reconfigure the bridge.
other platform related issues
-----------------------------
#1232: x86 doesn't build on OS X with clang
Current version of the x86 port doesn't build for OS X with clang.
#1442: setting channel is not persistent cc2420
After changing the channel via a shell command, the channel reverts back to an arbitrary
value. However, this might be only a shell problem.
#1753: vtimer_msg test crashes after ~49'20"
dependent on the platform, vtimer stops working after some time.
#1891: printf formatting does not work properly on some Cortex platforms for 64 bit numbers
This problem happens mostly for the Newlib nano, which does not support 64 bit integer
printing, but sometimes happens also with other toolchains.
#1964 and #1955: eventual problems with IoT-LAB M3 nodes in the testbed
The shell is sometimes not properly working after a reboot and the PDR is sometimes
worse than expected.
#2143: tests.core doesn't compile for all platforms
For some missing GCC compiler builtins, the unittests do not compile for MSP430
platforms.
#2228: samd21 stack sizes are too small
The application examples/default for example will crash when issuing the txtsnd command
other issues:
--------------
#1449: a removed vtimer might still get called back by hwtimer
The timer callback might still fire even after vtimer_remove() was called.
#2175: valgrind registeres "Invalid write of size 4" in unittests for ubjson
According to valgrind the stack gets corrupted in UBJSON.
For all issues and open pull requests please check the RIOT issue tracker:
https://github.com/RIOT-OS/RIOT/issues
Special Thanks
--------------------
We like to give our special thanks to all the companies that provided us with their hardware for porting and testing, namely the people from (in alphabetical order): airfy, Atmel, ELL-i, Intel, IoT-Lab, mbed, Phytec, and Udoo
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
License
=======
* All sources and binaries that have been developed at Freie Universität Berlin
and most of the other code are licensed under the GNU Lesser General Public
License version 2 as published by the Free Software Foundation.
* Some external sources, especially files developed by SICS are published under
a separate license.
All code files contain licensing information.
RIOT-2014.05 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: from 16-bit
microcontrollers to light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers partial POSIX
compliance).
New features
============
Core
----
+ introduced explicit core/cpu interface through a set of header files
+ added reboot and panic functions
+ added a node name to the sysconfig struct
+ added the ability to send a message to the current thread's message queue
Supported platforms
-------------------
Additional support for the following boards:
+ Arduino Due
+ UDOO board
+ X86 via qemu
+ Zolertia Z1
Network stack
-------------
+ added net_if as abstraction layer between transceiver module and L3 protocol
+ added support for auto initializing of the 6LoWPAN network stack
+ added support for RFC5444 via oonf_api (from OLSR.org)
+ added a Wireshark dissector for nativenet packets
+ introduced low-level radio driver interface
+ added a default transceiver for all boards
+ common IEEE 802.15.4 radio driver API definition
+ added standard way to query CCA (Clear Channel Assessment) status
+ enabled nonces in interests for CCN-lite (Content Centric Networking)
+ added a route shell command
System libraries
----------------
+ added quad-precision math library (quad_math)
Automated Testing
-----------------
+ added Travis CI based build tests
+ added support for a Jenkins CI server
+ added a unittest framework (based on embunit)
+ added unittests for most core functions
POSIX compliance
----------------
+ pthread support including
+ dynamic memory pool and cleanup handlers
+ mutexes
+ condition variable implementation
+ reader/writer lock
+ pthread_barrier_* functions
Native
------
+ added a valgrind and cachegrind targets
+ added profiling support
Changes
=======
Core
----
* initialize hwtimer automatically
* optimized thread status field usage
* moved oneway_malloc to sys
* prefixed API functions correctly
Network stack
-------------
* major refactoring and decoupling
* refactor use of vtimer
* fixed forwarding
* added IoT-LAB M3 Open Node support and dropped TelosB support temporarily for OpenWSN
* moved ETX beaconing to a module on its own
* various byte order and other bug fixes
Drivers
-------
* added low-level driver interface for unified CPU peripheral abstraction for
GPIO, ADC, PWM, Timer and UART
* handle race conditions preventing timers to be set correctly on MSP430 MCUs
* several CC2420 fixes
System libraries
----------------
* auto_init is used by default
* changed function prototype for shell handlers
Other
-----
* cleaned up Makefile system and simplified binary directory
* improved documentation for core and sys
* build system uses PKG dependency
* build system sets include paths automatically
* black and white lists for applications and tests
* add stacksize checker for DEBUG macro
* styling corrections
* fixed license boiler plates
* set lpc2k_pgm return value correctly
* various bug fixes and cleanups
Fixed Issues from the last release
==================================
#45: bit field order in the fcf may be wrong
The CC2420 FIFO expects the IEEE802.15.4 FCF field in reversed bit order.
With this release the byte order is now handled by the net_if module and
all device specific handling is done by the driver.
#82: Setting STATUS_REPLY_BLOCKED thread to STATUS_PENDING though it is not
handled yet
In some rare cases the status of a thread might falsely change to
STATUS_PENDING instead of STATUS_REPLY_BLOCKED.
#455: sha256 is broken on MSP430
Fixed.
#498: native is segfaulting at startup
Fixed by several PRs (#501, #583, and #588).
#505: native on FreeBSD is broken
Fixed by PR #1022.
Known Issues
============
network related issues
----------------------
#21: Deal with stdin in bordermultiplex.c
Not all supported platforms provide a stdin in the current release.
However, the implementation of the 6LoWPAN border router won't work
without stdin.
#861: neighbor discovery for 6LoWPAN not working
Duplicate address detection according to RFC 6775 is also missing.
native related issues
---------------------
#495: native not float safe
When the FPU is used when an asynchronous context switch occurs, either the
stack gets corrupted or a floating point exception occurs.
#499: native is segfaulting on heavy network usage
Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
#534: native debugging on osx fails
Using valgrind or gdb with a nativenet target in OSX leads to "the network"
being stuck (gdb) or the whole process being stuck (valgrind).
#715: test_hwtimer_wait fails on native
The problem appears to be lost signals and depends on the CPU speed.
#787: reboot not working with open file descriptors on native
If for example a tap device is in use, the reboot command fails.
#862: sometimes the tap bridge does not work in native
Sometimes (rather suddenly) packages are not received by a TAP and won't be
received even if I reconfigure the bridge.
#1127: Random build fails on OSX
Building for native on OSX often fails - Workaround: build using -B flag,
e.g.: make -B clean all
other platform related issues
-----------------------------
#426: Interrupt handling on MSP430 is buggy
UART and timer handling is currently unstable on MSP430 based platforms
#1232: x86 doesn't build on OS X with clang
Current version of the x86 port doesn't build for OS X with clang.
For all issues and open pull requests please check the RIOT issue tracker:
https://github.com/RIOT-OS/RIOT/issues
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
License
=======
* All sources and binaries that have been developed at Freie Universität Berlin
and most of the other code are licensed under the GNU Lesser General Public
License version 2 as published by the Free Software Foundation.
* Some external sources, especially files developed by SICS are published under
a separate license.
All code files contain licensing information.
RIOT-2014.01 - Release Notes
============================
RIOT is a real-time multi-threading operating system that supports a range of
devices that are typically found in the Internet of Things: from 16-bit
microcontrollers to light-weight 32-bit processors.
RIOT is based on the following design principles: energy-efficiency, real-time
capabilities, small memory footprint, modularity, and uniform API access,
independent of the underlying hardware (this API offers partial POSIX
compliance).
New features
============
Core
----
+ msg_receive() with timeout
+ LPM support for MSP430 based platforms
+ introduced a version string
Supported platforms
-------------------
Additional support for the following boards:
+ TelosB
+ mbed LPC1768
Sensor drivers
---------------
+ drivers for the LM75A Digital temperature sensor and thermal watchdog
+ SRF02 and SRF08 ultrasonic range finders
Native port
-----------
+ implemented UART via I/O redirection or TCP and UNIX socket
System libraries
----------------
+ Mersenne twister pseudorandom number generator
+ crypto libraries
+ 3des
+ aes
+ rc5
+ skipjack
+ twofish
+ BSD-like package system for easy integration of external libraries
Network stack
-------------
+ port of CCN lite
+ POSIX socket wrapper
+ integration of libcoap
+ integration of OpenWSN
Further Changes
===============
* boards and projects repositories have been integrated and are now part of
the RIOT repository itself
* full refactoring of the network stack and introducing a substructure
according to the modules' functionalities
* cleaned up Makefile system and simplified binary directory
* more documentation
* various bug fixes and cleanups
Fixed Issues from the last release
==================================
#45: bit field order in the fcf may be wrong
The CC2420 FIFO expects the IEEE802.15.4 FCF field in reversed bit order.
With this release the byte order is now handled by the net_if module and
all device specific handling is done by the driver.
#82: Setting STATUS_REPLY_BLOCKED thread to STATUS_PENDING though it is not
handled yet
Pull Request #569 fixed this bug by checking for STATUS_REPLY_BLOCKED in
msg_receive().
#455: sha256 is broken on MSP430
The problem was caused
Known Issues
============
#21: Deal with stdin in bordermultiplex.c
Not all supported platforms provide a stdin in the current release.
However, the implementation of the 6LoWPAN border router won't work
without stdin.
#426: Interrupt handling on MSP430 is buggy
UART and timer handling is still unstable on MSP430 based platforms.
#495: native not float safe
When the FPU is used when an asynchronous context switch occurs, either the
stack gets corrupted or a floating point exception occurs.
#498: native is segfaulting at startup
In some cases (about 5-10%) a RIOT native process crashes with a SEGFAULT
at startup.
#499: native is segfaulting on heavy network usage
Sending more than 100 packets per second causes a SEGFAULT in RIOT native.
#505: native on FreeBSD is broken
Due to different parameter handling in FreeBSD, native is currently not
working there.
For all issues and open pull requests please check the RIOT issue tracker:
https://github.com/RIOT-OS/RIOT/issues
Release 2013.08
===============
Kernel
------
- Microkernel with a powerful messaging system
- Multi-Threading with low overhead
- an energy-efficient, real-time capable scheduler
- small memory footprint
Userspace
---------
- 6LoWPAN according to RFC 4944, RFC 6282, and RFC 6775
- TCP and UDP
- RPL according to RFC 6550 and RFC 6719
- High resolution and long-term timers
- POSIX IO and BSD socket API
- Bloom filter
- SHA256
Hardware Support
----------------
- various ARM and MSP430 MCUs
* ARM7 NXP LPC2387
* TI MSP430F1612
* TI CC430F6137
* ARM7 Freescale MC13224v (preliminary)
* ARM Cortex-M4 STM32f407vgt6 (preliminary)
* ARM Cortex-M3 STM32f103rey6 (preliminary)
- radio drivers
* TI CC1100 and CC1101
* TI CC2420
* Atmel AT86RF231
- sensor drivers
* Sensirion SHT11
* Linear Technology LT4150
More information
================
http://www.riot-os.org
Mailing lists
-------------
* RIOT OS kernel developers list
* devel@riot-os.org (http://lists.riot-os.org/mailman/listinfo/devel)
* RIOT OS users list
* users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)
* RIOT commits
* commits@riot-os.org (http://lists.riot-os.org/mailman/listinfo/commits)
* Github notifications
* notifications@riot-os.org (http://lists.riot-os.org/mailman/listinfo/notifications)
License
=======
* All sources and binaries that have been developed at Freie Universität Berlin are
licensed under the GNU Lesser General Public License version 2 as published by the
Free Software Foundation.
* Some external sources, especially files developed by SICS are published under
a separate license.
All code files contain licensing information.