¿Con qué frecuencia fallan los AVR y necesitan un reinicio del perro guardián en el mundo real?

¿Alguna vez ha visto un AVR feliz fallar espontáneamente y requerir un reinicio?

Asumiendo:

  1. una buena fuente de alimentación constante que se mantiene dentro del rango especificado
  2. una tapa de desacoplamiento del tamaño correcto directamente entre Vcc y tierra
  3. Condiciones domésticas normales (no demasiado ruidosas)

...¿cuáles son los fallos de MTB del mundo real?

He tenido cientos de AVR funcionando durante años y no creo que haya visto nunca una falla real, pero ¿tal vez solo tengo suerte?

Tenga en cuenta que que siempre debe usar un perro guardián, lo sé. No me llamen la atención, pero si la probabilidad de fallas es muy baja, podría haber aplicaciones en las que sería razonable no usar el perro guardián para obtener un menor consumo de energía en suspensión.

Tenga en cuenta también que entiendo que el perro guardián también lo protege de errores de firmware, pero solo estoy preguntando sobre fallas espontáneas de hardware.

Al igual que usa esas funciones para el software, porque el software puede tener errores, el hardware también puede tener errores.
De todos modos, un perro guardián no sería particularmente bueno para protegerse contra fallas aleatorias de hardware: es imposible monitorear todas las condiciones que podrían modificarse por un rayo o un rayo gamma.
Si supone que el error aparecerá como un cambio aleatorio espontáneo en la memoria volátil (RAM o un registro [que incluye el contador del programa]), entonces creo que es posible escribir software que pueda recuperarse de un solo evento de corrupción. Imagine que todo lo que hace su programa es encender y apagar un LED. Si llena toda la memoria del programa con las instrucciones repetitivas que alternan entre encendido y apagado, entonces creo que puede garantizar que el parpadeo reanudará su patrón normal dentro de una sola iteración después de la corrupción. Cuanto más complicada es la operación, más difícil se vuelve.

Respuestas (4)

Los impactos de rayos cósmicos y SEU (trastornos de eventos únicos) son muy reales. Simplemente busque datos sobre DRAM y la necesidad de ECC (corrección de errores) y, a partir de eso, debería poder tener una idea de la probabilidad frente al área. Algunos procesos son menos propensos, y los procesos más pequeños, aunque son más sensibles, también presentan una sección transversal de captura más pequeña, a veces eso es un beneficio ya veces no.

¡Mantén a esos perros guardianes funcionando!

Acepto totalmente que estas cosas suceden y deberíamos preocuparnos por ellas; solo estoy tratando de tener una idea cuantitativa vaga de la frecuencia con la que realmente suceden. Para una sola MPU, ¿cuál esperaría que fuera el tiempo medio real entre eventos? ¿1 año? 10 años, 1 millón de años?
+1, pero esta respuesta se mejoraría con algunos números concretos. El primer estudio a gran escala de errores de DRAM, como se menciona en el artículo de memoria ECC de Wikipedia , midió un promedio de alrededor de 200 a 600 errores de DRAM por año por gigabit.
@davidcary ¿Números duros? Hmmm, te diré qué, dime qué proceso es este y déjame ver el diseño y te daré un número muy concreto. Hasta que uno conoce estos detalles, decir más es simplemente adivinar.
@placeholder: OK, voy a morder. ¿Me puede dar algunos números sobre el proceso de 350 nanómetros ATMEGA88; Puedes ver el diseño en Cesar ATMEGA88 Teardown . O puede escribir una oración sobre lo que crea que es el número más importante del estudio DRAM al que se vincula el artículo de memoria ECC de Wikipedia.
@davidcary seguro que esperaré hasta que pueda saber las profundidades del pozo y las profundidades de los implantes S/D si no las tiene, entonces las energías de los implantes serán suficientes. ¿Y esas fotos? Necesito ver activo o incluso solo una estimación de las áreas de vista del plano del pozo y la longitud del borde de la unión.
Entonces, ¿cuál es? Para obtener una estimación aproximada de los errores promedio por año, ¿puedo "Simplemente buscar datos sobre DRAM... y a partir de eso debería poder tener una idea de la probabilidad frente al área"? ¿O también necesito un montón de información sobre las profundidades de los pozos o las energías de los implantes que ninguna de las hojas de datos de las piezas que uso menciona?

