CORSO DI PROGETTAZIONE DI SISTEMI EMBEDDED Realizzare applicazioni dedicate basate su microntrollore proff. Nicola Masarone e Stefano Salvatori I.T.I.S. e Liceo delle Scienze Applicate Giovanni Giorgi - Roma
Corso di progettazione di sistemi embedded Il termine sistema embedded identifica quei sistemi elettronici di elaborazione basati su microprocessore progettati però per una applicazione specifica. Essi prevedono una piattaforma hardware in cui sono integrate tutte le parti in grado di eseguire i controlli e le attuazioni verso l'esterno. Essendo basati su microprocessori, i sistemi embedded, in fase di progettazione, risultano a tutti gli effetti dei sistemi elettronici programmabili. Come tali essi prevedono anche lo sviluppo di una sezione software, denominata firmware, normalmente scritta in un codice ad alto livello che rende lo stesso esportabile su diverse piattaforme hardware con poche modifiche senza, nella maggior parte dei casi, dover ripensare all'intero progetto. Il linguaggio di programmazione qui scelto per la piattaforma software è il C. Attualmente questo linguaggio si trova per diffusione di utilizzo in prima posizione a livello mondiale, come risulta dai dati forniti da Tiobe. Il corso prevede dunque una presentazione dei concetti di base del linguaggio C e della programmazione strutturata e funzionale, con particolare enfasi verso la gestione di periferiche. Per i motivi esposti, la progettazione di un sistema embedded prevede il coinvolgimento di diverse discipline, prime fra tutte l'informatica e l'elettronica, ma anche le telecomunicazioni e i sistemi automatici di controllo. Attualmente, sia in Italia che all'estero, si stanno diffondendo sempre di più corsi dedicati a tale argomento, per studenti, sia d'istruzione superiore che universitari, e per professionisti del settore elettronico ed informatico. Tutto ciò per l'ampia diffusione di sistemi integrati, denominati System-on-Chip, dal costo realmente contenuto e in grado di soddisfare le più svariate esigenze (controllo industriale, domotica, automotive, elettronica di consumo, didattica, ). Il corso qui presentato è pensato per studenti iscritti sia all'indirizzo tecnico che a quello liceale. Infatti, i prerequisiti richiesti sono una conoscenza di base degli elementi di programmazione e una predisposizione all'attività manuale di sperimentazione, comunque attese per chi ha deciso di affrontare un percorso di formazione di tipo scientifico. Il sistema di sviluppo scelto per il corso è basato su Eclipse, del tutto gratuito e aperto (ciò significa che il programmatore può liberamente studiarne il codice e 1
utilizzarlo in modo del tutto libero e gratuito). Tale sistema di sviluppo è inoltre utilizzabile anche per altri ambiti, quali lo sviluppo di applicazioni per desktop o di applicazioni scritte in Java per Android, ampiamente diffuso in ambito consumer. Il sistema operativo sotto cui la sezione software del sistema di sviluppo è installato è GNU/Linux, anch'esso libero, gratuito e aperto. Sarà anche questa l'occasione per divulgare un tale sistema operativo che trova ormai applicazione dall'amministrazione pubblica, al settore privato, la cui valenza educativa lo rende ormai necessario in un ambito di formazione culturale e professionale. Per la sezione hardware del sistema di sviluppo si farà riferimento a schede disponibili commercialmente, ma che gli studenti potranno anche riprodursi in casa, con una minima attrezzatura di laboratorio e un costo contenuto. Le schede saranno basate su microntrollori di ultima generazione che implementano un processore ARM, oggi tra i più diffusi e venduti a livello mondiale non solo in ambito embedded, ma anche desktop e consumer. Le schede sono già disponibili, in diverse unità, perché (personalmente) possedute dai docenti che organizzano il corso. Queste saranno messe a disposizione degli studenti per lo sviluppo delle esercitazioni a scuola. Uno degli obiettivi didattici del corso consiste nel mostrare agli studenti che molti dei prodotti elettronici di uso quotidiano presentano un'architettura comune e tipica dei sistemi elettronici programmabili Inoltre, si sottolineerà che la conoscenza dei sistemi embedded in generale, nonché le competenze progettuali che il corso propone di trasmettere, potranno certamente migliorare la possibilità di un'occupazione futura. Il corso è pensato per essere sviluppato nell'arco di tre/quattro anni con argomenti di complessità crescente nel corso degli anni e propedeutici a quanto svolto precedentemente. Il primo anno (qui presentato), seppur d'introduzione, rappresenta il gradino più importante che occorre affrontare: l'acquisizione di conoscenze e competenze specifiche che possano rendere lo studente autonomo nell'affrontare i primi più semplici progetti legati a sistemi embedded, nonché l'allestimento di una personale postazione di lavoro. Per esempio, si vogliono citare: l'uso degli strumenti di sviluppo sia hardware che software, l'interfacciamento verso periferiche esterne, la gestione dei comandi impartiti dall'utente, la gestione di display. Tutti argomenti che si intendono affrontare proprio nelle esercitazioni di questo primo anno di corso. In questa parte del corso saranno dati tutti gli elementi fondamentali perché ciascun discente possa, dopo alcune lezioni, diventare autonomo senza tuttavia tralasciare la necessità di lavorare in gruppo. In base all'esperienza maturata dai proponenti, sia in ambito di scuola superiore che universitaria, dopo le prime esercitazioni pratiche dedicate all'argomento, si è sempre notata un'evoluzione rapida circa l'apprendimento da parte degli studenti dei concetti fondamentali utili ad affrontare problemi progettuali via via più complessi, nonché l'ideazione di nuovi e originali progetti. Il corso prevede una selezione iniziale in ingresso mediante semplici test di verifica delle conoscenze di base di Informatica. Pur non essendo richieste conoscenze specifiche del particolare linguaggio adottato, risultano utili alcune nozioni di base della programmazione strutturata, motivo per cui il corso è rivolto agli alunni dal secondo anno in poi, sia del Tecnico Industriale che dello Scientifico delle Scienze Applicate. 2
Le lezioni saranno organizzate in unità di due ore e mezza, strutturate nel modo seguente: mezz'ora di domande e risposte sugli argomenti trattati nel corso della lezione attuale o precedente e sui contenuti relativi alle esercitazioni assegnate per casa; un'ora di teoria dedicata allo studio delle sezioni hardware e software relative al problema specifico esaminato; un'ora di esercitazione sui temi trattati, basata sullo studio di un'applicazione specifica per microprocessore e microcontrollore. Il corso si svolgerà in una delle aule di Informatica attrezzata con PC in rete locale e internet e installati con sistema operativo GNU/Linux. Con la disponibilità di 15 postazioni è presumibile una capienza fino ad un massimo di 30 corsisti. I PC saranno collegati tra loro con software tipo italc per permettere agli studenti di seguire la lezione dal proprio PC e ai docenti di seguire e indirizzare l'operato degli studenti dalla propria postazione. Gli studenti saranno in grado di provare sul PC di laboratorio quanto presentato durante la lezione e continuare lo sviluppo anche a casa, poiché tutti gli strumenti software utilizzati sono completamente gratuiti. Inoltre l'applicazione realizzata dagli studenti potrà essere verificata sperimentalmente sulle postazioni hardware che verranno messe a disposizione per verificarne l'effettivo funzionamento. Tra le finalità del corso c'è quella di rendere gli studenti più preparati sulle tecnologie che li circondano. I corsisti saranno in grado di applicare praticamente le nozioni acquisite e di avviare magari un'attività professionale di progettista hardware e software nell'ambito dei sistemi di controllo. 3
Struttura del corso Le diverse tematiche sono sviluppate in 10 lezioni, ciascuna di 2.5 ore, composte sia da sezioni di tipo frontale che di esercitazione pratica. Lezione 1 (introduzione) Sistemi embedded: breve panoramica e storia; Lezione 2 (Il processore) Il processore ARM: caratteristiche fondamentali; Lezione 3 (il microcontrollore) System-on-Chip basati su ARM: microcontrollori; Lezione 4 (il sistema di sviluppo) Sistema di sviluppo: sezione hardware; Lezione 5 (il sistema di sviluppo) Sistema di sviluppo: sezione software; Lezione 6 (allestimento) Allestimento della stazione di lavoro personalizzata: schemi e attrezzature per la costruzione; Lezione 7 (interfacciamento) Interfacciamento digitale: gestione pulsanti e led; Lezione 8 (interfacciamento) Interfacciamento digitale: gestione di display a cristalli liquidi; Lezione 9 (esempio) Un esempio di sistema di controllo: sezione hardware; Lezione 10 (esempio) Un esempio di sistema di controllo: sezione software; Conclusioni Come è andata? Moduli di feedback. 4