¿Puedo cargar un micro con un archivo .out como puedo hacerlo con un ELF o HEX?

1

Tengo un binario de la forma ".out", de un proyecto que fue generado por una suite de desarrollo IAR. El directorio de lanzamiento no tiene un archivo ELF o HEX. Esto es para el microcontrolador basado en ARM STM32F103. Necesito programar el binario en un tablero fuera del sitio para no tener una suite de desarrollo IAR.

¿Puedo usar un depurador JTAG como el Segger J-Link o el AT-Link de Atollic para programar la placa con el archivo .out? Sé que puedo programar el archivo .ELF de esta manera. ¿Es posible con archivos .out? ¿Puedo convertirlo en un archivo ELF?

¡Gracias!

    
pregunta JeffV

2 respuestas

1

Sí. El archivo .out es en realidad y el archivo ELF. Configure el depurador en sus opciones de proyecto IAR para que sea J-Link / J-Trace. En la pestaña de descarga, marque "Verificar descarga" y "Usar cargador (es) flash". Cuando depura el proyecto, el microcontrolador se programa como parte del proceso de depuración.

Si lo desea, también puede elegir la categoría "Convertidor de salida" en el cuadro de diálogo de opciones del proyecto y generar un archivo de salida además del archivo .out. Probablemente tenga opciones de registro S de Motorola, Intel-Hex o binario directo.

    
respondido por el semaj
1

Uso OpenOCD para programar los microcontroladores Cortex-M3 sobre JTAG. Funciona con muchos adaptadores JTAG, incluidos Olimex ARM-OCD-USB, Segger J-Link y Bus Pirate.

Supongo que el .out es el binario sin formato que se copiará a flash. Cuando se carga JTAG, necesita este binario ya que está escribiendo directamente en el flash.

Si el .out es de hecho un archivo ELF. Usa objdump para convertirlo.

"archivo" en un sistema Linux puede identificar archivos ELF:

$ jrt@linux: file myfile.elf
ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped

Pero, no binarios ARM en bruto

$ jrt@linux: file myfile.bin 
myfile.out: data

Para ver si su .out es un binario ARM, podría desarmarlo. O bien, simplemente haga un hexagonal en el inicio y busque lo que espera en la ubicación 0 (probablemente los vectores de interrupción).

$ xxd myfile.out | head

0000000: 7037 0020 fd52 0300 6553 0300 6d53 0300  p7. .R..eS..mS..
0000010: 8553 0300 7953 0300 8553 0300 0000 0000  .S..yS...S......
0000020: 0000 0000 0000 0000 0000 0000 8553 0300  .............S..

El ELF no puede ser recreado a partir de esto. El archivo Intel Hex es otra versión del binario. Es una lista de direcciones y fragmentos de datos para escribir en la memoria flash, pero puede contener agujeros.

    
respondido por el Toby Jaffey

Lea otras preguntas en las etiquetas