Después que nuestro código a sido
grabado dentro de la memoria de programa tales como atmega32 o cualquier micro
de atmel, el OPCODE y OPERANDO son guardados en la memoria de programa
iniciando desde la dirección 0x0000. Por ejemplo veamos como se guarda este
bloque de código en la memoria de programa:
![]() |
código-almacenamiento de la última dirección de memoria SRAM. |
Creé un proyecto y le puse nombre "litle endian metodo-ejemplo"Una vez escrito el código, Construimos
los archivos(Build) y en la carpeta
DEBUG se construyen archivos .map, .lss,entre otros como el de la imagen:
![]() |
Archivos generados en carpeta debug. |
Ahora nos enfocaremos en el archivo .lss. El archivo ,lss es muy útil para
nosotros los programadores. Aquí se muestra el código binario y código fuente,
además muestra que instrucciones son usadas en el código fuente, y la cantidad
de memoria del programa usada, este archivo al igual que el .map pueden ser
accedidos por un editor de texto tal como notepad y verlos en el monitor, el
programador usa este archivo para asegurarse el correcto desempeño del sistema.
![]() |
Archiv list(.lss) generado |
![]() |
Archivo list(.lss)-sección code |
Como se observa en la imagen anterior, a la izquierda la conforma las direcciones que ocupa nuestro código, empieza en la dirección 0x0000, con su respectivo OPCODE y OPERANDO. Si deseas saber como se representa el OPCODE y OPERANDO de una instrucción, en este blog hay un ejemplo.
El dato en la memoria Flash de los AVR
es guardado de un forma llamada “Little-endian”. Esto significa que el byte alto
del código es ubicado en la dirección alta de la ubicación de la memoria FLASH,
y el Byte bajo del código es ubicado en la dirección baja de la ubicación de la
memoria FLASH. Compare el primer Word del código (e008) con los dos primeros
Byte de la memoria FLASH(08e0).
Método-Litle endian |
Ahora ya sabemos como se guarda en
memoria FLASH-ROM cada línea de código, está formado por una palabra(2Bytes) y
se irán guardando de la siguiente manera:
¿Puedo guardar datos en memoria FLASH-ROM?
Pues sí, también podemos guardar datos, que
usaremos ,estos datos en asembler se pueden guardar a través de "tablas", dándoles un origen de memoria. Para leer los datos en memoria en forma de "tablas" es muy importante desplazar un bit hacia la izquierda utilizando “<<”
o que es lo mismo multiplicando *2 la dirección
de donde se dio origen a la tabla de datos ya que al momento de guardar un dato en una tabla este empieza en la dirección x2 de donde se dio origen a dicha tabla. Puedes ver un ejemplo de tablas en el siguiente video:
Conclusión
- Nuestro código se guarda en forma de OPCODE y OPERANDO.
- Los OPCODES y OPERANDOS se guardan en memoria FLASH usando el método "Litle Endian".
- En la memoria Flash no solo se guarda código, vectores de interrupción, programa bootloader, también se puede guardar datos usando "tablas".
- Las instrucciones LPM y SPM se usa frecuentemente en esta memoria FLASH.
- Program Counter es que va a ir saltando de dirección en dirección de la FLASH-16 bits.
No hay comentarios:
Publicar un comentario