[HowTo] Image Update via Bootloader und TFTP

Antworten
Benutzeravatar
Knicko
NI - Team
Beiträge: 767
Registriert: Di 5. Apr 2016, 16:54
Box: Neo, Neo², Zee², AX-HD51, HD60
Has thanked: 9 times
Been thanked: 7 times

[HowTo] Image Update via Bootloader und TFTP

Beitrag von Knicko »

Diese Anleitung stammt von Bad Joker. Vielen Dank dafür!

-------------------------------------------

Da keiner meiner USB Stick mit meiner Box zusammenarbeiten will, habe ich das Image kurzerhand per TFTP in die Box geladen.

Hier mal eine Schritt für Schritt Anleitung, wie man das Dateisystem über den Bootloader per TFTP wieder einspielen kann. Hierbei geht es ausschließlich um das Dateisystem. Für den Linux-Kernel sind die im folgenden angegebenen Adressen falsch.

Voraussetzungen:
- PC ist per Nullmodemkabel und per Netzwerk, z. B. über einen Switch, mit der Box verbunden
- Auf dem PC läuft ein Terminalprogramm, wie z. B. Putty, mit den Parametern 115200 Baud, 8 Datenbits, 1 Stopbit, keine Parität, kein Handshake
- Auf dem PC läuft ein TFTP Server wie z. B. Tftpd32
- Im Wurzelverzeichnis des TFTP Servers befindet sich das zu flashende Image in entpackter Form (kein zip, gz, 7u oder sonstiges)

Und so geht's:

Schritt 1:

Box einschalten und sofort nach der Hardwareausgabe des Bootloaders im Terminalprogramm eine Taste drücken, so das der Startvorgang unterbrochen wird.

Die Anzeige im Terminalprogramm sollte z.B. so aussehen:

Code: Alles auswählen

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º U-Boot 2009.03-svn1556 (Mai 27 2010 - 01:23:56) Coolstream HDx º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º Chipset information º
º Vendor: Conexant Type: CX2450x (Nevis) Revision: D0 Fuses: 7EFE6D24 º
º Option: 00010000 max. clock: 600 MHzCore voltage: high º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º Clock information º
º MPG0: 594.000 MHz MPG1: 594.000 MHz HD : 593.407 MHz AUD : 491.520 MHz º
º PLL0: 432.000 MHz PLL1: 594.000 MHz PLL2: 533.333 MHz º
º CPU : 594.000 MHz from PLL1 º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º Memory configuration º
º Start³ End ³ Type ³ Description º
ºÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĺ
º 00000000 ³ 0FFFFFFF ³ RAM ³ System main memory bank #0 º
º 10000000 ³ 17FFFFFF ³ RAM ³ System main memory bank #1 º
º F0000000 ³ F1FFFFFF ³ FLASH ³ Spansion S29GL256P (256 Mbit / 16M x 16) º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º Serial number: 008-00002689 (08-000A81) º
º *** Warning - bad CRC, using default environment *** º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º Network configuration º
º MAC: Conexant VMAC rev. 07 address: 00-C5-5C-00-0A-81 º
º PHY: IC Plus IP101 address: 09 º
Error: Bad gzipped data
Error: no valid bmp or bmp.gz image at f0060000
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Hit any key to stop autoboot: 0
HDx>
Schritt 2:

Netzwerk Parameter der Box überprüfen indem man im Terminaprogramm folgendes eintippt:

Code: Alles auswählen

printenv
Die Anzeige im Terminalprogramm sollte z.B. so aussehen:

Code: Alles auswählen

bootargs=console=ttyRI0 mtdparts=cx2450xflash:384k(U-Boot)ro,128k(Splash),4096k(kernel),28160k(systemFS) root=mtd3 rootfstype=jffs2 rw mem=384M
bootcm[COLOR=red][B]<x>[/B][/COLOR]d=bootm 0xF0080000
bootdelay=1
baudrate=115200
ipaddr=192.168.1.100
serverip=192.168.1.16
netmask=255.255.255.0
bootfile="uImage"
splashimage=f0060000
stdin=serial
stdout=serial
stderr=serial

Environment size: 342/131068 bytes
Nun die Netzwerk Parameter an das lokale Netzwerk anpassen, wenn sie nicht passen.

ipaddr = Die IP Adresse der Box
netmask = Die Subnetmask des lokalen Netzwerkes
serverip = Die IP Adresse des TFTP Servers, in unserem Falle der PC von dem aus wir arbeiten

Ändern der Parameter geht mit folgender Eingabe:

Code: Alles auswählen

