MyGit

2022.10

RIOT-OS/RIOT

版本发布时间: 2022-12-02 23:31:28

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

RIOT-2022.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 2022.10 release includes, among many many bug fixes and improvements, the following prominent contributions:

Security Fixes

The GNRC network stack has received a number of security fixes. All users of GNRC are advised to update to the new release. Given that no user facing breaking API changes are included, we are hopeful that the update is painless and quickly possible.

ESP32 family

RIOT has been ported to the ESP32-C3, ESP32-S2, and the ESP32-S3 MCUs. In addition driver support for the integrated BLE transceiver of the ESP32 MCUs has been added.

Major CI Upgrade

While the CI is developed in an independent repository, it is still a noteworthy change that our CI software, Murdock, was updated since the last release. In addition to changes under the hood the web front end got a major revamp. You will directly notice the improvements in page load time and clarity/structure of the interface. If you haven't already, please check out https://ci.riot-os.org to take a look.

Support for Priority Inheritance in core_mutex

If a shared resource guarded by a mutex is used by a high priority and a low priority thread, the high priority thread may end up waiting on the low priority thread to return the resource. If medium priority threads now interrupt the low priority thread while working with the shared resource, the high priority thread ends up waiting on both medium and low priority threads. This effect is called priority inversion.

Priority inversion can in most cases be solved by carefully assigning priorities and resources. In some cases however, this cannot be avoided: Let's consider a scenario in which an I2C temperature sensor and an I2C IMU are used. Since temperature changes are slow in frequency, the temperature readings are assigned the lowest priority, while the IMU readings are assigned the highest priority. The sensible approach here is to have both sensors on distinct I2C buses. However, if e.g. only a single I2C bus is available by the hardware priority inversion cannot be prevented by careful resource and priority assignment alone. In these cases the module core_mutex_priority_inheritance can be used to lend the low priority thread the priority of the high priority thread while the high priority thread is waiting for the mutex hold by the low priority thread.

After RIOT has already been launched into space it is now ready to for Mars.

USB Support for STM32F1 MCUs

While RIOT has longstanding USB support for many STM32 MCU families, the F1 family was not supported due to some peculiarities in the memory layout. The driver has now been extended to handle them correctly. With this, the popular STM32F103 bluepill board now supports stdio via USB, which however still has to be manually enabled e.g. by:

USEMODULE=stdio_cdc_acm BOARD=bluepill make -C examples/default

Support for podman

Just add an export DOCKER=podman to your ~/.profile (or ~/.bashrc, or ...) and an make BUILD_IN_DOCKER=1 will use podman instead of docker to run the RIOT build container. Two major advantages of using podman over docker is the support of rootless containers and not depending on a central background daemon.

Support for Sharing nRF52 combined I2C/SPI Peripherals

The nRF52 MCUs have a limited number of combined I2C/SPI peripherals. Previously, each such peripheral could either provide a single I2C or a single SPI bus. A board configuration that used the same combined peripheral to provide both an SPI and an I2C bus previously resulted in bad surprises at run-time.

The I2C/SPI drivers have now been reworked so that they can be shared in round-robin fashion between multiple I2C and SPI buses. This is especially useful for the upcoming support of the Bangle.js 2 watch that uses more I2C buses than combined I2C/SPI peripherals available on the used nRF52840 MCU. Thanks to the sharing of peripherals, all I2C buses can now be provided by a single peripheral.

Support for GCC 12.2.0

Many fixes for compilation and runtime issues that only started to surface with GCC 12.2.0 have been fixed. This allows our users to confidentially choose the current release with little to no fear that toolchain updates in the near future will break the precious projects. In addition, we hope that the next CI update will also cause less friction.

Release Statistics

312 pull requests, composed of 819 commits, have been merged since the last release, and 29 issues have been solved. 47 people contributed with code in 84 days. 1799 files have been touched with 56827 (+) insertions and 108634 deletions (-).

Notations used below

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

New features and changes

Core

System Libraries

Networking

Packages

Boards

CPU

Device Drivers

Documentation

Build System / Tooling

Kconfig

Examples

Testing

API Changes

Uncategorized

And 40 minor changes.

Deprecations

Bug fixes (107)

Known issues

Network related issues (53)

Timer related issues (9)

Drivers related issues (16)

Native related issues (6)

Other platforms related issues (17)

Build system related issues (11)

Other issues (49)

There are 161 known issues in this release

Fixed Issues since the last release (2022.07)

29 fixed issues since last release (2022.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

Matrix and Forum

License

All code files contain licensing information.

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

查看:2022-12-02发行的版本