Spark:U-Boot
Die Fulan Spark basierenden Settopboxen benutzen als Bootloader das U-Boot. Dadurch ist die Benutzung des Bootloaders sehr flexibel. Das verwendete U-Boot hat sehr viele Funktionen, unter anderem eine Update Funktion direkt im Bootloader wodurch ein Recovery oder Update des Flashinhalts mit einem speziell präparierten USB-Sticks möglich ist. Ebenso kann man das GUI System auswählen welches gestartet werden soll, entweder die Original Spark GUI oder das ebenfalls integrierte Enigma2.
Inhaltsverzeichnis
Zugang zum U-Boot
Die Konsole vom U-Boot erreicht man über die serielle Sub-D9 Schnittstelle. Die Kommunikationsgeschwindigkeit beträgt 115200 8N1. Die Verbindung zum PC muss mit einem Nullmodemkabel erfolgen.
Umstellen der Bootreihenfolge auf 'USB-Stick vor Flash'
Damit man von einem USB Stick z.B. einen Kernel starten kann muss man die Bootreihenfolge im U-Boot umstellen. In der Default Einstellung (Auslieferungszustand) startet U-Boot einen Kernel aus dem Flash.
Der Trick besteht nun darin die U-Boot Einstellungen so zu verändern das zuerst auf einem USB Gerät nach einem Kernel gesucht wird und, wenn dort keiner gefunden wird, dann einen Fallback auf den Kernel im Flash zu machen.
U-Boot Start unterbrechen
Wenn die Box erfolgreich mit einem Terminalprogramm verbunden worden ist ist der Startvorgang im Terminal zu sehen und kann entweder mit der Tastatur im Terminalfenster oder mit den Fronttasten beeinflusst werden. Nachdem die Box eingeschaltet ist muss zunächst der normale Bootvorgang unterbrochen werden. Die ist möglich durch Betätigen von ESC
im Terminal oder durch die Taste MENU
an der Box.
Board: STx7111-Mboard (MB618) [32-bit mode] info: Disregarding any EPLD U-Boot 1.3.1-g057e7c28 (Oct 21 2011 - 09:58:11) - stm23_0043 - YW 1.0.021 Rel DRAM: 128 MiB NOR: 8 MiB NAND: 512 MiB *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial IdentID : 09 00 08 00 00 3a 94 Hit ESC to stop autoboot: 0 # <--- hier hat man 3 Sekunden Zeit zum Unterbrechen do_update auto_update_flag=0 ******************************************* Update Menu V2.0 0. Update Uboot : Please press '0' or FP 'UP' 1. Update Kernel : Please press '1' or FP 'DOWN' 2. Update RootFS : Please press '2' or FP 'LEFT' 3. Exit menu : please press '3' or ESC or FP 'MENU' 4. boot : Please press '4' or 'B' or FP 'OK' 5. Reset : Please press '5' or 'R' or FP 'POWER' 6. Loader : Please press '6' or 'L' or FP 'RIGHT' ******************************************* Please enter your choice :
U-Boot startet daraufhin das "Update Menü". Dieses muss beendet werden um auf die eigentliche U-Boot Konsole gelangen zu können. Die geschieht entweder durch Eingabe von 3
im Terminal oder durch die Taste MENU
an der Box.
Please enter your choice : ESC # Abbruch des Update Menüs you had pressed ESC to exit update menu. you can recall this menu by using 'update' command. MB618>
Bootreihenfolge anpassen
U-Boot benutzt die Variable ${bootcmd}
um das System zu starten. Daher wird diese zunächst in eine neue Variable kopiert.
MB618> setenv bootcmd_fromflash ${bootcmd} MB618> saveenv
Danach kann man ${bootcmd}
mit neuen Parametern überschreiben.
MB618> setenv bootcmd usb start\;fatload usb 0 81000000 script.img\;autoscr 81000000\;run bootcmd_fromflash
Bevor man das veränderte Boot Environment abspeichert ist zu prüfen ob der Bootvorgang nun wie gewollt funktioniert. Zunächst ohne USB-Stick! Schließlich soll die Box bei nicht eingesteckten USB-Stick aus dem internen Flash booten. Also nun erst einmal die Box booten.
MB618> boot
Die Box muss nun genauso starten wie ohne die Modifikation! Da die Veränderung von ${bootcmd}
im U-Boot noch nicht abgespeichert waren sind diese beim Ausschalten der Box wieder unwirksam. Bis jetzt ist nur die neu angelegte Variable ${bootcmd_fromflash}
angelegt und abgespeichert worden.
War der Bootvorgang erfolgreich dann wiederholt man den obigen Schritt ab dem Setzen der neuen Variable ${bootcmd}
(also ab setenv bootcmd ...
, jedoch ohne zu speichern!) nun aber mit dem vorbereiteten USB-Stick. Startet die Box nun erfolgreich vom USB-Stick können die Veränderungen des U-Boot Environment ein drittes Mal wiederholt werden und vor dem Bootkommando mit saveenv
abgespeichert werden. Hier nochmal die kompletten Eingaben für diesen letzten finalen Schritt.
MB618> setenv bootcmd usb start\;fatload usb 0 81000000 script.img\;autoscr 81000000\;run bootcmd_fromflash MB618> saveenv MB618> boot
Danach ist die Bootreihenfolge permanent umgestellt, so das U-Boot immer versucht ein System von einem USB-Stick aus zu starten. Eine serielle Konsole wird nicht weiter benötigt.