NuttXsistema operativo Logo Sviluppatore Gregory Nutt
Famiglia Sistema operativo real-time
Release corrente12.5.1 (15 aprile 2024 [1] )
Tipo di kernel RTOS , Microkernel
Piattaforme supportateARM , AVR , AVR32 , HCS12 , LM32 , MIPS , RISC-V , SuperH , Xtensa XL6 , Z80
Licenza Apache License 2.0
Stadio di sviluppo stabile
Sito web nuttx.apache.org/
Modifica dati su Wikidata · Manuale
NuttX è un sistema operativo real-time (RTOS) Free and Open Source Software (FOSS) molto compatto ed efficiente progettato per applicazioni embedded . Il sistema supporta diverse architetture è scalabile per microcontrollori da 8-bit a 32 bit, gli standard di riferimento principali in NuttX sono gli standard POSIX e ANSI . Ulteriori API standard da Unix e altre comuni RTOS (come VxWorks ) vengono adottate per funzionalità non disponibili in questi standard o per funzionalità che non sono appropriate per ambienti profondamente integrati, come fork ().
NuttX è stato pubblicato nel 2007 da Gregory Nutt sotto la licenza BSD . Da dicembre 2019 è entrato a far parte del progetto Incubator di Apache Software Foundation, data in cui l'intero progetto ha iniziato a essere distribuito sotto la Apache License 2. Da novembre 2022 Apache NuttX è passato da progetto Incubator a progetto di primo livello [2] (TPL).
Il Kernel supporta una varietà di meccanismi come: multithreading , timer software, semafori , mutex , variabili condizionali , messaggi, sorgenti di evento , code, I/O sincrono o asincrono con possibilità di timeout.
Conforme agli standard.
Task Management Core.
Design modulare.
Completamente preemptible.
Naturalmente scalabile.
Altamente configurabile.
Facilmente estendibile a nuove architetture di processori, l'architettura SoC, o architetture board.
FIFO, round-robin, e “sporadic” scheduling.
In tempo reale, deterministico, con il supporto per l'ereditarietà prioritario.
Operazione tickless.
Controlli POSIX / ANSI-like, code dei messaggi, counting semaphores, clocks/timers, segnali, pthreads, variabili di ambiente, filesystem.
VxWorks-like gestione delle attività e timer watchdog.
Socket BSD.
Estensioni per la gestione di prelazione.
Attività facoltative con ambienti di indirizzo (Processi).
Configurazioni di memoria: (1) Flat embedded build, (2) Protected build con MPU, e (3) Kernel build with MMU.
On-demand paging.
Log di sistema.
ARM
ARM7 TDMI (TI TMS320 C5471, Calypso, MoxART, NXP LPC214x, LPC2378, STMicro STR71x)
ARM9 20T (Freescale i.MX1)
ARM9 26EJS (TI DM320, NXP LPC31xx)
ARM Cortex-A 5 (Atmel SAMA5D2, SAMA5D3, SAMA5D4)
ARM Cortex-A 8 (Allwinner A10)
ARM Cortex-A9 (NXP/Freescale i.MX6)
ARM Cortex-R4/R4F (TI TMS570, Samsung Artik)
ARM Cortex-M 0 (nuvoTon NUC120, NXP/Freescale KL25Z, KL26Z, Atmel SAMD20/21, SAML21, ST Micro STM32 F0/L0/G0, Raspberry Pi RP2040)
ARM Cortex-M 3 (ST Micro STM32 F1/L1/F3, TI/Stellaris LM3S, TI CC13x0, NXP LPC17xx, Atmel SAM3U/3X, SiliconLabs EFM32)
ARM Cortex-M 4 (with/without floating point unit: ST Micro STM32 F3/F4/L4/L4+, TI/Stellaris LM4F/TM4C, TI CC13x2, NXP LPC40xx/LPC43xx/LPC54xx, Freescale Kinetis K20/K28/K40/60/64/66, Atmel SAM4C/4E/4S/4L, Infineon XMC4xxx, Nordic NRF52xxx, Sony CXD56xx/Spresense)
ARM Cortex-M 7 (Atmel SAMV71/SAME70, ST Micro STM32 F7/H7, NXP i.MX RT)
Atmel AVR
Atmel 8-bit AVR (AT90USB, ATmega)
AVR32
Freescale M68HCS12
Intel
MIPS
MicroChip PIC32MX (MIPS32 24Kc)
MicroChip PIC32MZ (MIPS32 M14K)
Misoc
LM32 (Qemu)
Minerva (Verilator)
OpenRISC
Renesas/Hitachi
Renesas/Hitachi SuperH
Renesas M16C/26
RISC-V
SiFive FE310 (RV32IM)
Kendryte K210 (RV64GC)
Enjoy Digital LITEX (RV32IMA)
NEXT RISC-V NR5Mxx (RV32IM)
GreenWaves GAP8 (RV32IM)
BouffaloLab BL602 (RV32IMFC)
Espressif Systems ESP32-C3 (RV32IMC)
Xtensa
Expressif Systems ESP32 (LX6)
Expressif Systems ESP32-S2 (LX7)
Expressif Systems ESP32-S3 (LX7)
ZiLOG
Piccolo in memoria, root pseudo-file-system.
Virtual File System (VFS).
Mount-able volumes. Bind mountpoint, filesystem, and block device driver.
Log di sistema generico (SYSLOG).
FAT12/16/32 filesystem support.
NFS client. Supporto client per un Network File System (NFS, versione 3, UDP).
NXFFS. Il piccolo sistema di file flash wear-leveling NuttX.
SMART. File system FLASH da Ken Pettit.
SPIFFS. FLASH file system da Peter Anderson.
LittleFS. FLASH file system da ARM mbed.
ROMFS file system supporto.
CROMFS file system support (compressed).
BINFS pseudo-file system support.
Driver generico per SPI-based MMC / SD / SDHC card.
Un Binary Loader con il supporto per i seguenti formati:
Separato linked ELF modules
Separato linked NXFLAT modules. NXFLAT è un formato binario che può essere XIP da un file system
PATH di supporto variabile.
Trasferimenti di file via TFTP e FTP (get e put), HTML (wget), e Zmodem (sz e rz).
Intel conversioni HEX.
Libreria C standard pienamente integrata nel sistema operativo
Include il supporto in virgola mobile tramite una libreria matematica standard
Add-on uClibc++ modulo fornisce libreria standard C++ supporta iostreams, stringhe, STL, RTTI, eccezioni, ecc. (LGPL)
Supporto di più interfacce di rete; supporto di più link layer
IPv4, IPv6, TCP/IP, UDP, ARP, ICMP, ICMPv6, IGMPv2 and MLDv1/v2 (client) stacks.
Stream e datagram sockets.
Raw socket e local, supporto Unix domain socket.
SLIP.
Un cJSON port.
Ingombro ridotto (basato su uIP).
BSD compatibile Socket Layer.
Utilità di rete (DHCP server e client, SMTP client, Telnet client, FTP server e client, TFTP client, HTTP server e client, NTP client). Ereditabili Telnet sessioni (come "terminale di controllo")
NFS client. Supporto client per un Network File System (NFS, versione 3, UDP).
ICMPv6 autonoma configurazione automatica.
Port di Jef Poskanzer di thttpd server HTTP integrato con NXFLAT per fornire CGI incorporato.
PHY Gestione Link Status.
UDP Network Discvory, server RPC XML.
Server RPC XML.
Supporto per moduli di rete (come ad esempio il modulo di TI CC3000 WLAN)
MTD interfaccia per Memory Technology Devices.
FTL. Semplice Flash Translation Layer per sistemi su FLASH.
Supporto NAND.
NXFFS.
Supporto per dispositivi SPI-based
Architettura host USB per driver di controller host USB e driver di classe USB dipendenti dal dispositivo.
Driver del controller host USB disponibili per il Atmel SAMA5Dx, NXP LPC17xx, LPC31xx, e STMicro STM32.
Driver di classe USB dipendenti da dispositivo disponibili per l'archiviazione di massa USB e tastiera HID.
Architettura Gadget-like per i driver di controller USB e driver di classe USB dipendenti dalla periferica
Driver del controller dispositivo USB disponibili per il PIC32, Atmel AVR, SAM3, SAM4, e SAMA5Dx, NXP LPC17xx, LPC214x, LPC313x, e LPC43xx, Silicio Laboraties EFM32, STMicro STM32 F1, F2, F3, F4 e, e TI DM320.
Driver di classe USB dipendenti da dispositivo disponibili per USB e seriale per archiviazione di massa USB.
Funzionalità incorporata USB per il debug USB.
Framebuffer driver.
LCD driver per entrambi i display LCD paralleli e SPI OLED.
FTDI/Bridgetek FT800 e FT801 GUI drivers.
LittlevGL framebuffer driver.
VNC Server.
NX Graphics Subsystem: Libreria grafica, sistema a finestre e supporto font funziona sia con framebuffer o driver LCD.
NuttX Widget: Una interfaccia grafica scritta in conservatrice C++ che si integra con la grafica NX.
NuttX Window Manager: Un piccolo window manager basato sul NX Graphics Subsystem e widget NuttX.
Thingsee IOT.
Pilota automatico PX4.
Pixhawk:. Un avanzato, User-Friendly Autopilota.
OsmocomBB utilizza NuttX per sviluppare un sistema operativo per telefoni cellulari.
Motorola Moto Z.
Sony sta usando NuttX nei loro processori audio.
Sony sta usando NuttX nella scheda di sviluppo Spresense
Samsung TizenRT basato su NuttX RTOS.