Acabo de cargar un archivo de firmware de ~ 7 Kb en un sistema embebido Linux basado en BusyBox a través del puerto serie.
Sin redes, sin utilidades de transferencia de archivos; sin utilidades Base64 ni nada remotamente útil en el dispositivo.
En el host, codifiqué trivialmente un firmware en el siguiente formato; un tipo de volcado hexadecimal que consiste en literales de shell combinados con printfcomandos:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
básicamente printfcomandos de shell con \xsecuencias de escape que printfinterpreta. En el dispositivo que hice:
device $ cat > firmware.sh
luego usó el minicomenvío de archivos ASCII de (Ctrl-AS ) para enviar este archivo al host. Podría haber usado copiar y pegar, ya que la cantidad de datos es pequeña.
Luego, marcó el ejecutable y ejecutó el printfscript:
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
Se comprobó mediante BusyBox md5sumque la firmware.binsuma de comprobación en el dispositivo coincide con la imagen de firmware original en el host.
PD La sintaxis de comillas dobles de shell pasa \xliteralmente porque no es una secuencia de escape reconocida; Por lo tanto, no tenemos que duplicar las barras invertidas.
busybox --helpyls -l /bin, yls -l /usr/bin, por favor.