User Tools

Site Tools


doc:appunti:hardware:freerunner

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:appunti:hardware:freerunner [2009/10/12 18:35] niccolodoc:appunti:hardware:freerunner [2010/05/15 14:13] niccolo
Line 36: Line 36:
   * **[[attualita/liberta_digitale/20080903_freerunner_review]]**   * **[[attualita/liberta_digitale/20080903_freerunner_review]]**
   * **[[freerunner_peek_poke]]**   * **[[freerunner_peek_poke]]**
 +  * **[[doc:appunti:prog:openmoko_compile]]**
 +  * **[[freerunner_debian]]**
  
 ===== Il primo boot ===== ===== Il primo boot =====
Line 421: Line 423:
  
 Riassumendo i paragrafi precedenti, questo è un esempio di come si effettua il backup e la reinstallazione completa del FreeRunner (perdendo tutte le personalizzazioni). Riassumendo i paragrafi precedenti, questo è un esempio di come si effettua il backup e la reinstallazione completa del FreeRunner (perdendo tutte le personalizzazioni).
 +
 +**ATTENZIONE**: fare il dump di una partizione della memoria flash crea un file di dimensioni pari all'intera partizione, ben superiori alla dimensione delle immagini utilizzate per flashare inizialmente il device.
 +
 +==== Backup con dfu-util ====
 +
 +FIXME In teoria dovrebbe essere possibile fare il backup delle immagini contenute nella memoria flash con l'utility **''dfu-util''**. Tuttavia **esiste un grave [[http://docs.openmoko.org/trac/ticket/1843|bug]]** nell'upload dal device al PC (opzione **''%%-U%%''**), per cui **le immagini scaricate dal FreeRunner risultano corrotte** e non utilizzabili. Se ad esempio si flasha nuovamente sul FreeRunner l'immagine del kernel ottenuta con il procedimento seguente, si ottiene un checksum error durante la fase di boot e conseguente blocco.
 +
 +Il bug è confermato con U-Boot 1.3.2-moko12 (2008-12-18) e dfu-util r4067.
 +
 +Ad ogni modo, questa sarebbe la procedura (**da non usare a causa del bug!**):
  
   - Entrare nel **menu U-Boot in NOR flash** (accendere il FreeRunner tenendo premuto il tasto **AUX** e premendo il pulsante **POWER**).   - Entrare nel **menu U-Boot in NOR flash** (accendere il FreeRunner tenendo premuto il tasto **AUX** e premendo il pulsante **POWER**).
Line 427: Line 439:
  
 <code> <code>
 +# WARNING! OpenMoko bug #1843 produces bad images!
 dfu-util -a kernel     -R -U bkp_kernel.bin dfu-util -a kernel     -R -U bkp_kernel.bin
 dfu-util -a splash     -R -U bkp_splash.bin dfu-util -a splash     -R -U bkp_splash.bin
Line 433: Line 446:
 </code> </code>
  
-^ bkp_splash.bin  | Dump dello splash-screen compresso gzip (480x640x16 frame bufferRGB bits = 5:6:5, HWSWP = 1).  | +Per salvare l'**immagine del rootfs** (partizione //rootfs//) si potrebbe procedere in modo analogoma il file ottenuto avrebbe il difetto di occupare tutta la dimensione della flash (**250 Mb**), non il solo spazio effettivamente usato dai file.
-^ bkp_u-boot_env.bin  | Editabile con envedit.pl. +
-FIXME Il file **''bkp_kernel.bin''** ottenuto come sopra non è buono per essere flashato nuovamente nel telefonino, ma produce un checksum error in caso di bootCome salvare l'immagine in modo compatibile?+
  
