Sistemi embedded: teoria e pratica Alexjan Carraturo e Andrea Trentini A. Carraturo, A. Trentini, Sistemi Embedded: Teoria e Pra- tica Ledizioni ISBN: Tutti i marchi ed i loghi appartengono ai legittimi proprie- tari: marchi di terzi, nomi di prodotti, nomi commerciali, nomi corporativi e società citati possono essere marchi di proprietà dei rispettivi titolari o marchi registrati di altre società e sono stati utilizzati a puro scopo esplicativo. La stesura del testo, l’impaginazione e la realizzazione delle immagini è stata eseguita sfruttando programmi rilasciati con licenze libere. Per tutto il resto consultare le note di licenza. Questo testo è rilasciato in versione digitale con licenza Crea- tive Commons ‘Attribuzione - Non Commerciale - Condividi allo stesso modo’, versione 3.0, Italiano. Per maggiori detta- gli sulla licenza consultare il sito https: // creativecommons. org/ licenses/ by-nc-sa/ 3. 0/ it/ legalcode . Per utilizzo di versioni stampate o per riproduzioni non digitali dell’opera, rivolgersi alla casa editrice Ledizioni di Milano. ii Indice Indice v 1 Introduzione 1 1.1 I Sistemi Embedded . 4 1.2 Struttura del testo . 9 2 Concetti generali 11 2.1 Sistemi “monoprogrammati” e “multiprogrammati” . 11 2.2 Conversione AD e DA . 14 2.3 Multiplexing . 16 2.4 Controlli automatici . 18 2.5 Modo di pensare . 26 2.6 Real Time . 30 2.7 Licenze Software . 32 3 Richiami di elettronica 41 3.1 Richiami sui principi . 42 3.2 Forme d’onda . 50 3.3 Componenti di base . 53 3.4 PWM (Pulse Width Modulation) . 67 3.5 Semiconduttori . 68 3.6 Strumenti di misura . 78 3.7 Montaggio fisico . 85 3.8 Sensori . 87 3.9 Attuatori . 89 3.10 MEMS . 90 v 4 Architetture Embedded 91 4.1 Instruction Set Architecture . 91 4.2 ARM . 96 4.3 MIPS . 98 4.4 ARC . 99 4.5 AVR . 100 4.6 Xtensa . 101 4.7 Esempi pratici . 102 4.8 Implementazione Hardware . 114 5 Memorie, I/O e comunicazione 119 5.1 Memorie . 119 5.2 Bus e periferiche . 126 6 Il sistema operativo 147 6.1 Introduzione . 147 6.2 I sistemi GNU/Linux . 151 6.3 Root Filesystem . 156 6.4 Bootloader . 161 6.5 La fasi di boot . 164 7 Configurazione GNU/Linux 167 7.1 Ambiente di sviluppo . 168 7.2 Buildroot . 188 7.3 Dispositivo di memoria . 196 7.4 Esempio di configurazione della SD . 200 8 FreeRTOS 203 8.1 Introduzione . 203 8.2 Caratteristiche . 204 8.3 Concetti di base . 205 8.4 Usare FreeRTOS . 208 8.5 Gestione della memoria HEAP . 210 8.6 Task . 212 8.7 Queue . 215 8.8 Timer . 218 8.9 Interrupt . 220 8.10 Semafori . 221 8.11 Esempio: LED Blink . 222 vi 9 Arduino e Wiring 225 9.1 I punti di forza . 227 9.2 I punti di debolezza . 228 9.3 Software: struttura di uno sketch . 229 9.4 Il linguaggio . 230 10 Rete e protocolli 249 10.1 Topologie di rete . 252 10.2 Protocolli . 253 A Ambiente di Test 263 A.1 Linux Test Environment . 263 B Esempi pratici 269 B.1 Abilitare un LED tramite GPIO su Linux . 269 B.2 Scrittura su I2C . 272 B.3 Una “termo-ventola” con Arduino . 273 Bibliografia 277 vii viii Capitolo 1 Introduzione Come l’avvento della metallurgia e la costruzione di armi e uten- sili a partire dal II millennio A.C. ha caratterizzato un avanza- mento nelle possibilità e nella qualità della vita per le popola- zioni, o come l’invenzione della macchina a vapore ha portato al cambiamento totale sulla produzione di beni nella cosiddetta rivoluzione industriale del diciottesimo secolo, anche le scoper- te nel campo dell’ingegneria, nell’elettronica e nell’informatica del ventesimo secolo hanno introdotto l’umanità in quella che è stata definita l’età digitale o l’età dell’informazione[13]. È giusto ricordare che i fondamenti teorici dell’informatica, co- sì come i primi calcolatori meccanici, sono assai precedenti alla tecnologia digitale; basti pensare al lavoro di precursori quali ad esempio Blaise Pascal nel diciassettesimo secolo, con la costru- zione della Pascalina1) o al lavoro di Charles Babbage (con la progettazione e il tentativo di costruzione della omonima mac- china differenziale) e di Ada Lovelace, a buon titolo considerata la prima “programmatrice” della storia2. Detto ciò, si tende a far coincidere l’inizio dell’era dei com- puter con le “macchine” basate sul concetto di “Universal Com- 1La Pascalina o macchina di Pascal, inventata dal omonimo matematico e filosofo francese nel 1642 fu uno dei primi calcolatori meccanici in grado di fare somme e sottrazioni. 2Ad Ada Lovelace si fa ricondurre il primo algoritmo pensato per essere processato da un elaboratore. 1 SISTEMI EMBEDDED: TEORIA E PRATICA puting Machine” espresso da Alan Turing a partire dal 1936[68]. Dalla fine della seconda guerra mondiale in poi, la rapida evoluzione tecnologica ha mutato radicalmente l’immaginario legato al mondo degli elaboratori, trasformandoli da oggetti di enormi dimensioni e appannaggio di pochi esclusivi centri di calcolo a strumenti di dimensioni minuscole che permeano vari aspetti della vita comune. Se da principio si identifica l’universo informatico con un unico grande settore di studio multidisciplinare, con contributi matematici, fisici ed ingegneristici, con l’andare dei decenni si è sempre di più differenziato in molti settori distinti, specifici per la tecnologia, la tipologia e l’ambito applicativo. Se all’ini- zio si poteva pensare al computer come l’immenso elaboratore, oggi parlando di computer si può pensare ad una enorme va- rietà di strumenti, siano essi computer da casa, telefoni, tablet, termostati, centraline di auto, centri di calcolo, server web, stru- menti di pagamento elettronico, produzione industriale, sistemi biomedicali e tanti altri ancora. La sempre maggiore differen- ziazione dal mondo desktop/workstation ha reso necessario la presenza di professionisti specializzati e qualificati. In questo testo si presenteranno gli aspetti legati alla macro- categoria tecnologica nota come Embedded Computing, offrendo una panoramica basilare sulle conoscenze necessarie per studia- re e lavorare in questo settore in modo semplice e sintetico. L’Embedded Computing è di per se estremamente multidiscipli- nare in quanto unisce aspetti legati alla fisica, alla matematica e all’ingegneria ad una serie di pratiche ed usi derivati da lunghe e consolidate esperienze industriali. Data la enormità di queste discipline prese singolarmente, lo scopo del libro è quello di offrire una percorso didattico ideato per studenti di corsi di ingegneria o informatica che dispongano già di basi tecniche, conoscenza e pratica d’uso del computer, esperienze pregresse con la programmazione imperativa ed il funzionamento basilare dei sistemi operativi. Per quanto pos- sibile, si è cercato di mantenere una semplice soglia di accesso ai contenuti, ma alcuni capitoli non potranno essere compresi appieno senza le necessarie conoscenze pregresse. È inoltre da sottolineare che, nonostante sia stato dato un notevole spazio 2 CAPITOLO 1. INTRODUZIONE a tematiche legate all’hardware, il destinatario ideale del testo è lo sviluppatore di software per sistemi embedded, che pos- siede le necessarie competenze legate allo sviluppo, e che vuole sfruttare le potenzialità offerte dall’hardware embedded. Non è scopo di questo testo invece affrontare l’argomento da un punto di vista squisitamente ingegneristico, quindi per coloro che sono intenzionati a progettare componentistica hardware. Il linguaggio utilizzato per la stesura è in molti casi di natura tecnica e talvolta gergale. Tale scelta stilistica è fatta di pro- posito per favorire l’inserimento del lettore all’interno del gergo specifico, facilitandone le future interazioni con documentazioni e letteratura settoriale oltre che per mantenere il testo sinteti- co e senza perdita di intuitività. In alcuni casi infatti, porre spiegazioni e traduzioni di terminologia specifica può risultare controproducente, sia dal punto di vista della comprensione che da quello della correttezza. In altre parole, ogni contesto tecni- co ha la sua terminologia, e l’apprendimento di quest’ultima è un requisito fondamentale per raggiungere la piena confidenza con l’argomento trattato. Nota bene: da sempre il mondo embedded è stato piuttosto variegato in tema di licenze di rilascio, libertà di utilizzo, acces- so al codice e possibilità di modifica: da soluzioni interamente libere sia dal punto hardware che software (ad esempio i prodot- ti della famiglia Arduino), a soluzioni miste basate su software libero ma con l’aggiunta di software proprietario (ad esempio i telefoni su base Android) per arrivare a soluzioni interamente proprietarie e chiuse (fenomeno comune nei settori Industrial e Automotive). Gli autori di questo testo sono dichiaratamente sostenitori del Software Libero3, e ciò ha sensibilmente condi- zionato le scelte delle piattaforme approfondite in questo testo, con una accesa preferenza per quelle libere, relegando alla sola citazione, e solo laddove sia ritenuto necessario ai fini di una maggiore comprensione, quelle proprietarie. 3https://www.gnu.org/philosophy/free-sw.html 3 SISTEMI EMBEDDED: TEORIA E PRATICA 1.1 I Sistemi Embedded Con la terminologia Sistema Embedded (tradotto testual- mente “sistema incorporato”) si tende ad indicare l’insieme com- posto da hardware e software (occasionalmente definito firm- ware) dedicato a specifici scopi (“specific purpose”) i cui elemen- ti siano tutti quanti integrati ed incorporati. Tale definizione può tuttavia risultare alquanto generica e fuorviante in quanto il numero dei dispositivi a rientrare sotto questa nomenclatura è elevato e composto da elementi assai diversificati per archi- tettura hardware e software. Per comprendere meglio quale sia l’universo dei sistemi embedded è possibile fornire alcuni esempi dei settori di utilizzo e sviluppo di tali sistemi: • avionica, aeronautica, guida inerziale, sistemi di volo • POS e bancomat • stampanti e fotocopiatrici • elettrodomestici e domotica • router, switch, firewall • decoder, media player, telefoni, SmartTV • apparecchiature medicali • Internet of Things4 L’implementazione di questi dispositivi può richiedere diffe- renti caratteristiche tecniche in base alle finalità per cui vengono progettati.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages290 Page
-
File Size-