Tengo un archivo hex con un tamaño de 42 kB. ¿Importa el tamaño al cargarlo en un microcontrolador? ¿Puedo cargar un archivo hexadecimal de 42 KB en un chip ATMEGA32 que tiene una memoria de 32 KB?
Tengo un archivo hex con un tamaño de 42 kB. ¿Importa el tamaño al cargarlo en un microcontrolador? ¿Puedo cargar un archivo hexadecimal de 42 KB en un chip ATMEGA32 que tiene una memoria de 32 KB?
Puede usar avr-size
para verificar el tamaño real de su programa:
[jpc@jpc sepack] avr-size sepack.elf
text data bss dec hex filename
4396 6 277 4679 1247 sepack.elf
[jpc@jpc sepack] avr-size sepack.hex
text data bss dec hex filename
0 4402 0 4402 1132 sepack.hex
Como puede ver, funciona mejor con los archivos .elf
, ya que también puede mostrarle la cantidad de RAM que necesita ( data
+ bss
) y la cantidad de flash que se usará ( text
+ data
). Con el archivo .hex
solo se muestra la segunda cifra (etiquetándola como data
)
El archivo hex generado a menudo es algo legible para los humanos e incluye datos de suma de comprobación, los cuales inflan el tamaño varias veces. Creo que los AVR usan el formato Intel HEX , mientras que otras cadenas de herramientas micro usan otros formatos; p.ej. Codewarrior para Freescale HCS08 proporciona registros S de Motorola , que es extremadamente similar.
Si abre el archivo .hex con un editor de texto (Bloc de notas), debería parecerse a esto, aunque mucho más:
:10010000214601360121470136007EFE09D2190140
:100110002146017EB7C20001FF5F16002148011988
donde se describen los diversos campos en el ejemplo en Wikipedia . Solo hay 16 bytes en cada una de esas líneas que denotan datos que se almacenarán en el micro, el resto es suma de control y datos de control que solo utiliza el programa de intermitentes.
Cada byte en un archivo hexadecimal toma dos dígitos hexadecimales, más unos pocos caracteres por registro. Su archivo hexadecimal debe caber en la memoria flash del dispositivo.
Lea otras preguntas en las etiquetas microcontroller programming