Fusionando 2 archivos hexadecimales

0

Mi programa MSP430 consta de un cargador de arranque en serie y archivos hex de aplicación. Mientras programo, carga el programa del cargador de arranque con JTAG y luego carga el programa de la aplicación con el cargador de arranque.

Estoy buscando una forma para que la primera vez pueda programar el cargador de arranque y la aplicación como una sola imagen de archivo hexadecimal. De modo que puedo usar el cargador de arranque solo para actualizaciones de código si es necesario.

No puedo compilar el código debido a 2 funciones principales () por lo tanto, la única opción disponible para mí es la fusión de 2 archivos hexadecimales.

    
pregunta prasad

2 respuestas

1

Estoy de acuerdo con @TomCarpenter. Si se trata de un archivo Intel HEX (la mayoría de los archivos HEX son Intel o un derivado), lea esta página en la wiki sobre el archivo HEX

El archivo HEX generalmente contiene líneas como la primera de estas (sin espacios):

:10    0120  00   194E79234623965778239EDA3F01B2CA A7
 Bytes Addr  Type Data                             Checksum

Esta línea dice que hay 16 bytes (0x10) para escribir en la dirección 0x0120. Tenga en cuenta que si Type no es 00, esto puede alterar la dirección.

Si ahora tiene un vistazo a sus dos archivos HEX de los dos proyectos, notará que contienen datos para escribir en diferentes direcciones de memoria. Sin embargo, algunas líneas pueden escribir en las mismas direcciones. Esto puede ser:

  • Configuración de bits / bytes. Se establecen en ambos proyectos, y deberían ser iguales, si utilizó la misma configuración.
  • Comando de salto. Una vez encontré un comando para los primeros bytes de la dirección de memoria en un archivo HEX, lo que hace que la MCU salte directamente a la dirección, donde reside su programa principal. Pero como el cargador de arranque debería ubicarse al comienzo de la memoria, este tuvo que ser eliminado.
respondido por el sweber
0

Use srec_cat:

srec_cat boot.hex -intel main.hex -intel -o mergedfile.hex -intel
    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas