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. 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.
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.
Implementierung 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 Die Hauptcharakteristika von NuttX sind: 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 Die NuttX-Website listet alle unterstützten Plattformen nach Prozessorarchitektur sowie nach Hersteller/Mikrocontrollerfamilie auf. 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 Die Thingsee IoT-Gateway-Geräte von Haltian verwenden das Betriebssystem ThingseeOS, das auf NuttX basiert. Der PX4-Autopilot nutzt NuttX zur Steuerung einer Vielzahl autonomer Plattformen. Biffer Board unterstützt viele RTOSs, darunter NuttX. MP3-Player implementiert mit NuttX OsmocomBB nutzt NuttX, um ein Betriebssystem für Handys zu entwickeln Ein selbstentwickeltes Steer-by-Wire-System, das mit NuttX implementiert wurde Das Motorola Moto Mods Development-Kit basiert auf NuttX. Sony verwendet NuttX in seinen Audioprozessoren Samsungs Tizen RT basiert auf NuttX Xiaomi lancierte im November 2020 die IoT-Software-Plattform Xiaomi Vela, die auf NuttX basiert.
Einzelnachweise
Kategorie:Echtzeitbetriebssystem Kategorie:Freies Betriebssystem Kategorie:Apache-Projekt