Flashing the Neo FreeRunner/it

From Openmoko

Jump to: navigation, search


Openmoko rilascia regolarmente versioni aggiornate del filesystem di Openmoko (rootfs), del kernel e del Bootloader (U-Boot) come immagini binarie. Queste possono essere scritte nella memoria Flash (NAND) del Neo Freerunner. Per questo si può usare il cavo USB e un computer con gli strumenti forniti da Openmoko per flashare il Neo Freerunner tramite la USB


Contents

3 Componenti Software e 2 tipi di flash

Nel Neo Freerunner lavorano 3 componenti:

  • bootloader: un piccolo programma che parte prima di tutto e carica ogni cosa quando si accende o si riavvia il FreeRunner (NOR o NAND).
  • kernel: il componente centrale di ogni sistema Linux
  • root filesystem: Contiente tutti i file relativi alle applicazioni e i file che vengono inseriti nel FreeRunner.

Il FreeRunner ha due sistemi di memorizzazione: il NOR e il NAND, entrambi flash. Sul FreeRunner per installare un nuovo sistema operativo, non si passa da CD o altre periferiche, come in un normale PC, ma si scrive direttamente sulla memoria Flash. In alternativa è possibile caricare il sistema dalla microSD (si veda Booting_from_SD)

La memoria NOR contiene solo programmi per il boot quando si modifica la memoria NAND. Generalmente non è necessario modificarla. (nel caso, si veda: Flashing_NOR.)

La memoria NAND è molto simile ad un normale Disco Fisso. E' divisa in 3 partizioni, una per il bootloader, una per il kernel e una per il filesystem. Essendo in diverse partizioni, ogni componente può essere flashato separatamente.


Prima di partire: flashare le memorie flash è un intervento drastico. E' meglio pensarci molto bene. Un'alternativa può essere il boot da microSD (si veda Booting_from_SD). Alcune problemi possono essere risolti anche aggiornando il kernel.

Cosa serve

Terminale o interfaccia?

-Terminale: per flashare il FreeRunner si usa DFU-Util, deve essere eseguito sul computer con cui si compie l'operazione. Sono disponibili le versioni per Linux, MacOS X e Windows. DFU-util permette di connettere il pc al FreeRunner attraverso la USB ed eseguire operazioni con il bootloader. La connessione utilizza un particolare protocollo diretto all'interfaccia del bootloader, non è un normale collegamento USB. (Per dettagli si veda Dfu-util) -Interfaccia: anzichè usare il terminale per flashare il FreeRunner, è disponibile un software per eseguire lo stesso lavoro tramite interfaccia grafica. Si trova alla pagina NeoTool

Dove trovare DFU-util

Per Linux: http://downloads.openmoko.org/distro/releases/Om2008.9/dfu-util

Attenzione: è necessario impostare i permessi di esecuzione: chmod a+x dfu-util

Per Linux a 64-Bit: è necessaria la versione 64-bit di DFU-util, generalmente si trova nei repository della distro. Altrimenti:

  1. Cercare una macchina a 32-bit e flashare tramite essa.
  2. Usare una chroot a 32-bit (su un amd64 debian). Per esempio --Bubak 16:54, 4 September 2008 (UTC).

MacOS X: MacOS_X#Graphical_Flashing_with_Openmoko_Flasher

Windows: [1]

      Leggere anche le istruzioni per l'installazione dei driver su Windows Dfu-util-windows

Macchine Virtuali Ci sono stati successi molto limitati usando DFU-util con una Macchina Virtuale, generalmente non è possibile usarlo con queste. Occorre l'accesso fisico della USB.


File immagine da flashare nella memoria del FreeRunner

Ci sono immagini separate per tutti i 3 componenti software, che variano a seconda di cosa si installa. Nella maggioranza dei casi occorre il Kernel (uImage) e il filesystem di root (rootfs). In rari casi, quando è necessario correggere un bug, occorre anche installare un nuovo bootloader. Per un elenco di distro vedere Distributions e vedere Download per scaricare.



Boot dalla NOR Flash


  1. Leggi le altre sezioni di questa pagina, perchè si hanno solo 30 secondi per dare i comandi.
  2. Non connettere subito il cavo USB al FreeRunner (disconnetterlo, nel caso).
  3. Accendi il FreeRunner e carica il bootloader NOR:
        1. Tieni premuto il bottone AUX (in alto)
        2. Dopo pochi istanti premi il tasto POWER finchè non carica il menu
        3. Il menù NOR si intitola *** BOOT MENU (NOR) ***
        4. Leggi anche Booting_the_Neo_FreeRunner
  4. Non selezionare niente. Ora il FreeRunner è pronto per operazioni di backup, flash e modifiche con DFU-utils.
  5. Il FreeRunner rimane nel NOR per 30 secondi, a meno che non si eseguano operazioni.
  6. Connettere il FreeRunner alla USB e al PC.
  7. Ora è possibile dare comandi tramite DFU-utils.
  8. Se il FreeRunner si spegne prima di aver dato i comandi per flashare, occorre ripartire dal punto 2. 

Il programma dfu-util non usa una connessione Ethernet tramite la USB, infatti va settato come interfaccia di rete usb0 nei sistemi GNU/Linux. (Su Windows è necessario il DFU class driver, oppure il driver LibUSB-Win32. Fare riferimento a Dfu-util-windows). DFU-util crea la sua connessione con il FreeRunner. Infatti sarà impossibile creare una connessione Ethernet tramite la USB quando c'è uBoot attivo, ma solo quando il FreeRunner avrà superato il boot.