set ipaddr x.x.x.x
set netmask x.x.x.x
set serverip x.x.x.x
Natürlich x.x.x.x mit den entsprechenden Daten ersetzen ;)
Die Eingabe in die Konsole gibt keine Rückmeldung. Die Parameter werden auch nicht permanent gespeichert, beim nächsten Reset sind sie wieder wie vorher. Überprüfen kann man die Eingabe erneut mit "printenv".

Wenn alles passt, kann es auch schon losgehen. Bitte vom PC aus einen Ping auf die Box machen, ob die Verbindung besteht. Dies geht über "Start" -> "Ausführen" -> "cmd" und Enter, es öffnet sich die Eingabeaufforderung auf dem PC, dort dann bitte "ping x.x.x.x" eingeben, wobei x.x.x.x die IP Adresse der Box ist. Manchmal gibt es keinen Ping zurück, es sollte dann aber zumindest als Ergebnis stehen "Zielhost nicht erreichbar".

Schritt 3:

Image vom PC in die Box laden per TFTP

Mit folgendem Befehl laden wir das Image in die Box:

Code: Alles auswählen

tftp 0x0E000000 image.img
Die Ausgabe im Terminal sollte dann in etwa so aussehen:

Code: Alles auswählen

TFTP from server 192.168.1.2; our IP address is 192.168.1.40
Filename 'image.img'.
Load address: 0xe000000
Loading:#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
######
done
T Bytes transferred = 23932636 (16d2edc hex)
Die Angabe der gelesenen Bytes - in diesem Beispiel 23932636 - notieren. Diese wird gleich wieder benötigt.

Nun haben wir das Image in den Arbeitsspeicher der Box geladen.

Schritt 4:

Löschen des für das Image vorgesehenen Bereiches im Flash. Dazu dient diese Eingabe:

Code: Alles auswählen

erase 0xF0480000 0xF1FFFFFF
Die Ausgabe im Terminal sollte in etwas so aussehen:

Code: Alles auswählen

..................................................................................
..................................................................................
........................................................
Erased 220 sectors
Schritt 5:

Die oben beim Lesen der Imagedatei notierte Größenangabe ( 23932636 Byte ) durch 4 teilen. Sollte dabei ein Rest übriegbleiben oder das Ergebnis ungerade sein, muß das Ergebnis aufgerundet werden, damit es durch 2 teilbar ist. 23932636 / 4 = 5983159 -> 5983160. Diese Dezimalzahl muß nun noch in die hexadezimale Darstellung umgerechnet werden. Dazu kann man z.B. den Windows-Rechner im Wissenschaftlichen Modus benutzen. 5983160 dezimal sind 0x5B4BB8 hexadezimal. Dieser Wert wird für den nun folgenden letzten Schritt benötigt.

Schritt 6:

Jetzt wird geflasht. Dazu folgendes im Terminalprogramm eingeben:

Code: Alles auswählen

cp 0x0E000000 0xF0480000 0x5B4BB8
In der Eingabe findet sich die berechnete Größe aus Schritt 5 wieder. Im Terminalprogramm gibt die Box abermals den Fortschritt durch eine Reihe von Punkten aus:

Code: Alles auswählen

Copy to Flash.....................................................
..................................................................
..............................
done
An dieser Stelle ist das Image geflasht. Nun kann die Box durch Eingabe von "reset" oder durch Aus- und Einschalten neu gestartet werden.

Manchmal muss zweimal geflasht werden, ich habe bisher nicht verstanden wieso, aber U-Boot ist manchmal etwas zickig.
Befehle werden manchmal nicht beim ersten mal angenommen, dann einfach nochmal eingeben. Also nicht gleich nach dem ersten Versuch aufgeben ;)

Danke an die Anleitung von Coolstreamer, wovon ich einiges verwendet habe.

Das Flashen geschieht auf EIGENE GEFAHR, ihr könnt euch eure Box bei Verwendung von falschen Parametern kaputt flashen! Also bitte lieber alles genau zweimal durchlesen, nochmal die Eingaben überprüfen und genau nachrechnen. Wenn ihr unsicher seid, meldet euch, BEVOR ihr einfach etwas ausprobiert, auch wenn ihr eine Weile auf die Antwort warten müsst! Besser alle Zweifel sind beseitigt als das ihr am Ende eine tote Box habt. Es droht der Verlust der Garantie bei falscher Verwendung und ich übernehme keine Haftung oder Verantwortung für euer Handeln!

Viel Erfolg beim "Reviven" euerer Box!

Anleitung geschrieben von Gandharva,
MAKE NEUTRINO GREAT AGAIN!
Antworten

Zurück zu „HowTo's“