NuttX
sistema operativo
NuttX è un sistema operativo real-time (RTOS) molto compatto ed efficiente progettato per applicazioni embedded. Il sistema supporta diverse architetture è scalabile per microcontrollori da 8-bit a 32 bit.
NuttX sistema operativo | |
---|---|
![]() | |
Sviluppatore | Gregory Nutt |
Famiglia | Sistema operativo real-time |
Release corrente | 7.20 stabile (8 marzo 2017) |
Tipo di kernel | RTOS, Microkernel |
Piattaforme supportate | ARM, AVR, AVR32, HCS12, SuperH, Z80 |
Tipo licenza | Software libero |
Licenza | BSD (con qualche applicazione GPL e LGPL) |
Stadio di sviluppo | stabile |
Sito web | nuttx.apache.org/ e nuttx.incubator.apache.org/ |
NuttX è stato rilasciato nel 2007 da Gregorio Nutt sotto la licenza BSD.
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 C6571, Calypso, 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-R4/R4F (TI TMS570)
- ARM Cortex-M0 (nuvoTon NUC120, Freescale KL25Z, KL26Z, Atmel SAMD20/21, SAML21)
- ARM Cortex-M3 (ST Micro STM32 F1/F2, TI/Stellaris LM3S, NXP LPC17xx, Atmel SAM3U/3X, SiliconLabs EFM32)
- ARM Cortex-M4 (with/without floating point unit: ST Micro STM32 F3/F4, TI/Stellaris LM4F/TM4C, NXP LPC43xx, Freescale Kinetis K20/K40/60, Atmel SAM4C/4E/4S/4L)
- ARM Cortex-M7 (Atmel SAMV71/SAME70, ST Micro STM32 F7)
- Atmel AVR
- Atmel 8-bit AVR(AT90USB,ATmega)
- AVR32
- Freescale M68HCS12
- Intel
- (MIPS)
- MicroChip PIC32MX (MIPS32 24Kc)
- MicroChip PIC32MZ (MIPS32 M14K)
- Renesas/Hitachi
- Renesas/Hitachi SuperH
- Renesas M16C/26
- Zilog
- Zilog Z16F
- Zilog eZ80 Acclaim!
- Zilog Z8Encore!
- Zilog Z80
File system
- 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.
- Driver generico per SPI-based MMC / SD / SDHC card.
- Romfs FileSystem supporto.
- 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, ICMP, IGMPv2 (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.
- 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.
Collegamenti esterni
- NuttX homepage, su nuttx.org.