-Per salvare l'**immagine del rootfs** si può procedere in modo analogo, ma l'immagine ottenuta probabilmente non è flashabile. Sicuramente ha il difetto di occupare tutta la dimensione della flash (**250 Mb**) non solo lo spazio effettivamente usato dai fileQuindi **la seguente procedura è sconsigliata**:+Ecco la dimensione e il contenuto di ciascuna partizione: 
 + 
 +^ splash.bin  |  640 Kb | Dump dello splash-screen compresso gzip (480x640x16 frame buffer, RGB bits = 5:6:5, HWSWP = 1).  | 
 +^ kernel.bin  |  8.0 Mb | Immagine del kernel (u-boot/PPCBoot image). 
 +^ u-boot.bin  |  256 Kb |Il boot loader U-Boot. 
 +^ u-boot_env.bin |  256 Kb | La configurazione di U-Boot, editabile con envedit.pl. 
 +^ rootfs.jffs2  | 247 Mb | Immagine del root filesystem, di tipo jffs2. 
 + 
 +==== Backup con nanddump ==== 
 + 
 +Per aggirare il bug di **''dfu-util''**/**''U-Boot''** si può fare il dump della flash con **''nanddump''**, i requisiti per usare questo metodo sono: 
 + 
 +  * Accesso al FreeRunner via ssh. 
 +  Installazione del pacchetto **mtd-utils** che fornisce ''nanddump''
 +  * Spazio libero sulla SD per contenere i dump. 
 + 
 +Verifichiamo le partizioni sulla flash
  
 <code> <code>
-# WARNINGThe resulting file is not suitable for a restore (dfu-util -D)+cat /proc/mtd 
-dfu-util -rootfs -R -U bkp_rootfs.jffs2+dev:    size   erasesize  name 
 +mtd000200000 00010000 "physmap-flash.0" 
 +mtd1: 00040000 00020000 "u-boot" 
 +mtd2: 00040000 00020000 "u-boot_env" 
 +mtd3: 00800000 00020000 "kernel" 
 +mtd4: 000a0000 00020000 "splash" 
 +mtd5: 00040000 00020000 "factory" 
 +mtd6: 0f6a0000 00020000 "rootfs"
 </code> </code>
 +
 +effettuiamo il dump di un paio di esse:
 +
 +<code>
 +nanddump --omitoob -f mtd1_u-boot.dump /dev/mtd1
 +nanddump --omitoob -f mtd3_kernel.dump /dev/mtd3
 +</code>
 +
 +Omettiamo dal dump i byte out-of-band (OOB), che contengono informazioni di servizio (bad block marks, error correction codes).
 +
 +Il file così ottenuto deve essere **identico** a quello usato durante il flashing iniziale, **a meno della dimensione**. Ecco come confrontare i due file solo per i primi byte:
 +
 +<code>
 +cmp --bytes=1780096 Om2008.12-om-gta02.uImage.bin mtd3_kernel.dump
 +</code>
 +
 +Il kernel dovrebbe essere disponibile anche come file **''/boot/uImage''** sul FreeRunner, ma nel mio caso differisce di 7 byte rispetto all'originale.
 +
 +Il dump della partizione //rootfs// con questo metodo è sconsigliato, sia per per i motivi di dimensione visti sopra, sia perché il contenuto non è consistente: alcuni file e directory presenti sul FreeRunner non risultano quando si monta l'immagine via loop device (perché? FIXME).
 +
 +Per effettuare il dump del rootfs vedere il metodo che segue.
 +
 +==== Backup con mkfs.jffs2 ====
 +
 +Come accennato, il dump della partizione flash crea un file pari alla dimensione della partizione. Per il root filesystem è particolarmente penalizzante sia per lo spazio occupato (250 Mb) sia per il tempo impiegato.
  
 Ecco quindi una **procedura alternativa** per ottenere un'immagine jffs2 di backup, pronta per essere flashata. Il tutto si esegue da una shell del FreeRunner, l'immagine viene trasferita sul PC (192.168.0.200) via ssh: Ecco quindi una **procedura alternativa** per ottenere un'immagine jffs2 di backup, pronta per essere flashata. Il tutto si esegue da una shell del FreeRunner, l'immagine viene trasferita sul PC (192.168.0.200) via ssh:
Line 457: Line 516:
 L'immagine jffs2 viene generata sul FreeRunner, per questo è necessario installare il pacchetto ''mkfs-jffs2''. La procedura impiega circa **20 minuti per 110 Mb**. L'immagine jffs2 viene generata sul FreeRunner, per questo è necessario installare il pacchetto ''mkfs-jffs2''. La procedura impiega circa **20 minuti per 110 Mb**.
  
-Questi i comandi per **installare le nuove versioni** (tra un upload e l'altro il FreeRunner potrebbe spengersi): 
- 
-<code> 
-dfu-util -a u-boot -R -D gta02v5_and_up-u-boot.bin 
-dfu-util -a kernel -R -D Om2008.9.uImage.bin 
-dfu-util -a rootfs -R -D Om2008.9.rootfs.jffs2 
-dfu-util -a splash -D Om2008.9.splash.gz 
-</code> 
  
 **Jffs2** è un filesystem journaled specifico per memorie [[wp>Memory_Technology_Device|flash MTD]]. Per **montare un'immagine jffs2** si può usare l'emulazione MTD su block device offerta dal kernel: **Jffs2** è un filesystem journaled specifico per memorie [[wp>Memory_Technology_Device|flash MTD]]. Per **montare un'immagine jffs2** si può usare l'emulazione MTD su block device offerta dal kernel:
  
 <code> <code>
-losetup /dev/loop0 good-rootfs.jffs2+losetup /dev/loop0 Om2008.12-om-gta02.rootfs.jffs2
 modprobe block2mtd block2mtd=/dev/loop0,131072 modprobe block2mtd block2mtd=/dev/loop0,131072
 cat /proc/mtd cat /proc/mtd
Line 486: Line 537:
 jffs2_scan_inode_node(): CRC failed on node at 0x0f5f2bf4: Read 0xb4f0ed85, calculated 0xc9878958 jffs2_scan_inode_node(): CRC failed on node at 0x0f5f2bf4: Read 0xb4f0ed85, calculated 0xc9878958
 </file> </file>
 +
 +==== Flashing delle nuove immagini ====
 +
 +La procedura effettua il trasferimento tramite cavetto USB con l'utility **''dfu-util''**.
 +
 +Entrare nel **menu U-Boot** con uno dei metodi visti sopra ed eseguire questi comandi per **installare le nuove versioni** (tra un upload e l'altro il FreeRunner potrebbe spengersi):
 +
 +<code>
 +dfu-util -a u-boot -R -D gta02v5_and_up-u-boot.bin
 +dfu-util -a kernel -R -D Om2008.12-om-gta02.uImage.bin
 +dfu-util -a rootfs -R -D Om2008.12-om-gta02.rootfs.jffs2
 +dfu-util -a splash -D Om2008.9.splash.gz
 +</code>
 +
 +**NOTA:** L'immagine 2008.12 utilizza i repository [[http://downloads.openmoko.org/repository/Om2008.8/]], vedi ''/etc/opkg/*.conf''.
  
 ===== PyPPP: connessione internet via GPRS ===== ===== PyPPP: connessione internet via GPRS =====
doc/appunti/hardware/freerunner.txt · Last modified: 2015/03/11 09:15 by niccolo