¿Hay daños en la memoria flash debido a dispositivos eléctricos?

4

Soy un desarrollador de software que trabaja en un dispositivo dentro del vehículo (WinCE) que usa una tarjeta SDIO para su almacenamiento.

Estamos sufriendo de (aparentemente) corrupciones aleatorias de los datos, al parecer de la tabla FAT se corrompió. Puede encontrar directorios inaccesibles, archivos con "basura" a la mitad de ellos y así sucesivamente. La tarjeta NO parece sufrir daños físicos (sectores defectuosos): un chkdsk corrige el FAT en la mayoría de los casos (los datos, por supuesto, están en problemas).

Esto suena como un caso clásico de pérdida de energía en medio de escrituras, así que hemos implementado un poco para combatir ese escenario.

Ahora tenemos dispositivos electrónicos para notificarnos que el interruptor principal se ha apagado y que la aplicación que se ejecuta en el dispositivo tenga el tiempo suficiente para apagarse limpiamente.

A pesar de todo eso, todavía tenemos el problema. Parece que vemos corrupción, incluso en ausencia de un cierre "sucio".

Suponiendo por un segundo que el lado del software es correcto. ¿Es dentro de los reinos de posibilidad que los picos momentáneos, los apagones u otras irregularidades en la fuente de alimentación puedan causar lo que estamos viendo? Tenemos filtros, etc. en lugar de cerrar

¿Es posible que la interferencia electromagnética / electroestática pueda causar cualquiera de las anteriores? ¿Alguna otra opinión del lado eléctrico / electrónico?

Muy apreciado.

    
pregunta Nik

3 respuestas

3

Este es probablemente un error de software. Sin embargo, usted dijo "vehículo", lo que implica un poder inusualmente desagradable. Si este es un automóvil normal, entonces la potencia de "12 V" es tan mala como las cosas se vuelven eléctricamente. Definitivamente, NO puede simplemente conectar la alimentación de 12 V del automóvil directamente a la computadora de su placa única (o cualquiera que sea su hardware) a menos que esté específicamente calificado para la "alimentación de automóvil", incluso si tiene una entrada de alimentación de 12 V o más.

La potencia del automóvil puede ser de casi 14 V en funcionamiento normal y puede tener 10s de voltios de picos a corto plazo. Estos pueden confundir o destruir dispositivos electrónicos que no están diseñados específicamente con ellos en mente.

Usted no dijo qué voltaje y qué corriente necesita su computadora, pero la solución más fácil es obtener una fuente de alimentación "con calificación automotriz" que genere los voltajes de CC correctos. Debe haber tales cosas disponibles en cualquier lugar.

    
respondido por el Olin Lathrop
3

Los medios flash más comunes incluyen dentro del dispositivo de almacenamiento un mecanismo que mapea dinámicamente números de sector lógico a direcciones físicas, ya que el software espera poder escribir cualquier sector en particular un número arbitrario de veces con un retraso mínimo, mientras que la mayoría de los dispositivos flash tienen hardware las páginas se deben reciclar en grupos de 256, 1024 o más. Cuando se escribe en el sector 123, el hardware identificará una página en blanco, escribirá los datos de la página allí junto con algunas etiquetas que indicarán que es el sector 123. Si se vuelve a escribir el sector 123, el hardware identificará una página antigua, escriba los datos de la página allí junto con algunas etiquetas Además, el hardware asignará a la nueva página un número de secuencia de algún tipo superior al anterior, o bien anulará las etiquetas en la página anterior. Si la cantidad de páginas en blanco disponibles es muy pequeña, el sistema intentará encontrar un bloque en el que muchas de las páginas hayan sido reemplazadas, copie todas las páginas no reemplazadas de ese bloque en algunas de las pocas páginas en blanco que quedan, y Luego borra el viejo bloque. Tenga en cuenta que una operación de este tipo puede implicar cualquier colección arbitraria de páginas, que a menudo incluye páginas que no participan en ninguna operación reciente o actual.

La lógica para manejar todo esto en un dispositivo flash que tiene muchos millones de páginas, pero que probablemente no tenga millones de bytes de RAM, es bastante complicada. Organizar la lógica para que sea robusta si se pierde el poder en cualquier momento lo haría aún más. Es posible que algunas compañías hayan logrado diseñar sistemas muy robustos para garantizar la integridad de los datos, pero también es bastante claro que no todos los medios flash incorporan dichos sistemas (no de manera efectiva y correcta, de todos modos). Desafortunadamente, realmente no hay una forma agradable de que el software que escribe en medios flash sepa qué sucederá "detrás de escena" en respuesta a una solicitud de escritura. A menos que requiera el uso de medios que se sabe que se comportan con firmeza en condiciones adversas, la única forma de evitar la corrupción en caso de pérdida inesperada de energía es no perder energía inesperadamente.

    
respondido por el supercat
3

Apoyo el error de software por segundo.

Recientemente trabajé en un problema de corrupción de flash, en un sistema WinCE, como parte de un equipo de desarrollo. Esporádicamente encontraríamos 2K bloques de flash que fueron borrados. (Todos los bytes 0xFF) Durante aproximadamente 6 meses probamos todo, desde ESD, energía sucia a interferencia de EMI y RFI, compramos dispositivos nuevos y rastreamos el uso para asegurarnos de que no estábamos excediendo el límite del ciclo de borrado y eliminando los bloques. Pasé por nuestro software (nivel de aplicación) con un peine de dientes finos.

Al final, resultó ser un error oscuro en el código del controlador flash de muy bajo nivel, que solo ocurrió en períodos de gran carga de CPU. El conductor vino de un tercero. Les informamos sobre el problema que encontramos, pero no sé si alguna vez lanzaron un parche.

    
respondido por el jwygralak67

Lea otras preguntas en las etiquetas