Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

README.md: update features #18777

Merged
merged 1 commit into from
Oct 27, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,25 +55,32 @@ LGPL code.

## FEATURES

RIOT is based on a microkernel architecture, and provides features including,
but not limited to:
Comment on lines -58 to -59
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This may be a bit controversial. But I 100% agree that RIOT-OS is not and never has been using a micro kernel architecture.

I recall that Andrew Tanenbaum gave a relatively lax interpretation of what a microkernel architecture is. The absence of any MMU / MPU like feature, according to him, doesn't rule out that an OS does check the box of a microkernel architecture. If I recall correctly, he said that MINIX was developed initially on pre-MMU systems with the anticipation of an MMU, so that making use of the MMU to actually provide the benefits of a microkernel architecture was relatively easy.

However, we with RIOT are now in a situation that MPUs are there. Still, the effort to make use of it in a microkernel point of view (or even in a userspace vs kernelspace point of view) is still significant. To me, this is a good indicator that RIOT is not using a microkernel architecture, even with the relatively lax point of view that actual use of MMU (or MPU) is not needed for the claim.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess we all agree this qualification is not 100% fitting, but after all these years, and after pitching it here & there (including to top experts such as Tanenbaum as recalled by @maribu) it seems it remains the best "single term" description for the arch. For a longer explanation (which does not really belong right here) we could maybe open a separate wikipage / doc entry on this, what do you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What makes you think the arch is a microkernel? Having a hand-wavy explanation to claim something that is not true does not build trust. How would you react to a car salesman selling you an electric¹ car?

[1] lead acid battery used to start the internal combustion engine

RIOT provides features including, but not limited to:

* a preemptive, tickless scheduler with priorities
* flexible memory management
* high resolution, long-term timers
* support 100+ boards based on AVR, MSP430, ESP8266, ESP32, RISC-V,
* MTD abstraction layer
* File System integration
* support 200+ boards based on AVR, MSP430, ESP8266, ESP32, RISC-V,
ARM7 and ARM Cortex-M
* the native port allows to run RIOT as-is on Linux and BSD. Multiple
instances of RIOT running on a single machine can also be interconnected via
a simple virtual Ethernet bridge
* the native port allows to run RIOT as-is on Linux and BSD.
Multiple instances of RIOT running on a single machine can also be
interconnected via a simple virtual Ethernet bridge or via a simulated
IEEE 802.15.4 network (ZEP)
* IPv6
* 6LoWPAN (RFC4944, RFC6282, and RFC6775)
* UDP
* RPL (storing mode, P2P mode)
* CoAP
* OTA updates via SUIT
* MQTT
* USB (device mode)
* Display / Touchscreen support
* CCN-Lite
* Sigfox
* LoRaWAN
* UWB
* Bluetooth (BLE) via [NimBLE](https://github.com/apache/mynewt-nimble)

## GETTING RIOT

Expand Down