Linux Embedded un pinguino piccolo così Fabrizio Vacca fabrizio.vacca@microc.it
Agenda Introduzione Sistemi embedded: hardware Sistemi embedded: software Piccola panoramica di progetti Open Source DEMO
Introduzione Spero proprio non siate già piazzati così...
I sistemi embedded (qualunque cosa essi siano!) hanno guadagnato negli ultimi anni una vasta fetta di mercato + 64 % http://linuxdevices.com/news/ns9103141896.html Introduzione (seria)
Introduzione (seria) Situazione nel 2004
Nel 2007 Linux è il sistema operativo più il diffuso su sistemi embedded http://www.linuxdevices.com/articles/at7065740528.html Introduzione (seria)
... ecco invece la situazione del mercato embedded dal punto di vista HW http://www.linuxdevices.com/articles/at7065740528.html Introduzione (seria)
Riflessione (introduttiva) Mercato embedded un mercato che cresce del 64% in 5 anni un mercato in cui Linux detiene quasi il 50% dello share secondo la VDC Research il mercato embedded crescerà anche nei prossimi anni malgrado la stagnazione economica Servono strumenti per supportare la crescita! http://www.vdcresearch.com
Legge di Moore (digressione HW!) La densità dei transistor per unità di area, integrabili su un singolo circuito integrati, raddoppia ogni due anni P4 P3 8086 Pentium
Legge di Moore: impatto visuale Intel 4004 (1971) Intel Pentium 4 (2000) 2300 transistor / 108 khz 42 M transistor / 1.5 GHz
Sfide... 3G Algorithms complexity for wireless 2G CPU Performance (~ Moore s Law) Battery capacity 1G
Sistemi embedded: HARDWARE Come definirlo? Chiamiamo sistema embedded ogni sistema di elaborazione in cui: Le interazioni uomo macchina sono molto più limitate di quelle di un tradizionale sistema di elaborazione; Le applicazioni sono generalmente non installabili o comunque scarsamenre flessibili; Il sottosistema di I/O implica una immersione del sistema (no tastiera / video convenzionali)
Costruire un sistema embedded Ovviamente dal punto di vista software! Boot loader Kernel Applicativi
Costruire un sistema embedded (II) Quali strumenti servono? ovviamente un sistema di sviluppo (host) Linux (preferibile) o Cygwin cross compiler per sistema target (embedded) parecchia pazienza...
Cross compiler Compilatore C che funziona sulla macchina ospite (host) e produce codice per il sistema embedded (target) Si usa quando il sistema target è troppo lento o troppo povero di risorse per essere in grado di eseguire un compilatore C
Cross compiler come procurarselo Essenzialmente due possibilità costruirselo from the scratch - laborioso - controllo sulla toolchain ottenuta - http://kegel.com/crosstool - http://gcc.gnu.org/wiki/building%20cross%20toolchains%20with%20gcc procurarsi una toolchain precostruita - grande varietà di versioni di gcc + libc - http://www.codesourcery.com
Boot loader Primo programma caricato all'accensione del sistema embedded Oltre al semplice caricamento del sistema operativo si occupa di: system test inizializzazione delle periferiche gestione upgrade OS in flash 2 progetti Open Source per embedded Das U Boot ( http://sourceforge.net/projects/u boot ) Redboot ( http://sourceware.org/redboot ) GRUB (! )
Kernel E' possibile scegliere tra il 2.6, 2.4 o addirittura il vecchio 2.0 Esistono vari punti di partenza duri e puri: kernel.org uclinux o Snapgear distribuzioni per embedded tipo ARM Debian,... Processo abbastanza straightforward (una volta applicate le patch necessarie)
Applicativi Praticamente sono portabili in ambiente embedded tutti i progetti open source attualmente disponibili Progetto Busybox comandi di linux di base possibilità di configurazione fine dei comandi da includere = controllo del memory footprint molto più semplice che ricompilare i vari pacchetti (fileutils, coreutils,...) http://www.busybox.net
Applicativi (II) Se si utilizza una soluzione chiavi in mano come Snapgear o uclinux sono disponibili anche molti altri applicativi (ad esempio un X server Microwindows) Nel compilare / costruire applicativi per Linux embedded risulta molto utile il progetto Scratchbox (Linux from the scratch)
Sistema di sviluppo Da alcuni anni sono nati due progetti per l'emulazione di sistemi (embedded e non) QEMU SkyEye Se correttamente configurati consentono lo sviluppo di applicazioni embedded senza la necessità di una scheda
Una possibile scheda di sviluppo (low cost!)
Caratteristiche principali NetSilicon NS9360 @ 150 MHz ARM926EJ S RISC Processor Optimized 10/100 Ethernet MAC LCD Controller USB Ports v.2.0 Full Speed (12 Mbps) and Low Speed (1.5 Mbps) 2 Serial Ports (UART) System Bus DMA and Peripheral Bus DMA Power Management Vectored Interrupt Controller General Purpose Timers/Counters/PWM General Purpose I/O Real Time Clock
DEMO Un sacco di bla, bla, bla... Cosa vedremo esempio di cross compilazione di un semplice programma C cross compilazione utilizzando ambiente Scratchbox Kernel 2.4 per piattaforma ARM ed esecuzione nel simulatore SkyEye boot reale di un sistema embedded
GRAZIE PER L'ATTENZIONE! fabrizio.vacca@microc.it