Está en la página 1de 6

ITSS- Grabaciones de las Memorias Flash y Eeprom

GRABACIONES DE LAS MEMORIAS FLASH Y EEPROM


Westher Eduardo Anchundia Riofrio
e-mail: westher99@hotmail.com

RESUMEN: En este capitulo se mostraran los


conceptos fundamentales acerca de lo que es la grabacin de las memorias FLASH y EEPROM, con la finalidad de obtener los conocimientos necesarios para aplicar esta clase de dispositivos. PALABRAS CLAVE: AGU, Bit-reverse, direccionamiento modular, Registros, Buffer. 1. INTRODUCCIN: La memoria de los dsPICF30 se divide en dos grandes bloques: la memoria de datos y a memoria de programa. La memoria de programa, a su vez, tambin encuentra dividida de dos partes:

TBLWTH: Escritura de la parte alta.

Se debe tener en cuenta que la posiciones de memoria de programa tienen un tamao de 24bits por lo que cada posicin de memoria de programa ocupa dos direcciones (de 16 bits). As, los 16 bits de mas peso constituyen la parte alta de la instruccin y los 16 bits de menos peso la parte baja.

Espacio de memoria reservado al usuario. Espacio de memoria dedicado a la configuracin. En un dsPICF30 la memoria de programa ocupa desde la posicin 0x000000 hasta la 0xFFFFFE de la memoria, abarca 4Mposicion de 24 bits cada una. La posicin 0x001000-0x017FFE corresponde a la memoria del programa de usuario (FLASH) y la posicin 0x7FF0000x7FFFFE se destinan a la memoria de datos (EEPROM). LA MEMORIA FLASH contiene el cdigo del programa de usuario que ejecuta el dsPIC, mientras que la EEPROM sirve para guardar datos que deben ser <<memorizados>> por el dsPIC.

Fig. 2 Direccin alta y baja en las operaciones de Tabla En la siguiente figura se muestra como se direcciona la memoria de programa mediante un puntero de tabla. La direccin de una posicin de la memoria de programa se compone de 24bits , los 8 bits de mas peso son los 8bits del registro TBLPAG, mientras que los 16 bits de menos peso corresponde con la direccin efectiva.

Fig. 3 Puntero de Tabla que apunta a la memoria de programa 1.2.1 MANEJO DELAS INSTUCCIONES DE LECTURA DE TABLA Para programar la lectura mediante instrucciones de tabla se sigue dos pasos: Fig. 1 Mapa del espacio de memoria de programa Primero se inicializa el puntero d direccionamiento para obtener la direccion de la memoria de programa que se quiere leer, usando los registros TBLPAG y W. Despues se lee la posicion de memoria direcionada. Ejemplo 1.1 Lectura de un posicin de la memoria de programa mediante instrucciones de tabla en modos palabra. ; Inicializacin del puntero de direccionamiento

1.2 INSTUCCIONES DE TABLA.


Las instrucciones de tabla sirven para realizar operaciones de borrado y escritura de datos de tamao byte o palabra segn el modo de trabajo en la memoria FALSH y la memoria de datos EEPROM. Existen cuatro instrucciones de tabla diferentes TBLRDL: Lectura de parte baja TBLWTL: Escritura de la parte baja. TBLRDH: Lectura de la parte alta.

ITSS- Grabaciones de las Memorias Flash y Eeprom

MOV #tblpage(PROG_ADDR),W0 ; W0 Valor de tabla MOV W0, TBLPAG ; w0= TBLPAG MOV #tbloffset (PROG_ADDR),W0; W0() pala baja) dire ; Lectura de la posicin direccionada TBLRDH(W0), W3 ; W3 byte alto<23:13> TBLRDL(W0), W4 ; W4 palabra baja<15:0> 1.2.2. MANEJO DE LAS INSTRUCCIONES DE LECTURA DE TABLA Para poder programar la escritura mediante tabla se deber seguir tres pasos: 1. Primero, al igual que para la lectura, habr que inicializar el puntero de direccionamiento para obtener la direccin de memoria en la que se va a escribir. Despus, se debe cargar los registros W de mantenimiento con los datos que se quieren escribir. Por lo ultimo los registros de mantenimiento en la direccin de memoria indicada por el puntero de direccionamiento.

