Como sabemos el microcontrolador AVR tiene 3 tipos de memorias, memoria de programa, memoria SRAM y memoria EEPROM, aquí nos enfocaremos a la memoria de programa o FLASH-ROM.
Teoría encontramos en todos lados, basta con escribir en Google sobre memorias FLASH AVR , pero aquí te dejo las mejores reflexiones de esta memoria:
- Es una memoria que soporta hasta 10,000 ciclos de escritura/ borrado.
- Se puede dividir en dos secciones, una de aplicación y una sección de arranque, en la sección de arranque es donde se puede ubicar un cargador para auto programación.
- Los vectores de interrupción son parte de la memoria de programa e inician en la dirección 0 si es que están habilitadas.
- El tamaño de la memoria Flash varia dependiendo del micro para el atmega32 es de 32KBytes(16kX2Bytes) ó 16KWord, aquí esta incluido la sección de arranque.
Memoria FLASH -ROM |
Program Counter
Debido a que la capacidad de memoria flash del atmega32 es de 32KBytes ó 16KWord las direcciones de memoria flash de 16 bits tendrán el rango de (0x0000-0x3FFF) Word =(0-16383dec) word=(0 a 11111111111111[14 bits] en binario) la "Program Counter" que almacena la dirección de la ubicación de ejecución actual de la memoria flash de 14 bits es suficiente.
Litle endian
Es un método que consiste en la forma de almacenar datos a nuestra memoria FLASH, el dato en la memoria Flash del AVR es guardado de la manera que es llamada "litle endian", esto significa que el byte alto del código es ubicado la dirección alta de la memoria Flash y el byte bajo del código esta ubicado en la dirección baja de la memoria flash.
método Litle Endian |
Existe otro método de guardar datos a memoria FLASH y es el método de Big Endian.
En la Tabla 2 se muestra el limite de memoria que ocupará la memoria de arranque que será cuando BOOTSZ1=0 y BOOTSZ0=0.
Sección de aplicación
Esta sección empieza en la dirección 0x000 encontramos nuestro código de programa y vectores de interrupción si estuvieran activados.
Aquí se encuentran los códigos de programa, puede haber mas de un código, y se hará uno otro dependiendo de la programación que se haya dado en el bootloader.
Sección de arranque(Bootloader)
Esta sección es de uso opcional y de forma obligatoria dependiendo para que esta pensado el uso del microcontrolador.¿Cuándo utilizar Bootloader?
- Cuando el producto esta terminado, digamos ya puesta en planta o en aquel proceso donde esta monitoreando algún proceso o controlando alguna variable industrial.
- Se usa de manera profesional en desarrollos terminados.
- Cuando se quiere tener un respaldo de información o backup.
- Se quiere tener mas de un código principal según la funcionalidad que le demos.
- El bootloader esta pensado cuando el microcontrolador ya este en manos de un cliente.
- Si vas a utilizar un microcontrolador de Atmel para una ponerlo en una placa Arduino necesitas cargar su configuración para que el micro acepte los comandos de la plataforma Arduino.
¿Cuándo no utilizar Bootloader?
- Si solo vamos a programar de forma de aprendizaje sea en C o ASM no es necesario cargar algún programa.
- Si se va a trabajar de la mano con un programador de esa manera nos ahorramos memoria flash.
Tamaño de memoria Bootloader
Como podemos ver el las dos tablas según como este configurado los bits BOOTSZ1 y BOOTSZ0 va a variar el tamaño que ocupará dentro de la memoria FLASH.Tabla 1-Configuración del tamaño de Boot |
Tabla 2-Limite de Lectura mientras se escribe |
La configuración del bootloader por el momento no lo haremos de manera profunda, si quieres saber mas detalles sobre el bootloader puedes seguir este enlace.
Entonces podemos deducir que el tamaño de la memoria de arranque que ocupará en la memoria FLASH es variable dependiendo de dos cosas:
Si deseas saber mas de bootloader aquí un video bien explicado de TutoElectro, velocidad x5 XD.
Entonces podemos deducir que el tamaño de la memoria de arranque que ocupará en la memoria FLASH es variable dependiendo de dos cosas:
- Del microcontrolador que estemos usando.
- La configuración del mismo.
Si deseas saber mas de bootloader aquí un video bien explicado de TutoElectro, velocidad x5 XD.
Límite de direcciones en memoria FLASH-ROM
Teniendo en cuenta lo anterior se va a delimitar los lugares de cada sección, esto es muy importante conocer cuando se va a programar, ya que podría darnos algún tipo de conflictos a la hora de guardar datos, de la misma manera que es bueno saber donde estamos parados es bueno saber donde estamos escribiendo nuestro código.
Limites de direcciones es memoria FLASH |
No hay comentarios:
Publicar un comentario