___ el programa qstnhdr ___ funciona incluso cuando el tamaño del archivo hexadecimal es mayor que la memoria flash [duplicado] ______ qstntxt ___

Estoy trabajando con el microcontrolador AT89S51 y uso keil para escribir el programa en C. Se produjo un archivo hexadecimal de aproximadamente 4875 bytes, pero la memoria flash del microcontrolador es de solo 4kbytes.

Programé el flash correctamente y el programa también funciona bien.

Me alegra que esté funcionando, pero quiero saber por qué funciona, ya que no hay suficiente espacio en flash para programar mi código en el microcontrolador.

Avísame si necesitas información adicional.

    
______ answer237020 ___

El archivo hex contiene más que los bytes del programa, también contiene información de "control".

Supongo que se parece a esto:

%pre%

Lo que significa que probablemente tenga el "formato de archivo Intel HEX". Puedes encontrar muchas referencias en la red.

Algunas indicaciones:

  • El ":" indica el inicio de la nueva línea y ya indica que no es un archivo hexadecimal puro (para evitar errores).
  • El primer byte (primeros 2 dígitos) indica el tipo de línea de datos que es. Cuando la línea comienza con ": 10", se proporciona una dirección.
  • Al final de la línea hay una suma de comprobación.
  • ...: puede "buscar" fácilmente en Google para el formato Intel Hex

Esto explica por qué su archivo hexadecimal es más grande: los datos adicionales evitan errores. El formato también permite archivos más pequeños que la memoria que está llenando y los datos no necesitan ser contigiosos.

    
______ answer237018 ___

No conozco este tipo de controlador, pero es posible que solo se carguen los primeros 4 KB en la memoria, y no los últimos bytes de su programa. Debería realizar una prueba completa utilizando todas las entradas posibles, podría dejar de funcionar correctamente en algún momento.

    
___

0

Estoy trabajando con el microcontrolador AT89S51 y uso keil para escribir el programa en C. Se produjo un archivo hexadecimal de aproximadamente 4875 bytes, pero la memoria flash del microcontrolador es de solo 4kbytes.

Programé el flash correctamente y el programa también funciona bien.

Me alegra que esté funcionando, pero quiero saber por qué funciona, ya que no hay suficiente espacio en flash para programar mi código en el microcontrolador.

Avísame si necesitas información adicional.

    
pregunta Jasser

2 respuestas

4

El archivo hex contiene más que los bytes del programa, también contiene información de "control".

Supongo que se parece a esto:

:02000000052ECB
:10000800F000030E83120313A0000A08A1008A015E

Lo que significa que probablemente tenga el "formato de archivo Intel HEX". Puedes encontrar muchas referencias en la red.

Algunas indicaciones:

  • El ":" indica el inicio de la nueva línea y ya indica que no es un archivo hexadecimal puro (para evitar errores).
  • El primer byte (primeros 2 dígitos) indica el tipo de línea de datos que es. Cuando la línea comienza con ": 10", se proporciona una dirección.
  • Al final de la línea hay una suma de comprobación.
  • ...: puede "buscar" fácilmente en Google para el formato Intel Hex

Esto explica por qué su archivo hexadecimal es más grande: los datos adicionales evitan errores. El formato también permite archivos más pequeños que la memoria que está llenando y los datos no necesitan ser contigiosos.

    
respondido por el le_top
-1

No conozco este tipo de controlador, pero es posible que solo se carguen los primeros 4 KB en la memoria, y no los últimos bytes de su programa. Debería realizar una prueba completa utilizando todas las entradas posibles, podría dejar de funcionar correctamente en algún momento.

    
respondido por el Albits

Lea otras preguntas en las etiquetas