El registro NVCOM es el registro que controla las operaciones de escritura/borrado en las memorias FLASH Y EEPROM

Fig. 4 Registro de control NVMCOM Bit 15 (WR): Bit d control de escritura (programacin o borrado). 1= Indica el comienzo de un ciclo de borrado/ escritura de la EEPROM o de la FLASH 0= indica que el ciclo de escritura/ borrado se ha completado. Bit 14(WREN): Bit de bloque de escritura 1= Habilita la operacin de escritura/ borrado 0= Deshabilita la operacin de escritura/ borrado. El dispositivo pone automticamente este bit a <0> cuando termina la operacin de escritura/borrado Bit 13(WRERR): Bit de error de flag en FLASH. 1= La operacin de escritura ha finalizado antes de lo previsto, por lo que a se ha producido algn error. 0= La operacin de escritura ha finalizado satisfactoriamente. Bit 12-8(RESERVADO): El cdigo de usuario debe escribir ceros en estas posiciones. Bit 7-0(PROGOP<7:0>): Son los bits de operacin. Aqu se introduce el cdigo de la operacin que se quiere realizar.

2.

3.

Ejemplo 1.2 Escritura de un posicin de la memoria de programa mediante instrucciones de tabla en modo byte. ; Primero inicializacin del puntero de direccionamiento MOV # tblpage(PROG_ADDR), W0 ;W0 valor tab de pag MOV W0, TBLAPG ; W0= TBLPAG MOV # tbloffset(PROG-ADDR), W0 ; W0(pala baja)direc ;Segundo: carga de datos a escribir en registros de trabajo MOV # LOW-BYTE, W2 MOV # MID_BYTE, W3 MOV # HIGH_BYTE, W4 ; W2= byte<7-0> ; W3=byte<15-8> ; W4)=byte<23-16>

1.3.2

REGISTRO DE DIRECCION NVM.

Tercero: Escritura de los bytes almacenados. TBLWTL.B W2 (W0++) TBLWTL.B W3, (W0++) TBLWTH.B W4,(W0 ; Escritura del byte bajo ; Escritura del byte medio ; Escritura del byte bajo

Existen dos registros de direccin NVM: el registro NVMADRU y el registro NVMADR: En este par de registros se carga los 24 bits de la direccin de memoria FLASH o EEPROM donde se va a realizar la operacin de escritura/ borrado: en el registro NVMADRU se carga los 8 bits de mas peso de la direccin y en le registro NVMADR los 16 bits de menos peso de la misma

1.3 REGISTRO DE CONTROL


Las operaciones de programacin de las memorias FLASH y EEPROM se manejan mediante tres registros de control de memoria no voltil.

1.3.1

REGISTRO NVMCOM

ITSS- Grabaciones de las Memorias Flash y Eeprom

Fig. 5 Direccionamiento de la memoria mediante los registros NVM

Autograbacion en tiempo de ejecucin(RTSP):

Se implementa en el software del usuario y se aplica de forma similar para la programacin de la FLASH y EEPROM

1.3.3

REGISTRO NVMKEY

Programa en serie (ICSP): Precisa de una

Es un registro de solo escritura que se usa para evitar escritura/ borrado accidentales en las memorias FLASH y EEPROM. Para que se pueda realizar un operacin de escritura/ borrado, se deben seguir los siguientes pasos. 1. 2. 3. Escribir 0x55 a NVMKEY Escribir 0xAA a NVMKEY Ejecutar dos instrucciones NOP

conexin para transferir los datos al dispositivo y es mucho mas rpida que RSTP 1.4.1 METODO DE GRABACION RTSP La memoria de programacin FLASH del dsPIC30F esta organizada en lneas y paneles. Cada lnea consta de 32 instrucciones (96 bytes) y cada suele estar formado por 128 lneas. No obstante, el tamao del panel puede variar dependiendo del modelo de dsPIC30F, cada uno de estos paneles tiene asociado unos registros de escritura en los que se pueden cargar hasta 32 instrucciones. El mtodo RTSP consiste bsicamente en configurar un puntero de tabla que apunte a la direccin de memoria que se quiere modificar y luego cargar los registros de escritura mediante instrucciones de escritura de tabla. Este mtodo permite al usuario borrar 32 instrucciones (96 bytes) o escribir 4 instrucciones (12 bytes) al mismo tiempo en memoria de programa. GRABACION DE LA MEMORIA DE PROGARAMA Antes de comenzar a borra una lnea de la memoria FLASH, esta se debe haber sido almacenada en la memoria RAM como <<imagen >> de datos y para poder en una lnea, esta debe haber sido borrado previamente. La grabacin de la memoria FLASH sigue los siguientes pasos:

Despus de realizar esta secuencia, estar permitida la escritura en el registro NVMCOM y por lo tanto se podr realizar la operacin de escritura/ borrado. El cdigo del siguiente ejemplo muestra como programar esta secuencia de desbloqueo. Bit 15-8: No implementado, se leen como <<0>> Bit 7-0: NVMKEY<7-0>; Bits de registro de seguridad (solo escritura)

Fig. 6 Estructura del registro NVMKEY Ejemplo 1.3 PUSH MOV IOR MOV MOV MOV MOV BSET NOP NOP POP SR #0Xx00E0, W0 SR #0x55, W0 W0, NVMKEY #0xAA, W0 W0, NVMKEY NVMKEY, #WR SR

1)

