PDF de programación - Capítulo 9/22 - Memoria FLASH - Curso sobre Microcontroladores

Imágen de pdf Capítulo 9/22 - Memoria FLASH - Curso sobre Microcontroladores

Capítulo 9/22 - Memoria FLASH - Curso sobre Microcontroladoresgráfica de visualizaciones

Publicado el 31 de Mayo del 2018
736 visualizaciones desde el 31 de Mayo del 2018
355,7 KB
12 paginas
Creado hace 11a (23/10/2012)
Curso sobre Microcontroladores
Familia HC9S08 de Freescale

Por Ing. Daniel Di Lella – EduDevices – www.edudevices.com.ar
e-mail: [email protected]

Capítulo 9.-
Memoria FLASH.

La memoria FLASH de la familia HC9S08 ha sido mejorada en muchos aspectos con
respecto a su antecesora, la familia HC908. El avance de la tecnología ha hecho posible
no solo mejoras en otros módulos de la familia HC9S08, gracias a la mayor escala de
integración del “Die” (chip) que en la familia HC908 es en tecnología de 0,5um (0,5 de
Micrón), mientras que en la HC9S08 es de 0,25 um, sino que además la memoria
FLASH de esta familia ha recibido muchas mejoras como facilidad de programación,
aumento de la velocidad de borrado / escritura, mejoras en la seguridad contra escrituras
involuntarias, etc.

A continuación se detallan algunas de las características más importantes de la
memoria FLASH en la familia HC9S08:

• La memoria FLASH está organizada en “Páginas” de 512 Bytes.
• La operación de "Borrado” soporta el borrado de una página o el “borrado en masa”

(Mass Erase).

• Soporta la programación (escritura) de a “un Byte” como en las EEPROMs.
• Lectura / Borrado / Programación a la tensión mínima de VDD = 1,8V, sin tensión

externa auxiliar (ideal para aplicaciones con pilas o baterías).

• Una “Máquina de estados” interna controla las operaciones de borrado /

programación, haciendo más sencilla estas tareas.

• Junto al módulo BDM implementado en la familia HC9S08, la re – programación o

actualización en campo, es muy sencilla y a muy pocos hilos.

• Vida útil mayor a 10K ciclos de Borrado / Escritura en todo el rango de temperatura

(-40ºC a + 125ºC) y mayor a 100K ciclos entre +10ºC a + 40ºC.

• Retención de la información en un Mínimo de 15 años y un valor típico de 100 años.

El punto más importante a comentar de las características enumeradas, es sin dudas, la
implementación de una “Máquina de Estados” interna que se encarga de controlar los
procesos de borrado y programación de la memoria FLASH en los HC9S08.
Ello constituye una notable mejora con respecto a la familia HC908, ya que el
proceso de borrado y programación de la memoria FLASH es muy dependiente de los
tiempos en los distintos procesos que deben ser realizados para cada una de estas tareas,
y como el lector recordará, en la familia HC908 esta tarea se puede realizar “a
mano” (el usuario debe escribir su propio programa que correrá en RAM con los
distintos pasos a efectuar) o bien basada en el uso de las rutinas de Borrado /
Programación alojadas en la memoria ROM (de fábrica) que poseen la mayoría de
los dispositivos HC908. Esta modalidad disponible en los HC908, si bien es muy
confiable, no permite una “estandarización” del manejo de la FLASH, ni un control
preciso de los tiempos y los diferentes estados del proceso. La implementación de una
máquina de estados interna, permite lograr comandos muy sencillos, rápidos de ejecutar
y con alta confiabilidad en los resultados.

Además permite asegurar la NO LECTURA de la memoria durante el proceso de
borrado o grabación de la memoria, cuestión tecnológicamente importante para asegurar
la vida útil de la memoria.

Diagrama en Bloques de la familia MC9S08AWx y la memoria FLASH.

En la figura superior, se puede observar el diagrama en bloques de la familia
MC9S08AWx y de la memoria FLASH disponible para cada miembro de dicha familia.

Por ejemplo, en el AW60 que forma parte de la placa de personalización para la familia
HC9S08 (PLACA PLUG_IN_AW) del sistema didáctico EDUKIT08, la cantidad de
memoria para programa o para usar como memoria no volátil (tipo EEPROM) es de
60Kbytes.

Mapa de memoria del MC9S08AW60 y los registros asociados al manejo
de la FLASH.

En la figura superior, se puede observar el mapa de memoria del MC9S08AW60 y de
los registros asociados al manejo de la memoria FLASH. Aquí se puede observar que
los registros están divididos en dos áreas bien diferenciadas, aquellos que comienzan en
la posición de memoria $1820 a $1826, es la zona denominada “High Page Registers”
(Registros de Página Alta) (cuadro de color amarillo), corresponden a registros
implementados en RAM (fácil lectura / escritura) y aquellos que comienzan en la
posición $FFB0 a $FFBF, implementados en zona de memoria FLASH (no volátil)
(cuadro de color azul).

A continuación, veremos cada uno de ellos en detalle.

FLASH Clock Divider register (FCDIV):

El registro divisor de la frecuencia de Clock para la FLASH (FCDIV) es uno de los
registros más importantes para el correcto borrado o grabación de la memoria
FLASH.
Su manejo incorrecto puede ocasionar malas escrituras o borrados u otro tipo de
mal funcionamiento, por lo que es muy importante configurar el mismo de forma
correcta.

