Per svariati motivi, lavorativi e non, sto valutando la possibilità di prendere tutte le mie vecchie presentazioni tenute ai vari LinuxDay, LinuxCafé e lezioni universitarie, aggiornare le parti vecchie e scrivere un libretto su GNU/Linux embedded.
L’idea nasce dal fatto che ci sono un sacco di programmatori software embedded, tutti con esperienza su microcontrollori, ma i programmatori esperti di GNU/Linux embedded sono rari. Sia con i colleghi che con persone che incontro nel tempo libero mi ritrovo relativamente spesso a discutere se ci sono dei libri su GNU/Linux embedded, per permettere ad un programmatore con esperienza di C e C++ sui microcontrollori di essere rapidamente operativo anche su sistemi a microprocessore con GNU/Linux. La mia risposta è che in generale un libro non c’è, di solito io suggerisco una mia lista di libri che compongono un adeguato bagaglio culturale, ma che non compongono un percorso formativo esaustivo:
- Kernigham, Ritchie, Il linguaggio C. Principi di programmazione e manuale di riferimento
, per chi non è familiare con il mio linguaggio di programmazione preferito.
- Bach, The Design of the UNIX Operating System
, libro molto concreto sui sistemi operativi, purtroppo meno famoso di altri libri nonostante la qualità del contenuto.
- Stevens, Unix Network Programming Vol 1: The Sockets Networking Api
, libro fondamentale per la programmazione di rete. Di solito GNU/Linux viene usato proprio per interfacciare in rete dispositivi che prima erano isolati o connessi con serialindi è un must.
- Stevens, Unix Network Programming Vol 2: Interprocess Communications
, questo è più orientato alle IPC, ovvero le Inter Process Communication. Probabilmente il libro meno importante di questa lista, bello per cultura personale.
- Stevens, TCP/IP Illustrated, Vol 1, altro grande libro sul networking
- Purdie, Yocto Project Reference Manual
. E’ la bibbia di Yocto, uno degli strumenti più importanti per sviluppare sistemi embedded con GNU/Linux.
- Corbet, Rubini, Linux Device Drivers
, per chi deve sviluppare driver per periferiche o, se particolarmente “fortunato”, fare un porting per una piattaforma.
La lista è lunga, i tomi sono tutti molto pesanti e danno una buona preparazione teorica ma ancora non sono sufficienti a rendere un programmatore operativo.
Esistono già diversi libri su Yocto, per esempio:
- Streif, Embedded Linux Systems With the Yocto Project
.
- Salvador, Angolini, Yocto for Embedded Linux Development Primer
.
Tutti questi libri sono molto focalizzati sull’uso di Yocto, ma perdono di vista una serie di problemi concreti nello sviluppo di prodotti.
Per questo motivo avrei un mente il seguente sommario:
- Prima parte - organizzazione dello sviluppo su PC
- Uso di CMake per compilare e crosscompilare i progetti
- Come strutturare un progetto
- Seconda parte - portare il progetto sul target embedded
- Introduzione a Yocto
- Portare il progetto sul target e debug
- Parte terza - argomenti avanzati
- Realtime su GNU/Linux embedded
- Strategie di firmware upgrade
Un simile libro, per essere digerito rapidamente e non essere l’ennesimo mattone che allunga la lista iniziale, deve essere pensato in accoppiata con una scheda opensource, come per esempio la BeagleBone o la Raspberry. Il costo dei dispositivi è simile, e per ciascuna scheda sono disponibili capes ed hats.
La mia idea consiste nello sviluppare un piccolo progetto basato su GNU/Linux embedded, sviluppando gli argomenti esposti nel sommario. Il maggior problema che vedo attualmente è la definizione di una applicazione che non sia in conflitto con il mio lavoro ma che allo stesso tempo sia sufficientemente interessante.
Per ora, l’unico scenario di progetto che potrei proporre è il seguente:
Il problema più fastidioso è che il protocollo Dali si basa su una seriale differenziale optoisolata con tensioni più elevate della RS485 e non c’è nessun cape o hat che la implementi. Il che è un peccato, perché Dali è un protocollo semplice e che ben si presta alla didattica.
Mi piacerebbe ricevere qualche feedback, sia sulla lista degli argomenti che sullo scenario applicativo. Vi va di lasciare un commento?
comments powered by Disqus