MyGit

2021.10

RIOT-OS/RIOT

版本发布时间: 2021-10-28 20:48:43

RIOT-OS/RIOT最新发布版本:2024.10(2024-11-30 04:59:58)

RIOT-2021.10 - Release Notes

RIOT is a multi-threading operating system which enables soft real-time capabilities and comes with support for a range of devices that are typically found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as light-weight 32-bit processors.

RIOT is based on the following design principles: energy-efficiency, softreal-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (with partial POSIX compliance).

RIOT is developed by an international open-source community which is independent of specific vendors (e.g. similarly to the Linux community) and is licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect business models around the free open-source software platform provided by RIOT.

About this release

The 2021.10 release includes:

The last three months again brought many new features, fixes and improvements to the RIOT codebase. There is new hardware support, new helper functions and many new modules that help with building IoT applications.

Some of the new features are:

GCOAP DTLS (#15549)

The GCOAP CoAP library now supports transport encryption via tinyDTLS. This is a compile-time toggle, so either all requests are encrypted or none. There is already a PR (#16688) that will allow to mix encrypted and unencrypted requests.

FIDO2 support (#16489)

We now have an implementation of the Fast Identity Online 2 (FIDO2) specification. With this you can use any RIOT device with USB support as an authentication token similar to the YubiKey.

RPL-over-BLE (#16364)

The 6LoWPAN over Bluetooth Low Energy module has gained support for the RPL routing protocol. With this it's now possible to set up IPv6 based mesh networks over BLE on chips supported by the Nimble Bluetooth stack.

GNRC TCP (#16494)

RIOT's native GNRC network stack now has support for the TCP protocol via the socket API. Now you can switch between LWIP and GNRC without changing your application.

DHCPv6 relay agent (#16606)

The DHCP module can now act as a relay, forwarding DHCPv6 requests for multihop-operation.

DHCPv6 IA_NA support (#16228)

The DHCPv6 client can now also request non-temporary addresses as an alternative to Stateless Access Autoconfiguration (SLAAC) that is used by default. The feature can be enabled by selecting the dhcpv6_client_ia_na module.

gnrc_ipv6_auto_subnets (#16536, #16750)

This new module allows to split a large IPv6 prefix into smaller ones that can be used to configure downstream interfaces with a prefix. The process can be repeated recursively for a cascading subnet topology.

This can be a lightweight alternative to DHCPv6 that only relies on router advertisements.

For more details on this, see the talk at the 2021 RIOT summit.

UDP benchmark (#16710)

The examples section has gained a UDP benchmark. This can be used as a network stress test and is accompanied by a host tool (dist/tools/benchmark_udp) that acts as the benchmark server to which the benchmark clients will connect.

URI template processor (#16702)

URI templates up to level 3 (according to RFC 6570) can now be parsed with this tool.

riotboot serial flasher (#15493)

RIOT's native bootloader has gained the ability to load a firmware via UART. This allows to program a board without the need for external programmers, a serial console is enough.

RTC mem for sam0 and STM32 (#16758)

Many real-time clocks have the ability to store a few bytes in their memory as user data. This memory is retained across reboots and deep sleep.

We now have an interface for this feature and implemented it on SAM L21, SAM D5x/E5x and STM32.

LWIP improvements (#16162, #16761, #16636, #16762)

The alternative LWIP network stack can now make use of multiple interfaces. Initialisation is done using the new XFA (cross-file array) feature so new drivers can be added by only adding a single file.

Advanced topologies in ZEP dispatcher (#15773)

With socket_zep and the ZEP dispatcher it is possible to simulate a virtual IEEE 802.15.4 network with native nodes. ZEP dispatcher has now gained support for lossy connections that make this simulation behave closer to reality.

There are also PRs pending to automatically generate such topologies (#16889) and to hook up the ZEP dispatcher to the foren6 network visualizer (#16879).

RIOT_VERSION_CODE macro (#16765)

We have added a RIOT_VERSION_CODE macro that can be used by external modules / boards to check against which RIOT version it is compiled.

This allows to react to API changes if the module is built against different versions of RIOT.

gnrc_netif_ipv6_wait_for_global_address() (#16824)

For apps that want to connect to a remote server, send some data and then go back to sleep, there is now the new gnrc_netif_ipv6_wait_for_global_address() function.

This function blocks until a global address has been configured (e.g. via router advertisement) or a timeout happens. So no more guessing if a connection can yet be established or if the interface is not configured yet.

This feature depends on the gnrc_netif_bus module.

netutils_get_ipv6() (#16634)

This simple function can parse a IPv6 address from a string. But that's not all - if the sock_dns module is enabled, the string can also be a hostname which will then be resolved.

This provides a small and simple alternative to getaddrinfo() that can be used by shell commands and applications alike.

gnrc_icmpv6_echo corruption detection (#15622)

On Linux the ping command from iputils has the neat feature that it fills the payload with of the ICMP echo request with a pattern that is then echoed back by the receiver.

That means it can detect if the payload got corrupted on the way, e.g. by broken fragmentation or other errors.

The RIOT ping command now also implements this feature that lets you easily detect if something broke along the way.

New Hardware Support

In this cycle we have seen the addition of three new MCU families! Our latest additions are the Raspberry Pi RP2040 (#16609) and the GD32VF103 RISC-V MCU from GigaDevice (#16036).

Both only have very basic support so far (only GPIO, UART and timers), which still leaves many low hanging fruits for adding peripheral drivers. (#15822, #16935) Patches welcome!

The nRF9160 is closer to it's nRF52 siblings (#16650), but brings GPS and LTE-M/NB-IoT peripherals. While we are not there yet, there is ongoing work to also support these in RIOT.

The ATxmega family of 8-bit MCUs can now make use of the EBI interface to use external memory. (#16288) The new XMEGA-A1 Xplained already makes use of this feature. (#15758)

On the STM32 side we have now support for the nucleo-wl55jc and it's LoRa transceiver. The IEEE 802.15.4 / BLE radio on the STM32WB family is however still waiting for a driver.

The common LM75 family of temperature drivers is now supported by RIOT. (#16678)

The Ethernet driver for the SAM E5x line of MCUs is now stable. (#16683)

The sub-MAC layer that implements common MAC features for IEEE 802.15.4 radios has again seen many improvements. It is currently used by the nRF52 and CC2538 line of MCUs.

API changes

The spi_acquire() no longer returns an error code but will throw an assertion if called with the wrong parameters. This allows to speed up SPI operations a bit as SPI parameters are usually fixed at compile time.

The gnrc_netdev_default was replaced by the network stack agnostic netdev_default module.

For now gnrc_netdev_default remains an alias for netdev_default, but it will be removed in a future release.

Summary

263 pull requests, composed of 590 commits, have been merged since the last release, and 14 issues have been solved. 36 people contributed with code in 98 days. 1756 files have been touched with 138909 (+) insertions and 12027 deletions (-).

Notations used below

+ means new feature/item
* means modified feature/item
- means removed feature/item

New features and changes

Core (3)

System Libraries (12)

Networking (49)

Packages (8)

Boards (19)

CPU (27)

Device Drivers (7)

Documentation (9)

Build System / Tooling (8)

Kconfig (5)

Examples (3)

Testing (10)

API Changes (5)

Uncategorized (3)

And 63 minor changes.

Deprecations

Deprecations (1)

Bug fixes (32)

Known issues

Network related issues (52)

Timer related issues (15)

Drivers related issues (17)

Native related issues (6)

Other platforms related issues (23)

Build system related issues (15)

Other issues (45)

There are 173 known issues in this release

Fixed Issues since the last release (2021.07)

14 fixed issues since last release (2021.07)

Acknowledgements

We would like to thank all companies that provided us with hardware for porting and testing RIOT-OS. Further thanks go to companies and institutions that directly sponsored development time. And finally, big thanks to all of you contributing in so many different ways to make RIOT worthwhile!

More information

http://www.riot-os.org

IRC, Matrix and Forum

License

All code files contain licensing information.

相关地址:原始地址 下载(tar) 下载(zip)

查看:2021-10-28发行的版本