Alberto Embedded & Open experience

Notes on my experience on Open Source Embedded Systems

Archive for March 2009

Compilare il kernel Atrmark 2.6.26 per armadillo 500

leave a comment »

Ecco le maggiori info 🙂
Cercando in rete ho scoperto che su armadillo 500-FX è già ststo portato android con kernel 2.6.26.
Dato che le due macchine sono così simili a livello hardware mi è parso così strano che il kernel più aggiornato disponibile per armadillo 500 sia il solo 2.6.18.. Quindi ho cercato tra i repository dell’armadillo 500-FX i sorgenti del kernel con l’intenzione di portarlo su armadillo-500.
Il kernel disponibile era proprio il 2.6.26 e con gioia ho scoperto che esisteva anche il file di configurazione per armadillo 500! nonché tutti i sorgenti specifici della CPU board e driver della board di sviluppo!

Bene! Allora i passi per il deploiment:
1
Scaricare e decomprimere i sorgenti del kernel dai repository atmark:

$ wget http://download.atmark-techno.com/armadillo-500-fx/source/kernel/linux-2.6.26-at3.tar.gz
$ tar -xvf linux-2.6.26-at3.tar.gz

2
Configurare e compilare i sorgenti per armadillo con l’aiuto di android:

$ cd linux-2.6.26-at3
$ make armadillo500_defconfig
$ export ARCH=arm
$ export CROSS_COMPILE=[basePathAndroid]/cupcake/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
$ make

Nota: ho usato la toolchain di cupcake, credo che anche con il branch master non abbia problemi..
3
Deploiment nella scheda:
In ./arch/arm/boot sono stati creati i file immagine del kernel: Image e compresso zImage
quindi copiando zImage nella cartella /tftp e scaricandolo nella flash attraverso hermit come nei post precedenti (indicando il nome di file zImage eh!) al reboot tutto funziona correttamente 🙂

Nota: il comando tftpdl da hermit della scheda, all’attivazione della periferica di rete è come se alcune volte non avesse il link attivato.. rimanendo in attesa della risposta dal server per il download.
Workaround: se da workstation eseguo il ping al’indirizzo impostato per la board il download dell’immagine, prima in attesa, parte contemporaneamente.

Written by Alberto!

23/03/2009 at 8:58 am

Linux 2.6.26 done!!!

leave a comment »

Yeeeee!! spulciando tra i repository atmark ho trovato i sorgenti del kernel 2.6.26! i quali supportano l’armadillo 500!
Compilato il tutto con la toolchain arm-eabi di android e scaricato nella board funziona!!

Dettagli alla prossima volta!

Written by Alberto!

21/03/2009 at 3:08 pm

Posted in Armadillo

Tagged with

Boot dell’ultima distribuzine armadilliana!

leave a comment »

Oggi ho terminato la traduzione dei manuali pdf Atmark, i quali contengono si abbastanza informazioni per utilizzare l’Armadillo ma poco o nulla sulle modifiche al kernel per supportare la board.. Spero ci sia qualcosa in più in giro nel kernel tree!
Comunque, mi sono concentrato a far girare il codice più aggiornato possibile -> kernel e distribuzione scaricabili dall’area di download Atmark dedicata.

Cosa ho fatto:

  1. Ho aggiornato il kernel nella flash (Unici device di boot supportati dal bootloader sono la flash interna e la compactflash che non ho..).
  2. Ho Installato la debian-armadillo distribuzione in una partizione della mia SD card utilizzandola come rootfilesystem.

1
Ci sono tre modi per scrivere nella flash della scheda:

  1. Con Hermit-at installato nella Workstation.
  2. Con Shoehorn-at installato nella Workstation.
  3. Da bootloader (Hermit-at nel device) attraverso il protocollo tftp.

Le prime due modalità richiedono l’installazione nella workstation delle relative utility cosa possibile compilando i sorgenti oppure installando i pacchetti debian .deb tramite dpkg.
Visto che lavoro su una Ubuntu non volevo scombinare il tutto ed allora ho optato per la terza!

La terza modalità prevede la presenza di un server tftp raggiungibile nella rete. Nel post precedente descrivo come eseguirne uno nella mia macchina e per controllarne il debug eseguo da shell:

$ inetd -d.

Scaricata l’ultima versione del kernel da http://download.atmark-techno.com/armadillo-500/image/linux-a500-1.05.bin.gz nella cartella /tftp sono pronto per l’aggiornamento:
Da una nuova shell eseguo il minicom (Impostazioni: rate 115200 bps, data 8bit, 1bit stop, No parity, No flowcontrol ) (Il jumper JP1 è cortocircuitato così da farmi presentare il menu del bootloader).
Dal menu del bootloader eseguo:

hermit> tftpdl 192.168.0.10 192.168.0.2 –kernel=linux-a500-1.05.bin.gz
(tftpdl deviceIp workstationIp –regionName=fileToDownload)

Ok! aggiornato il kernel!
Con il seguente comando dico al bootloader di eseguire il boot da flash:

hermit> setbootdevice flash

2
La debian-armadillo si trova qui http://download.atmark-techno.com/armadillo-500/debian/ in 4 file .tgz da estrarre in un’unica cartella.
Dato che in kernel c’è il supporto per i device MMC/SD allora decido di sfruttare la mia schedina da 1 GB ->

  • Cancello le partizioni preesistenti.
  • Creo un’unica partizione ext2.
  • Ci estraggo i debian-armadillo files.
  • Rootfs pronto!

