[Herramientas] Un método eficaz para combinar el cargador de arranque y el firmware de la aplicación



1. Introducción

  El firmware integrado generalmente se divide en BootLoader y App. BootLoader se utiliza para la verificación de inicio, actualización de la aplicación, reversión de la versión de la aplicación y otras funciones. BootLoader se ejecuta en la primera etapa del encendido de la CPU y luego salta a la dirección de la aplicación para ejecutar la aplicación. Por lo tanto, cuando se lance el firmware, habrá firmware de BootLoader y firmware de aplicación; en este momento, esperamos fusionar el firmware de BootLoader y el firmware de la aplicación en un firmware, de modo que solo sea necesario grabarlo una vez en la producción en masa.

Inserte la descripción de la imagen aquí

Distribución típica del espacio de almacenamiento

2 forma tradicional

  Algunos métodos tradicionales son "métodos terrenales", nada malo, pero más engorrosos. Los tipos de proyectos aumentan, o cuando la versión se publica con frecuencia, se vuelve más engorrosa y propensa a errores. Un leve error de operación puede provocar un firmware incompleto, quemar firmware incompleto y la máquina se convierte en un "ladrillo".

  • Grabar dos veces, grabar BootLoader y el firmware de la aplicación respectivamente
  • Después de grabar el firmware en el chip, lea el firmware del chip y guárdelo como un archivo hexadecimal
  • Copie y combine manualmente el firmware
  • BootLoader admite la función de transferencia de firmware de la aplicación, solo grabe el BootLoader y luego actualice la aplicación más tarde

3 forma eficiente

  Nuestro objetivo es generar una versión de firmware mediante la fusión automática de secuencias de comandos para mejorar la eficiencia y garantizar la integridad del firmware.


3.1 Fusionar archivos

  Usamos muchos scripts en Linux. De hecho, los scripts de Windows también son muy buenos. El uso de scripts de Windows puede agregar, eliminar, verificar y modificar archivos rápidamente. Los comandos de script de Windows más utilizados son los siguientes.

  • Combine dos archivos: copy /b <file0> <file1> <merge-file>
  • Cambiar el nombre del archivo: ren <source_file> <dect_file>
  • Borrar archivos:del <file>

  Obviamente, usamos su comando fusionar para fusionar BootLoader y los archivos de la aplicación con una sola instrucción.

ejemplo:

Suponiendo que hay archivos Boot.bin y App.bin en el directorio actual, el archivo combinado se llama Firmware.bin.

copy /b .\Boot.bin + .\App.bin Firmware.bin

Nota:

La ruta del directorio de Windows es una barra invertida, que es diferente a la de Linux.


3.2 Bin a hexadecimal

  Sabemos que no hay información de dirección en el archivo binario (bin), y la ejecución de encendido de la CPU no necesariamente comienza a ejecutar código desde la dirección 0. Por ejemplo, la dirección de ejecución inicial del chip STM32 es 0x8000000. Por lo tanto, no es posible grabar el archivo bin a través de la herramienta de puerto serie, sino solo a través de J-link o ST-link, y especificar la dirección de inicio de almacenamiento antes de grabar. Por lo tanto, es necesario convertir archivos bin en archivos hexadecimales.


Bin a modo hexadecimal:

  • Use la herramienta jflash para abrir el archivo bin combinado con jflash y guárdelo como un archivo de formato hexadecimal
  • Grabe el archivo bin en el chip, léalo y guárdelo como un archivo hexadecimal
  • Escribe un contenedor a herramienta hexagonal por ti mismo
  • Utilice una herramienta bin to hex de terceros

  Los dos primeros son demasiado engorrosos e ineficientes; el tercero es más flexible, pero lleva tiempo; si usa excelentes herramientas listas para usar, es la forma más rápida. Se recomienda utilizar la herramienta "srec_cat.exe", que se puede utilizar junto con los scripts de Windows.


3.2.1 herramienta srec_cat

  srec_cat es una herramienta de fusión y conversión de archivos muy poderosa con muchas funciones de soporte, que incluyen:

  • Fusión de archivos
  • División de archivos
  • contenedor a hexadecimal
  • hexadecimal a la papelera
  • Llenado de datos
  • Verificación CRC

  Además, hay una serie de herramientas srec, la herramienta de comparación de archivos srec_cmp.exe y la herramienta de visualización de información de archivos srec_info.exe, que se pueden descargar y utilizar desde el sitio web oficial detrás del artículo.


Fusión de archivos

Formato de comando:srec_cat.exe <源文件0> <文件类型> <源文件1> <文件类型> <目标文件> <文件类型>

ejemplo:

srec_cat.exe source0.bin -Binary source1.bin -Binary -o merge.bin -Binary
srec_cat.exe source0.hex -Intel source1.hex -Intel -o merge.hex -Intel

  Si los archivos producidos por BootLoader y la aplicación están en formato hexadecimal, puede utilizar este comando directamente para fusionarlos en un archivo hexadecimal, prestando atención a la continuidad de las direcciones.


contenedor a hexadecimal

Formato de comando:srec_cat.exe <bin源文件> <-Binary> <-offset> <偏移地址> <-Output> <hex目标文件> <-Intel>

ejemplo:

Convierta el Firmware.bin combinado con Boot.bin y App.bin en un archivo de formato hexadecimal.

srec_cat.exe Firmware.bin -Binary -offset 0x8000000 -o Firmware.hex -Intel
  • 0x8000000 es la dirección de ejecución inicial de STM32

  Para obtener más aplicaciones srec y descargas de herramientas, consulte el sitio web oficial: http://srecord.sourceforge.net/download.html


3.3 Ejemplo completo

  • El primer paso es crear un nuevo archivo txt en el directorio de firmware que debe generarse
  • El segundo paso, escriba el siguiente contenido (el firmware de arranque y el firmware de la aplicación pueden especificar el directorio)
copy /b .\Boot.bin + .\App.bin Firmware.bin
srec_cat.exe Firmware.bin -Binary -offset 0x8000000 -o Firmware.hex -Intel
del Firmware.bin
  • El tercer paso es cambiar el nombre del archivo txt a un ".bat"archivo de sufijo, que es el tipo de archivo del script ejecutable de Windows
  • El cuarto paso, haga doble clic para ejecutar el script, puede generar el archivo de destino

  Si algún archivo de destino no se genera, verifique si el archivo de origen relevante existe y la ruta es correcta.


3.4 Aprender unos de otros

  Por analogía, si hay varios archivos de aplicaciones, un firmware se puede combinar por separado de esta manera. Además, en proyectos reales, los sectores internos libres de flash se utilizan a menudo para guardar información de parámetros del dispositivo, como coeficientes de calibración, direcciones de dispositivos, números de serie y otra información. Podemos guardar la información de los parámetros como un archivo bin y fusionarlo con el firmware de esta manera. De esta manera, los parámetros y el firmware se escriben juntos durante la producción en masa para mejorar la eficiencia de producción.

Inserte la descripción de la imagen aquí

Utilice escenarios para una mayor distribución del espacio de almacenamiento

Supongo que te gusta

Origin blog.csdn.net/qq_20553613/article/details/106724373
Recomendado
Clasificación