La diferencia entre los patrones de almacenamiento en RAM o tarjetas SD desde EEPROM [cerrado]

0

He utilizado EEPROM para almacenar datos en sistemas integrados. Me gustaría saber sobre el patrón de RAM y tarjetas SD que se utilizaron para almacenar datos. ¿Es tan complejo en términos de usar tarjetas RAM o SD? Confío en que debe ser una opción orientada a un propósito de usar tarjetas RAM / EEPROM / SD.

Tengo dos preguntas que hacer:

  1. ¿En qué se diferencia el almacenamiento de datos en estos dos de la EEPROM?

  2. ¿En qué se diferencian las tarjetas RAM y SD de la velocidad de las transacciones?

pregunta Rookie91

1 respuesta

3

Probablemente ya sepa que la RAM pierde su contenido en una pérdida de energía (a menos que esté respaldada por una batería de celda o SuperCap), y las tarjetas EEPROM y SD no son volátiles, lo que significa que retienen su contenido en una pérdida de energía.

Las otras diferencias importantes son la forma en que se accede y la rapidez.

RAM es, con mucho, el más fácil de acceder y también el más rápido, tan rápido como decenas o cientos de nanosegundos. Además, a diferencia de la memoria no volátil, los tiempos de lectura y escritura son los mismos. En general, también es lo más fácil, suponiendo que sea interno al microcontrolador o conectado al microcontrolador mediante un bus paralelo diseñado para ese propósito.

Por lo general, se accede a la RAM directamente, pero depende del tamaño del bus de dirección del microcontrolador. Los microcontroladores de 8 y 16 bits generalmente tienen un bus de 16, lo que significa que pueden acceder a 2 ^ 16 o 65536 bytes de RAM directamente. Cualquier cosa que supere los 64K de RAM debe direccionarse mediante un registro de página, que determina a qué banco de 64K RAM se debe acceder. Esto significa que no puede, por ejemplo, tener una matriz en C sobre 64K bytes, a menos que tenga un compilador muy inteligente que haga este esquema transparente. Los microcontroladores de 32 bits no tienen esta restricción y pueden direccionar hasta 4 GB de RAM directamente.

EEPROM es probablemente el siguiente más fácil de acceder. Nuevamente, puede ser interno al microcontrolador o externo, usualmente accedido usando un bus I2C o SPI. Si es interno al microcontrolador, generalmente se accede a través de un conjunto de registros especiales, en lugar de asignarlo a un bloque de memoria separado (aunque hay excepciones a esto). Casi siempre está organizado en bloques, por ejemplo. 512 bytes cada uno, ya que antes de poder escribir en la EEPROM, los bloques correspondientes deben borrarse primero.

La memoria EEPROM normalmente será de unos pocos a varios KB de memoria, mucho más pequeña que la memoria RAM disponible. La EEPROM puede requerir la configuración de registros especiales en el microcontrolador para obtener acceso a la EEPROM, por ejemplo. escribiendo dos valores especiales en un registro en una fila, desbloqueando así el acceso a la EEPROM. Esto se hace para que un programa fuera de control no pueda escribir en la EEPROM accidentalmente.

El acceso a la EEPROM interna estará en el rango de microsegundos para la lectura, y tal vez varias decenas de milisegundos para escribir, ya que el bloque de la EEPROM debe borrarse primero. Hay límites para la cantidad de veces que se puede borrar una EEPROM, desde 100 hasta 100,000 o más. Para evitar esta limitación, se puede usar la nivelación de desgaste para mover los datos escritos con frecuencia a diferentes bloques.

Si la EEPROM es externa al microcontrolador, requerirá configurar la dirección y los datos que se enviarán en los registros I2C o SPI. La mayoría de las EEPROM tienen un modo de bloqueo, lo que significa que una vez que configura la dirección, puede enviar bytes consecutivos a la EEPROM e incrementará un registro de dirección interno.

Las tarjetas SD son las más complicadas. Se conectan mediante una interfaz SPI o una interfaz patentada de 4 bits. En cualquier caso, existe un protocolo bastante complicado para identificar primero el tipo de tarjeta SD e inicializarla. El acceso a la tarjeta SD se realiza en sectores o bloques de 512 bytes; por lo tanto, si desea escribir solo un byte en la tarjeta SD, debe leer todo el sector, modificar el byte y escribir de nuevo. El tiempo de acceso para las tarjetas SD puede ser de unos pocos milisegundos para leer, y en decenas de milisegundos para escribir (ya que una vez más, los sectores deben borrarse antes de escribir).

La nivelación de desgaste ya se proporciona en las tarjetas SD de marca, como SanDisk y Kingston.

Si debe poder acceder a la tarjeta SD desde una PC, entonces no puede leer y escribir sectores sin procesar al azar, sino que debe usar un sistema de archivos como FAT16 o FAT32. Esto requerirá incluir el firmware apropiado en el microcontrolador para implementar uno de estos sistemas de archivos.

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas