PDF de programación - Uso de la memoria FLASH de los MCUs HC908 para el Almacenamiento de Datos Temporales

Imágen de pdf Uso de la memoria FLASH de los MCUs HC908 para el Almacenamiento de Datos Temporales

Uso de la memoria FLASH de los MCUs HC908 para el Almacenamiento de Datos Temporalesgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 16 de Octubre del 2017)
967 visualizaciones desde el 16 de Octubre del 2017
141,0 KB
8 paginas
Creado hace 15a (22/04/2009)
COMENTARIO TECNICO

Uso de la memoria FLASH de los MCUs HC908
para el Almacenamiento de Datos Temporales.
Por el Ing. Daniel Di Lella, Depto. Técnico EduDevices – www.edudevices.com.ar

Una pregunta común cuando se comienza a trabajar con la familia de los nuevos microcontroladores HC908
FLASH de Freescale o bién cuando se está por decidir la Migración a uno de estos interesantes MCUs,
es si es posible utilizar la memoria Flash de los mismos no solo para "grabar" programas en ella
(memoria de programa) sino además para "almacenar" datos temporales (variables temporales, seteos,
tablas transitorias, etc.) como si se tratara de una memoria "EEPROM" o similar NO - Volatil.
En los MCUs OTP ROM (One Time Programming ROM) esto era SOLO posible con el agregado de
una memoria "externa" del tipo serial de 8 pines como las 93Cxx..
La memoria FLASH de 2da generación que poseen los MCUs HC908 es ideal para reemplazar
ventajosamente el uso de memorias EEPROMs externas por los siguientes motivos:

• Al no utilizarse un chip externo de memoria, se dispone de mayor cantidad

de Pines I/O para usos generales y NO para el control de la memoria.

• Ahorro en el costo del chip externo de memoria y en el espacio de PCB a utilizar.

• Flexibilidad en el tamaño de la memoria a utilizar (se utiliza solo lo necesario, dejando

el resto para la memoria del programa).



Circuitos adicionales integrados en el MCU como el LVI (Low Voltage

Inhibit), necesarios para asegurar un funcionamiento confiable en sistemas
con memoria No - Volatil .

Existen dos modos de "grabar" la memoria FLASH de los MCUs HC08, a saber:

1) En el "Modo Monitor" , que es un modo muy particular que poseen estos MCUs, puede grabarse la

memoria flash de estos, además de emplearse este modo para el "debugging" en tiempo real de
programas. Este modo permite la actualización del programa contenido en la memoria Flash aún

cuando el chip se encuentre soldado a la placa del usuario. Esta modalidad se la conoce con el nombre
de In - Circuit Programming (I.C.P.)

2) En el "Modo Usuario" , que es el modo de funcionamiento normal del MCU, (en el cuál se correrá el

programa implementado por el usuario), es posible alterar el contenido de la memoria flash, sin
necesidad de tensiones o uso de pines especiales para tal fin.

El primero de los modos, es ideal cuando se requiere grabar un programa (aplicativo) en la memoria de un
dispositívo "virgen" (de fábrica o borrado totalmente) durante la producción o desarrollo y durante posteriores
"actualizaciones" (revisiones) del software originalmente implementado en el mismo.
Para este modo, existen herramientas de software y hardware (PROG08SZ, FLASH_POD, EVAL08QTY,
etc.) que facilitan la Programación En - Circuito (I.C.P.) o la programación de la totalidad del chip para las
operaciones anteriormente descriptas.

En el segundo de los modos, y punto fundamental de nuestro artículo, puede utilizarce la Flash para
almacenar datos "temporales" en memoria No - Volátil, con similares prestaciones a los chips EEPROM
comunmente utilizados para tal fín.

Si tenemos en cuenta la estructura interna de la memoria FLASH de los HC908, la misma NO permite su
alteración por medio de código escrito en su propia memoria, dicho de otra forma, no es posible alterar la
flash con código "corriendo" en la misma flash. Esto que en principio parecería un "inconveniente" ,
garantiza (junto con otros recursos disponibles) la inalterabilidad de los datos ante programas
del tipo "gusano" (que se "comen" código) frecuentes por errores en el programa u otras circunstancias.

Entonces, para alterar (grabar o Borrar) la flash, se dispone de dos (2) métodos, en el modo usuario:

- Ejecución de Código desde RAM :

Con este método, es posible grabar o borrar la memoria flash, con código "corriendo" desde memoria
RAM del MCU, para ello el programa de usuario implementado en la flash, deberá incluir una sub-
rutina que realice una "migración" (copia) de líneas de código desde la flash (estas líneas contendrán
el código necesario para modificar la memoria flash) hacia la RAM. Una vez copiado el código, y
cuando se quiera borrar o grabar la flash con algún valor, el programa del usuario deberá llamar
al código en RAM como si fuera una o varias sub-rutinas, con la particularidad que su ubicación no
es la usual, sino espacio RAM.
Este método es común de usar en derivatívos de la flia. HC908 con memorias RAM superiores a los
128 Bytes, por ejemplo los 908GP32, 908MR32/24/16/8, 908SR12,Etc. La ventaja principal, radica
en la facilidad que dispone el usuario para mejorar o modificar las sub-rutinas encargadas del borrado
o grabación de la flash. La desventaja es que se ocupa temporalmente espacio de RAM, por lo que hay
que tener cuidado de ello.