1.4 GRABACION DE LA MEMORIA FASH


Existen dos mtodos para grabar la memoria de programa del usuario:

Leer una lnea de la FLASH (32 palabras) y almacena en la RAM como <<imagen >> de datos 2) Actualizar la imagen de datos RAM con los nuevos datos de la memoria FLASH. 3) Borrar una lnea de la memoria FLASH a) Configurar el registro NVMCOM b) cargar le direccin de la lnea a ser borrada en los registros NVMADRU y NVMADR. c) Deshabilitar las interrupciones. d) Escribir la secuencia de seguridad en NVMKEY. e) Poner el bit WR del registro NVCOM A <<1>> para que comience el ciclo de borrado f) Habilita las interrupciones. g) Borrar la lnea de la flash 4) Cargar en los registros de escritura de la FLASH 32 palabras desde la RAM. Estos son los datos que hay que grabar en una lnea de la memoria FLASH 5) Escribir una lnea de la memoria FLASH a) Configurar el registro NVMCOM. b) Deshabilitar las interrupciones. c) Escribir la secuencia de seguridad en NVMKEY.

ITSS- Grabaciones de las Memorias Flash y Eeprom

d)

6)

Poner a <<1>> el bit WR del registro NVCOM para que comience el ciclo de escritura. e) Rehabilitar las interrupciones. Repetir los pasos tantas veces como lneas de la memoria FLASH se quieran grabar.

NOP NOP ; Reactivar las interrupciones, si es necesario POP SR El segmento de cdigo mostrado en el ejemplo 16.18 debe ser repetido 8 veces para poder programar una lnea entera (32instrucciones) de la memoria FLASH. GRABACION DEL REGISTRO DE CONFIGURACION MEDIANTE RTSP El procedimiento para escribir el registro de configuracin mediante RTSP es muy similar al procedimiento de escritura en ala memoria FLASH. La diferencia es que el registro de configuracin tiene un tamao de 16 bits, solo sern necesario las instrucciones de escritura TBLWTL. 1.4.2 METODO DE GRABACION ICSP

