Memoria Flash_2 - Departamento de Electrónica

Anuncio
Universidad Técnica Federico Santa María
Departamento de Electrónica
Seminario de Computadores I: Diseño con microcontroladores
Profesor Leopoldo Silva
Memoria Flash
Microcontrolador MSP430F149
Grupo 1
Tamara Ramírez
Juan Espoz
Francisco Villa
Luis Ehlen
Josey Avilés
Jaime Díaz
Contenidos
Introducción …………………………………………………….. 3
Antecesores de la flash ………………………………………... 4
¿Que es una Memoria Flash? ………………………………….. 5
Características de la Memoria Flash y diferencias …………. 6
respecto a otros tipos de memoria
Flash del microcontrolador MSP430F149 ……………………. 7
Registros para configurar y acceder al ………………………. 9
controlador de memoria Flash
Ciclo de borrado ………………………………………………... 12
Escribiendo la memoria Flash …………………………………. 15
Resultados en pruebas de laboratorio ………………………… 21
Seminario de Computadores I: Diseño con microcontroladores
- 3-
Introducción
La memoria flash es un elemento que ha revolucionado la forma
de manejar
la información. Una diminuta pastilla permite
transportar una gran cantidad de información sin mayores
inconvenientes y a un bajo costo. En qué consiste esta tecnología
y cuáles son las ventajas que posee respecto a otros dispositivos
de almacenamiento, son los tópicos expuestos en las primeras
hojas de este apunte. Sin embargo, el contenido del mismo se
centra en la utilización de la memoria flash del microcontrolador
MSP430F149, el cual será utilizado en el transcurso del
Seminario de Computadores I. En este sentido, este apunte
busca ser una guía práctica y resumida que permita al lector
entender el funcionamiento de esta unidad de memoria y cómo
hacer uso de ella. Esperamos el objetivo sea cumplido y desde ya
agradecemos la confianza que el lector deposita en este equipo
de trabajo al utilizar este apunte.
Atentamente,
Tamara Ramírez
Jaime Díaz
Francisco Villa
Luis Ehlen
Josey Avilés
Juan Espoz
Seminario de Computadores I: Diseño con microcontroladores
- 4-
Antecesores de la flash
Básicamente, una memoria es un dispositivo electrónico cuyo objetivo consiste en
almacenar información – programas, datos, resultados –. Debido a que el
almacenamiento de información está asociado a la naturaleza de la misma, es
posible encontrar una gran variedad de memorias que cumplan con el requisito
que exige un objetivo en particular. Las memorias más comunes que se encuentran
en el mercado son las siguientes:
ROM (Read Only Memory): básicamente las ROM se basan en una matriz de
diodos unidos, cuyas uniones pueden ser destruidas por sobre tensión, logrando
así ser grabadas. Esto hace que en este tipo de memoria se pueda almacenar
información sólo una vez (esta viene programada de antemano con cierta
aplicación, no permitiendo al usuario realizar modificaciones), además la
información contenida en ella no se pierde debido a interrupciones de corriente
(memoria no volátil). Esta es una memoria muy utilizada para almacenar
configuraciones de sistema en computadores.
PROM (Programmable Read Only Memory) : memoria de sólo lectura, la cual
puede ser programada una sola vez utilizando un dispositivo especialmente
diseñado para estos efectos. Al igual que la anterior esta es una memoria no volátil.
EPROM (Erasable Programmable Read Only Memory): memoria de sólo lectura
programable y borrable, de alta densidad de bits por espacio físico. Para ser
borrada dispone de una ventana de cuarzo a través de la cual se expone a un rayo
ultravioleta que se encarga de restaurar el estado original de la memoria.
EEPROM (Erasable Electrically Programmable Read Only Memory): memoria de
sólo lectura programable y eléctricamente borrable, la cual retiene la información
sin necesidad de estar energizada. Presenta una baja confiabilidad, son de alto
costo y presentan una baja densidad de bits, se puede usar como una RAM no
volátil pero es más lenta que ésta.
RAM (Random Access Memory): memoria de acceso aleatorio o directo de lectura
y escritura, en donde el sistema en que está instalada almacena los datos que está
utilizando en el momento presente. La diferencia entre la RAM y otros tipos de
memoria de almacenamiento, como los discos duros, es que ésta es mucho más
rápida y es volátil, es decir, su información se elimina una vez que es
desenergizada.
Luego de este pequeño recordatorio se explicarán los detalles de la memoria Flash.
Seminario de Computadores I: Diseño con microcontroladores
- 5-
¿Que es una Memoria Flash?
Una memoria flash es un tipo de chip EEPROM (Electrically Erasable
Programmable Read Only Memory ), la cual posee una grilla de filas y columnas,
en cuyas intersecciones se encuentra una celda. Esta celda está formada por dos
transistores unidos a través de una delgada capa de óxido, tal como se describe en
la siguiente figura 1.
Uno de los transistores es llamado floating gate (compuerta flotante) y el otro
control gate (compuerta de control). La única conexión entre la columna (Bitline) y
la fila (wordline) en cada intersección de la grilla es a través de estos dos
transistores. Mientras esta conexión tome lugar, la celda tendrá un valor “1”, de lo
contrario el valor asignado
es “0”. Para que la celda
pueda tomar un valor 0, es
necesaria la ocurrencia de
un proceso llamado FoulerNordheim
tunneling
(tunelización de FoulerNordheim).
La tunelización permite
Figura1. Detalle de la celda de una memoria flash.
alterar la presencia de
electrones en la compuerta
flotante. Al aplicar una carga eléctrica, usualmente de 10 a 13 volts, a la compuerta
flotante, se produce un flujo de cargas desde la columna hacia una tierra. Al
traspasar la compuerta flotante, las cargas provocan que esta compuerta se
comporte como un cañón de electrones, los cuales son dirigidos hacia la compuerta
de control. La capa de óxido se encarga de retener los electrones al otro lado de
ella, de manera que adquiere una carga negativa. Estos electrones cargados
negativamente constituyen una barrera entre las dos compuertas. Un dispositivo
especial, denominado sensor de celda se encarga de monitorear el nivel de cargas
que fluye a través de la compuerta flotante. Si el flujo en la compuerta es superior
al 50 % de la carga, la celda tiene un valor 1. Si es inferior, ella toma el valor 0.
Seminario de Computadores I: Diseño con microcontroladores
- 6-
Características de la Memoria Flash y diferencias
respecto a otros tipos de memoria
•
La Flash es una memoria no volátil, es decir, la información almacenada en
ella no se pierde luego de que ésta es desenergizada. En cambio una
memoria RAM pierde la información ante cualquier interrupción de
corriente.
•
La Flash es un tipo de memoria que posee la capacidad de ser regrabada
eléctricamente cuantas veces se desee, contrastando con las memorias ROM
y PROM que pueden ser grabadas sólo una vez, y la EPROM cuya
información puede ser grabada cuantas veces se desee, pero utilizando luz
ultravioleta, implicando así un desgaste mayor de este tipo de memoria.
•
Al igual que una memoria RAM, una flash posee la cualidad de almacenar
una gran cantidad de información en poco espacio físico, a diferencia de las
memorias EEPROM.
•
La cantidad de potencia que consume una memoria flash es bastante baja en
relación a otros tipos de memoria existentes, tales como las memorias RAM
(SRAM y DRAM).
•
Son memorias en general bastante rápidas, no tan veloces como una
memoria RAM pero si más que una EEPROM.
•
Los precios de estas memorias son bastante económicos, una memoria Flash
es menos onerosa que una EEPROM y una RAM (una memoria SRAM es
bastante cara y sólo es utilizada en aplicaciones especiales, tales como
memoria Caché.)
•
Otra diferencia de una memoria flash con una EEPROM convencional,
radica en que la primera incluye un circuito cableado interiormente que
permite realizar el proceso de borrado en forma parcializada. Se puede
borrar la flash en sectores, denominados bloques, o en su totalidad. Una
EEPROM es borrada punto a punto.
Seminario de Computadores I: Diseño con microcontroladores
- 7-
Flash del microcontrolador MSP430F149
El microcontrolador MSP430F149 posee 60 KB + 256 B de memoria flash, la cual se
distribuye como se indica en la tabla 1.
Tabla 1. Distribución de memoria del
MSP430F149
La memoria flash del microcontrolador incluye:
-
Un generador de voltaje interno programable.
Bit, byte o palabras programables.
Operación de baja potencia.
Borrado a nivel de segmentos y borrado masivo.
Segmentación de la memoria flash.
La memoria flash esta particionada en segmentos. Bits, bytes o palabras pueden
escribirse pero el segmento es la medida más pequeña que se puede borrar. La
memoria está dividida en una memoria principal y memoria de información, la
diferencia entre ellas está en el tamaño de los segmentos y su direccionamiento, la
memoria de información tiene dos segmentos de 128-byte y la memoria main tiene
dos o más segmentos de 512 bytes. Esto se ilustra en la figura 2.
Seminario de Computadores I: Diseño con microcontroladores
- 8-
Figura 2. Particionamiento de la memoria flash
en el MSP430F149.
Operación de la memoria flash.
El modo por defecto de la memoria es el modo de lectura, en este modo el
cronómetro y el generador de voltaje están en off y la memoria opera
idénticamente igual a una ROM.
La memoria flash es un sistema programable sin la necesidad de un voltaje
externo adicional. La CPU puede programar su propia memoria flash, sus modos
de borrado o escritura se pueden seleccionar con los bit BLKWRT, WRT, MERAS,
ERASE.
Generador de cronometraje en la flash
Las operaciones de borrado y escritura son controladas por el generador de
cronometraje el cual está en el rango de 257 a 476 kHz. Este cronometraje puede
ser originado desde las entradas ACLI, SMCLK o MCLK. El reloj también puede
ser dividido usando los bits FNx para reunir los requerimientos de frecuencia.
Seminario de Computadores I: Diseño con microcontroladores
- 9-
Registros para configurar y acceder al controlador de
memoria Flash
Para controlar la memoria Flash, se utilizan los registros FCTLx (donde x = 1, 2, 3),
los cuales corresponden a registros de escritura y lectura, de 16 bits y protegidos
por password.
Los primeros 8 bits de estos registros, es decir, el primer byte, son utilizados para
controlar la memoria Flash (como por ejemplo, seleccionar el modo de escritura o
el modo de borrado, entre otros) y los 8 últimos bits, es decir, el segundo byte, es
utilizado para almacenar el password para poder leer o escribir en el registro. El
password de lectura corresponde a 096h y el password de escritura corresponde a
0A5h.
Registros:
FCTL1
15
14
7
BLKWRT
6
WRT
13
12
11
10
FRKEY, leída como 096h
FWKEY, debe ser escrita como 0A5h
5
4
3
Reservado Reservado Reservado
2
MERAS
9
1
ERASE
8
0
Reservado
BLKWRT
Modo de escritura en bloque, el cual trabaja junto con WRT. Es
automáticamente
puesto a cero cuando EMEX es seteado.
WRT
Habilita la escritura, para cualquier modo. Es automáticamente puesto a
cero
cuando EMEX es seteado.
MERAS
Este bit es usado junto con ERASE para seleccionar el modo de borrado.
ERASE
Este bit es usado junto con MERAS para seleccionar el modo de borrado.
RESERVADO Son bits reservados, que siempre son leídos como 0.
FCTL2
15
7
FSSELx
14
13
6
5
12
11
10
FRKEYx, leída como 096h
Debe ser escrita como 0A5h
4
3
2
FNx
9
8
1
0
Seminario de Computadores I: Diseño con microcontroladores
- 10 FSSELx
FNx
Selecciona la fuente de reloj para el controlador de la Flash
Divide el reloj del controlador de la Flash. El valor de división es FNx + 1.
FCTL3
15
14
7
6
Reservado Reservado
RESERVADO
EMEX
LOCK
WAIT
ACCVIFG
KEYV
BUSY
13
12
11
10
FRKEYx, leída como 096h
Debe ser escrita como 0A5h
5
EMEX
4
LOCK
3
WAIT
2
ACCVIFG
9
1
KEYV
8
0
BUSY
Son bits reservados, que siempre son leídos como 0.
Bit de salida de emergencia.
Este bit desbloquea la memoria Flash para escribir o borrar. Puede ser
seteado durante la escritura de un Byte/word o durante una operación
de borrado y la operación puede ser completada satisfactoriamente. En el
modo de bloqueo de escritura si el bit LOCK es seteado mientras
BLKWRT = WAIT = 1, entonces BLKWRT y WAIT son reseteados y el
modo termina normalmente.
Indica a la memoria Flash que está siendo escrita.
0
La memoria Flash no está lista para la siguiente escritura al
byte/word.
1
La memoria Flash está lista para la siguiente escritura al byte/word.
Bandera de interrupción para una violación de acceso.
0
No hay interrupciones pendientes.
1
Hay interrupciones pendientes.
En este bit se registra la violación que se produce al escribir un passw ord
Incorrecto y se genera un PUC (power-up clear), el cual debe ser
reseteado por
software.
0
El password FCTLx está escrito correctamente.
1
El password FCTLx está escrito incorrectamente.
Este bit indica el estado del temporizador.
0
No está ocupado.
1
Ocupado.
Controlador de interrupciones de la memoria Flash
El controlador de la memoria Flash posee dos fuentes de interrupciones: KEYV,
que se activa cuando se escribe un password incorrecto en los registros FTCLx; y
ACCVIFG, que se activa cuando una violación de acceso ocurre, la cual es
habilitada en el registro IE1. Estos dos bits son activados en el registro FTCL3,
descrito anteriormente.
Seminario de Computadores I: Diseño con microcontroladores
- 11 IE1
7
ACCVIE
0
1
6
5
ACCVIE
4
3
2
1
0
Bit que habilita la interrupción de acceso a la memoria Flash, el cual activa
la interrupción ACCVIFG. Debido a que los otros bits pueden ser usados
por otros módulos, es recomendado setear o limpiar este bit usando las
instrucciones BIS.C o BIC.B, en lugar de las instrucciones MOV.B o
CLR.B.
Interrupción no habilitada.
Interrupción habilitada.
Borrado de la memoria Flash
Para borrar la Flash todos los bits son llevados a 1 y la menor cantidad que
puede ser borrada es un segmento. Existen 3 modos de borrado, seleccionados con
los bits ERASE y MERAS
MERAS
0
1
ERASE
1
0
1
1
Modo de borrado
Borrar segmento
Borrado masivo (todos los segmentos de la memoria
principal)
Borra toda la memoria Flash
Cada ciclo de borrado es iniciado por una escritura falsa de la memoria, lo
que activa el temporizador interno y la operación de borrado. Para hacer esto se
debe escribir una dirección que esté dentro del segmento que se desea borrar. El bit
BUSY se activa inmediatamente después de la escritura falsa y se mantiene durante
el ciclo de borrado. BUSY, MERAS y ERASE son puestos a 0 cuando el ciclo
termina. El temporizador del ciclo de borrado de un segmento no depende de la
cantidad de memoria presente, son equivalentes para todos los MSP430.
Seminario de Computadores I: Diseño con microcontroladores
- 12 -
Ciclo de borrado
El ciclo de borrado se describe temporalmente como en la figura 3.
Figura 3. Diagrama temporal de borrado.
Las interrupciones deben ser deshabilitadas antes del ciclo de borrado y
luego deben ser habilitadas.
Iniciando el borrado desde la memoria Flash
Cualquier ciclo de borrado puede ser inicializado desde la memoria flash o
desde la RAM. Cuando el borrado de un segmento es iniciado desde la Flash todos
los tiempos son controlados por el controlador de memoria Flash y la CPU es
congelada durante el ciclo de borrado, luego esta continua con la ejecución del
código siguiente a la escritura falsa.
Cuando se inicia un ciclo de borrado desde la memoria Flash es posible
borrar algo del código que debe ser ejecutado después del ciclo de borrado, si esto
ocurre los resultados son impredecibles.
Deshabilitar las interrupciones y el
watchdog
Configurar el controlador de la
Flash
Escritura falsa
Setear LOCK=1, re -habilitar
interrupciones y watchdog
Figura 4. Diagrama de flujo de borrado desde la flash.
Seminario de Computadores I: Diseño con microcontroladores
- 13 -
; Borrado de un segmento desde la Flash.
; 514 kHz < SMCLK < 952 kHz
; Se asume ACCVIE = NMIIE = OFIE = 0.
MOV
DINT
#WDTPW+WDTHOLD,&WDTCTL
; Deshabilitar WDT
; Deshabilitar interrupciones
MOV
#FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2
MOV
MOV
CLR
MOV
...
EINT
#FWKEY,&FCTL3
#FWKEY+ERASE,&FCTL1
#0FC10h
#FWKEY+LOCK,&FCTL3
;
;
;
;
;
;
Limpiar LOCK
Habilitar borrado de segmento
Escritura falsa, borrado de S1
Setear LOCK
Re-habilitar WDT si es necesario
Habilitar interrupciones
Iniciando borrado desde la RAM
Cuando un ciclo de borrado es iniciado desde la RAM la CPU continua
ejecutando el código siguiente desde la RAM, el bit BUSY debe ser encuestado para
determinar el fin del ciclo de borrado. Si ocurre un acceso a la Flash mientras
BUSY=1 se produce una violación de acceso y el flag ACCVIFG se setea y el
borrado resulta impredecible.
Figura 5. Diagrama de flujo de borrado desde la RAM.
Seminario de Computadores I: Diseño con microcontroladores
- 14 ; Borrado de un segmento desde la RAM. 514 kHz < SMCLK < 952 kHz
; Se asume ACCVIE = NMIIE = OFIE = 0.
MOV
#WDTPW+WDTHOLD,&WDTCTL
; Deshabilitar WDT
DINT
; Deshabilitar interrupciones
L1 BIT
#BUSY,&FCTL3
; Test BUSY
JNZ
L1
; Loop mientras busy
MOV
#FWKEY+FSSEL1+FN0,&FCTL2
; SMCLK/2
MOV
#FWKEY,&FCTL3
; Limpiar LOCK
MOV
#FWKEY+ERASE,&FCTL1
; Habilitar borrado
CLR
&0FC10h
; Escritura falsa, borrado de S1
L2 BIT
#BUSY,&FCTL3
; Test BUSY
JNZ
L2
; Loop mientras busy
MOV
#FWKEY+LOCK,&FCTL3
; Setear LOCK
...
; Re-habilitar WDT?
EINT
; Habilitar interrupciones
Seminario de Computadores I: Diseño con microcontroladores
- 15 -
Escribiendo la memoria Flash
Los modos de escritura se detallan en la tabla siguiente:
BLKWRT
0
1
WRT
1
1
Modo de escritura
Escritura de Byte/word
Escritura por bloques
Ambos modos son semejantes, pero el modo de escritura por bloques es
aproximadamente dos veces más rápido que el modo de escritura Byte/word.
El bit BUSY es seteado durante la operación de escritura y reseteado cuando la
operación se completa. Si la operación de escritura es iniciada desde la RAM, la
CPU no debería acceder a la Flash mientras BUSY = 1, si esto ocurre se produce
una violación de acceso.
Escritura Byte/word.
Esta operación puede ser iniciada desde la memoria Flash o desde la RAM.
Cuando es iniciada desde la Flash, la temporización es controlada por su
controlador interno y la CPU es congelada hasta que la operación termina.
Figura 6. Diagrama temporal de la escritura Byte/word
Cuando la operación de escritura es ejecutada desde la RAM, la CPU continúa
ejecutando el código desde la RAM. El bit BUSY debe estar en 0 para que la CPU
pueda acceder a la Flash, de otro modo ocurre una violación de acceso.
Seminario de Computadores I: Diseño con microcontroladores
- 16 -
Figura 7. Diagrama de flujo de escritura Byte/word iniciada desde la Flash.
; Escritura Byte/word desde la Flash.
; Se asume que 0FF1Eh ha sido borrado.
; 514 kHz < SMCLK < 952 kHz
; Se asume ACCVIE = NMIIE = OFIE = 0.
MOV
DINT
#WDTPW+WDTHOLD,&WDTCTL
; Deshabilitar WDT
; Deshabilitar interrupciones
MOV
#FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2
MOV
MOV
MOV
MOV
MOV
...
EINT
#FWKEY,&FCTL3
#FWKEY+WRT+WRT,&FCTL1
#0123h,&0FF1Eh
#FWKEY,&FCTL1
#FWKEY+LOCK,&FCTL3
;
;
;
;
;
;
;
Limpiar LOCK
Habilitar escritura Byte/word
0123h -> 0FF1Eh
Hecho. Limpiar WRT
Setear LOCK
Re-habilitar WDT si es necesario
Habilitar interrupciones
Seminario de Computadores I: Diseño con microcontroladores
- 17 Deshabilitar interrupciones
y watchdog
si
BUSY=1
Setear el controlador de la
Flash con WRT=1
Escribir byte o word
si
BUSY=1
Setear WRT=0, LOCK=1, re-habilitar
interrupciones y watchdog
Figura 8. Diagrama de flujo de escritura Byte/word iniciada desde la RAM.
; Escritura Byte/word desde la RAM. 514
; Se asume que 0FF1Eh ha sido borrado
; Se asume ACCVIE = NMIIE = OFIE = 0.
MOV
#WDTPW+WDTHOLD,&WDTCTL
;
DINT
;
L1 BIT
#BUSY,&FCTL3
;
JNZ
L1
;
MOV
#FWKEY+FSSEL1+FN0,&FCTL2
;
MOV
#FWKEY,&FCTL3
;
MOV
#FWKEY+WRT,&FCTL1
;
MOV
#0123h,&0FF1Eh
;
L2 BIT
#BUSY,&FCTL3
;
JNZ
L2
;
MOV
#FWKEY,&FCTL1
;
MOV
#FWKEY+LOCK,&FCTL3
;
...
;
EINT
;
kHz < SMCLK < 952 kHz
Deshabilitar WDT
Deshabilitar interrupciones
Test BUSY
Loop mientras busy
SMCLK/2
Limpiar LOCK
Habilitar escritura
0123h –> 0FF1Eh
Test BUSY
Loop mientras busy
Limpiar WRT
Setear LOCK
Re-habilitar WDT?
Habilitar interrupciones
Seminario de Computadores I: Diseño con microcontroladores
- 18 Escritura por bloque
La escritura por bloque puede ser usada para acelerar el proceso de escritura
cuando es necesario escribir varios byte/word secuencialmente. Un bloque
contiene 64 Bytes, iniciándose en 0xx00h, 0xx40h, 0xx80h ó 0xxC0h y terminando
en 0xx3Fh, 0xx7Fh, 0xxBFh ó 0xxFFh.
Una escritura por bloque no puede ser iniciada desde la memoria Flash. El bit
BUSY permanece en 1 durante toda la operación. El bit WAIT debe ser revisado
entre la escritura de cada byte/word en el bloque. Cuando se escriben bloques
sucesivos, el bit BLKWRT debe ser limpiado después de la escritura del bloque
correspondiente. BLKWRT debe ser seteado para la escritura del próximo bloque,
después de un tiempo de recuperación requerido por la Flash, dado por t(end).
Figura 9. Diagrama temporal de escritura por bloque.
Seminario de Computadores I: Diseño con microcontroladores
- 19 -
Deshabilitar interrupciones
y watchdog
si
BUSY=1
Setear el controlador de la
Flash
Setear BLKWRT=WRT=1
Escribir byte o word
si
WAIT=0?
no
Block
border?
Setear BLKWRT=0
si
BUSY=1?
si
Otro
block?
Setear WRT=0, LOCK=1, re-habilitar
interrupciones y watchdog
Figura 10. Diagrama de flujo de escritura por bloque.
Seminario de Computadores I: Diseño con microcontroladores
- 20 -
; Escritura de un bloque comenzando en 0F000h.
; Debe ser ejecutado desde la RAM, se asume que la Flash ha sido borrada.
; 514 kHz < SMCLK < 952 kHz
; Se asume ACCVIE = NMIIE = OFIE = 0.
MOV
#32,R5
; Usado como contador de escritura
MOV
#0F000h,R6
; Puntero de escritura
L1
L2
L3
L4
MOV
DINT
BIT
JNZ
#WDTPW+WDTHOLD,&WDTCTL
MOV
#FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2
MOV
MOV
MOV
BIT
JZ
INCD
DEC
JNZ
MOV
BIT
JNZ
MOV
...
EINT
#FWKEY,&FCTL3
#FWKEY+BLKWRT+WRT,&FCTL1
Write_Value,0(R6)
#WAIT,&FCTL3
L3
R6
R5
L2
#FWKEY,&FCTL1
#BUSY,&FCTL3
L4
#FWKEY+LOCK,&FCTL3
#BUSY,&FCTL3
L1
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Deshabilitar WDT
Deshabilitar interrupciones
Test BUSY
Loop mientras busy
Limpiar LOCK
Habilitar escritura por bloque
Escribir dirección
Test WAIT
Loop mientras WAIT=0
Apuntar a la próxima palabra
Decrementar contador de escritura
Fin del bloque?
Limpiar WRT,BLKWRT
Test BUSY
Loop mientras busy
Setear LOCK
Re-habilitar WDT si es necesario
Habilitar interrupciones
Seminario de Computadores I: Diseño con microcontroladores
- 21 -
Resultados en pruebas de Laboratorio
Para comprobar en la práctica lo descrito teóricamente en este apunte, se realizaron
algunas pruebas de escritura y borrado en la flash del MSP430F149 disponible en el
kit de desarrollo EasyWEB de OLIMEX. Se utilizó rutinas en C y assembler para
escribir y borrar en flash. Haciendo uso del emulador proporcionado por el
software IAR se comprobó el funcionamiento de las rutinas, a partir de lo cual se
desprenden las siguientes observaciones:
-
La etapa de configuración de los registros para definir los parámetros de
escritura (modos de lectura/escritura, tipo de borrado, claves de
escritura/lectura, entre otros) responde fielmente a lo indicado en el apunte.
-
Para el caso del borrado de la flash se observó diferencias entre el simulador
IAR y el proceso realizado realmente en el microcontrolador. La primera
diferencia radica en que al borrar en el simulador, el sector de memoria
borrado aparece con valor 0. Esto difiere de la realidad, pues el borrado de
una memoria flash corresponde a un estado 1 en cada bit. La segunda
diferencia, más importante que la anterior, corresponde al proceso de
borrado en segmento en la memoria flash. Para realizar este proceso, se
configuran los registros correspondientes, indicando que se realizará un
borrado de segmento y luego se procede a realizar la escritura falsa que
permite identificar el segmento a borrar. En el simulador, este proceso no
funciona correctamente, pues en lugar de borrar el segmento, el simulador
considera la escritura falsa como verdadera, y escribe el dato entregado en
la dirección de asignada sin realizar un borrado del segmento. Sin embargo,
con el emulador se comprobó que el proceso de borrado de segmento
funciona correctamente, usando la escritura falsa.
-
Otro detalle interesante se refiere a las posibilidades de escritura que posee
la flash. En el caso de código C, el compilador traduce una instrucción de
escritura como word (16 bits) por defecto. Sin embargo, se corroboró que la
unidad mínima de escritura posible corresponde a un byte. Esto quiere decir
que es posible escribir 8 bits, direccionando al Byte. Para realizar esta
operación se utilizó el comando assembler move.b, el cual permite mover
sólo un byte de un registro a la dirección de memoria deseada.
Descargar