FEL-Modus auf dem Orange-Pi Zero um U-Boot ins NOR-Flash zu bekommen
Der Orange-Pi Zero ist ein beliebter Open Hardware Einplatinencomputer der unter Linux laufen kann. Er ist gut von neuen Linux Kerneln und dem U-Boot Bootloader unterstützt.
Neuere boards haben ein NOR-Flash das verwendet werden kann um den U-Boot Bootloader aufzuspielen. U-Boot kann aus den Sourcen mit folgenden Kommandos gebaut werden:
make orangepi_zero_defconfig make
Dann kann mit den sunxi-tools (Debian Linux hat diese Tools als Paket seit etwa zwei Releases) der Bootloader ins NOR-Flash geladen werden. Zuerst wird der Orange-Pi USB-OTG Port (das ist der kleine µ-USB auf dem Board) mit einem Micro-USB Kabel mit einem Computer verbunden (am besten ein Debian Linux, mit anderen Systemen müssen Sie selbst rausfinden wie das geht). Der Orange-Pi darf keine SD-Karte eingesteckt haben. In meinen Experimenten war die Stromversorgung aus dem USB genug um mit folgendem Kommando den Bootloader ins NOR-Flash zu bekommen:
sunxi-fel -v -p spiflash-write 0 u-boot-sunxi-with-spl.bin
Die Datei u-boot-sunxi-with-spl.bin
haben wir gerade mit obigen
Kommandos gebaut. Bis hierher ist alles auf der sunxi.org
Orange-Pi
Zero Seite dokumentiert. Aber sobald der Bootloader mal geflasht
ist, bootet der Orange-Pi nicht mehr in den FEL-Modus der für obiges
Kommando gebraucht wird. Stattdessen startet der Bootloader aus dem
NOR-Flash. Wenn jemals wieder eine neuere Version von U-Boot geflasht
werden soll, muss der Orange-Pi wieder im FEL-Modus starten. Einige
Methoden dazu sind auch auf der sunxi.org
Seite dokumentiert. Leider
ist die einfachste, dass man den RECOVERY-Kontakt auf Masse legt, was
bei vielen Boards über einen Jumper möglich ist, beim Orange-Pi nicht so
einfach weil der Anschluss über einen Pull-Up Widerstand (R 123)
ohne Jumper fest angeschlossen ist. Zum Glück ist dieser Widerstand auf
dem Board einfach zugänglich. Ich habe im Bild die Seite von R 123
auf dem Board mit dem rechten roten Pfeil markiert.
Diese Seite des Widerstands muss mit Masse verbunden werden. Ich verwende die Masse von der Debug-Schnittstelle (markiert mit dem linken roten Pfeil) weil alle anderen gut zugänglichen Masse-Anschlüsse direkt daneben einen +5V Kontakt haben. Wenn man versehentlich +5V mit irgendwas anderem auf dem Board kurzschließt kann man das Board zerstören. Daher ist der Masseanschluss an der Debug-Schnittstelle die sicherste Lösung. Wir verbinden Masse und den R 123 Kontakt, beide mit roten Pfeilen markiert, und schalten den Strom ein (z.B indem wir den OTG-USB verbinden). Dann ist zu überprüfen ob das Board wirklich im FEL-Modus ist mit dem Kommando:
sunxi-fel ver
Das Kommando druckt Versionsinformation zum Board oder eine Fehlermeldung wenn der FEL-Modus nicht erfolgreich gestartet wurde. Sobald das Board dann mal im FEL-Modus ist, kann ein neuer Bootloader aufgespielt werden.
Erfolgsmeldung vom obigen Kommando:
AWUSBFEX soc=00001680(H3) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
Fehlermeldung wenn der FEL-Modus nicht gestartet wurde:
ERROR: Allwinner USB FEL device not found!