Me estoy comunicando con un chip EEPROM con microcontrolador. Estoy escribiendo ciertos datos en direcciones específicas en EEPROM y necesito verificar los datos de vez en cuando. Pero no tengo otra idea que leer la dirección escrita de la EEPROM para verificar si los datos están dañados.
Escuché sobre las rutinas CRC y las rutinas Xor. ¿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:
paso 1: escribir datos en EEPROM y almacenarlos en una variable. paso 2. Vuelva a leer 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 si me ayudaras a sugerirme el camino a seguir.
El problema con su enfoque es que los datos de la EEPROM son permanentes, mientras que la variable es volátil. Una vez que se apague y encienda el dispositivo, ¿cómo verificará los datos en el futuro? La variable se ha ido, y todo lo que tiene es la copia de EEPROM.
Lo que tiene hasta ahora no es una estrategia de integridad de datos, sino solo un paso de verificación de escritura (que vale la pena; no lo malinterprete).
Puede almacenar sumas de verificación junto con los datos; sin embargo, las sumas de verificació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 códigos de Hamming para palabras individuales de los datos. Un código 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 forma similar a un esquema RAID0 utilizado para los discos duros. Escriba cada unidad de datos en ambas particiones, con sumas de verificación de bloque. Al leer datos, si una suma de verificació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 mala con la copia buena para repararla).
Las rutinas CRC y Checksum también necesitan leer los datos. La idea es que puedan condensar una gran sección de datos en solo un par de bytes que deben verificarse. Si acaba de escribir un bloque de datos de un búfer en la memoria en el chip EEPROM, simplemente leerlo del chip y compararlo 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 confirmar de forma incremental (escribir un byte, volver a leerlo, escribir el siguiente byte, volver a leerlo, etc.) o calcular un CRC o la suma de verificación de los bytes a medida que se escriben, luego lea y luego vuelva más tarde, calcule el CRC o la suma de verificación de los bytes que lee, luego compare.
miguel karas
Kaz
miguel karas
Kaz