Qualcuno ha valutato NuttX RTOS?


15

Mentre leggevo il Linux User Journal oggi, mi sono imbattuto in un po 'di confusione su NuttX RTOS. Ho controllato il loro sito Web e sono rimasto piuttosto colpito dal set di funzionalità e dalla possibilità di inserirlo in un 8052! Trovo interessante il fatto che supporti POSIX, qualcosa su cui ho aiutato a lavorare per uno dei miei clienti RTOS interni. Questo sembra un po 'più ricco di funzionalità rispetto al RTOS interno.

Qualcun altro ha sentito parlare di NuttX e ci ha provato? In tal caso, come si confronta con altri RTOS come FreeRTOS ?


1
Ho appena iniziato a giocare con RTOS e quando ho chiesto qui ho ricevuto ottimi consigli, ma ho avuto la sensazione che la maggior parte degli utenti qui non sappia cosa sia un RTOS. Non intendo questo in senso negativo, penso solo che potrebbe essere utile chiedere questo in altri forum anche per aumentare le possibilità di ricevere una buona risposta.
Kortuk,

Devo provare comunque :-) Non si sa mai chi si nasconde qui :-)
Jay Atkinson

Sì, ho fatto anche qui la domanda sui pelucchi. Non fa mai male a sperare in un boccone.
Kortuk,

Avvio della taglia! Sono interessato al confronto tra RTOS.
Tyblu,

7
Perché c'è un voto da chiudere su questa domanda? Le RTOS sono utilizzate in elettronica e robotica per tutto il tempo.
Kellenjb,

Risposte:


17

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.


4

La licenza è un'altra differenza da tenere presente quando si seleziona un RTOS open source. Soprattutto se si prevede di utilizzare RTOS in un progetto commerciale. La maggior parte degli RTOS open source ha una licenza GPL modificata. La modifica della licenza di solito specifica che non è necessario il proprio codice proprietario che si collega a GPL RTOS (ma è comunque necessario rilasciare i file RTOS con le proprie modifiche).

NuttX (e probabilmente altri) hanno una licenza BSD modificata non restrittiva. Con la licenza BSD, puoi essenzialmente prendere il codice e usarlo come se fosse il proprietario senza altri obblighi oltre a conservare le informazioni sulla licenza e sul copyright all'interno dei file.


Nutt, vuoi che modifichi queste informazioni nell'altra tua risposta, sembra che vadano insieme.
Kortuk,

Certo, sentiti libero. Rant circa 8051 e 80c52 e anche hc12 sembra fuori contesto qui.
Patacongo,

Stavo solo assicurando che ti rendessi conto di poter modificare di più in. Dato che lo sapevi e lo hai fatto intenzionalmente, possiamo lasciarlo qui. Normalmente puoi semplicemente modificarlo in un'altra sezione e usare i titoli. Fammi sapere se posso aiutarti se cambi idea.
Kortuk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.