mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
7710 lines
309 KiB
Plaintext
7710 lines
309 KiB
Plaintext
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.
|