La memoria flash de atmega8 es de 8Kb.
¿Es este el tamaño máximo para el archivo .hex, o es la memoria máxima que puedo asignar a las variables en mi código?
Si nada de lo anterior es cierto, ¿cuál es la estructura de asignación de memoria de Atmega8? ¿A qué memoria va el archivo .hex?
En el uso estándar, su código va a los 8 Kbytes de memoria Flash y las variables van a los 1 Kbyte de SRAM. Tenga en cuenta que debido a que un archivo hexadecimal representa un solo byte como un par de caracteres hexadecimales y contiene otra información, tendrá más del doble del tamaño del código real que se cargará, por lo que debería cargarse un archivo hexadecimal de un poco más de 16K.
El lugar más confiable para encontrar mucho Flash y SRAM que usa su código es desde el compilador. Si está utilizando Atmel Studio 6 en el área de salida de compilación, si se desplaza hacia arriba, debería ver algo como:
Uso de memoria de programa: 540 bytes 0,8 % completo
Uso de memoria de datos: 0 bytes 0,0 % lleno
Entonces, el uso de la memoria del programa muestra la cantidad de Flash que se usará y el uso de la memoria de datos muestra la cantidad de SRAM que se usará.
La memoria flash es su memoria de programa. Ahí sería donde se almacena su archivo hexadecimal. Puede forzar los datos en flash si tiene poca RAM, pero no es tan rápido de leer/escribir como la RAM.
La RAM es la memoria utilizada en tiempo de ejecución, para variables y cualquier otra cosa a la que se deba acceder sobre la marcha.
EEPROM es una memoria no volátil para almacenar cosas como datos de calibración, números de serie, etc. Rara vez se usa para cualquier cosa que deba escribirse con regularidad.
Para conocer el uso real de la memoria, consulte el archivo de mapa. En el caso de la cadena de herramientas GCC que lo hace por enlazador como:
avr-ld -Map=app.map
o a través gcc
del conductor:
avr-gcc -Wl,-Map,app.map
usuario17592
PedroJ
shafeeq
PedroJ
shafeeq
PedroJ
shafeeq