Strumenti di sviluppo per Linux embedded Strumenti di sviluppo per sistemi Linux embedded
Michael Opdenacker
Free Electrons
http://free­electrons.com/
Traduzione italiana di G. Gusinu, http://gusinu.net/
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
1
Ringraziamenti
Al progetto OpenOffice.org, per i loro strumenti di presentazione e edizione testi che hanno soddisfatto ogni mia necessità.
Alla comunità Handhelds.org, per l'aiuto che ne ricevo e l'opporunita' di darne ad altri.
A tutti i membri della comunità Free Software e Open Source, per mettere a disposizione il meglio di se stessi: il loro lavoro, le loro conoscenze, la loro amicizia.
A tutti coloro che hanno inviato correzioni:
Matti Aaltonen
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
2
Diritti di riproduzione
© 2004, Michael Opdenacker
michael@free­electrons.com
Questo documento e' disponibile secondo la licenza GNU Free Documentation License, senza variazioni.
E' possibile copiare e modificare questo documento purché questa licenza sia mantenuta.
Per maggiori dettagli si veda http://www.gnu.org/licenses/fdl.html.
Aggiornamenti del documento sono disponibili su http://free­electrons.com/training/devtools
Correzioni, suggerimenti e collaborazioni sono ben accetti!
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
3
Aggiornamenti
Salvo specificazione contraria le modifiche di questo documento sono di Michael Opdenacker
Per maggiori dettagli consultare http://free­electrons.com/doc/ChangeLog
28 Settembre 2004. Prima edizione ufficiale
20­24 Settembre 2004. Prima presentazione per Atmel, Rousset (Francia)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
4
Introduzione
Lo scopo principale di questo documento e' di dare un aiuto visivo ad un formatore durante corsi e presentazioni. Rappresenta un sommario o complemento a quello che viene detto. Per questi motivi le spiegazioni non sono e non vogliono essere esaustive.
D'altro canto, il documento vuole essere anche un riferimento per l'auditorio. Inoltre si e' tenuto conto dei lettori che siano interessati all'auto­apprendimento. Ecco perche' vengono dati alcuni dettagli che rendono il documento meno attrattivo dal punto di vista visivo.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
5
Contenuto delle lezioni (1)
Workstation GNU / Linux
Scelta della distribuzione GNU/Linux e dei pacchetti
Distribuzioni e strumenti commerciali
Ottenere o compilare una toolchain per il cross­compiling
Uso di OpenEmbedded per generare automaticamente un sistema personalizzato
Emulatori
Minicom: console seriale e trasferimento file sul device target
Come trovare software libero per una determinata necessita'
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
6
Contenuto delle lezioni (2)
Dispositivo target
Scelta della libreria C
Busybox: un toolbox molto compatto. Configurazione e cross­compiling
Altri strumenti leggeri per apparecchi embedded
Distribuzioni e pacchetti precompilati
Editori di testo per sistemi embedded
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
7
Strumenti di sviluppo per Linux embedded
Workstation GNU / Linux
Scelta della distribuzione e dei pacchetti
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
8
Distribuzioni Commerciali vs Libere
Distribuzioni Commerciali
Distribuzioni Libere
Includono il supporto
Basso costo
Maggiore supporto da fornitori di hw e sw dedicato
Maggiore supporto dalla comunita' Open/Free Source
Costi elevati
Vantaggiose se si hanno risorse interne di supporto
Meno supporto dalla comunita' Open/Free Source (“ask your vendor”)
Stessi tools delle distribuzioni commerciali
Meno supporto dai fornitori
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
9
Distribuzioni Commerciali (1)
Red Hat: http://www.redhat.com/
Supporto tecnico incluso
Disponiblita' e sicurezza (aggiornamenti frequenti)
Interfaccia piacevole e user friendly
Il piu' popolare in campo industriale, supportato dalla maggior parte dei fornitori di hardware e software
Impiega sviluppatori di fama e tecnici esperti
Partecipa allo sviluppo di Free Software e Open Source
Facile da installare
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
10
Distribuzioni Commerciali (2)
Suse (Novell): http://www.suse.com/
Supporto tecnico incluso
Impiega sviluppatori di fama
Facile da installare
No informazioni su stabilita' e sicurezza
Prima dell'acquisizione di Novell parte del software era proprietario, sebbene la contribuzione libera sia importante.
Non supportata da tutti i fornitori (per il momento)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
11
Distribuzioni Commerciali (3)
Mandrake: http://www.mandrakelinux.com/
User friendly
Facile da installare
Innovativa
Indicata per utenti singoli, poco usato in corporations
Meno stabile (molto testata da quando e' stata rilasciata con licenza libera)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
12
Distribuzioni libere (1)
Debian: http://debian.org/
Stabilità, sicurezza (prevalenza di ragioni tecniche)
Migliaia di pacchetti disponibili, multiarchitettura
Developer friendly, ma non user friendly. Difficile da installare e configurare per i meno esperti
Release non abbastanza frequenti, la versione “stable” diventa rapidamente obsoleta (ciclo di release di 2/3 anni!)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
13
Distribuzioni libere (2)
Fedora Core: http://fedora.redhat.com/
Stabile e sicura (si avvale degli aggiornamenti Red Hat)
User friendly (stessa interfaccia di Red Hat), facile da installare
Supporto non garantito, ma si avvale degli sviluppatori Red Hat per la correzione dei bug (bug base comune)
Rilascio frequente delle versioni (2 all'anno)
Un po' meno stabile di Red Hat (piu' innovazione)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
14
Distribuzioni libere (3)
Mandrake: http://www.mandrakelinux.com/
User friendly
Facile da installare
Innovativa
Rilascio frequente delle versioni complete (due all'anno)
Meno stabile (poco testing e non si tiene conto del feedback degli utilizzatori)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
15
Altri fattori di decisione
Considerare le necessita' degli utilizzatori (per es. tool particolari funzionano con una determinata versione).
Un'unica piattaforma riduce i costi di amministrazione e supporto.
La decisione dipende fortemente dalla disponibilita' di risorse di supporto all'interno della societa'.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
16
Scelta dei pacchetti
Scegliere l'opzione “Development” durante l'installazione
Dove trovare altri pacchetti
http://rpmfind.net/
Pacchetti RPM per Red Hat, Fedora, Mandrake
http://freshrpms.net/
Soprattutto pacchetti audio e video con possibili problemi di licenza (brevetti, controllo Hollywood per player DVD)
http://packages.debian.org/
Raccolta dei pacchetti Debian
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
17
Strumenti di sviluppo per Linux embedded
Workstation
Distribuzioni e toolset commerciali
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
18
Distribuzioni Commerciali
Nota: commerciale non significa proprietario!
I fornitori rispettano la licenza GPL. I sorgenti sono messi a disposizione dei loro clienti e spesso sono messi a disposizione anche della “community”.
La licenza GPL richiede solamente che i sorgenti siano resi disponibili a chi sia stato dato il software binario.
Nessun problema con i sorgenti sviluppati da o con l'aiuto della “community” e rilasciati secondo la GPL.
Sembrerebbe che gli strumenti con interfaccia grafica sviluppati dai fornitori siano coperti da licenze proprietarie. Le licenze non sono pubblicizzate sui loro siti web! Solo i clienti sono a conoscenza o possono chiedere di conoscerle.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
19
Distribuzioni Commerciali: punti forti
Vantaggi tecnici
Strumenti di sviluppo grafici
Il kernel e i tool sono ben testati e hanno un buon supporto tecnico
Patch recenti non presenti nelle versioni “mainstream”
Set di strumenti di sviluppo completo: kernel, toolchain, utilities, binari per molte piattaforme target diverse.
Strumenti integrati per la generazione automatica di immagini kernel, initrd e filesystem.
Strumenti di sviluppo disponibili su diverse piattaforme: GNU / Linux, Solaris, Windows...
Supporto tecnico
Utile in mancanza di risorse di supporto interne
Impegno a lungo termine. Il supporto e' fornito anche per versioni considerate obsolete dalla maggior parte degli sviluppatori (ma non da chi le usa!).
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
20
Montavista
http://www.mvista.com/
Il leader del mercato
Impiega alcuni degli hacker di kernel piu' attivi, in particolare sulla piattaforma ARM
Gli aggiornamenti al kernel e ai driver hanno licenza libera (esempio per Linux 2.6: opzione di preemption, molti driver...)
Strumenti di sviluppo grafici sembrano proprietari
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
21
Metrowerks
http://www.metrowerks.com/
E' propietaria di Lineo
E' di proprietà di Motorola
Offerta di strumenti di sviluppo simile ad altri fornitori (verificare i dettagli sul loro sito web)
Importante esperienza e risorse derivanti da Lineo
Portfolio di applicazioni embedded. Esempio: OpenPDA
Strumenti di sviluppo probabilmente sono proprietari
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
22
TimeSys
http://timesys.com
Offerta di strumenti di sviluppo simile ad altri fornitori (verificare i dettagli sul loro sito web)
“Community friendly”: diffusione di documentazione e articoli tecnici molto interessanti.
Software BSP (Board Support Packages) licenza libera
Sistema operativo Linux real time hard e soft
Strumenti di sviluppo probabilmente sono proprietari
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
23
LynuxWorks BlueCat
http://www.lynuxworks.com/products/bluecat/
Esperienza in RTOS. Indicato per requisiti di real time hard!
Stessi strumenti di sviluppo usati per LynxOS (RTOS proprietario) e BlueCat. E' possibile passare a LynxOS in seguito se necessario (compatibile con le API di Linux).
Strumenti di sviluppo LynuxWorks non sono Free Software.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
24
Collaborazione dei fornitori al kernel
Conteggio del numero di linee in Linux 2.6.8.1
contenenti sia “Copyright” che il nome del fornitore (case insensitive)
Fornitore
Numero di linee
Montavista
347
MetroWerks / Lineo
191
TimeSys
2
LynuxWorks / BlueCat
0
Nota: il numero di linee e' un indicatore molto inaccurato
e deve essere preso come una semplice indicazione.
Sicuramente esistono altri metodi per valutare
la collaborazione allo sviluppo del kernel.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
25
Strumenti di sviluppo per Linux embedded
Workstation GNU / Linux
Ottenere una toolchain per la cross­compilazione
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
26
Creare una toolchain
Generare una toolchain per il cross­compiling da zero e' un compito difficile e penoso! Puo' portar via giorni o settimane!
Molti dettagli da imparare. Diversi componenti da ricompilare (gcc deve essere ricompilato due volte: una volta per gcc + una volta per i compilatori che usano la libreria C).
Molte decisioni da prendere (per esermpio quale versione e quale configurazione di glibc e' adatta alla piattaforma usata)
Occorrono gli header del kernel e i sorgenti di glibc
Occorre avere familiarita' con gli ultimi problemi di gcc e le patch per la piattaforma usata
E' utile avere familiarita' con strumenti di configurazione e build
http://www.aleph1.co.uk/armlinux/docs/toolchain/toolchHOWTO.pdf Questo documento mostra quanto puo' essere divertente!
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
27
Ottenere una toolchain precompilata
Se ne possono ottenere diverse... e' sufficiente sapere dove!
Attenzione
Le toolchain non sono rilocabili. Devono essere installate in
/usr/local/<arch> se questo era previsto quando sono state generate.
Assicurarsi che la toolchain selezionata soddisfi le proprie necessita':
“endianismo”, libreria C, versione del compilatore e delle librerie...
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
28
Toolchain ARM
Pacchetti Debian (emdebian)
http://www.emdebian.org/tools/crossdev.html
Handhelds.org
ftp://ftp.handhelds.org/projects/toolchain/
Code sourcery
http://www.codesourcery.com/gnu_toolchains/arm.html
Per sistemi ARM stand­alone
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
29
Altre toolchains
Toolchain MIPS
http://www.linux­mips.org/wiki/Toolchains
Toolchain PowerPC
Pacchetti Debian (emdebian):
http://www.emdebian.org/tools/crossdev.html
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
30
Strumenti per generare una toolchain
Crosstool: http://www.kegel.com/crosstool/
Script dedicati
Scaricare i sorgenti e applicare le patch
OpenEmbedded: http://openembedded.org/
Scaricare i sorgenti e applicare le patch
Vedere la sezione OpenEmdedded per dettagli
Commando per generare una toolchain standalone:
oemake meta­sdk
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
31
Strumenti di sviluppo per Linux embedded
Workstation GNU / Linux
Generazione automatica di un sistema completo mediante OpenEmbedded
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
32
OpenEmbedded
http://openembedded.org/
Generatore di distribuzioni e filesystem root general purpose
E' divenuto il sistema ufficiale di generazione delle distribuzioni OpenZaurus e Familiar. Tali sistemi sono gia' usati da molti sviluppatori di sistemi embedded(arm, powerpc, x86...)
Piu' di 1200 pacchetti disponibili (agosto 2004)
Supporta sia glibc che uClibc
Supporta diversi formati di pacchetto: .rpm, .ipk, .deb
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
33
Caratteristiche di OpenEmbedded
Genera tutto da zero usando le descrizioni dei pacchetti
Recupera i sorgenti da Internet
Applica le patch
Configura, compila e installa (rootfs e/o pacchetti), glibc o uClibc inclusi
Addirittura rigenera il compilatore e il cross compilatore nella versione richiesta. Lo stesso vale per i tool di configurazione (autoconf, ...)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
34
Configurazione e uso di OE
http://www.openembedded.org/wiki/GettingStarted
Scaricare i sorgenti
Creare uno script per impostare le variabili d'ambiente
Modificare il file conf/local.conf, sovrascrivendo le definizioni di default di OE
Creare i propri meta­pacchetti, listando i prodotti che si vogliono nel proprio system embedded personalizzato.
Eseguire OE:
oemake <your­system>­image
Aspettare diverse ore (da 4 a 6 ore su un PC P4 a 2.4 GHz con 512 MB di RAM)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
35
Comandi utili di OE (1)
Molti pacchetti di OE si trovano in repository CVS. I tool sono ricompilati ogni giorno che OE viene eseguito! La data puo' essere controllata tramite il file conf/local.conf:
CVSDATE=20040621 (per tutti i pacchetti) CVSDATE_glibc=20040621 (solo per glibc)
Forzare la ricompilazione di un determinato tool:
oebuild clean <package_dir>/<package>/<package>_<version>.oe
oebuild <package_dir>/<package>/<package>_<version>.oe
Salvare spazio disco:
Per il momento OE non prevede ancora un meccanismo di rimozione dei file temporanei dopo il processo di compilazione:
Cancellare le directory in build_<arch>/tmp/work/ Cancellare i pacchetti sorgente in sources/
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
36
Comandi utili di OE (2)
OE usa sempre l'ultima versione di un pacchetto a meno che non venga specificata una versione particolare. Esempio:
PREFERRED_VERSION_gcc­cross=3.3.4
PREFERRED_VERSION_gcc­cross­initial=3.3.4
Compilazione della sola toolchain (per cross compiling):
oemake meta­sdk
Compilazione del solo kernel:
oemake virtual/kernel
Compilare un pacchetto con patch manuali senza eseguire clean (che cancellerebbe i file sorgente):
oebuild ­­force compile <oefile>
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
37
Strumenti di sviluppo per Linux embedded
Workstation GNU / Linux
Emulatori
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
38
Utilita' di un emulatore
Esecuzione di un sistema operativo a partire da un altro.
Test di kernel e applicazioni su una workstation evita di dover usare una costosa scheda (hardware) di sviluppo (guadagno monetario). Inoltre puo' essere usato in attesa che la scheda sia pronta (guadagno in tempo).
Il debug del sistema operativo e' piu' semplice: in caso di crash e' sufficiente resettare l'emulatore.
Funzioni avanzate di debug.
Spesso l'emulatore si limita al processore e a qualche dispositivo (nei casi migliori). L'emulatore non puo' sostituire completamente il “vero” hardware o una scheda di sviluppo.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
39
qemu
http://fabrice.bellard.free.fr/qemu/
Un emulatore di processori veloce che usa un traduttore dinamico portabile.
Due modi operativi:
“Full system”: processore e varie periferiche
Supporta: x86, PowerPC (in fase di test)
“User” (solo su host Linux): puo' eseguire programmi compilati per altre CPU. Supporta: x86, PowerPC, ARM, Sparc (in fase di test)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
40
Esempi qemu
Modo “User”
Mandare in esecuzione Busybox per ARM su un i386 GNU/Linux:
qemu­arm ­L /usr/local/arm/3.3.2 \
/home/bart/arm/busybox­1.00­pre8/busybox ls
­L: path delle librerie binarie C del target (in questo caso e' il path delle toolchain di cross compilazione)
Modo “System” (x86)
Ancora piu' facile:
qemu linux.img
linux.img: immagine completa della partizione compreso il kernel. Altre opzioni permettono l'utilizzatore di scegliere un kernel esterno, opzioni della linea di comando del kernel e molte altre!
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
41
User Mode Linux (UML)
Non e' un vero emulatore.
Puo' mandare in esecuzione uno o piu' kernel Linux (che si comportano come un vero sistema per i suoi utenti), ma per la stessa architettura del processore. .
Molto utile per testare kernel e programmi binari sulla stessa architettura.
Per il momento supporta solo x386 (ARM in fase di sviluppo).
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
42
Altri emulatori
Solo Software Libero ovviamente!
Emulatore ColdFire
http://www.slicer.ca/coldfire/
Puo' fare il boot di uClinux
Emulatore SWARM ­ Software ARM ­ arm7
http://www.cl.cam.ac.uk/~mwd24/phd/swarm.html
Puo' eseguire anche uClinux
ARMulator
http://www.uclinux.org/pub/uClinux/utilities/armulator/
Esistono delle patch per gdb per eseguire uClinux
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
43
Strumenti di sviluppo per Linux embedded Workstation GNU / Linux
Minicom: console seriale e trasferimento file
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
44
Minicom (1)
Definizione: programma di comunicazione seriale Disponibile in tutte le distribuzioni GNU / Linux Funzionalita' (attraverso collegamento seriale):
Console seriale di un sistema Unix remoto
Trasferimento file
Controllo modem e collegamento via telefono
Configurazione della porta seriale
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
45
Minicom (2)
Iniziare con il comando “minicom ­s” per eseguire il setup
A prima vista puo' sembrare austero, ma ci si abitua velocemente (vedere la sessiona pratica per maggiori dettagli)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
46
Strumenti di sviluppo per Linux embedded Workstation GNU / Linux
Dove trovare Free Software
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
47
Freshmeat.net
http://freshmeat.net/
Il sito numero uno nella ricerca di Free Software
La maggior parte degli strumenti free vi sono pubblicizzati
Ricerca facile tramite keyword
Diversi criteri di ricerca: rilevanza, vitalita', popolarita', data dell'ultimo aggiornamento...
Dettagli utili: licenza, home page, download, screenshot
Possibilita' di iscriversi a newsletter
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
48
Altri metodi di ricerca di software libero
SourceForge: http://sourceforge.net/
Ospita molti progetti.
Repertorio del software libero FSF / UNESCO: http://directory.fsf.org/
Piu' di 3400 progetti (agosto 2004).
Google: http://www.google.com/
Da non dimenticare, indicizza la maggior parte delle pagine web.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
49
Dove trovare pacchetti
IpkgFind: http://ipkgfind.handhelds.org/
Contiene molti pacchetti binari per ARM
Ricerca per categoria, parole chiave, nome
Pacchetti Debian: http://www.debian.org/distrib/packages
Ricerca per nome di pacchetto o nome di file
rpmfind: http://rpmfind.net/
Molti pacchetti RPM per Red Hat, Mandrake, Suse...
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
50
Identificare un pacchetto
A quale pacchetto appartiene un certo file?
Utile per avere maggiori informazioni, scaricare il codice, cercare nuove versioni, riportare problemi...
Distribuzioni con pacchetti RPM:
(Red Hat, Fedora, Mandrake, Suse...)
> rpm ­qf /bin/ls
coreutils­5.2.1­7
Debian:
> dpkg ­S /bin/ls
fileutils: /bin/ls
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
51
Informazioni su un pacchetto
Accedere alla descrizione del pacchetto, il numero di versione, i sorgenti, etc.
Distribuzioni basate su RPM:
rpm ­qi <package­name>
Debian:
dpkg ­s <package­name>
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
52
Trovare i sorgenti dei tool
Il modo piu' semplice e' di installare il pacchetto apposito (se esiste) contenente il codice sorgente.
Alcuni tool non hanno un sito web o ftp ufficiali per il download. In tal caso il pacchetto sorgente e' l'unico modo possibile. Cio' rende difficile trovare l'ultima versione dei sorgenti di un dato tool!
In ogni caso e come ultima risorsa si puo' procedere come descritto precedentemente per la ricerca di software libero!
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
53
Strumenti di sviluppo per Linux embedded
Strumenti per il dispositivo target
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
54
Strumenti di sviluppo per Linux embedded
Strumenti per il dispositivo target
Creazione e utilizzo di initrd
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
55
Initrd
Initrd = Initial RAM disk
Il primo filesystem di root (/) in RAM, molto minimalista.
Tradizionalmente usato per minimizzare il numero di device driver compilati nel kernel.
Esempio: contiene un modulo ext3 per fare il mount del filesystem root finale.
Utile anche per eseguire script di inizializzazione complessi.
Utile per caricare moduli proprietari (non puo' essere compilato staticamente nel kernel).
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
56
Come creare initrd
mkdir /mnt/initrd
dd if=/dev/zero of=initrd.img bs=1k count=2048
mkfs.ext2 ­F initrd.img
mount ­o loop initrd.img /mnt/initrd
<Aggiungere: busybox, moduli, script linuxrc>
umount /mnt/initrd
gzip ­­best ­c initrd.img > initrd
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
57
Aggiungere busybox a initrd
Molto facile: si copia la directory creata dal makefile fi busybox:
rsync ­a <busybox_install_dir>/ /mnt/initrd/
Per i dettagli si veda la sezione dedicata a busybox
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
58
Esempio /linuxrc per initrd
#!/bin/nash
Esempio Fedora Core 2
mount ­t proc /proc /proc
setquiet
echo Mounted /proc filesystem
echo Mounting sysfs
mount ­t sysfs none /sys
echo "Loading jbd.ko module"
insmod /lib/jbd.ko
echo "Loading ext3.ko module"
insmod /lib/ext3.ko
echo Creating block devices
mkdevices /dev
echo Creating root device
mkrootdev /dev/root
umount /sys
echo 0x0100 > /proc/sys/kernel/real­root­dev
echo Mounting root filesystem
mount ­o defaults ­­ro ­t ext3 /dev/root /sysroot
pivot_root /sysroot /sysroot/initrd
mount /initrd/proc
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
59
La shell NaSh
NaSh is Not A SHell
Interprete per script linuxrc in immagini initrd.
Progettata per essere piu' compatta possibile: 38 KB in Fedora Core!
Puo' essere generata da busybox.
I sorgenti fanno parte del pacchetto mkinitrd (si veda piu' avanti). Per avere i sorgenti si deve scaricare il pacchetto sorgente di mkinitrd (e' piu' facile usare busybox).
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
60
Comandi nash
access ­[r][w][x][f] path
Verifica che l'utente abbia diritti sufficienti per leggere, scrivere o eseguire path (e se questo esista).
echo [item]* [> filename]
exec <command>
find dir ­name name
Implementazione di find molto limitata.
findlodev
Stampa il path completo sul primo device loopback disponibile.
losetup /dev/loopdev file
Fa il bind di file al device di loopback /dev/loopdev.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
61
Comandi nash (2)
mkdevices path
Crea i file device nella directory path, per tutti i device a blocchi listati in /proc/partitions.
mkdir [­p] path
mknod path [c|b] major minor
Crea un device inode per path. Qualche differenza con mkdev (per es. non crea pipe con nome).
mkrootdev path
Fa di path un inode a blocchi per il device che dovrebbe essere montato su root. Si basa sull'opzione root= kernel o
/proc/sys/kernel/real­root­dev.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
62
Comandi nash (3)
mount [­­ro] ­o opts ­t type device mntpoint
Monta un filesystem. Non supporta NFS.
pivot_root newrootpath oldrootpath
Il filesystem montato su newrootpath diventa il nuovo filesystem di root. Quello attuale e' montato su oldrootpath.
raidautorun mddevice
Esegue il riconoscimento automatico di un raid su tutte le partizioni di tale tipo.
showlabels
Mostra la lista dei device con tipo di filesystem e uuid.
umount path
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
63
mkinitrd
mkinitrd [options] image kernel­version
Molto comodo per creare un initrd per il filesystem root dell'host subito dopo aver compilato il kernel.
Include i moduli necessari per montare il filesystem root. Crea uno script linuxrc completo. Si basa su
/etc/fstab and /etc/modules.conf.
Fa parte della maggior parte delle distribuzioni GNU / Linux.
Non adatto per creare un filesystem initrd, a meno che non venga eseguito sul target.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
64
Aggiungere moduli a initrd
E' sufficiente copiare i moduli di cui si ha bisogno.
I moduli devono essere installati in
/lib/modules/<kernel­version>/
kernel­version: valore restituito da uname ­r
esempio: 2.6.7­1.494.2.2
Utile per avere uno script in initrd per mantenere i moduli aggiornati.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
65
Aggiornare i moduli
Ricompilare il kernel
Installare i moduli:
make INSTALL_MOD_PATH=/home/jdoe/linux/ modules_install
Creare ed eseguire lo script seguente in/mnt/initrd/
VERSION=2.6.7
SRC_MOD_PATH=/home/jdoe/linux/lib/modules/$VERSION
MOD_PATH=lib/modules/$VERSION
mkdir ­p $MOD_PATH/kernel/drivers/video/console
cp $SRC_MOD_PATH/kernel/drivers/video/pxafb.ko $MOD_PATH/kernel/drivers/video/pxafb.ko
cp $SRC_MOD_PATH/kernel/drivers/video/lcd.ko $MOD_PATH/kernel/drivers/video/lcd.ko
cp $SRC_MOD_PATH/kernel/drivers/video/backlight.ko $MOD_PATH/kernel/drivers/video/backlight.ko
cp $SRC_MOD_PATH/kernel/drivers/video/console/font.ko $MOD_PATH/kernel/drivers/video/console/font.kocp $SRC_MOD_PATH/kernel/drivers/video/console/fbcon.ko $MOD_PATH/kernel/drivers/video/console/fbcon.ko
...
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
66
Strumenti di sviluppo per Linux embedded Strumenti per il dispositivo target
Strumenti compatti per dispositivi embedded
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
67
Busybox: set di strumenti generici
http://www.busybox.net/ di Codepoet Consulting
La maggior parte dei comandi Unix in un solo eseguibile! Contiene addirittura un server web!
Puo' essere generato come eseguibile standalone (inclusa libc).
Taglia inferiore (anche di molto) a 1 MB.
Facile configurare quali funzioni includere.
La scelta migliore per
initrd con script complessi
Systemi compatti con poca RAM o ROM.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
68
Comandi Busybox!
addgroup, adduser, adjtimex, ar, arping, ash, awk, basename, bunzip2, bzcat, cal, cat, chgrp, chmod, chown, chroot, chvt, clear, cmp, cp, cpio, crond, crontab, cut, date, dc, dd, deallocvt, delgroup, deluser, devfsd, df, dirname, dmesg, dos2unix, dpkg, dpkg­deb, du, dumpkmap, dumpleases, echo, egrep, env, expr, false, fbset, fdflush, fdformat, fdisk, fgrep, find, fold, free, freeramdisk, fsck.minix, ftpget, ftpput, getopt, getty, grep, gunzip, gzip, halt, hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock, id, ifconfig, ifdown, ifup, inetd, init, insmod, install, ip, ipaddr, ipcalc, iplink, iproute, iptunnel, kill, killall, klogd, lash, last, length, linuxrc, ln, loadfont, loadkmap, logger, login, logname, logread, losetup, ls, lsmod, makedevs, md5sum, mesg, mkdir, mkfifo, mkfs.minix, mknod, mkswap, mktemp, modprobe, more, mount, msh, mt, mv, nameif, nc, netstat, nslookup, od, openvt, passwd, patch, pidof, ping, ping6, pipe_progress, pivot_root, poweroff, printf, ps, pwd, rdate, readlink, realpath, reboot, renice, reset, rm, rmdir, rmmod, route, rpm, rpm2cpio, run­parts, rx, sed, seq, setkeycodes, sha1sum, sleep, sort, start­stop­daemon, strings, stty, su, sulogin, swapoff, swapon, sync, sysctl, syslogd, tail, tar, tee, telnet, telnetd, test, tftp, time, top, touch, tr, traceroute, true, tty, udhcpc, udhcpd, umount, uname, uncompress, uniq, unix2dos, unzip, uptime, usleep, uudecode, uuencode, vconfig, vi, vlock, watch, watchdog, wc, wget, which, who, whoami, xargs, yes, zcat
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
69
logread
Componente di busybox.
Mostra i messaggi di syslogd (usa il suo buffer circolare)
Rimpiazza /var/log/messages. Riduce lo spazio necessario e la complessita' (non c'e' bisogno di “ruotare” il file).
Usare readlog ­f per vedere i messaggi a mano a mano che vengono aggiunti.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
70
dropbear: server e client ssh
http://matt.ucc.asn.au/dropbear/dropbear.html
Un server ssh di piccole dimensioni per sistemi embedded.
Soddisfa la piu' parte delle necessita'. Funziona sia come client che come server.
Utile per:
Avere una console remota sul dispositivo target
Copiare file dal/sul target
Sincronizzare file tramite rsync
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
71
tinylogin
http://tinylogin.busybox.net/
Collezione di piccole utility per
Tool e dimensioni
Gestire i log
Eseguire l'autenticazione
Cambiare le password
Gestire utenti e gruppi.
Supporta le password­shadow
per migliorare la sicurezza del sistema.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
0 /usr/sbin/addgroup
24k /usr/sbin/adduser
16k /sbin/getty
36k /bin/login
28k /usr/bin/passwd
24k /bin/su
12k /sbin/sulogin
72
Nano­X / Microwindows
http://www.microwindows.org/
Libreria grafica portabile molto compatta (< 100 KB). Funziona su framebuffer del kernel Linux, X / Windows, SVGAlib e qualche altro sistema.
Due API
API per Win32: permette di portare facilmente programmi scritti per Windows o WindowsCE.
Nano­X: server X compatto con API Xlib­like
Documentazione, FAQ e tutorial disponibili sulla home page. Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
73
Browser web: Dillo
http://www.dillo.org/
Browser web molto veloce e compatto, scritto in C, interfaccia GTK.
Il file eseguibile occupa meno di 350 KB
Funzionalita' di base: cookie, immagini, tabelle, ...
Funzionalita' estese tramite plugins (es. ftp)
Si adatta bene a schermi piccoli.
Non supporta: (https), frames, CSS...
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
74
Schermate di Dillo
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
75
Navigatore web per sistemi compatti: Minimo
Regular layout mode
http://www.mozilla.org/projects/minimo/
Navigatore leggero basato su Mozilla
Durante la configurazione e' possibile scegliere le funzionalita' (CSS, SSL, Javascript...)
Small device CSS
Progettato per dispositivi con 32­64 MB di RAM, occupa meno di 20 MB su “disco”.
Compatibile con pacchetti ipkg per ARM
Aspetto accattivante, ma meno maturo di Dillo (versione disponibile 0.1)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
76
Navigatore web completo: Mozilla Firefox
http://www.mozilla.org/products/firefox/
Navigatore web veloce e compatto basato su Mozilla
Funzionalita' estese: CSS, SSL, Javascript, finestre multiple, blocco di pop­up, etc. Ma facile da configurare.
Occupa circa 40 MB di RAM con 8 finestre aperte.
Occupa 25 MB di “spazio disco” (Sharp Zaurus).
Codice multi piattaforma. Usato in sistemi embedded di taglia media (web pads, PDA di fascia alta)
Eccellente per elettrodomestici di largo consumo. Familiare all'utente poiche' la grafica ricorda IE.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
77
Schermata di configurazione di Firefox
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
78
Qtopia Core (Qt Embedded)
http://www.trolltech.com/products/qtopia/qtopia_core/
Stessa API di Qt Desktop rende semplice portare i programmi.
Basato sul framebuffer invece che su un server X.
Contiene un proprio sistema di gestione delle finestre.
Aspetto e funzioni configurabili.
Completamente modulare per ridurre l'occupazione di memoria.
Si integra con diverse VM Java. Stesso aspetto e funzioni delle applicazioni native.
Strumenti di sviluppo e test sul desktop.
Licenza: GPL se si sviluppa solo sw libero con Qt, altrimenti licenza commerciale. Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
79
Qtopia
http://www.trolltech.com/products/qtopia/
Insieme completo di applicazioni per PDA (PDA Edition) e telefoni (Phone Edition) basate su Qt Embedded.
Programmi disponibili: PIM (Personal Information Management), produttivita', email, giochi, media player... Interfaccia telefono nella versione Phone Edition.
Sincronizzazione dei dati con Qtopia Desktop e MS Outlook.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
80
Ambiente grafico: Opie
http://opie.handhelds.org/
Opie = Open Palmtop Integrated Environment,
fork del progetto Qtopia di Trolltech
Basato su framebuffer, non usa un server X
Collezione completa di software per PDA:
Personal Information Management (Contacts, Calendar...)
Multimedia: grafica, player audio e video
Interfaccia di configurazione dei dispositivi
Altro: giochi, email, e molti altri
Interfaccia basata su temi. Icone e interfaccia grafica attraenti.
Manca un browser (disponibili vecchi port di Konqueror)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
81
Schermate di Opie
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
82
Ambiente grafico: GPE
http://gpe.handhelds.org/
GPE = GPE Palmtop Environment,
basato sul toolkit GTK+­2.2
Usa il server X framebuffer di http://freedesktop.org/. Non sembra pesante. Facile mostrare applicazioni su schermo remoto. Collezione completa di tool per PDA: PIM, email, navigatore web browser, multimedia, tool di configuration, LinPhone...
Riconoscimento della scrittura su schermo tattile
Applicazioni basate su GTK funzionano con modifiche minime
Meno popolare e “seducente” di Opie, per il momento (meglio con le ultime icone di Gnome)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
83
Schermate GPE
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
84
Strumenti di sviluppo per Linux embedded
Strumenti per il dispositivo target
Libreria C
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
85
glibc
http://www.gnu.org/software/libc/
Libreria C del progetto GNU
Progettato per: prestazioni, rispetto degli standard, portabilita'
Presente su tutti i sistemi host GNU / Linux
Troppo grande per sistemi embedded limitati: circa 1.7MB sugli iPAQ con Linux Familiar (libc: 1.2 MB, libm: 500 KB)
Taglia di un programma “hello world”: 12 KB (link dinamico), 350 KB (link statico)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
86
uClibc
http://www.uclibc.org/ di CodePoet Consulting
Libreria C compatta per sistemi embedded limitati, ma che conserva molte funzionalita'.
Recentemente e' stato fatto il porting completo della distribuzione Debian Woody... evidentemente soddisfa la maggior parte delle necessita'.
Dimensioni d'esempio (ARM): circa 400KB (libuClibc: 300 KB, libm: 55KB)
Taglia di un programma “hello world”: 2 KB (link dinamico), 18 KB (link statico).
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
87
newlib (1)
http://sources.redhat.com/newlib/
Libreria C minimale per sistemi embedded molto limitati
Permette di rimuovere il supporto al calcolo in virgola mobile. Inoltre fornisce la funzione iprintf() che lavora solo con interi. Molto piu' piccola!
Fornisce una libreria matematica con funzioni a precisione singola molto piu' veloce delle funzioni standard che rispettano le norme IEEE.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
88
newlib (2)
Estremamente portabile:
Quasi completamente scritta in C
Supportata da molti processori
Addirittura funziona su sistemi privi di sistema operativo! Richiede solo l'implementazione di un massimo di 17 funzioni “stubs” specifiche al sistema se, per esempio, il programma non usa fork() e system().
Per un'accurata panoramica di newlib si veda http://www.embedded.com/story/OEG20011220S0058
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
89
Strumenti di sviluppo per Linux embedded Strumenti per il dispositivo target
Distribuzioni e pacchetti precompilati
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
90
Distribuzioni
Forniscono filesystem root pronti per l'uso.
Possono essere usati su ogni architettura compatibile con i binari.
Esempio: si puo' eseguire Linux Familiar su un telefono portatile!
Si possono utilizzare fin dalle prime fasi di sviluppo.
Non c'e' bisogno di creare il proprio filesystem root a partire da zero!
Facili da aggiornare. Basta aggiungere o rimuovere i pacchetti delle applicazioni.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
91
Distribuzioni embedded (1)
ARM little endian:
Familiar http://familiar.handhelds.org/
Progettata per PDA e webpads (Siemens Simpad...)
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
92
Distribuzioni embedded (2)
Distribuzioni multi­piattaforma
Emdebian: http://emdebian.sourceforge.net/
Sfruttera' le descrizioni standard dei pacchetti Debian e i sorgenti, ma adattandoli ai sistemi embedded: uso di uClibc, riduzione della taglia dei pacchetti (nessuna documentazione), rimozione delle dipendenze, meno opzioni di configurazione...
Pacchetti non ancora disponibili, ma rootfs e tool per generare il kernel si: EmDebSys http://emdebian.sourceforge.net/tools/emdebsys.html
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
93
Filesystem root pronti all'uso
Molto utili per cominciare il lavoro di porting.
Contengono la libreria C e qualche applicazione essenziale
uClibc
http://www.uclibc.org/toolchains.html (i386, arm, mipsel)
Le immagini includono una toolchain gcc nativa
ARM
http://www.arm.com/linux/linux_download.html
Includono l'immagine del kernel, il bootloader e il rootfs (cramfs o pacchetti)
Altre architetture
Vi invitiamo a farci conoscere altri link utili!
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
94
Buildroot
http://buildroot.uclibc.org/
Strumenti per generare automaticamente un rootfs uClibc pronto all'uso con qualche applicazione di base. Utile nelle prime fasi di sviluppo.
Supporta molte architetture.
Scarica automaticamente i pacchetti sorgente.
Facilissimo da usare: basta dare il comando “make”
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
95
Strumenti di sviluppo per Linux embedded Strumenti per il dispositivo target
Editori di testo per sistemi embedded
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
96
vi
Editori di testo grafici sono utili, ma spesso non possono essere usati su sistemi embedded dotati di console a caratteri.
In questo casi bisogna conoscere le nozioni di base di vi
vi e' incluso in busybox.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
97
Comandi di base di vi
[Esc]
i
a
r
R
J
ndd
nyy
p
D
nG
H
/string
:1,$s/str1/str2/g
n
?string
^f
^b
h
l
j
k
^L
u
u
:wq
:w name
:x,y w name
:q!
:f
ZZ
Switch to command mode (when in edit mode)
Insert text
Identical to insert mode, except starts inserting at character after cursor
Replace character under cursor
Replace multiple characters
Join lines (default 2)
Delete n lines. Deleted lines are copied to buffer
Yank n lines. n lines starting at cursor line are copied to buffer
Paste contents of buffer to text starting at the line following the cursor line
Delete from cursor position to end of line
Goto line n. If n is not specified, goes to the last line
Goto first line of file
Find next occurrence of string
Replaces every occurrence of the str1 with str2, starting from line 1 to the end of text
Find next occurrence of the last search string
Find previous occurrence of string
Go forward a page
Go backward a page
Move cursor left
Move cursor right
Move cursor down
Move cursor up
Redraw screen
Undo the latest change
Undo all changes on a line, while not having moved off of it
Exit vi, and save file
Save to file “name”
Writes lines x through y to file “name”
Exit vi without saving changes
Displays file information on bottom on screen
Write contents of buffer to current file and quit vi
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
98
GNU Nano
http://www.nano­editor.org/
Altro editore di testo compatto, no interfaccia grafica, no mouse.
Clone avanzato di Pico (editor commerciale di Pine)
Meno ostico e piu' facile da imparare per principianti grazie al sommario dei comandi sempre visibile.
Disponibile in pacchetto binario per diverse piattaforme.
Un'alternativa a vi in sistemi embedded. Pero' non e' distribuito di serie con busybox.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
99
Schermate di GNU Nano
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
100
Conclusioni
Si puo' scegliere una delle due strade
Distribuzioni e strumenti commerciali
Meglio se non esiste un supporto interno e si ha un budget sufficiente
Aiuto molto a concentrarsi sul “vero” lavoro: realizzare un dispositivo embedded.
Si puo' anche affidare lo sviluppo dei driver al fornitore
Distribuzioni e strumenti liberi
Meglio se il budget e' limitato
Meglio se si vuole fare esperienza e formare personale in interno.
In ogni caso i prodotti sviluppati sono basati su software libero!
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
101
Strumenti di sviluppo per Linux embedded Riferimenti
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
102
Progetti di porting di Linux
Utili per trovare patch, binari, documentazione, toolchain... Sono listati solo port per sistemi embedded:
ARM: http://www.arm.linux.org.uk/
m68k: http://www.linux­m68k.org/
MIPS: http://www.linux­mips.org/
Power PPC: http://penguinppc.org/embedded/
SH: http://linuxsh.sourceforge.net/
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
103
Letture utili
Building Embedded Linux Systems, O'Reilly
By Karim Yaghmour, April 2003
http://www.oreilly.com/catalog/belinuxsys/
http://www.denx.de/twiki/bin/view/DULG/Manual
Molti esempi di comandi utili, aiuto generico e consigli per sistemi Linux embedded.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
104
Laboratorio pratico
Una sessione pratica e' disponibile sul sito:
http://free­electrons.com/training/devtools
La sessione pratica e' un utile complemento per consolidare quello che si e' appreso durante queste lezioni. Gli esercizi sono basati solo su nozioni esposte in questa sessione, ma non viene detto come risolverli.
Se capita di restare bloccati in un esercizio, allora qualcosa in questa sessione non e' stata recepita. In tal caso e' opportuno rivedere la lezione di cui si ha bisogno e trovare quello che manca per terminare l'esercizio.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
105
Servizi di formazione e consulenza
Questa formazione o presentazione e' finanziata dai clienti di Free Electrons che acquistano sessioni di formazione o consulenza per il loro personale.
Se si e' interessati a partecipare a delle sessioni di formazione tenute dagli autori di questo documento si invita a domandare alla propria organizzazione di ordinare tali sessioni.
Per maggiori dettagli si veda http://free­electrons.com/training.
Se vuoi supportare questo lavoro, non esitare a parlarne con i tuoi amici, colleghi e la comunità Free Software locale.
Strumenti di sviluppo per Linux embedded
© Copyright 2004, Michael Opdenacker
GNU Free Documentation License
http://free­electrons.com
106
Related documents
All our technical presentations
on http://free­electrons.com/docs
Linux kernel
Device drivers
Architecture specifics
Embedded Linux system development
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free­electrons.com
How to help
You can help us to improve and maintain this document...
By sending corrections, suggestions, contributions and translations
By asking your organization to order development, consulting and training services performed by the authors of these documents (see http://free­electrons.com/).
By sharing this document with your friends, colleagues
and with the local Free Software community.
By adding links on your website to our on­line materials,
to increase their visibility in search engine results.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free­electrons.com
Linux kernel
Linux device drivers
Board support code
Mainstreaming kernel code
Kernel debugging
Embedded Linux Training
All materials released with a free license!
Unix and GNU/Linux basics
Linux kernel and drivers development
Real­time Linux, uClinux
Development and profiling tools
Lightweight tools for embedded systems
Root filesystem creation
Audio and multimedia
System optimization
Free Electrons
Our services
Custom Development
System integration
Embedded Linux demos and prototypes
System optimization
Application and interface development
Consulting and technical support
Help in decision making
System architecture
System design and performance review
Development tool and application support
Investigating issues and fixing tool bugs
Scarica

Strumenti di sviluppo per Linux embedded