Depende del entorno y la configuración. Es prácticamente imposible garantizar en la práctica que, por ejemplo, un relámpago cercano no tendrá suficiente energía EMI para causar un problema. Puede reducir la probabilidad con un buen diseño, pero a menos que el sistema esté en una jaula de Faraday con blindaje magnético y pasamuros fuertemente filtrados, existe la posibilidad de una alteración. En las aplicaciones espaciales, el campo magnético de la Tierra no tiene el efecto de protección habitual, por lo que las perturbaciones aleatorias son más probables que en la Tierra (pero aún distintas de cero en cualquier caso). Las posibilidades de que un pequeño sistema autónomo (sin entradas ni salidas y alimentado por batería) experimente un problema son mucho menores que si hay cables conectados.

Hay muchos sistemas por ahí sin perros guardianes y sin circuitos de reinicio adecuados; si el costo de un bloqueo es bajo, a nadie le importa (¡simplemente apague y encienda!). Si el costo es alto, entonces puede ser deseable usar un WDT (interno o externo), procesadores redundantes, anulaciones mecánicas u otros medios. Los procesadores modernos (y un mejor diseño de software) pueden admitir el restablecimiento de anomalías incluso sin un WDT, por ejemplo, si el contador del programa se sale del rango. La memoria no utilizada se puede llenar con saltos a una rutina de arranque en frío y se pueden usar otras técnicas. Estoy seguro de que hay muchos WDT en uso que son bastante inútiles porque están siendo expulsados ​​​​por un ISR o algo así de tonto.

¿Hay un nombre para estas técnicas, tal vez programación consciente de la inmunidad ?
Las pondría en la categoría más amplia de técnicas de ingeniería de software relacionadas con la seguridad (porque ese suele ser el motivador para reducir el riesgo: daños a la propiedad o posibles lesiones o muerte de personas). Nunca he oído hablar de "consciente de la inmunidad", gracias.

Interesante palabra oficial de ATMEL:

Hola Josh, entiendo que te preocupa que los bits de control de interrupción se cambien al azar. Esto no podría suceder a menos que se modifique de alguna manera en el firmware o que el dispositivo se mantenga en un entorno ruidoso que podría causar daños en la memoria flash. Para evitar la posibilidad de daños en la memoria flash, consulte la sección 18.7 de la hoja de datos del dispositivo, Prevención de daños en la memoria flash. Siempre que el diseño se ajuste a las consideraciones mencionadas para evitar la corrupción de flash, no hay posibilidad de que los bits de control de interrupción se dañen en el dispositivo. Espero que esto aclare. Por favor, póngase en contacto con nosotros en caso de más consultas.

Saludos cordiales, Equipo de soporte de Ineyaa N Atmel

ACTUALIZAR

Un año después, ahora tengo decenas de miles de estos pequeños AVR en el mundo funcionando las 24 horas del día, los 7 días de la semana y hasta ahora no he visto un solo caso de falla espontánea. Bastante impresionante. ¡Se actualizará el próximo año!

Bueno... en el entorno típico y en los microcontroladores modernos no es frecuente.

Tan raro que es difícil medirlo y determinarlo.

Depende de muchos factores, incluidos los eventos no deseados en la línea de producción. Las fallas de hardware nunca deberían ocurrir en un microcontrolador no dañado que funcione en un entorno normal, por lo que las hojas de datos no dicen nada sobre la confiabilidad.

Personalmente, no uso el perro guardián muy a menudo, porque muchos de mis proyectos simplemente no requieren tal protección.

Cuando lo uso, lo uso para:

  • protección adicional contra errores de software
  • protección de microcontrolador parcialmente dañada

Solo lo estoy usando cuando:

  • el microcontrolador maneja algunos periféricos costosos (transistores grandes con gran carga)
  • por razones de seguridad con circuitos relacionados con la red de alguna manera o cuando el microcontrolador maneja algo que puede destruir algo o dañar a alguien
  • cuando los datos procesados ​​en el microcontrolador deben ser muy confiables