Sunteți pe pagina 1din 6

ITSS- GRABACIONES DE LAS MEMORIAS FLASH Y EPROM

GRABACIONES DE LAS MEMORIAS FLASH Y EEPROM


Eduardo Luis Romero Len
e-mail: edurom.pollo@hotmail.com

RESUMEN: En este capitulo se mostraran los


conceptos fundamentales acerca de lo que es la grabacin de las memorias FLASH y EEPROM. 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 se encuentra dividida de dos partes:

Se debe tener en cuenta que las 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).

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: 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 una posicin de la memoria de programa mediante instrucciones de tabla en modos palabra. ; Inicializacin del puntero de direccionamiento 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

Fig. 1 Mapa del espacio de memoria de programa

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 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. TBLWTH: Escritura de la parte alta.

ITSS- GRABACIONES DE LAS MEMORIAS FLASH Y EPROM

TBLRDH(W0), W3 TBLRDL(W0), W4

; W3 byte alto<23:13> ; W4 palabra baja<15:0>

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.

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.

2.

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 Fig. 5 Direccionamiento de la memoria mediante los registros NVM

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

1.3.3

REGISTRO NVMKEY

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.

ITSS- GRABACIONES DE LAS MEMORIAS FLASH Y EPROM

1. 2. 3.

Escribir 0x55 a NVMKEY Escribir 0xAA a NVMKEY Ejecutar dos instrucciones NOP

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

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. GRABACION DE LA MEMORIA DE PROGARAMA

Bit 7-0: NVMKEY<7-0>; Bits de registro de seguridad (solo escritura)

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

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.4 GRABACION DE LA MEMORIA FASH


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

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

Programa en serie (ICSP): Precisa de una

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

Ejemplo 1.4 Escritura de una lnea de la memoria FLASH mediante RTSP ; configurar el registro NVMCON MOV #0X4001, W1 MOV W0, NVMCON

ITSS- GRABACIONES DE LAS MEMORIAS FLASH Y EPROM

; 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

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

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.

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)

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

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.

ITSS- GRABACIONES DE LAS MEMORIAS FLASH Y EPROM

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: 1. 2. 3. 4. 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.

; 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 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++]

El algoritmo de la 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.

7. DESCRIPCION CONTROL.

DE

REGISTROS

DE

Ejemplo 1.5 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

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 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:

ITSS- GRABACIONES DE LAS MEMORIAS FLASH Y EPROM

12. BIBLIOGRAFIA:
* Microcontroladores avanzados dsPIC, controladores

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

S-ar putea să vă placă și