Ejemplo 1.4 Borrado de una lnea de la memoria FLASH mediante RTSP. ; Configurar el registro NVMCOM MOV #0X4041, W0 MOV W0,NVMCOM ; Configurar el puntero de direccin de lnea a ser borrado. MOV #tblpage(PROG_ADDR),W0 MOV W0,NVMADRU MOV #tbloffset(PROG_ADDR),W0 MOV W0, NVMADR ; Deshabilitar las interrupciones, si estn habilitadas PUSH SR MOV #0x00E0, W0 IOR SR ; Escribir la secuencia de seguridad en el registro NVMKEY MOV #0x55, W0 MOV W0,NVMKEY MOV #0xAA, W0 MOV W0, NVMKEY ; Comenzar la operacin de borrado BSET NVMCOM, #WR NOP NOP Ejemplo 1.5 Escritura de una lnea de la memoria FLASH mediante RTSP ; configurar el registro NVMCON MOV #0X4001, W1 MOV W0, NVMCON ; Cargar Los cuatro Registros de escritura de memoria de programa CALL Cargar_Registros-Escritura; ; Deshabilitar las PUSH MOV IOR interrupciones, si estn habilitadas SR #0x00E0, W0 SR

El mtodo de grabacin ICSP es un tipo de grabacin ISP. La programacin ISP cosiste en granar el programa ene le dispositivo una vez que haya sido montado en la tarjeta. El mtodo consiste ICSP emplea solo dos patitas de E/S del dispositivo para introducir en el los datos y los impulsos de reloj, u una ves que se ha realizado la grabacin, pueden ser utilizados como patitas de E/S normales. Las patitas de los datos a gravar se llama PGD y la de los impulsos de reloj PGC. Cuando se usa este mtodo de grabacin, el dsPIC requiere tres patitas para la alimentacin. Vss la que soporta la tierra Vdd la tensin de alimentacin general positiva Vpp voltaje para grabacin de la memoria FLASH. La patita Vpp esta multiplexado con MCLR#. Ventajas que ofrece el mtodo de grabacin ICSP Reduce el coste de actualizar el cdigo de un equipo. Muchos sistemas requieren calibracin en las ltimas etapas de programacin y testeo. El hecho de que una vez programado el circuito pueda ser testeado y probado sin tener que cambiar se de sitio. El modo de grabacin ICSP, se habilita poniendo en nivel alto las patitas PGC Y PGD y una vez hecho esto, se aplica la alimentacin positiva a la patita MCRL#/Vpp

; Escribir la secuencia de seguridad MOV #0x55, W0 MOV W0, NVMKEY MOV #0xAA, W0 MOV W0, NVMKEY ; Comenzar la operacin de programacin BSET NVMCON, #WR ; Insertar dos NOP de3spues de la programacin

ITSS- Grabaciones de las Memorias Flash y Eeprom

1. 2. 3. 4. Fig. 7 Habilitacin del modo de grabacin ICSP Para deshabilitar el modo ICSPM nicamente hay que pasar al modo STDP y para salir definitivamente bastara con quitar la alimentacin o con pasar MCLR# a nivel bajo. 5. 6.

Cargar la direccin de la palabra a borra en los registros TBLPAG y NVMADR. Configurar el registro NVMCON para borrar una palabra de la EEPROM Borra el bit estado NVMIF y habilitar NVM (opcional). Escribir la secuencia de desbloquo en el registro NVMKEY. Poner a <<1>> El bit WR. Comienza el ciclo de borrado. Detectar el fin del ciclo de borrado.

El algoritmo del escritura de una palabra en al EEPROM en el siguiente: 1. 2. 3. 4. 5. 6. 7. Cargar el registro TBLPAG. Cargar la palabra de datos en el registro escritura de la EEPROM. Configurar el registro NVMCON para escribir una palabra en al EEPROM. Borra el bit estado NVMIF y habilitar la interrupcin NVM (opcional). Escribir la secuencia de desbloqueo en el registro NVMKEY. Activar el bit WR. Comienza el ciclo d escritura. Detectar el fin del ciclo de escritura.

1.5 GRABACIN DE LA MEMORIA EEPROM


