Imparare Linux per sistemi embedded
recentemente mi è stato chiesto come una persona con esperienza nella programmazione di sistemi embedded con processori a 8 bit, quali FOTO, così come i processori a 32 bit, come il PowerPC, ma nessuna esperienza di Linux, può imparare a usare Linux Embedded.
Quello che consiglio sempre a un programmatore di sistemi embedded è questo: Guarda Linux Embedded come due parti, la parte embedded e la parte Linux. Consideriamo prima la parte di Linux.
Il lato Linux
I sistemi operativi abbondano e le scelte sono molte per un sistema embedded, sia proprietario che open source. Linux è una di queste scelte. Non importa ciò che si utilizza per il vostro host di sviluppo, se Linux o Windows o Mac, è necessario imparare a programmare utilizzando il sistema operativo di destinazione. A questo proposito, l’uso di Linux Embedded non è molto diverso dall’uso di VxWorks, WindowCE o di un altro sistema operativo. È necessario comprendere come è progettato il sistema operativo, come configurare il sistema operativo e come programmare utilizzando l’API (Application Programming Interface).
Alcuni fattori rendono l’apprendimento come programmare Linux più facile rispetto ad altri sistemi operativi embedded. Troverete molti libri e tutorial su Linux, così come Unix da cui è derivato-molti di più che per altri sistemi operativi. Le risorse online per Linux sono ampie, mentre altri sistemi operativi hanno una presenza molto più piccola, o uno guidato dal produttore del sistema operativo. Linux è open source, e si può leggere il codice per ottenere una comprensione di esattamente ciò che il sistema operativo sta facendo, qualcosa che è spesso impossibile con un sistema operativo proprietario distribuito come binari. (Io certamente non consiglio di leggere sorgente Linux per cercare di imparare a programmare Linux. È come cercare di imparare a guidare studiando come funziona la trasmissione di un’auto.)
Il fattore più significativo che distingue Linux dagli altri sistemi operativi è che lo stesso kernel viene utilizzato per tutti i sistemi, dalle più piccole schede embedded, ai sistemi desktop, alle grandi server farm. Ciò significa che puoi imparare una grande quantità di programmazione Linux sul tuo desktop in un ambiente, che è molto più flessibile rispetto all’utilizzo di una scheda di destinazione con tutte le complessità di connessione alla destinazione, download di una programmazione di test ed esecuzione del test. Tutti i concetti di base e la maggior parte delle API sono gli stessi per il tuo desktop Linux e il tuo Linux Embedded.
Installazione di Linux
Potresti installare una distribuzione Linux desktop sul tuo sistema di sviluppo, sostituendo il tuo sistema Windows o Mac, ma potrebbe essere un pezzo piuttosto grande da mordere contemporaneamente, dal momento che probabilmente avresti bisogno di configurare la posta elettronica, imparare nuovi strumenti e arrivare a velocità con un’interfaccia desktop diversa. È possibile installare Linux in un ambiente dual-boot, in cui si utilizza il vecchio ambiente per la posta elettronica, ecc., ed usi il sistema di Linux per imparare. Questo può essere piuttosto imbarazzante, dal momento che è necessario chiudere un ambiente per far apparire l’altro. Inoltre, fare sia all’interno di un ambiente aziendale può essere impraticabile o impossibile. La gente preferisce sostenere un ambiente noto, non uno che hai scelto.
Un modo più semplice è creare un ambiente di macchina virtuale sul tuo attuale sistema di sviluppo. Per gli host di Windows, è possibile installare VMware Player o VirtualBox, e sul Mac, è possibile installare Parallels o VMware Fusion. L’utilizzo di una VM offre molta più flessibilità. È possibile installare una distribuzione Linux desktop, come Ubuntu o Fedora. È possibile utilizzare questa distribuzione per acquisire familiarità con i concetti di base di Linux, imparare la shell dei comandi e imparare a costruire ed eseguire programmi. È possibile riconfigurare il kernel o caricare i driver, senza la preoccupazione che si blocca il sistema desktop. È possibile creare l’intero kernel e l’ambiente applicativo, in modo simile a quello che si potrebbe fare con un ambiente di sviluppo incrociato per un target Linux Embedded.
Se la VM che esegue Linux si blocca, è sufficiente riavviare la VM. L’arresto anomalo non influisce su altre cose che potresti fare sul tuo sistema di sviluppo, come leggere una pagina Web su come creare e installare un driver o scrivere un’e-mail a una delle tante mailing list di supporto.
Alcuni dei prodotti VM hanno funzionalità di snapshot che consentono di eseguire un checkpoint di una configurazione di lavoro nota, a cui è possibile eseguire il rollback se non è possibile correggere facilmente un arresto anomalo. Questa istantanea è molto più facile che cercare di salvare un sistema desktop in crash o una scheda di destinazione non risponde.
Una VM Linux in esecuzione sul desktop non è un modello perfetto per un ambiente Linux Embedded. La VM emula l’hardware di un sistema desktop, con un set limitato di dispositivi che difficilmente corrispondono a un vero target embedded. Ma il nostro obiettivo a questo punto non è modellare un vero obiettivo (qualcosa di cui parleremo più avanti) ma creare un ambiente in cui è possibile imparare facilmente i concetti e la programmazione di Linux.
Questo è il primo passo: creare una VM e installare una distribuzione Linux desktop sulla VM. Sceglieremo da qui nella nostra prossima puntata.
Michael Eager è consulente principale presso Eager Consulting a Palo Alto, California. Ha oltre quattro decenni di esperienza nello sviluppo di compilatori, debugger e simulatori per una vasta gamma di architetture di processori utilizzate nei sistemi embedded. I suoi clienti attuali ed ex includono importanti società di semiconduttori e sviluppatori di sistemi. Michael è stato membro del Comitato standard ISO C++ e dei comitati ABI per diverse architetture di processori. È presidente del Debugging Standards Committee per DWARF, un formato di dati di debug ampiamente utilizzato. È attivo nelle comunità open-source e Linux.
link Correlati:
- Imparare Linux per sistemi embedded
- iniziare con Linux Embedded: Parte Due
- iniziare con Linux Embedded: terza Parte
- iniziare con Linux Embedded: Parte Quattro
- iniziare con Linux Embedded: Parte Cinque
- iniziare con Linux Embedded: Parte Sei
- iniziare con Linux Embedded: Parte settima