Ich habe gerade eine ~ 7-KB-Firmware-Datei über die serielle Schnittstelle auf ein BusyBox-basiertes Linux-Embedded-System hochgeladen.
Keine Netzwerk- oder Dateiübertragungsprogramme; Keine Base64-Hilfsprogramme oder andere nützliche Funktionen auf dem Gerät.
Auf dem Host habe ich eine Firmware einfach in das folgende Format codiert. eine Art Hex-Dump, bestehend aus Shell-Literalen kombiniert mit printf
Befehlen:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
im Grunde Shell- printf
Befehle mit \x
Escape-Sequenzen, die printf
interpretiert. Auf dem Gerät habe ich:
device $ cat > firmware.sh
Verwenden Sie dann die minicom
ASCII-Datei send ( Ctrl-AS), um diese Datei an den Host zu senden. Ich hätte einfach Kopieren und Einfügen verwenden können, da die Datenmenge gering ist.
Dann markierte ausführbare Datei und führte das printf
Skript aus:
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
Überprüft mit BusyBox's, md5sum
ob die firmware.bin
Prüfsumme auf dem Gerät mit dem ursprünglichen Firmware-Image auf dem Host übereinstimmt.
PS Die Shell-Syntax mit doppelten Anführungszeichen wird \x
wörtlich durchlaufen, da es sich nicht um eine erkannte Escape-Sequenz handelt. Daher müssen wir die Backslashes nicht verdoppeln.
busybox --help
undls -l /bin
und einfügenls -l /usr/bin
, bitte.