La memoria EEPROM de datos esta mapeada ene le respecto de la memoria de programa y esta organizada en palabras de 16 bits pudiendo alcanzar un tamao de 2k palabras (4KB), segn el modelo de dsPIC30F. Los procedimientos para la escritura y borrado e la EEPROM son similares a los del mtodo RTSP de la memoria FLASH, pero en la EEPROM el acceso a los datos es mas rpido y a diferencia de lo que ocurra con la memoria FLASH, la CPU no se detiene durante una operacin de escritura/ borrado de la EEPROM. Las operaciones que se pueden realizar en la memoria EPROM son: Borrar una palabra Borrar una lnea (16 palabras) Escribir una palabra Escribir una lnea (16 palabras)

Ejemplo 1.6 Borrado de una palabra de la EEPROM. ; Configurar el puntero para apuntar a la posicin a borra MOV #tblpage (CONFIG_ADDR), W0 MOV W0, TBLPAG MOV #tbloffset(CONFIG_ADDR),W0 ; Configurar NCMCON para borrar una palabra de la EEPROM d datos. MOV #0x 4044, W0 MOV W0, NVMCON ; Deshabilitar las interrupciones mientras la secuencia calve se escribe. PUSH SR MOV #0x00E0, W0 IOR SR ; Escribir la secuencia de seguridad MOV #0x55, W0 MOV W0, NVMKEY MOV #0Xaa, W0 MOV W0, NVMKEY ; Comenzar la operacin de borrado BSET NVCON, #WR ; Reactivar las interrupciones POP SR

El programa del usuario es responsable de esperar a que la operacin de escritura/ borrado se complete. Para ello, el fin de las operaciones de escritura/ borrado en la EEPROM se puede detectar mediante uno de estos tres mtodos: Explorar el bit WR por software. Explorar el bit NVMF por software. Habilitar las interrupciones NVM.

Nota: si se obtiene resultados inesperados, el usuario deber leer la EEPROM mientras este en marcha la operacin de escritura o borrado. 1.5.1 BORRADO Y ESCRITURA DE UNA PALABRA EN LA EEPROM Para borra una palabra de la EEPROM, lo primero que hay que hacer es cargar los registros TBLPAG y NVMADR con la direccin de la EEPROM a borrar, mientras que para escribir una lnea El algoritmo de borrado de una palabra en al EEPROM es el siguiente:

ITSS- Grabaciones de las Memorias Flash y Eeprom

6.3.1 EJEMPLO DE CODIGO PARA DIRECCIONAMIENTO POR INVERSIN DEL ACARREO. ; Poner XB para buffer de 16 palabras, habilitar el direccionamiento por inversin de acarreo MOV #0x8008 , w0 MOV w0 , XBREV ;Inicializar MODCON para usar w0 como direccin de inversin del acarreo. MOV #0x01ff , w0 MOV w0, MODCON ;w0 para indicar el buffer de datos de entrada. MOV #input_buf , w0 ;w1 para indicar los atos de inversin de acarreo MOV #bit_rev_buf , w1 ; Reordenar los datos de Input_Buf a bit_Rev_Buf REPEAT #15 MOV [w0++] , [w1++]

7. DESCRIPCION CONTROL.

DE

REGISTROS

DE

Los siguientes registros son usados para el direccionamiento modular. MODCON:Registro de control del direccionamiento modular. XMODSRT: Registro de la direccin modular de comienzo AGU X XMODEND: Registro de la direccin modular del fin AGU X. YMODSRT: Registro de la direccin modular de comienzo AGU Y YMODEND: Registro de la direccin modular del fin AGU Y. XBREV:Registro de control de direccionamiento por inversin del acarreo AGU X.

10. CONCLUSIONES:
La memoria de datos es una parte dundamental de las dsPIC30F. La Memoria de datos esta dividida en dos zonas, Zona RAM de DATOS X y Zona RAM de DATOS Y. Siempre es recomendable tener mas informacin de cualquier dispositivo que queramos manejar o manipular para as poder conocer al mximo los funcionamientos que en este caso son los dsPIC30F.

11. RECOMENDACIONES:

12. BIBLIOGRAFIA:
* Microcontroladores avanzados dsPIC, controladores

digitales de seales arquitectura programacin aplicaciones, capitulo 16, la memoria de datos.

También podría gustarte