-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
README.md: improve feature list #21059
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -57,30 +57,50 @@ LGPL code. | |||||||||||
|
||||||||||||
RIOT provides features including, but not limited to: | ||||||||||||
|
||||||||||||
* a preemptive, tickless scheduler with priorities | ||||||||||||
* flexible memory management | ||||||||||||
* high resolution, long-term timers | ||||||||||||
* 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 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 | ||||||||||||
* LoRaWAN | ||||||||||||
* UWB | ||||||||||||
* Bluetooth (BLE) via [NimBLE](https://github.com/apache/mynewt-nimble) | ||||||||||||
* Platforms Supported | ||||||||||||
- 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 or via a simulated | ||||||||||||
IEEE 802.15.4 network (ZEP) | ||||||||||||
|
||||||||||||
* Programming Environment | ||||||||||||
- Write native code in C, C++, or Rust | ||||||||||||
- Rely upon POSIX APIs, user friendly hardware abstractions, and standard embedded Rust interfaces | ||||||||||||
- Integrate dynamic runtimes such as MicroPython, elm (JavaScript), and WASM | ||||||||||||
|
||||||||||||
* Network Features and Protocols | ||||||||||||
- IPv6 | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. and IPv4 via LWIP There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. just a nit, they usually spell themself lwIP |
||||||||||||
- 6LoWPAN (RFC4944, RFC6282, and RFC6775) | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would also add RFC7668 here. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
- UDP | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. and TCP There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
i think there was some session limit(s) (good by and only one ?) -- @maribu had a recent look into |
||||||||||||
- RPL (storing mode, P2P mode) | ||||||||||||
- CoAP | ||||||||||||
- MQTT | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. via paho-mqtt and MQTT-SN There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Other application layer protocols (from the top of my head: DNS and DHCPv6) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. i think the dns and dhcp might need another place closer to RPL |
||||||||||||
- Bluetooth (BLE) via [NimBLE](https://github.com/apache/mynewt-nimble) | ||||||||||||
- LoRaWAN | ||||||||||||
- UWB | ||||||||||||
- CNN-Lite | ||||||||||||
- LwIP | ||||||||||||
- Dose (single pair ethernet like networking on serial interface UART) | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Feels a bit strange to mention this and not Ethernet/IEEE 802.15.4/SLIP There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
* System Features | ||||||||||||
- a preemptive, tickless scheduler with priorities | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. with option to do tick-based round-robin scheduling There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we might need a linebreak here to preserve the orginal line |
||||||||||||
- flexible memory management | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Which memory management are we referring to here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. probably the one that does not force you to have a heap available but can use it if you need it -- my guess There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. let's not add things that we are not sure what they mean ourself 😅 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It is, as of now, the 2nd most prominent feature in the list. I also don't know what is meant by that and I do agree that it should be dropped if nobody can explain it. But maybe There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This line was introduced with the README.md 29.12.12 @784ef523900f3b0942c43099f57621b30f6cab73 - it is in it current form the the second oldest line in this file predated only by (due to a typo fix) -- if the git history wasn't manipulated. nur
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. if i did not misread tlsf-malloc replaces malloc if that pkg is used, so it has not to used explicitly -- ( the pool needs to be before the first allocation-call happens) According to the initial paper it has:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
that's what any sane malloc implementation would do,
I think this is a pretty niche feature, no need to advertise it so prominently There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The main reason to add TLSF in the first place was its real-time capability (because of O(1)). There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I never checked where riot places the main/start stack in relation to the heap and it has a more sane placement than i thought - somehow had the default stackplacement of avrlibc in my head(endless stack and endless heap until they crash): thank you for that hint. that only leaves the O(1) thing for tlsf There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I still think allowing the allocator to be modified is quiet flexible but maybe this is not our feature but one of new/piolib(c)
Suggested change
|
||||||||||||
- high resolution, long-term timers | ||||||||||||
- MTD abstraction layer for memory devices | ||||||||||||
- File System integration | ||||||||||||
|
||||||||||||
* Security Features | ||||||||||||
- OTA updates via SUIT | ||||||||||||
- PSA Cryptographic API | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I am all in to show the PSA here, but the module still says "This implementation is not complete and not yet thoroughly tested. Please do not use this module in production, as it may introduce security issues." |
||||||||||||
- DTLS, EDHOC | ||||||||||||
|
||||||||||||
* Device Drivers | ||||||||||||
- SPI, I2C, UART, USB | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. CAN should also be mentioned here, maybe also RTC, ADC, DAC There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. PWM |
||||||||||||
- Various sensors: Environmental sensors, IMUs, magnetometers, particulate matter sensors | ||||||||||||
- Various actuators: Servos, motors, dimmers, switches, RGB LEDs | ||||||||||||
- Displays and touchscreens | ||||||||||||
- GNSS modules | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We don't have any of those GNSS drivers upstream AFAIK There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Isn't the minmea package sufficient to use GNSS modules? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. on the most basic level yes, but then you could also argue that the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. minmea is more like gnss (nema) meassage interpreter without in depth module support so how about:
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @benpicco How about ⬆️ instead of There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. But I do get @benpicco's point. When we add GNSS, why not also add basic support. Color me convinced that GNSS is not a strong suit of RIOT and is better not listed on the front page. |
||||||||||||
|
||||||||||||
## Getting RIOT | ||||||||||||
|
||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This section could also contain LwM2M and CAN