C'è stata una discussione relativa a questa domanda qui: link
Estratti: l'articolo di Linux Journal a cui si fa riferimento è qui: link
Penso che le porte 8052 e M68HC12 siano scelte particolarmente sbagliate per caratterizzare NuttX perché entrambi hanno alcuni problemi e NuttX è ora alla versione 5.16 con 63 versioni.
Ho compilato l'intervista nella scheda "Editore" qui: link ; c'è una recensione anche lì: link .
Una vasta documentazione di NuttX è disponibile qui: link .
I problemi con le parti hcs12 e 8051 sono i seguenti:
8051 / 80c52: questa architettura è davvero RTOS ostile. Ha un piccolo stack hardware (128 byte sull'8051, 256 sull'80c52) in una posizione di memoria dedicata (indirizzo 0). Per cambiare attività, è necessario copiare l'intero stack dell'attività da bloccare dal suo indirizzo dedicato in una posizione di salvataggio, quindi copiare l'intero stack dell'attività da avviare dalla sua posizione di salvataggio nella posizione stack dedicata. Yech!
E da allora, lo stack è così piccolo. È molto, molto facile sovraccaricare lo stack, specialmente durante la gestione degli interrupt.
La porta NuttX 8051 è completa e funzionale (almeno l'ultima volta che l'ho usata). Ma per renderlo utile, probabilmente dovresti copiare l'intero stack su ogni interruzione per evitare che trabocchi. Fondamentalmente, ho perso interesse a quel punto, ma se qualcuno fosse davvero motivato a usare l'8051, è fattibile (se non forse consigliato).
La cosa positiva della porta 8051 è che è stato un ottimo esercizio portare NuttX in una posizione di memoria molto piccola. La porta 8051 funziona a 32Kb di RAM - che include RTOS, libc, librerie del compilatore, un sostanziale programma di test, .data / .bss e e heap. E con un po 'di memoria da risparmiare!
hcs12: Questo è un progetto su cui lavoro nel mio tempo libero quando non sto facendo altro. Non è ancora finito e non è ancora pronto per la prima serata.
Per quanto riguarda il confronto con altri RTOS, in realtà non ho risposte valide e autorevoli perché non uso altri RTOS. Ma ecco la mia comprensione ingenua:
FreeRTOS ha tonnellate di download e un'impronta davvero minuscola di circa 4Kb. È l'RTOS preferito per gli MCU davvero piccoli. Una porta FreeRTOS è fornita dai venditori di silicio praticamente con ogni MCU. Quindi è la scelta RTOS predefinita.
Ci sono dozzine di concorrenti con FreeRTOS là fuori. Mi viene subito in mente ChiBIOS . Questi sono tutti piccoli programmatori di vari tipi.
Per fare un vero confronto, una cosa che dobbiamo prima fare è definire cosa intendiamo per RTOS: è solo uno scheduler? Oppure è un set integrato di funzionalità standard del sistema operativo - come scheduler, filesystem, driver di dispositivo, gestione della memoria, rete, ecc. La maggior parte del sistema operativo, ad esempio Linux, sono ambienti di sviluppo completo, non solo programmatori. NuttX è un sistema operativo completo ha lo stesso senso di Linux. Eccone un altro:
RTEMS : ho lavorato con questo. È in circolazione da sempre e dovrebbe essere molto stabile. È grande; pensa> 100kb. Penso che miri un po 'al di sopra del mercato MCU.
uCOS : Non l' ho mai usato, ma questo è l'RTOS con diversi bootloader popolari, vero? La mia impressione è che sia simile a RTEMS, ma non so davvero di cosa sto parlando.
Come confronterei NuttX con quelli: beh, è molto più piccolo. L'impronta iniziale è di circa 20 KB. Una configurazione completa è di circa 10-20 KB in più. Un'altra differenza da questi RTOS è che NuttX è molto orientato agli standard. Puoi pensare a NuttX come a un piccolo lavoro simile a Linux. La maggior parte del codice che viene compilato ed eseguito su Linux verrà eseguito anche su NuttX (alcuni codici di sistema come codice di rete o demoni potrebbero richiedere alcune modifiche).
Penso che RTEMS sia più focalizzato sui microprocessori; NuttX è più focalizzato sui micro-controller.