Strumenti di sviluppo per Linux embedded Strumenti di sviluppo per sistemi Linux embedded Michael Opdenacker Free Electrons http://freeelectrons.com/ Traduzione italiana di G. Gusinu, http://gusinu.net/ Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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://freeelectrons.com 2 Diritti di riproduzione © 2004, Michael Opdenacker michael@freeelectrons.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://freeelectrons.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://freeelectrons.com 3 Aggiornamenti Salvo specificazione contraria le modifiche di questo documento sono di Michael Opdenacker Per maggiori dettagli consultare http://freeelectrons.com/doc/ChangeLog 28 Settembre 2004. Prima edizione ufficiale 2024 Settembre 2004. Prima presentazione per Atmel, Rousset (Francia) Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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'autoapprendimento. 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://freeelectrons.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 crosscompiling 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://freeelectrons.com 6 Contenuto delle lezioni (2) Dispositivo target Scelta della libreria C Busybox: un toolbox molto compatto. Configurazione e crosscompiling 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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.com 25 Strumenti di sviluppo per Linux embedded Workstation GNU / Linux Ottenere una toolchain per la crosscompilazione Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.com 26 Creare una toolchain Generare una toolchain per il crosscompiling 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://freeelectrons.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://freeelectrons.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 standalone Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.com 29 Altre toolchains Toolchain MIPS http://www.linuxmips.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://freeelectrons.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 metasdk Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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 metapacchetti, listando i prodotti che si vogliono nel proprio system embedded personalizzato. Eseguire OE: oemake <yoursystem>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://freeelectrons.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://freeelectrons.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_gcccross=3.3.4 PREFERRED_VERSION_gcccrossinitial=3.3.4 Compilazione della sola toolchain (per cross compiling): oemake metasdk 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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.com 40 Esempi qemu Modo “User” Mandare in esecuzione Busybox per ARM su un i386 GNU/Linux: qemuarm L /usr/local/arm/3.3.2 \ /home/bart/arm/busybox1.00pre8/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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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 coreutils5.2.17 Debian: > dpkg S /bin/ls fileutils: /bin/ls Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.com 51 Informazioni su un pacchetto Accedere alla descrizione del pacchetto, il numero di versione, i sorgenti, etc. Distribuzioni basate su RPM: rpm qi <packagename> Debian: dpkg s <packagename> Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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/realrootdev 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://freeelectrons.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://freeelectrons.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://freeelectrons.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/realrootdev. Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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://freeelectrons.com 63 mkinitrd mkinitrd [options] image kernelversion 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://freeelectrons.com 64 Aggiungere moduli a initrd E' sufficiente copiare i moduli di cui si ha bisogno. I moduli devono essere installati in /lib/modules/<kernelversion>/ kernelversion: valore restituito da uname r esempio: 2.6.71.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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, dpkgdeb, 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, runparts, rx, sed, seq, setkeycodes, sha1sum, sleep, sort, startstopdaemon, 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://freeelectrons.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://freeelectrons.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://freeelectrons.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 passwordshadow per migliorare la sicurezza del sistema. Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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 NanoX / 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. NanoX: server X compatto con API Xliblike Documentazione, FAQ e tutorial disponibili sulla home page. Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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://freeelectrons.com 74 Schermate di Dillo Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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 3264 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://freeelectrons.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 popup, 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://freeelectrons.com 77 Schermata di configurazione di Firefox Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.com 81 Schermate di Opie Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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://freeelectrons.com 83 Schermate GPE Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.com 92 Distribuzioni embedded (2) Distribuzioni multipiattaforma 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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.com 98 GNU Nano http://www.nanoeditor.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://freeelectrons.com 99 Schermate di GNU Nano Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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://freeelectrons.com 101 Strumenti di sviluppo per Linux embedded Riferimenti Strumenti di sviluppo per Linux embedded © Copyright 2004, Michael Opdenacker GNU Free Documentation License http://freeelectrons.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.linuxm68k.org/ MIPS: http://www.linuxmips.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://freeelectrons.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://freeelectrons.com 104 Laboratorio pratico Una sessione pratica e' disponibile sul sito: http://freeelectrons.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://freeelectrons.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://freeelectrons.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://freeelectrons.com 106 Related documents All our technical presentations on http://freeelectrons.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//freeelectrons.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://freeelectrons.com/). By sharing this document with your friends, colleagues and with the local Free Software community. By adding links on your website to our online materials, to increase their visibility in search engine results. Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.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 Realtime 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