NuttX
NuttX | |
---|---|
![]() | |
Entwickler | Gregory Nutt |
Lizenz(en) | Apache-Lizenz 2.0 |
Akt. Version | 12.5.1[1] vom 15. April 2024 |
nuttx.apache.org |
NuttX ist ein Echtzeitbetriebssystem (RTOS) mit Schwerpunkt auf der Einhaltung von technischen Standards und geringer Größe, skalierbar für 8-bit- bis 64-bit-Mikrocontroller-Umgebungen.[2] Die wichtigsten Standards in NuttX stammen aus dem Portable Operating System Interface (POSIX) und dem American National Standards Institute (ANSI). Weitere Standard-Anwendungsprogrammierschnittstellen (APIs) von Unix und anderen gängigen RTOS (z. B. VxWorks) werden für Funktionen übernommen, die unter diesen Standards nicht verfügbar sind oder für tief eingebettete Umgebungen ungeeignet sind, wie z. B. fork.[2]
NuttX wurde erstmals 2007 von Gregory Nutt als freie und quelloffene Software unter der permissiven BSD-Lizenz veröffentlicht. Seit Dezember 2019 befindet es sich in der Inkubation bei der Apache Software Foundation.[3]
Implementierung
[Bearbeiten | Quelltext bearbeiten]NuttX ist fast ausschließlich in der Programmiersprache C geschrieben und verwendet Kconfig zur Konfiguration und Generierung von GNU makefiles für das System. Die Programmdistribution kombiniert den Kernel und eine beträchtliche Menge an Middleware und Code für Board-Unterstützung und Gerätetreiber. Der Kernel und ein Großteil des anderen Codes wurde vom ursprünglichen Autor Gregory Nutt geschrieben.
Hauptmerkmale
[Bearbeiten | Quelltext bearbeiten]Die Hauptcharakteristika von NuttX sind:[2]
- Standardkonformität
- Task-Verwaltung
- Kern-Task-Verwaltung
- Prozesse (optional)
- POSIX/ANSI-ähnliche Task-Steuerung
- Modularer Aufbau
- Präemptives Multitasking
- Skalierbarkeit
- Hochgradig konfigurierbar
- Leicht erweiterbar auf neue Prozessorarchitekturen, SoC-Architekturen oder Board-Architekturen
- Scheduler: FIFO, Round Robin
- Deterministisches Echtzeitverhalten, mit Unterstützung für Prioritätsvererbung
- Tickless-Betrieb
- Interprozesskommunikation (IPC): benannte Message Queues, Semaphore, Signale, Clocks/Zeitgeber, Umgebungsvariablen
- POSIX-Threads (pthreads)
- Mehrere Dateisysteme
- VxWorks-ähnliche Taskverwaltung und Watchdog-Timer
- BSD-Socket-Schnittstelle
- Erweiterungen zur Verwaltung von Präemption
- Symmetrisches Multiprozessorsystem (SMP)
- Zuladbare Kernel-Module
- Speicherkonfigurationen
- flach eingebetteter Build
- geschützter Build mit MPU
- Kernel-Build mit MMU
- Speicherallokatoren
- Standard-Heap-Speicherzuweisung
- Granulat-Allokator
- Shared Memory
- dynamisch dimensionierte Heaps pro Prozess
- Thread-lokaler Speicher (TLS)
- Vererbbare Steuerterminals, Pseudoterminals (PTY) und Input/Output (I/O)-Umleitung
- On-demand paging
- Systemprotokollierung
- Eingebaute CPU-Lastmessungen pro Thread
- Benutzerdefinierte NuttX-C-Standard-Bibliothek
Unterstützte Plattformen
[Bearbeiten | Quelltext bearbeiten]Die NuttX-Website listet alle unterstützten Plattformen nach Prozessorarchitektur sowie nach Hersteller/Mikrocontrollerfamilie auf.[4] Zu den unterstützten Prozessorarchitekturen zählen:
- Arm
- ARM7TDMI
- ARM920T
- ARM926EJS
- Arm Cortex-A5/8/9
- Arm Cortex-R
- Arm Cortex-M0/3/4/7
- Microchip AVR (8-bit) und Atmel AVR32
- Freescale M68HCS12
- Intel 80x86
- Microchip Technology PIC32
- Misoc
- OpenRISC
- Renesas/Hitachi
- RISC-V
- Xtensa LX6
- Zilog
Projekte, die NuttX verwenden
[Bearbeiten | Quelltext bearbeiten]- Die Thingsee IoT-Gateway-Geräte von Haltian verwenden das Betriebssystem ThingseeOS, das auf NuttX basiert.[5]
- Der PX4-Autopilot nutzt NuttX zur Steuerung einer Vielzahl autonomer Plattformen.[6]
- Biffer Board unterstützt viele RTOSs, darunter NuttX.[7]
- MP3-Player implementiert mit NuttX[8]
- OsmocomBB nutzt NuttX, um ein Betriebssystem für Handys zu entwickeln[9]
- Ein selbstentwickeltes Steer-by-Wire-System, das mit NuttX implementiert wurde[10]
- Das Motorola Moto Mods Development-Kit basiert auf NuttX.[11]
- Sony verwendet NuttX in seinen Audioprozessoren[12]
- Samsungs Tizen RT basiert auf NuttX[13]
- Xiaomi lancierte im November 2020 die IoT-Software-Plattform Xiaomi Vela, die auf NuttX basiert.[14]
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Release 12.5.1. 15. April 2024 (abgerufen am 23. April 2024).
- ↑ a b c About Apache NuttX. In: nuttx.apache.org. Abgerufen am 24. August 2021.
- ↑ Apache NuttX (Incubating). incubator.apache.org, archiviert vom (nicht mehr online verfügbar) am 29. April 2021; abgerufen am 29. April 2021. Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ Supported Platforms. In: nuttx.apache.org. Archiviert vom (nicht mehr online verfügbar) am 28. Juli 2022; abgerufen am 24. August 2021. Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ Thingsee Devices. Abgerufen am 25. August 2021.
- ↑ Autopilot PX4. Abgerufen am 25. August 2021.
- ↑ Bifferboard. Abgerufen am 22. November 2012.
- ↑ Nuttx spielt MP3 in Detron Board. Abgerufen am 22. November 2012.
- ↑ OsmocomBB. Abgerufen am 22. November 2012.
- ↑ A Homebrew Steer-by-Wire System. Abgerufen am 22. November 2012.
- ↑ Modular Moto Z Android phone supports DIY and RPi HAT add-ons. Abgerufen am 25. August 2021.
- ↑ Developing Audio Products with Cortex-M3/NuttX/C 11. (PDF) Archiviert vom (nicht mehr online verfügbar) am 20. Januar 2017; abgerufen am 20. Januar 2017.
- ↑ Tizen RT. Abgerufen am 21. Februar 2017.
- ↑ Xiaomi launches a new IoT Software Platform “Xiaomi Vela” based on NuttX OS. Abgerufen am 25. August 2021.