Visualizzazione post con etichetta tftpdl. Mostra tutti i post
Visualizzazione post con etichetta tftpdl. Mostra tutti i post

lunedì 23 marzo 2009

Compilare il kernel Atrmark 2.6.26 per armadillo 500

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.

venerdì 20 marzo 2009

Boot dell'ultima distribuzine armadilliana!

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)