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.
___