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 printfcomandos:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
basicamente printfcomandos de shell com \xseqüências de escape que printfinterpretam. No dispositivo, eu fiz:
device $ cat > firmware.sh
em seguida, usou o minicomarquivo 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 printfscript:
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
Verificado usando o BusyBox se md5suma firmware.binsoma de verificação no dispositivo corresponde à imagem original do firmware no host.
PS A sintaxe de aspas duplas do shell passa \xliteralmente porque não é uma sequência de escape reconhecida; portanto, não precisamos dobrar as barras invertidas.
busybox --helpels -l /binels -l /usr/bin, por favor.