Da menu del bootloader non devo far altro che definire le opzioni di boot del kernel ed eseguire il boot:

hermit> clearenv
hermit> setenv console=ttymcx0 root=/dev/mmcblk0p1 rootdelay=1
hermit> boot

Risultati

  • Nella console seriale ho una shell completamente funzionante.
  • L’uscita vga mi presenta la console virtuale tty1
  • Settando le impostazioni di rete, il controller SMSC funziona perfettamente.
  • Non ci sono moduli in /lib/modules .. ma comunque ciò che serve credo sia tutti in kernel (ma nel caso volessi supporti per espansioni …! ricompilare il kernel o installare moduli aggiuntivi)

Written by Alberto!

20/03/2009 at 6:30 pm

Server tftp con ubuntu

leave a comment »

Link di riferimento:
http://mylinuxmind.myblog.it/tag/ubuntu%20tftp
Per il download di file nella flash della scheda tramite bootloader è utile creare un server tftp.

Installare il demone:

sudo apt-get install tftpd-hpa

Creiamo una cartella per lo scambio dei dati e diamo accesso in lettura e scrittura a chi vuole:

sudo mkdir /tftp
sudo chmod a+r /tftp
sudo chmod a+w /tftp

Ora modifichiamo il file di configurazione dei servizi /etc/inet.conf (Ubuntu 8.04 hardy)
la riga tftp deve essere modificata in:

tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /tftp

dove ogni campo significa:
#servicename sockettype protocol wait/nowait user serverprogram serverprogarguments
l’argomento -s indica al dempne tftpd di utilizzare la directory /tftp come root directory, se si vuole più debug aggiungere -v.

con:

sudo inetd

attiveremo anche il server tftp, specificando l’opzione -d verrà visualizzato il debug dei servizi su shell.

Written by Alberto!

20/03/2009 at 10:14 am

Posted in ubuntu

Tagged with , ,

Alle prese con traduzioni…

leave a comment »

Dopo una giornata alla ricerca di vari automatismi per la traduzione della documentazione dal Giapponese all’Inglese ho trovato questa serie di passi che rendono il tutto abbastanza semplice..
Essenzialmente mi servo della capacità di Google translate di tradurre intere pagine web (basta metterci il link al posto del testo..) e di ZOHO Viewer uno strumento di condivisione dei documenti capace di visualizzare i file pdf.

Tips and Tricks:
Google Translate non riesce a tradurre più di 5-6 pagine di pdf alla volta! -> se si carica l’intero file verrà tradotto pressocé il solo indice..
Pdftk ci viene in aiuto con burst per suddividere il file pdf nelle sue singole pagine:

pdftk nomefile.pdf burst

e merge per fondere singole pagine in unici file pdf:

pdftk nome1.pdf nome2.pdf … cat output merge.pdf

Allora, suddivisi i file di documentazione in gruppi di 6 pagine, stò trascrivendo le informazioni iportanti della scheda che pubblicherò 🙂

Ah.. chissà se mi rispondono alla Atmark per la richiesta di documentazione in inglese..! o faranno la stessa cosa???

Written by Alberto!

20/03/2009 at 9:44 am

Posted in Armadillo

Tagged with , ,

Porting del Kernel Android 2.6.27 su Armadillo 500

leave a comment »

Link di riferimento:
Specifiche della board: http://www.atmark-techno.com/en/products/armadillo/a500/specs
Specifiche del processore: http://www.arm.com/products/CPUs/ARM1136JF-S.html
Area di download sw armadillo: http://download.atmark-techno.com/armadillo-500/

Bene Bene! Prima fase reale del mio progetto: Porting del kernel più aggiornato possibile nella board di sviluppo Atmark Armadillo 500! Questa monta un processore Freescale i.MX31L con set di istruzioni ARMv6.
Ho ordinato il mio fantastico libro Building Embedded Linux Systems, Second Edition che spero illuminerà la mia strada ma nell’attesa che arrivi cerco di individuare le modifiche fatte al kernel “vanilla” per supportare la scheda nella versione presente sul sito atmark.

Importante: Questi Giapponesi scrivono solo in giapponese! Servirà la mail che ho inviato per la richiesta di doc inglese?

Altro: Il kernel a disposizione è un 2.6.18 debian etch1 sssoooo old! 🙂

Written by Alberto!

19/03/2009 at 9:03 am

Sul repository locale del kernel

leave a comment »

Nella cartella “master/prebuilt/android-arm/kernel/” troviamo un bellissimo file “PREBUILT” che recita:

To rebuild the emulator kernel:

% git clone git://android.kernel.org/kernel/common.git kernel
% cd kernel
% export ARCH=arm
% export CROSS_COMPILE=arm-eabi-
% make goldfish_defconfig
% make

If kernel/common.git is mapped into your repo client, you can
just built it from there instead of re-cloning it.

ehm.. un pò da adattare dato che non menziona il branch android-goldfish-2.6.27 (nel branch common del kernel non c’è il file goldfish_defconfig) e che la toolchain di crosscompilazione non è (per ora) nel path d’esecuzione principale (non abbiamo modificato PATH).
Ma almeno abbiam trovato delle informazioni 🙂

Written by Alberto!

07/03/2009 at 11:29 am

Posted in android, linux-arm

Tagged with , , ,