verificación de datos EEPROM

3

Me estoy comunicando con un chip EEPROM con microcontrolador. Estoy escribiendo ciertos datos en direcciones específicas en EEPROM y necesito revisar los datos ocasionalmente. Pero no tengo otra idea más que leer de la dirección escrita de la EEPROM para verificar si los datos están dañados.

He oído hablar de las rutinas CRC y Xor Routines. ¿Cuáles son las prácticas comunes para verificar los datos dañados? Sería útil para mi diseño. Estoy publicando el método que conozco:

paso1: escriba los datos en la EEPROM y guárdelos en una variable. paso 2. Lea los datos y verifique con la variable almacenada.

Confío en que debe haber procedimientos estándar para verificar si
Los datos en EEPROM están dañados o no.

Sería útil que me ayudaras a sugerirme el camino a seguir.

    
pregunta Rookie91

2 respuestas

5

El problema con su enfoque es que los datos de EEPROM son permanentes, mientras que la variable es volátil. Una vez que se apague y vuelva a encender el dispositivo, ¿cómo verificará los datos en el futuro? La variable se ha ido y todo lo que tienes es la copia EEPROM.

Lo que tienes hasta ahora no es una estrategia de integridad de los datos, sino solo un paso de verificación de escritura (que es extemporáneo; no lo entiendas mal).

Podrías almacenar sumas de comprobación junto con los datos; sin embargo, las sumas de comprobación solo pueden indicarle que los datos están dañados. Esto es mejor que proceder con datos corruptos; sin embargo, si los datos son críticos, significa que el dispositivo ha fallado.

Una solución más robusta es almacenar los datos de tal manera que no solo sea posible la detección de errores, sino también la corrección de errores.

Puede implementar un códigos de Hamming para palabras individuales de los datos. Un código de Hamming puede recuperarse de un error de un solo bit; más con algunas extensiones.

Si tiene mucho espacio en la EEPROM, puede implementar la redundancia. Por ejemplo, puede dividir la EEPROM en dos mitades que se reflejan entre sí, de manera similar a un esquema RAID0 utilizado para los discos duros. Escriba cada unidad de datos en ambas particiones, con sumas de comprobación de bloque. Al leer datos, si una suma de comprobación es incorrecta, puede intentar copiarla en la partición duplicada. Lo más probable es que su suma de comprobación sea buena. (Y si es así, puede sobrescribir la copia incorrecta con la copia correcta para repararla).

    
respondido por el Kaz
2

Las rutinas de CRC y Checksum también deben leer los datos. La idea es que pueden condensar una gran parte de los datos en solo un par de bytes que deben comprobarse. Si acaba de escribir un bloque de datos de un búfer en memoria en el chip EEPROM, entonces simplemente leerlo nuevamente en el chip y comparar sería la solución más simple. Sin embargo, si no tiene todo el bloque de datos en la memoria al mismo tiempo, puede realizar un ajuste gradual (escribir un byte, leerlo, escribir el siguiente byte, leerlo, etc.) o calcular un CRC o la suma de control de los bytes a medida que se escriben, luego vuelva a leer y luego vuelva, calcule el CRC o la suma de control de los bytes que lea, luego compare.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas