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 (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.

Caratteristiche principali 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.

Piattaforme supportate ARM ARM7TDMI (TI TMS320 C5471, Calypso, MoxART, NXP LPC214x, LPC2378, STMicro STR71x) ARM920T (Freescale i.MX1) ARM926EJS (TI DM320, NXP LPC31xx) ARM Cortex-A5 (Atmel SAMA5D2, SAMA5D3, SAMA5D4) ARM Cortex-A8 (Allwinner A10) ARM Cortex-A9 (NXP/Freescale i.MX6) ARM Cortex-R4/R4F (TI TMS570, Samsung Artik) ARM Cortex-M0 (nuvoTon NUC120, NXP/Freescale KL25Z, KL26Z, Atmel SAMD20/21, SAML21, ST Micro STM32 F0/L0/G0, Raspberry Pi RP2040) ARM Cortex-M3 (ST Micro STM32 F1/L1/F3, TI/Stellaris LM3S, TI CC13x0, NXP LPC17xx, Atmel SAM3U/3X, SiliconLabs EFM32) ARM Cortex-M4 (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-M7 (Atmel SAMV71/SAME70, ST Micro STM32 F7/H7, NXP i.MX RT) Atmel AVR Atmel 8-bit AVR (AT90USB, ATmega) AVR32 Freescale M68HCS12 Intel 80×86 MIPS MicroChip PIC32MX (MIPS32 24Kc) MicroChip PIC32MZ (MIPS32 M14K) Misoc LM32 (Qemu) Minerva (Verilator) OpenRISC mor1kx 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 Zilog Z16F ZNeo Zilog eZ80 Acclaim! Zilog Z8Encore! Zilog Z80

File system

Piccolo filesystem 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.

C/C ++ library 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)

Networking 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)

Supporto Flash MTD interfaccia per Memory Technology Devices. FTL. Semplice Flash Translation Layer per sistemi su FLASH. Supporto NAND. NXFFS. Supporto per dispositivi SPI-based

Supporto USB Supporto per host USB 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.

Supporto per dispositivi USB 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.

Supporto grafico 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.

Progetti che utilizzano 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.

Note

Collegamenti esterni

NX-Engineering is a consulting created by Gregory Nutt to give support to companies using NuttX

Categoria:Sistemi operativi liberi Categoria:Sistemi operativi real-time Categoria:Sistemi operativi embedded