Integrando otro binario


8

Estoy construyendo un binario para ARM usando GCC y Crossworks. Tengo una imagen binaria secundaria que debe cargarse en otro IC durante el inicio.

Me gusta integrar este binario a mi cadena de herramientas, en otras palabras, hago que este binario sea parte de mi imagen y cada vez que construyo este binario se integra en el archivo binario final que se cargará en la CPU. ¿Cuál es la mejor práctica para esto?

Gracias

Respuestas:


3

Puede usar objcopypara transformar la imagen binaria en un archivo de objeto. El archivo objeto contendrá símbolos a los que se puede acceder desde el código C. Luego dígale a GCC que vincule el archivo de objeto y puede acceder a los símbolos en el archivo de objeto usando externpara cargar los datos en el otro IC.

Aquí hay un buen tutorial sobre cómo vincular un blob binario que incluye cómo archivar las opciones que necesita pasar para objcopyusar objdump.

Y, por supuesto, la objcopypágina del objdumpmanual y la página del manual .


súper respuesta ... me tomó un total de 5 minutos para hacer que esto funcione ...
Ktc

Pregunta adicional El archivo obj funciona bien, sin embargo, la cadena de herramientas lo coloca en la RAM, lo que se está convirtiendo en un problema debido al tamaño del archivo. ¿Cómo puedo forzar que este objeto se coloque en Flash?
Ktc

resuelto ... básicamente, objcopy -I binario -O elf32-littlearm -B arm --rename-section .data = .rodata, alloc, load, readonly, data, content fpga.bin fpga.o esto hace todo. La rodata y el enlazador se colocan correctamente en el flash.
Ktc

objcopytiene una gran cantidad de opciones Probablemente pueda hacer lo que quieras. Solo requiere mirar fijamente esa página de manual. Gracias por compartir su solución, ya que estoy seguro de que será una pregunta común para las personas que buscan hacer lo que está haciendo.
embedded.kyle el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.