Para un cargador de arranque (PIC32) solo necesito un área de memoria determinada de un archivo binario (la aplicación para un cargador de arranque, la configuración y el cargador de arranque se encuentran en otra parte, no es posible el hexágono). Si llamo a xc32-objcpy
en un archivo hexadecimal o elfo, se creará un binario de 44 MB de todo el espacio de direcciones.
Lo que necesito es solo un área de memoria determinada (kesg0_program_mem) donde se encuentra la aplicación. Por supuesto, podría crear el binario de 44 MB y luego cortar un cierto rango de direcciones, pero ¿no hay una opción para generar directamente el área de interés? El programa mempory está estrictamente definido:
kseg0_program_mem (rx) : ORIGIN = 0x9FC01000, LENGTH = 0xFF00-0x1000
Intenté obtener solo las secciones del archivo de vinculador, pero eso es tedioso incluso con comodines (ver más abajo, incompleto).
-I ihex -O binary -j .text -j .data -j .rodata -j .reset -j .bev_excpt -j simple_tlb_refil -j .cache_err_excpt -j app_excpt -j .vectors Test.X.production.hex Test.X.production.bin
Estoy abierto a cualquiera, pero sería útil si se puede hacer desde la línea de comandos