Il Team Prof ha portato Apache NuttX su Raspberry Pi Pico e Pico 2 con supporto SMP dual-core. La scheda diventa così un sistema POSIX multi-thread con shell NSH su USB e astrazioni driver per I2C, SPI e ADC. Il codice di riferimento usa la libreria ArduProf per una struttura applicativa multi-thread guidata da messaggi asincroni.
Il sistema avvia NuttX con configurazione SMP per utilizzare entrambi i core della Pico. La libreria ArduProf separa i task in thread indipendenti che comunicano tramite messaggi asincroni. Questo design minimizza il blocco dei thread e ottimizza l’uso della CPU sui due core. L’applicazione di esempio ‘arduprof’ fa commutare il LED di bordo ogni secondo.
Come funziona Apache NuttX su Raspberry Pi Pico
Apache NuttX è un RTOS conforme POSIX che gira su Raspberry Pi Pico. La configurazione SMP abilita il dual-core, quindi entrambi i core della scheda lavorano in parallelo. La shell NSH è accessibile tramite USB con la configurazione usbnsh, oppure su UART0 con la configurazione smp. La velocità di comunicazione è di 115200 bps con parametri 8N1.
Il codice di esempio usa ArduProf, una libreria che separa i task in thread indipendenti. Ogni thread comunica con gli altri tramite messaggi asincroni, quindi non c’è contesa sulla CPU. Grazie a questo approccio, il firmware real-time complesso si trasforma in componenti event-driven facili da gestire. Inoltre, il sistema include astrazioni driver per I2C, SPI e ADC, quindi si possono collegare sensori e periferiche senza scrivere codice di basso livello.
Una scheda microcontroller economica come la Raspberry Pi Pico diventa un sistema POSIX multi-thread con SMP. Questo semplifica la scrittura di firmware real-time complessi, perché ogni task gira in un thread separato. La shell NSH su USB permette di interagire con il sistema da terminale, quindi si possono testare i driver e le applicazioni senza strumenti aggiuntivi. Per rifare il progetto serve una scheda di espansione per Raspberry Pi Pico e Pico W, che rende più comodo il collegamento delle periferiche.
Il supporto SMP è una delle caratteristiche più interessanti. Infatti, la maggior parte degli RTOS per microcontrollori usa un solo core, mentre qui entrambi i core della Pico lavorano in parallelo. Di conseguenza, le applicazioni multi-thread girano più veloci e rispondono meglio agli eventi. Inoltre, la libreria ArduProf riduce i tempi di attesa, perché i thread comunicano senza bloccare la CPU.
Come provare Apache NuttX su Pico
Per provare il sistema serve una Raspberry Pi Pico o una Pico 2, un cavo USB e un terminale seriale come minicom. Si carica il firmware con la configurazione usbnsh oppure smp, poi si apre la shell NSH. L’applicazione di esempio fa commutare il LED di bordo ogni secondo, quindi si vede subito che il sistema funziona. La configurazione smp usa UART0, mentre usbnsh usa la porta USB.
- Configurazione usbnsh: shell NSH su USB a 115200 bps
- Configurazione smp: shell NSH su UART0 con parametri 8N1
- App di esempio ‘arduprof’ che commuta il LED ogni secondo
- Astrazioni driver per I2C, SPI e ADC
Il progetto è pensato per chi vuole un ambiente POSIX su una scheda economica. Il repository GitHub di Team Prof spiega nel dettaglio la configurazione e il codice. Con Apache NuttX su Raspberry Pi Pico, anche un firmware complesso diventa un insieme di thread indipendenti che comunicano in modo pulito. Inoltre, il supporto SMP rende la Pico una piattaforma adatta a progetti real-time avanzati.
Fonte: https://github.com/teamprof/arduprof-template/tree/main/pico-nuttx-app
