Introduzione
Con il termine sistema embedded (sistema incapsulato) si identificano genericamente
dei sistemi elettronici a microprocessore progettati appositamente per una determinata
applicazione, spesso con una piattaforma hardware ad hoc, integrati nel sistema che
controllano e in grado di gestirne tutte o parte delle funzionalit` a.
In questa area si collocano sistemi di svariate tipologie e dimensioni, in relazione
al tipo di microprocessore, al sistema operativo, ed alla complessit´ a del software che
pu` o variare da poche centinaia di byte a parecchi megabyte di codice.
Contrariamente ai computer generici, un sistema embedded ha dei compiti cono
sciuti gi´ a durante lo sviluppo, che eseguir` a dunque grazie ad una combinazione hard
ware/software specificamente studiata per la tale applicazione. Grazie a ci` o l’hardware
pu` o essere ridotto ai minimi termini e ridurne lo spazio occupato, i consumi ed il costo
di fabbricazione. Inoltre l’esecuzione del software ` e spesso in tempo reale (real time),
per permettere un controllo deterministico dei tempi di esecuzione.
I sistemi embedded sono sistemi di computer, nel significato pi` u generale del ter
mine. Questa definizione, infatti, include tutti i computer del mondo, tranne quelli
progettati per essere di utilit` a generica. Gli esempi di sistemi embedded spaziano dai
lettori portatili di musica ai controlli in tempo reale di sistemi quali lo Space Shuttle.
La maggior parte dei sistemi embedded ` e progettata per compiere ripetutamente
un’azione ad un costo contenuto. La maggior parte di questi sistemi, ma non tutti, ha
inoltre dei vincoli di performance che devo essere rispettati, come ad esempio la neces
sit` a di operare in tempo reale. Pu` o accadere anche che un sistema debba essere molto
veloce nell’esecuzione di alcune funzioni, ma possa tollerare velocit` a inferiori per altre
attivit` a. Questi sistemi rispettano i vincoli di performance con una combinazione di
1
Introduzione 2
hardware e software appositamente progettati.
Nel caso di sistemi che devono essere commercializzati in massa, ridurre i costi
diventa una priorit` a. Sistemi di questo genere, infatti, spesso sono dotati di alcuni
chip, una CPU altamente integrata, un chip dedicato a tutte le altre funzioni ed un
singolo banco di memoria. In questo caso ogni componente e selezionato e progettato
per ridurre il pi` u possibile i costi.
Il software scritto per molti sistemi embedded, in particolare quelli senza hard
disk, ` e talvolta chiamato firmware. Il firmware ` e un tipo di software che, ad esempio,
` e possibile trovare nei chip delle memorie ROM o Flash.
Il Firmware ` e l’insieme delle funzioni logiche che risiedono in un semicondut
tore sia come topografia, intendendo quindi l’insieme delle funzioni implementate in
logica pura direttamente sul die, sia come vero e proprio software che generalmente
trova posto all’interno di una memoria ROM o EEPROM. In italiano ` e detto anche
microprogramma.
Il termine deriva dall’unione di “firm” (stabile) e “ware” che significa “componen
te”, ed indica una serie di programmi nativi del computer e non modificabili dall’utente
finale, che sono il punto di incontro fra componenti logiche e fisiche, ossia fra hardware
e software.
In alcuni apparati che realizzano le reti di calcolatori, come router e molti switch
di fascia media e alta, la parola firmware ha un significato pi` u ampio: indica il vero
e proprio sistema operativo dell’apparato, che ne gestisce tutte le funzioni, possiede
un’interfaccia utente spesso non banale (accessibile via porta seriale, o via rete con i
protocolli SNMP, telnet, SSH, HTTP, TFTP o anche FTP per il trasferimento di file di
configurazione o nuove versioni del fimware), permette di monitorare ed intervenire
sul funzionamento dell’apparato e di modificarne la configurazione.
Data la complessit` a delle funzioni realizzate dal firmware in questi casi, gli aggior
namenti per aggiungere funzionalit` a o per correggere bug possono essere frequenti.Il
firmware ` e memorizzato su una memoria non volatile ROM ,EEPROM e Flash.
I sistemi embedded spesso richiedono di essere attivi continuamente per anni sen
za errori, pertanto il software ed il firmware sono progettati e testati con molta pi` u
attenzione rispetto al software dei personal computer. Molti sistemi embedded, infatti,
Introduzione 3
evitano di incorporare componenti con parti meccaniche in movimento (come gli hard
disk), poich´ e essi sono meno affidabili rispetto a componenti allo stato solido come le
memorie Flash.
Le principali architetture della CPU usate nei sistemi embedded sono ARM, MIPS,
Coldfire/68k, PowerPC, X86, PIC, 8051, Atmel A VR, H8, SH, V850, FR V , M32R,
eccetera.
Il mio progetto ha come base un sistema embedded di un router prodotto per il
consumo di massa.Questo apparato usa un firmware embedded linux di default.Con
’Embedded Linux’ ci si riferisce a quell’insieme di distribuzioni concepite per essere
utilizzate su sistemi embedded. Le caratteristiche principali di tali sistemi impongono
dei vincoli molto severi al sistema operativo in termini di memoria flash occupata, me
moria centrale necessaria, tempi di avvio brevi. Linux ` e un sistema operativo “general
purpose” ` e stato realizzato cio` o per essere impiegato principalmente su sistemi desktop
e server con criteri che lo rendessero adattabile a diversi contesti e portabile verso il
maggior numero di architetture possibili. L’elevata portabilit` a, unita alla licenza GPL
hanno fatto crescere l’interesse intorno a questo sistema operativo anche nell’ambito
del mercato dei sistemi embedded. Sicuramente il fatto che linux dipenda da un filesy
stem comporta una limitazione dal punto di vista embedded e determina l’impossibilit` a
di raggiungere dimensioni inferiori a circa un megabyte. Ma c’` e da dire che i sistemi
embedded moderni hanno in genere maggiori quantit` a di memoria di massa. Un’altro
aspetto inusuale per un sistema embedded ` e la presenza di strumenti di interazione con
l’utente ad alto livello. Generalmente un utente non ha la necessit` a di interagire con
il sistema, se non per accenderlo. Ad ogni modo ` e possibile, come gi` a detto, riuscire
ad ottenere un sistema Linux completamente funzionante di dimensioni pari a circa
un megabyte, filesystem incluso, eliminando tutte le parti superflue e non strettamente
necessarie e avvalendosi di strumenti sviluppati proprio con l’obiettivo di soddisfare i
requisiti tipici dei sistemi embedded che vadano a rimpiazzare i pi` u esigenti strumenti
standard.
Introduzione 4
La seguente lista comprende alcune delle distribuzioni commerciali e non orientate
ai sistemi embedded:
Distribuzioni GPL Distribuzioni Commerciali
1. Embedded Debian Project 1. LynuxWorks: BlueCat
2. AMSEL 2. AMIRIX: Embedded Linux
3. Embedded Gentoo 3. Coollogic: Coollinux
4. ETLinux 4. Coventive: XLinux
5. FREESCO 5. Esfia: RedBlue Linux
6. Linux Router Project 6. K Linux
7. Linux−VR Project 7. KYZO: PizzaBox Linux
8. Linux On A Floppy (LOAF) 8. Lineo: Embedix
9. Qplus 9. Mizi: Linu@
10. Midori Linux 10. MontaVista: Hard Hat Linux
11. uClinux 11. Neoware: NeoLinux
12. μ−Linux 12. PalmPalm: Tynux
13. PeeWeeLinux 13. Red Hat: Embedded Linux
14. OpenWrt 14. Vitals System: vLinux
Per il mio progetto ho scelto di usare OpenWrt, una distribuzione appositamente svi
luppata per fornire un sistema operativo altamente personalizzabile adatto ad alcuni
modelli di router attualmente nel mercato, per i quali i rispettivi produttori hanno de
ciso di rendere pubblico il codice del firmware. I router attuali possono montare pro
cessori e componenti hardware di rete sufficientemente potenti per l’elaborazione di
dati in entrata, uscita e memorizzazione, come pu` o essere la quantit` a di lavoro di un
server mail operante in un ufficio medio grande. Le limitate risorse hardware sono
bilanciate da software sempre pi` u leggeri e veloci. L’idea di questo progetto nasce dal
poter potenziare un comune router utilizzato nelle case come negli uffici per intercon
nettere varie macchine in modo da poter gestire la posta elettronica degli utenti con un
dispositivo poco ingombrante, economico, e di bassi consumi. Inoltre tale idea potr` a
Introduzione 5
essere esteso ad altri servizi essenziali in una realt` a di tipo aziendale quali: server web,
dns per esempio considerando le sempre maggiori potenzialit` a dei router.
Capitolo 1
Hardware utilizzato
1.1 Panoramica sull’ architettura MIPS
MIPS ` e l’acronimo di Microprocessor without Interlocked Pipeline Stages, ` e un pro
cessore di architettura RISC sviluppato da MIPS Computer Systems Inc. (in seguito
nota come MIPS Technologies, Inc).
Il MIPS ` e utilizzato nel campo dei computer SGI, e hanno trovato grossa diffusione
nell’ambito dei sistemi embedded, dei devices di Windows CE e nei router di Cisco.
Le prime architetture MIPS erano realizzate a 32 bit (generalmente 32 bit per regi
stri e data paths), mentre le ultime versioni sono a 64 bit. Esistono cinque revisioni del
MIPS instruction set, chiamate MIPS I, MIPS II, MIPS III, MIPS IV , e MIPS 32/64.
L’ultima di queste, MIPS 32/64 Release 2, definisce un insieme di registri di control
lo come l’instruction set. Molte estensioni “add on” sono anche disponibili, incluso
MIPS 3D che` e un semplice insieme di istruzioni dedicate SIMD
1
in floating point per
applicazioni 3D , MDMX che ` e un’istruzione SIMD molto costosa su interi che usa
registri floating point a 64 bit, MIPS16 che aggiunge compressione alle istruzioni che
creano un programma riducendo lo spazio occupato (una tecnologia simile alla tecno
logia Thumb implementata dall’architettura ARM
2
), e il pi´ u recente MIPS MT, una
1
Single Instruction, Multiple Data
2
Acorn RISC Machine
6
Capitolo 1. Hardware utilizzato 7
Figura 1.1: Esempio si microprocessore MIPS
nuova aggiunta multithreading per i sistemi simili all’HyperThreading implementato
da Intel nei processori Pentium 4.
Negli ultimi anni molti core MIPS sono stati rilasciati in tecnologia IP core
3
per
permettere una progettazione di sistemi embedded su misura. Core a 32 e 64 bit sono
stati immessi sul mercato con i nomi 4K e 5K e sono stati venduti tramite licenza, come
anni prima fu fatto per i progetti MIPS32 e MIPS64. I core possono essere collegati
ad altre unit` a come unit` a FPU
4
, sistemi SIMD e altri dispositivi di input/output, etc.I
core MIPS sono stati un successo commerciale e sono utilizzati da molte industrie per
realizzare i loro prodotti. Per esempio Cisco e Linksys utilizzano i core per i propri
router e modem.
1.2 Linksys WRT54GS
Linksys ` e una divisione dell’azienda statunitense Cisco Systems che produce apparec
chiature informatiche destinate all’utilizzo in reti casalinghe o di piccole aziende. Fu
una tra le prime aziende costruttrici ad adottare lo standard wireless 802.11g. Esistono
varie versioni di questo router, ognuna delle quali ha subito delle modifiche all’hard
ware come illustrato nella tabella:
3
IP sta per intellectual property.
4
Floating point unit
Capitolo 1. Hardware utilizzato 8
Versione CPU RAM Flash S/N note
1.0 200 MHz 32 MB 8 MB CGN0/CGN1 chipset AMDTec 6996L,
aggiunta speed booster.
1.1 200 MHz 32 MB 8 MB CGN2 chipset
Broadcom BCM5325EKQM
2.0 216 MHz 32 MB 8 MB CGN3 10 led frontali e
funzione
secureEasySetup
2.1 216 MHz 32 MB 8 MB CGN4 chip radio cambiato
da BCM2050 a
BCM2050KML
3.0 200 MHz 32 MB 8 MB CGN5 processore,MAC,
switching gestiti
dall’unico chip
Broadcom BCM5352EKBP
4.0 200 MHz 16 MB 4 MB CGN6
5.0 200 MHz 16 MB 2 MB CGN7 usa VxWorks OS
5.1 200 MHz 16 MB 2 MB CGN8 usa VxWorks OS
6.0 200 MHz 16 MB 2 MB CGN9 uguale 5.0
7.0 200 MHz 64 MB 2 MB CGNA? Broadcom BCM5354KFBG
Chipset
Tabella 1.1: Tabella riassuntiva delle versioni del router wrt54GS
La Versione che ho utilizzato ` e la 1.1; dovuto al buon compromesso tra memoria ram
e memoria flash, due scelte critiche al fine del progetto. Per poter far girare linux
embedded il router infatti necessita di una memoria Flash maggiore di 2 MB al contra
rio delle versioni 5.0 , 5.1 , 6.0 , 7.0 .Il maggioramento della RAM nelle versioni 1.0 ,
1.1 , 2.0 , 2.1 , 3.0 permette di far funzionare programmi che richiedono pi` u risorse per
poter funzionare come pu` o essere spamassassin per esempio.I cambiamenti apportati
all’hardware da parte della casa produttrice non creano problematiche grazie al buon
lavoro fatto dagli sviluppatori del firmware che ho utilizzato.
1.2.1 Descrizione generale del Router
Il Linksys wrt54gs ` e un router wireless che include uno switch 10/100 full duplex a
quattro porte.
`
E compatibile con gli standard 802.11g e 802.11b(2,4GHz).Usa la tecno
Capitolo 1. Hardware utilizzato 9
logia SpeedBooster capace di incrementare le prestazioni della rete wireless del 35sup
portano la funzione di auto cross over (MDI/MDI−X) senza bisogno di cavi di rete
incrociati.
Figura 1.2: Router Linksys WRT54GS
Specifiche Tecniche
Standard IEEE 802.3, IEEE 802.3u, IEEE 802.11g, IEEE 802.11b
Canali 13 canali (Europa)
Porte/pulsanti Internet: una porta RJ 45 10/100
LAN: quattro porte commutate RJ 45 10/100
Una porta di alimentazione Un pulsante di ripristino
Tipo di cablaggio UTP CAT 5
LED Alimentazione, DMZ, WLAN, LAN (1, 2, 3, 4), Internet
Sicurezza wireless WPA, 802,1x, WEP, filtraggio MAC Wireless
Tabella 1.2: Specifiche Tecniche del WRT54GS
Capitolo 1. Hardware utilizzato 10
1.2.2 Anatomia interna del router
Figura 1.3: Interno del router
Aprendo il wrt54gs ci si presenta un circuito integrato monolitico, che comprende
varie componenti.Le pi` u importanti sono la CPU, la RAM , la memoria Flash, la porta
seriale , l’ interfaccia ethernet , il chip wireless , l’interfaccia JTAG. Tutte le componen
ti sono state assemblate nella scheda di silicio secondo il design del chipset BCM4712
creato dalla Broadcom. IL BCM4712 viene detto anche “802.11b/54g®Integrated Wi
reless AP/Router” ad indicare che il chip di Access Point wireless ` e gia integrato nel
chipset.Questo chipset appartiene alla famiglia della AirForce™, incorpora l’antenna
wireless ed un processore IEEE 802.11g MAC/baseband.Il progetto originale include
anche USB1.1, non presente invece nel router. La scheda del router utilizza il chip
BCM2050 per le funzioni wireless, ed integra un antenna PCB
5
patch a 2.4GHz.Il
cirtuito ` e collegato a due antenne esterne. Il seguente schema mostra come sono
interconnesse tra di loro le componenti del chipset broadcom.
1.2.3 CPU
La CPU montata dal router ` e prodotta dalla Broadcom; azienda leader nella produzio
ne di semiconduttori per reti di comunicazione cablate e wireless.Si tratta del modello
5
Printed Circuit Board
Capitolo 1. Hardware utilizzato 11
Figura 1.4: Schema del chipset
Figura 1.5: CPU Broadcom
BCM4712 revisione 1 a 200 MHz (BCM4712KPB).Questa CPU
`
diversa da un qual
siasio altro processore come ad esempio un pentium dato che codifica instruzioni e dati
in una modo completamente distinto.Non ` e quindi possibile eseguire binari compilati
per una architettura 80386 su questa CPU.Ha una architettura di tipo MIPS32.
1.2.4 RAM
Ci sono 2 x IC42S16800 7T PC133/CL3 8M x 16bits SDRAM banchi di ram da 16MB
ciascuno per un totale di 32 MB.Si pu` o anche vedere direttamente dal router via linea
di comando:
root@OpenWrt: # cat /proc/meminfo
Capitolo 1. Hardware utilizzato 12
Figura 1.6: Banchi di ram
total: used: free: shared: buffers: cached:
Mem: 31248384 10194944 21053440 0 864256 2883584
Swap: 0 0 0
MemTotal: 30516 kB
MemFree: 20560 kB
MemShared: 0 kB
Buffers: 844 kB
Cached: 2816 kB
SwapCached: 0 kB
Active: 2228 kB
Inactive: 1460 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 30516 kB
LowFree: 20560 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Il produttore della ram pu` o variare da EtronTech a ISSI.
1.2.5 Memoria Flash
Questa ` e una memoria flash progettata da Intel appositamente per sistemi embedded,
quindi con in mente il basso consumo e l’affidabilit/‘a.Per controllare via linea di com