Cómo saber el tamaño de mi código en Atmel Studio

1

Soy nuevo en Atmel Studio y estoy jugando con ATtiny13. Este mcu tiene 1K Bytes de Flash, 64 Bytes de EEPROM y 64 Bytes de SRAM.

Me gustaría saber cuánta memoria (flash, eeprom y sram) toma mi código.

Esta es una parte de mi salida de compilación.

Creo que mi código toma 882 bytes de Flash y 15 bytes de EEPROM. ¿Es eso correcto?

Gracias de antemano.

    
pregunta Salva

2 respuestas

2

La cantidad de memoria que utiliza su programa ya se ha respondido en los comentarios, pero me gustaría aclarar cómo se utilizan estos diferentes tipos de memoria.

Flash se utiliza para almacenar el código de máquina que ejecuta la CPU. No es volátil y, por lo general, no se modifica en tiempo de ejecución (es decir, la memoria flash se escribe una vez durante la carga, pero la CPU no la modifica más adelante).

SRAM es donde se almacenan las variables. Es volátil, por lo que no se escribe nada en la SRAM mientras se carga el código. Más bien, solo es modificado por la CPU mientras se está ejecutando.

EEPROM no es volátil, pero también puede ser modificado por la CPU mientras se está ejecutando. La única forma de acceder a él es con registros EEPROM especiales como EEDR, el registro de datos EEPROM, EECR, el registro de control EEPROM, EEAR, el registro de direcciones EEPROM y muchos otros. Por ejemplo, para leer un byte de EEPROM, debe cargar la dirección del byte que desea en el EEAR, luego leer el byte de EEDR. Por lo tanto, es mucho más lento acceder a EEPROM que a SRAM. Realmente no hay razón para usar EEPROM, excepto cuando tiene datos modificables que desea conservar, incluso cuando el ATtiny está desconectado.

De forma predeterminada, el compilador no almacena ningún dato en EEPROM, aunque puede configurarse para hacerlo.

    
respondido por el HaLailah HaZeh
1

Como una adición a los otros comentarios / respuestas:

Puede realizar un seguimiento de la cantidad de EEPROM que se utiliza si, en consecuencia, utiliza el atributo EEMEM para cada variable que desea "asignar" a la sección de memoria EEPROM.

Si declara una variable global / estática como esta

uint16_t EEMEM data_in_eeprom;

puedes usarlo de esta manera

eeprom_write_word(&data_in_eeprom, 1234);

y el compilador administrará la variable real / direcciones de memoria. De esta manera, obtendrá información sobre el "Uso de memoria EEPROM":

Program Memory Usage    :   7752 bytes   23,7 % Full
Data Memory Usage       :   918 bytes   44,8 % Full
EEPROM Memory Usage     :   2 bytes   0,2 % Full
    
respondido por el Rev1.0

Lea otras preguntas en las etiquetas