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 printfBefehlen:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
im Grunde Shell- printfBefehle mit \xEscape-Sequenzen, die printfinterpretiert. Auf dem Gerät habe ich:
device $ cat > firmware.sh
Verwenden Sie dann die minicomASCII-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 printfSkript aus:
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
Überprüft mit BusyBox's, md5sumob die firmware.binPrüfsumme auf dem Gerät mit dem ursprünglichen Firmware-Image auf dem Host übereinstimmt.
PS Die Shell-Syntax mit doppelten Anführungszeichen wird \xwörtlich durchlaufen, da es sich nicht um eine erkannte Escape-Sequenz handelt. Daher müssen wir die Backslashes nicht verdoppeln.
busybox --helpundls -l /binund einfügenls -l /usr/bin, bitte.