Dopo aver connesso il FreeRunner al computer tramite cavo USB, è possibile sapere se dfu-util riconosce il FreeRunner con:

./dfu-util -l

Se ci sono errori da dfu-util occorre riprovare, spesso funziona al secondo tentativo.

DFU-util usa il protocollo DeviceFirmwareUpgrade, e può mostrare più device. Se è così, provare a disconnettere altri dispositivi usb, (ad esempio pendrive, mouse USB, ecc.) o usare l'opzione -d per comandare a DFU-util con quale dispositivo connettersi.

Ricordare anche di usare DFU-util con i privilegi di root: è necessario il controllo completo della usb.

Fare il backup

Se non si è sicuri di voler flashare, è possibile fare un backup. Si veda Backup

Usare DFU-util

DFU-util può essere usato per leggere e scrivere la memoria flash del FreeRunner e ottenere informazioni dal dispositivo.

Questo è il comando per scrivere un file immagine in una partizione predefinita (per <altsetting> fare riferimento al manuale di dfu-util):

./dfu-util -a <altsetting> -R -D <nome_file>

Analisi del comando: ./ va usato solo con il terminale di linux -a <altsetting>: specifica l'altsetting dell'interfaccia, con il nome o con il numero. -R: invia il segnale del reset della USB solo a lavoro terminato -D <nome_file>: scrive l'immagine dal file sul pc al dispositivo

In Linux, in caso di "Cannot claim interface: could not claim interface 2: Operation not permitted", è necessario ripetere il comando con permessi di amministratore (root) (ad esempio con su o sudo)

Con Windows, è necessario usare il prompt dei comandi (Start>Esegui>cmd.exe), omettendo ./

Un manuale più dettagliato per dfu-util si trova qui: Dfu-util

L'interfaccia grafica per DFU-util: NeoTool


Scrivere il Kernel

Attenzione: Il telefono deve essere nel menù di U-boot (si veda Boot dalla NOR flash qui sopra)

Il comando è:

dfu-util -a kernel -R -D /path/to/uImage

Con Linux è necessario usare ./ e i privilegi di root

Se il flash ha avuto successo l'output sarà:

status(0) = No error condition is present
Done!

Può esserci anche un errore -110, ciò indica che il kernel è troppo grande per la partizione prevista. U-Boot può cambiare la dimensione delle partizioni sul FreeRunner. Lo stesso errore può anche significare che si sta tentando di scrivere il file sbagliato nello spazio del kernel (ad esempio il rootfs)


Scrivere il filesystem

Il filesystem deve essere un immagine in formato .jffs2. Se il file scaricato è compresso (ad esempio ha un estensione .tar .gz .bz2 .zip .tgz .tar.gz), va prima decompresso.

Per flashare sul dispositivo il comando è:

dfu-util -a rootfs -R -D <rootfs_filename.jffs2>

Il parametro <rootfs_filename.jffs2> è il nome del file jffs2. Scrivere il filesystem può richiedere parecchio tempo, si stima 15 minuti per un file di ~ 70MB. E' anche necessario che il FreeRunner abbia abbastanza batteria per compiere l'operazione.

Quando l'operazione è terminata con successo l'output sarà:

status(0) = No error condition is present
Done!


Scrivere il boot loader nella memoria NAND

Attenzione: Nella maggioranza dei casi non sarà necessario flashare il bootloader. Va modificato solo se bisogna aggiornare per una particolare funzione o per un problema.

Il file del bootloader deve avere un'estensione .bin. Come per il filesystem, se è compresso va prima decompresso.

Il comando per flashare il bootloader è:

dfu-util -a u-boot -R -D uboot.bin

Per Linux è necessario usare ./

Dove uboot.bin è il nome del file da scrivere. Attenzione: sarebbe necessario fare il boot da NOR per flashare NAND. Dopo che la scrittura è avvenuta con successo, assicurarsi che il bootloader NAND funzioni.

Facoltativo: Verificare la versione del bootloader

Dopo un aggiornamento, si può controllare che la versione sul FreeRunner sia effettivamente quella appena scritta. Per fare ciò si può usare il comando
grep Bootloader /dev/mtdblock1
dalla shell del FreeRunner, per vedere la versione di NAND.

Lo stesso comando può essere usato per NOR:

grep  Bootloader /dev/mtdblock0

Riavviare il FreeRunner da NAND

Ora il FreeRunner dovrebbe caricare le nuove immagini. Caricare NAND in questo modo: tenere premuto il tasto di accensione e poi tenere premuto anche il tasto AUX. Il menù dovrebbe essere intitolato *** BOOT MENU (NAND) *** (vedere Log_into_U-Boot_in_the_NAND_Flash per dettagli)


Risoluzione dei problemi

1)Dopo aver flashato, uBoot non carica il kernel e ritorna al menu di boot. Perchè?

  • Può essere che qualcosa sia andato storto durate il flashing del kernel. Provare a riflashare solo il kernel, controllare di aver scelto l'immagine .bin corretta e non il file .bin del bootloader.
  • Provare a riscaricare e riflashare il kernel e controllare l'integrità del file con MD5

Uno script per semplificare DFU-util

DFUScript è sviluppato per aiutare gli utenti che usano più dispositivi con DFU-util tramite il terminale. Le informazioni riguardo DFU-util possono essere reperite a DFUScript

Link correlati

   * Qi alternativa a U-Boot
Personal tools