Antes de realizar cualquier tipo de operación de alteración de contenidos con la
memoria FLASH es necesario inicializar este registro para dividir la frecuencia del Bus
(FBUS) a un rango entre 150 Khz y 200 Khz. Los comandos referidos al manejo de
la FLASH no funcionarán si no se inicializa previamente este registro, sin
embargo, este registro (FCDIV) no necesita ser configurado cada vez que deba
realizar una operación con la FLASH, al menos de que sea alterada la frecuencia
del bus (FBUS). Por este motivo, el registro FCDIV usualmente debe configurarse
durante la inicialización del reset.
El registro FCDIV dispone de un Flag indicador de la carga de este registro luego de su
escritura posterior a un reset, denominado DIVLD (Divisor Loaded Status Flag) que se
pone en “1” lógico cuando el registro FCDIV fue escrito después del Reset.

Los bits de control como el “PRDIV8” (Prescale FLASH Clock by 8 bit) y el
“DIV[5:0]” (Divisor for FLASH Clock Divider bit Field) permiten al usuario un control
total de la frecuencia de reloj de la FLASH (entre 150Khz a 200Khz) partiendo de
cualquier frecuencia de reloj del Bus (FBUS).

Para calcular los valores correctos de estos bits de control, podemos utilizar la siguiente
formula:

Si (fBUS > 12.8 MHz) ------ PRDIV8 = 1

Sino -------- PRDIV8 = 0

SI (PRDIV8 == 1) -------- fCLK = fBUS / 8

Sino -------- fCLK = fBUS

DIV[5:0] = redondear al entero de [(fCLK /200KHz) – 1]

5 µs =< [fFCLK = fCLK / (DIV[5:0] + 1)] =< 6.7µ s

Cuando la frecuencia de Bus es mayor a 12,8Mhz, el bit PRDIV8 debe ser igual a “1”.
El período de la frecuencia de reloj de la FLASH (fFCLK) debe estar comprendido
entre los 5 uS y los 6,7 uS (150Khz a 200Khz).

Seguridad de la memoria FLASH.

La familia HC9S08 implementa un mecanismo de seguridad contra lecturas no
autorizadas algo diferente al de la familia HC908. Como recordará el lector, en la
familia HC908 el mecanismo de protección contra lecturas no autorizadas se basa en un
“password” de 8 bytes (Security Bytes) ubicados en la zona de los vectores de
interrupción, mientras que en la familia HC9S08, además de existir un mecanismo
similar al del HC908 denominado “Backdoor Key”, existe otro basado en dos bits en
“oposición” de polaridad que impiden el acceso no solo a la memoria FLASH, sino
también a la RAM evitando así la instalación de código especial que pueda
ejecutarse y develar la clave de seguridad.

De esta forma, las condiciones de seguridad son controladas por medio de los 2 bits
menos significativos (LSB) (Bits “SEC01” y “SEC00”) almacenados en el registro de
opciones no – volátil “NVOPT” (Non - Volatile Options registers) localizado en la
zona de FLASH ($ FFBF). Los dos bits en “oposición” de polaridad se utilizan para
prevenir que el mecanismo de seguridad sea “burlado”. El contenido del registro
NVOPT se carga en el Registro de Opciones de FLASH (FOPT) en forma automática
durante el Reset para determinar cuando la seguridad está habilitada o no. Este
mecanismo de seguridad también protege al módulo de memoria FLASH de lecturas
“intrusivas” vía comandos por BDC / BDM (módulo de debugging).

Sin embargo, el usuario puede deshabilitar el mecanismo de seguridad de la memoria en
forma temporal por medio de la provisión de 8 bytes de datos contenidos en el registro
de Comparación de Llave (Comparison Key) “NVBACKKEY” localizado en zona de
FLASH ($FFB0 a $FFB7). Esta “llave” asegura que la seguridad no pueda ser
fácilmente deshabilitada por un “hacker”. Sin embargo, si se habilita el mecanismo de
seguridad pero, el usuario necesita realizar una inspección o análisis del programa, la
seguridad puede ser deshabilitada usando la “llave trasera” (Backdoor Key) o bien
efectuando un borrado en masa de la memoria FLASH.

Cuando la seguridad está habilitada, tanto la memoria FLASH como la RAM son
consideradas “recursos seguros”. Registros de página Directa, de página Alta y el
BDM (Background Debugg Module) se consideran “recursos inseguros”.

Los programas que se ejecutan desde “memoria segura” tienen acceso normal a
cualquier localización y recursos. Los intentos por acceder a una localización de
memoria segura con un programa corriendo desde un espacio de memoria “no seguro” o
desde la interface BDM serán bloquedos (se ignorarán las escrituras y las lecturas
retornarán con “0s”). Como se vio anteriormente, la seguridad es habilitada o
deshabilitada basada en el estado de los bits SEC01 : SEC00 en el registro FOPT
(ubicado en la página Alta de registros) que son copiados desde el registro NVOPT
durante el proceso de Reset. El usuario habilitará la seguridad por medio de la
programación del registro NVOPT que se efectuará al mismo tiempo que toda la
memoria FLASH sea programada. El estado “1:0” deshabilita la seguridad y las otras
tres combinaciones habilitan la misma. Notece que el estado “1:1” que corresponde al
MCU con la FLASH borrada, pone al MCU en el estado de “seguro”.

Durante los trabajos de desarrollo, es una muy buena práctica, programar en forma
inmediata el bit SEC00 con “0” en el registro NVOPT (entonces SEC01:SEC00 = 1:0).

Esto permitirá que el MCU permanezca “no seguro” (unsecured) después de un
subsecuente Reset.

El módulo BDM (interface de debugging) n
  • Links de descarga
http://lwp-l.com/pdf11481

Comentarios de: Capítulo 9/22 - Memoria FLASH - Curso sobre Microcontroladores (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