Я только что загрузил файл прошивки размером ~ 7 Кбайт во встроенную систему Linux на базе BusyBox через последовательный порт.
Нет сетей, нет утилит для передачи файлов; Нет Base64 утилит или что-нибудь удаленно полезное на устройстве.
На хосте я тривиально зашифровал прошивку в следующий формат; своего рода шестнадцатеричный дамп, состоящий из литералов оболочки в сочетании с printfкомандами:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
в основном printfкоманды оболочки с \xescape-последовательностями, которые printfинтерпретируют. На устройстве я сделал:
device $ cat > firmware.sh
затем использовал minicomфайл ASCII для отправки (Ctrl-AS ) для отправки этого файла на хост. Я мог бы просто использовать копирование и вставку, так как объем данных невелик.
Затем помечаем исполняемый файл и запускаем printfскрипт:
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
Проверено с помощью BusyBox, md5sumчтоfirmware.bin контрольная сумма на устройстве соответствует исходному образу прошивки на хосте.
PS Синтаксис двойных кавычек оболочки проходит \xдословно, потому что это не распознанная escape-последовательность; следовательно, нам не нужно удваивать обратную косую черту.
busybox --helpи,ls -l /binиls -l /usr/bin, пожалуйста.