- Ejecución de Código desde ROM (ROM "Monitor") :

Con este método, es posible grabar o borrar la memoria flash, con código "corriendo" desde memoria
ROM del MCU, para ello el programa de usuario implementado en la flash, deberá invocar por medio
de un salto a sub-rutina, la dirección de comienzo de cada una de las sub-rutinas incluidas en la ROM
de los distintos derivatívos de HC908 que poseean dichas rutinas (hoy en día, casi todos!!) .

Los derivatívos que poseen estas rutinas en ROM son, por ejemplo, 908JL3, 908JK3, 908JK1, 908GR8,
908KX8 / KX2, 908JB8, etc..
En estos MCUs, la memoria RAM es del orden de los 128 Bytes o similar, por lo que no es aconsejable
ejecutar código desde esta, por el poco espacio disponible para tal fin.

Para mayor detalle de funcionamiento de cada uno de estos métodos, se sugiere al lector consultar las
siguientes notas de aplicación de Freescale :

- AN1831
- AN - HK - 32
- AN - HK - 33
- AN1770

Estas notas se pueden obtener del siguiente web site:

www.freescale.com

En el presente artículo, se explicará un programa ejemplo de cómo utilizar las rutinas incorporadas dentro de
la ROM monitor de algunos derivatívos de la flia. HC908.

El programa se basa en la nota de aplicación AN1831 "Using MC68HC908 On - Chip FLASH
Programming Routines" y en el mismo se utilizará un MC908JK3, pero es valido su uso para otros
dispositivos.

El Programa.

En el programa "demo3jl" , se efectua la "memorización" de datos temporales (variable Num_RAM
auto-incrementada en cada corrida del programa) en un espacio reservado de la memoria FLASH
(en este caso $EC00, pero podría ser cualquier dirección de la Flash), que en el comienzo posee $FF
(en blanco) en toda su extensión ( TABLA ).
Se utilizarán las sub - rutinas "PRGRNGE" y "ERARNGE" contenidas en la ROM.
También se incluyó un "artilugio" para extender la "vida útil" de la Flash (que en condiciones normales, osea
sin este artilugio, soporta unos 10.000 ciclos grab. / borr a -40 °C y más de 100.000 entre 20 y 30 °C) unas
64 veces más, ya que se irán desplazando los valores memorizados al próximo espacio "en blanco" disponible
en la TABLA reservada para los valores temporales y solo se efectuará el borrado de la "página" cuando se
complete la tabla (valores todos distintos de $FF).
Debe hacerse notar, los espacios reservados para las variables utilizadas por las sub - rutinas en ROM en la
RAM del MCU, para mayor detalle, se sugiere leer atentamente la nota AN1831 de Freescale.

******************************************************************************
* DEMO3JL.ASM - PROGRAMA DEMO NUMERO 3 - FLASH PROGRAMMING *
* SEMINARIO DE ACTUALIZACION MICROCONTROLADORES HC908 FLASH *
* www.EduDevices.com.ar *
* *
* SE USARAN LAS RUTINAS CONTENIDAS EN LA ROM "MONITOR" SEGUN AN1831 *
* DISPOSITIVOS JL3 / JK3 / JK1 *
******************************************************************************

***************
* EQUATES *
***************

BASE 10T ; BASE DECIMAL POR DEFAULT

INCLUDE 'jl3regs.inc' ; equates registros HC908JL3

RAM EQU $0080 ; Comienzo de la RAM para el JL3
DATSTRC EQU RAM+8 ; RAM para uso del "MONITOR ROM"
RAMUSER EQU DATSTRC+7 ; Comienzo de la RAM p/ usuario
DATAFLASH EQU $EC00 ; Comienzo de la FLASH para almacenar datos
RomStart EQU $ED00 ; Comienzo de la ROM/FLASH para el programa
VectorStart EQU $FFDE ; Comienzo tabla de vectores varios
GETBYTE EQU $FC00 ; Sub-Rutina en ROM TX/RX un Byte x port
RDVRRNG EQU $FC03 ; Sub-Rutina en ROM lectura y verif. de un rango
ERARNGE EQU $FC06 ; Sub-Rutina en ROM borrado row / mass Flash
PRGRNGE EQU $FC09 ; Sub-Rutina en ROM escritura datos en FLASH
DELNUS EQU $FC0C ; Sub-Rutina en ROM DELAY "N" microsegundos

***********************
* VARIABLES EN RAM *
**********************

ORG RAM ; Comienzo RAM para JK3
; reservada hasta DATSTRC P/ uso
; rutinas ROM prog/erase FLASH.

ORG DATSTRC ; RAM p/ uso en prog/erase flash

CTRLBYT RMB 1 ; BIT 6 -- MASS FLAG, 1 -- mass erase
CPUSPD RMB 1 ; CPU speed = 4 x Fop aprox.
LADDR RMB 2 ; Last
  • Links de descarga
http://lwp-l.com/pdf7196

Comentarios de: Uso de la memoria FLASH de los MCUs HC908 para el Almacenamiento de Datos Temporales (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad