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 printf
comandos:
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
básicamente printf
comandos de shell con \x
secuencias de escape que printf
interpreta. En el dispositivo que hice:
device $ cat > firmware.sh
luego usó el minicom
enví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 printf
script:
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
Se comprobó mediante BusyBox md5sum
que la firmware.bin
suma 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 \x
literalmente porque no es una secuencia de escape reconocida; Por lo tanto, no tenemos que duplicar las barras invertidas.
busybox --help
yls -l /bin
, yls -l /usr/bin
, por favor.