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
doc:appunti:hardware:freerunner [2009/10/12 17:23] niccolodoc:appunti:hardware:freerunner [2015/03/11 09:15] (current) – [Specifiche del Neo FreeRunner] 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.
  
-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 boot. Come salvare l'immagine in modo compatibile?+Ecco la dimensione e il contenuto di ciascuna partizione:
  
-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**:+^ 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 =====
Line 551: Line 617:
   * USB device   * USB device
   * WiFi 802.11b/g   * WiFi 802.11b/g
-  * Bluethoot+  * Bluetooth
   * GPS   * GPS
   * Slot microSD   * Slot microSD
  
  
doc/appunti/hardware/freerunner.1255368213.txt.gz · Last modified: 2009/10/12 17:23 by niccolo