Acabei de enviar um arquivo de firmware de ~ 7 Kb para um sistema embarcado Linux baseado no BusyBox pela porta serial.
Sem rede, sem utilitários de transferência de arquivos; sem utilitários Base64 ou qualquer coisa remotamente útil no dispositivo.
No host, codifiquei trivialmente um firmware no seguinte formato; um tipo de hex-dump que consiste em literais de shell combinados com printf
comandos:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
basicamente printf
comandos de shell com \x
seqüências de escape que printf
interpretam. No dispositivo, eu fiz:
device $ cat > firmware.sh
em seguida, usou o minicom
arquivo ASCII do send ( Ctrl-AS) para enviar esse arquivo para o host. Eu poderia ter usado copiar e colar, já que a quantidade de dados é pequena.
Em seguida, marque executável e execute o printf
script:
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
Verificado usando o BusyBox se md5sum
a firmware.bin
soma de verificação no dispositivo corresponde à imagem original do firmware no host.
PS A sintaxe de aspas duplas do shell passa \x
literalmente porque não é uma sequência de escape reconhecida; portanto, não precisamos dobrar as barras invertidas.
busybox --help
els -l /bin
els -l /usr/bin
, por favor.