NuttX

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
NuttX
sistema operativo
Logo
Logo
SviluppatoreGregory Nutt
FamigliaSistema operativo real-time
Release corrente12.2.0 (5 luglio 2023 [1])
Tipo di kernelRTOS, Microkernel
Piattaforme supportateARM, AVR, AVR32, HCS12, LM32, MIPS, RISC-V, SuperH, Xtensa XL6, Z80
LicenzaApache License 2.0
Stadio di sviluppostabile
Sito webnuttx.apache.org/

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.

Caratteristiche principali[modifica | modifica wikitesto]

  • 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[modifica | modifica wikitesto]

  • 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
  • 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

File system[modifica | modifica wikitesto]

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

C/C ++ library[modifica | modifica wikitesto]

  • 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[modifica | modifica wikitesto]

  • 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[modifica | modifica wikitesto]

  • 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[modifica | modifica wikitesto]

Supporto per host USB[modifica | modifica wikitesto]

  • 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[modifica | modifica wikitesto]

  • 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[modifica | modifica wikitesto]

  • 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[modifica | modifica wikitesto]

  • 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[modifica | modifica wikitesto]

  1. ^ NuttX-12.2.0 Released, su nuttx.apache.org. URL consultato il 5 luglio 2023.
  2. ^ NuttX-11.0.0, su news.apache.org.

Collegamenti esterni[modifica | modifica wikitesto]

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica