Я только что загрузил файл прошивки размером ~ 7 Кбайт во встроенную систему Linux на базе BusyBox через последовательный порт.
Нет сетей, нет утилит для передачи файлов; Нет Base64 утилит или что-нибудь удаленно полезное на устройстве.
На хосте я тривиально зашифровал прошивку в следующий формат; своего рода шестнадцатеричный дамп, состоящий из литералов оболочки в сочетании с printf
командами:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
в основном printf
команды оболочки с \x
escape-последовательностями, которые 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
, пожалуйста.