memoria flash 2 - iniciolsb/elo325/clases/charlas/memoria flash... · características de la memori...

21
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

Upload: truonghuong

Post on 19-May-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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

Page 2: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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

Page 3: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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

Page 4: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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.

Page 5: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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 Fouler-Nordheim tunneling (tunelización de Fouler-Nordheim). La tunelización permite 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.

Figura1. Detalle de la celda de una memoria flash.

Page 6: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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.

Page 7: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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.

Page 8: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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.

Page 9: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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 13 12 11 10 9 8 FRKEY, leída como 096h

FWKEY, debe ser escrita como 0A5h

7 6 5 4 3 2 1 0 BLKWRT WRT Reservado Reservado Reservado MERAS ERASE 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 14 13 12 11 10 9 8 FRKEYx, leída como 096h

Debe ser escrita como 0A5h

7 6 5 4 3 2 1 0 FSSELx FNx

Page 10: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

Seminario de Computadores I: Diseño con microcontroladores - 10 -

FSSELx Selecciona la fuente de reloj para el controlador de la Flash FNx Divide el reloj del controlador de la Flash. El valor de división es FNx + 1. FCTL3

15 14 13 12 11 10 9 8 FRKEYx, leída como 096h

Debe ser escrita como 0A5h

7 6 5 4 3 2 1 0 Reservado Reservado EMEX LOCK WAIT ACCVIFG KEYV BUSY

RESERVADO Son bits reservados, que siempre son leídos como 0. EMEX Bit de salida de emergencia. LOCK 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.

WAIT 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.

ACCVIFG Bandera de interrupción para una violación de acceso. 0 No hay interrupciones pendientes. 1 Hay interrupciones pendientes.

KEYV En este bit se registra la violación que se produce al escribir un password 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.

BUSY 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.

Page 11: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

Seminario de Computadores I: Diseño con microcontroladores - 11 -

IE1 7 6 5 4 3 2 1 0 ACCVIE

ACCVIE 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.

0 Interrupción no habilitada. 1 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 ERASE Modo de borrado 0 1 Borrar segmento 1 0 Borrado masivo (todos los segmentos de la memoria

principal) 1 1 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.

Page 12: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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.

Figura 4. Diagrama de flujo de borrado desde la flash.

Deshabilitar las interrupciones y el watchdog

Configurar el controlador de la Flash

Escritura falsa

Setear LOCK=1, re -habilitar interrupciones y watchdog

Page 13: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

Seminario de Computadores I: Diseño con microcontroladores - 13 -

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.

; Borrado de un segmento desde la Flash. ; 514 kHz < SMCLK < 952 kHz ; Se asume ACCVIE = NMIIE = OFIE = 0. MOV #WDTPW+WDTHOLD,&WDTCTL ; Deshabilitar WDT DINT ; Deshabilitar interrupciones MOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2 MOV #FWKEY,&FCTL3 ; Limpiar LOCK MOV #FWKEY+ERASE,&FCTL1 ; Habilitar borrado de segmento CLR #0FC10h ; Escritura falsa, borrado de S1 MOV #FWKEY+LOCK,&FCTL3 ; Setear LOCK ... ; Re-habilitar WDT si es necesario EINT ; Habilitar interrupciones

Page 14: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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

Page 15: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

Seminario de Computadores I: Diseño con microcontroladores - 15 -

Escribiendo la memoria Flash Los modos de escritura se detallan en la tabla siguiente:

BLKWRT WRT Modo de escritura 0 1 Escritura de Byte/word 1 1 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.

Page 16: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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 #WDTPW+WDTHOLD,&WDTCTL ; Deshabilitar WDT DINT ; Deshabilitar interrupciones MOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2 MOV #FWKEY,&FCTL3 ; Limpiar LOCK MOV #FWKEY+WRT+WRT,&FCTL1 ; Habilitar escritura Byte/word MOV #0123h,&0FF1Eh ; 0123h -> 0FF1Eh MOV #FWKEY,&FCTL1 ; Hecho. Limpiar WRT MOV #FWKEY+LOCK,&FCTL3 ; Setear LOCK ... ; Re-habilitar WDT si es necesario EINT ; Habilitar interrupciones

Page 17: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

Seminario de Computadores I: Diseño con microcontroladores - 17 -

Figura 8. Diagrama de flujo de escritura Byte/word iniciada desde la RAM.

; Escritura Byte/word desde la RAM. 514 kHz < SMCLK < 952 kHz ; Se asume que 0FF1Eh ha sido borrado ; 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+WRT,&FCTL1 ; Habilitar escritura MOV #0123h,&0FF1Eh ; 0123h –> 0FF1Eh L2 BIT #BUSY,&FCTL3 ; Test BUSY JNZ L2 ; Loop mientras busy MOV #FWKEY,&FCTL1 ; Limpiar WRT MOV #FWKEY+LOCK,&FCTL3 ; Setear LOCK ... ; Re-habilitar WDT? EINT ; Habilitar interrupciones

Deshabilitar interrupciones y watchdog

BUSY=1 si

Setear el controlador de la Flash con WRT=1

Escribir byte o word

BUSY=1 si

Setear WRT=0, LOCK=1, re-habilitar interrupciones y watchdog

Page 18: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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.

Page 19: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

Seminario de Computadores I: Diseño con microcontroladores - 19 -

Figura 10. Diagrama de flujo de escritura por bloque.

Deshabilitar interrupciones y watchdog

BUSY=1 si

Setear el controlador de la Flash

Setear BLKWRT=WRT=1

Escribir byte o word

WAIT=0? si

Block border?

no

Setear BLKWRT=0

BUSY=1? si

Otro block?

si

Setear WRT=0, LOCK=1, re-habilitar interrupciones y watchdog

Page 20: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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 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+BLKWRT+WRT,&FCTL1 ; Habilitar escritura por bloque L2 MOV Write_Value,0(R6) ; Escribir dirección L3 BIT #WAIT,&FCTL3 ; Test WAIT JZ L3 ; Loop mientras WAIT=0 INCD R6 ; Apuntar a la próxima palabra DEC R5 ; Decrementar contador de escritura JNZ L2 ; Fin del bloque? MOV #FWKEY,&FCTL1 ; Limpiar WRT,BLKWRT L4 BIT #BUSY,&FCTL3 ; Test BUSY JNZ L4 ; Loop mientras busy MOV #FWKEY+LOCK,&FCTL3 ; Setear LOCK ... ; Re-habilitar WDT si es necesario EINT ; Habilitar interrupciones

Page 21: Memoria Flash 2 - Iniciolsb/elo325/clases/charlas/Memoria flash... · Características de la Memori a Flash y diferencias …………. 6 respecto a otros tipos de memoria

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.