Necesidad de un temporizador de vigilancia externo

19

¿Cuál es la necesidad de un temporizador de vigilancia externo para un microcontrolador?

La mayoría de los microcontroladores están diseñados con un temporizador de vigilancia interno. Sin embargo, en algunos de los circuitos están utilizando un temporizador de vigilancia externo (como PIC16F1824).

Photon001
fuente

Respuestas:

10

Algunos productos deben cumplir con los requisitos de seguridad, ya sea determinados por el fabricante o para cumplir con los estándares internacionales de seguridad como IEC 60730-1, o el UL1998 más antiguo que todavía está en uso en los EE. UU. La funcionalidad de vigilancia interna en cualquier microcontrolador dado puede o no ser adecuada para ser utilizada. Se puede usar un WDT externo en combinación con el WDT interno en algunos casos.

Ciertos microcontroladores, como la serie Hercules de TI, toman muy en serio las aplicaciones de sistemas críticos de seguridad y tienen más probabilidades de cumplir requisitos estrictos, sin embargo, pueden no ser apropiados para aplicaciones sensibles al costo.

Típicamente, el WDT es una de varias maneras de reducir la probabilidad de que una falla cause daños catastróficos a la propiedad o lesiones a la vida. Otras cosas, como la protección de la memoria para detectar el acceso inesperado a la memoria MCU o las recuperaciones de programas de la memoria no utilizada, generalmente se usan junto con un WDT.

Ejemplos de productos económicos que realizan funciones críticas para la seguridad son subsistemas automotrices, controladores de puertas de garaje y controladores de ignición de gas (gas natural o propano) utilizados en hornos, secadores y calentadores de agua. Por supuesto, muchos productos médicos y aeroespaciales también son críticos para la seguridad, pero puede haber suficiente espacio para la redundancia y otros enfoques. En algunos casos, puede no haber un estado seguro fácilmente accesible, por ejemplo, en una aeronave.

Idealmente, el temporizador de vigilancia es muy simple, independiente de la MCU (por ejemplo, debe tener su propia fuente de reloj y quizás un monitor de reloj), no se puede configurar (por software) a un tiempo más largo que el que causaría daños por cualquier error de software, y hará que el sistema esté en un estado seguro si no se "acaricia" a tiempo, ya sea con un tiempo de espera o en una ventana, de modo que se puedan detectar restablecimientos demasiado frecuentes. Por ejemplo, un WDT en una aplicación de control térmico puede configurarse en unos segundos porque no es posible dañar si el microcontrolador se bloquea durante ese período de tiempo.

El WDT es más útil como parte de un enfoque a nivel de sistema para la confiabilidad y seguridad.

Spehro Pefhany
fuente
33

Un temporizador de vigilancia puede proteger contra errores de hardware en piezas defectuosas de ... microcontroladores de última generación. Uno que usamos recientemente, de una marca famosa, tenía pines de E / S que ocasionalmente fallaban sus interrupciones, a veces no se iniciaban correctamente, y donde el perro guardián integrado a veces fallaba al reiniciar el sistema en un estado bien conocido.

Esto no apareció hasta que comenzamos con las pruebas de confiabilidad a largo plazo, y fue más fácil agregar un perro guardián externo que cambiar el microcontrolador.

Si tiene más de un IC en la PCB, es posible que también necesite un IC de reinicio externo o un monitor de voltaje para que todo se inicie de manera confiable. Muchos de estos también pueden servir como un perro guardián.

tubo
fuente
99
"El perro guardián integrado a veces no pudo reiniciar el sistema en un estado conocido" - esto es funcionalmente equivalente a "no hay perro guardián interno".
Dmitry Grigoryev
32

Es difícil argumentar que el reloj interno del perro guardián interno es en realidad independiente de todos los demás relojes y siempre funciona como debería.

Por lo tanto, para la certificación, generalmente es mucho más fácil colocar un perro guardián externo en el tablero y decir: miren que está nuestro perro guardián, debe ser activado por la MCU en ese intervalo, que es más corto que nuestro tiempo de falla, por lo que nuestro dispositivo es seguro como lo definimos.


Para abordar algunos de los comentarios:

"y siempre corriendo como debería" - Buen punto. Puede ser más difícil demostrar que su software inicializa correctamente el perro guardián interno en todas las circunstancias que solo emplear un chip de perro guardián y consultar su hoja de datos.

Esto generalmente se prueba mediante una prueba de inserción de fallas, que usted presenta a un organismo de certificación. Entonces les muestra el código donde ocurre su inicialización, y donde ocurre la activación del perro guardián. Por lo general, le solicitan que modifique el código de tal manera que se detenga la activación del perro guardián después de un cierto tiempo y que verifique si el controlador se reinicia correctamente.

O para probar que su código no contiene un error que deshabilita accidentalmente el perro guardián interno.

Al menos en algunos controladores, el watchdog se llama independiente y tiene su propia fuente de reloj y no puede desactivarse por software, solo un reinicio del controlador desactivará el watchdog. Al menos en teoría, es fácil demostrar que no puede detenerlo con el software, pero es difícil demostrar que el reloj es verdaderamente independiente y no se detendrá bajo EMI.

O para probar que su código no se ejecuta salvajemente, restableciendo el perro guardián externo tan rápido como puede. Problema resuelto. ;-)

Para ese caso, utiliza un watchdog de ventana que debe activarse a ciertos intervalos y, si no lo hace (activarlo con demasiada frecuencia o con menos frecuencia) reiniciará el circuito. El STM32 con el que estoy trabajando tiene una ventana de vigilancia interna, pero se ejecuta desde PCLK1 que se deriva del reloj principal, por lo que no creo que sea tan útil como una vigilancia externa con su propia fuente de reloj.

O que algún genio no coloca la rutina de servicio de vigilancia dentro de un ISR de temporizador, por lo que el código principal puede fallar pero la interrupción sigue disparando y dando servicio perfectamente a la vigilancia ...

Eso ciertamente es cierto, pero espero que una revisión vuelva a poner a ese genio en su silla, pero bueno, cuando comencé, esa fue mi primera idea también: D. Durante los procesos de certificación en los que he participado, siempre observaron la parte de vigilancia del software.

Arsenal
fuente
44
"y siempre corriendo como debería" - Buen punto. Puede ser más difícil demostrar que su software inicializa correctamente el perro guardián interno en todas las circunstancias que solo emplear un chip de perro guardián y consultar su hoja de datos.
JimmyB
44
@JimmyB O para probar que su código no contiene un error que deshabilita accidentalmente el perro guardián interno.
TripeHound
2
@TripeHound O para probar que su código no se ejecuta de forma continua reiniciando el perro guardián externo tan rápido como pueda. Problema resuelto. ;-)
JimmyB
2
O que algún genio no pone la rutina de servicio de vigilancia dentro de un ISR de temporizador, por lo que el código principal puede fallar pero la interrupción sigue disparando y dando servicio perfectamente a la vigilancia ...
John U
@JohnU, eso, sin embargo, no parece algo con lo que un IC externo ayudaría.
ilkkachu
12

Los perros guardianes integrados en los microcontroladores tienen propiedades particulares que significan que ellos mismos pueden fallar de una manera que un perro guardián externo diferente no podría.

Por ejemplo, un diseño común es usar un temporizador de vigilancia que se ejecuta desde un oscilador RC de baja potencia. Ese oscilador puede fallar. Un perro guardián externo basado en la descarga del condensador en lugar de un oscilador podría reiniciar el microcontrolador en muchos casos.

Otra razón es que el perro guardián externo puede ser más robusto. Un microcontrolador solo puede funcionar de manera confiable en un cierto rango de voltaje, y ser un dispositivo complejo puede estar sujeto a engancharse de manera que su propio perro guardián interno sea ineficaz. Un perro guardián externo puede tener un rango de suministro aceptable más amplio y ser menos propenso a problemas cuando se somete a ruido eléctrico.

Los perros guardianes externos a menudo también ofrecen una gama mucho más amplia de valores de tiempo de espera. Un microcontrolador que uso con frecuencia, el XMEGA, tiene un tiempo de espera máximo de alrededor de 7 segundos. Para un producto, agregué un perro guardián externo adicional con un tiempo de espera de 2 horas. Eso me permitió activar el microcontrolador una vez por hora en lugar de una vez cada pocos segundos, reduciendo el consumo de energía en un dispositivo con batería.

Los perros guardianes externos a veces tienen múltiples funciones, como un temporizador y un monitor de voltaje / control de reinicio. Una vez más, estos pueden ser de menor potencia que el sistema integrado de un microcontrolador también.

Otra ventaja interesante de un perro guardián externo es que puede usarse para restablecer dispositivos que no sean el microcontrolador. Por ejemplo, podría controlar el pin de activación de un regulador de voltaje, desactivando un circuito completo para restablecer múltiples dispositivos a la vez. Usando una lógica simple, el reinicio de watchdog señal de de múltiples fuentes se puede combinar, lo que permite que el watchdog requiera que varios dispositivos continuamente.

usuario
fuente
Según mi experiencia con los wdogs externos, diría que son mucho menos robustos que los internos, simplemente porque otro circuito externo es otra cosa que puede romperse. Soldadura, EMI, ESD, etc. Si logra acortar la entrada del reloj a algo, entonces el wdog externo se desactiva de manera efectiva. Así que realmente no compro el aspecto de mayor seguridad. Si tiene ambos a la vez, entonces seguro, aumentará la seguridad muy ligeramente.
Lundin el
@Lundin la mayoría de ellos usan un oscilador RC interno o descarga de condensador, en lugar de un reloj externo. De hecho, no se me ocurre ninguna mano que use un reloj externo. Además, las fallas no son aditivas, si tiene un perro guardián externo e interno y una falla, es claramente aún mejor que tener solo uno.
usuario
3

Ciertas certificaciones, como UL , pueden requerir protección contra dos puntos de falla. Un temporizador de vigilancia externo se consideraría protección contra un primer punto de falla, el microcontrolador.

da66en
fuente
2

Un watchdog no es realmente diferente a este respecto de cualquier otro periférico incorporado que encuentre en una MCU. Las MCU vienen con temporizadores, RTC, ADC, EEPROM y controladores de reinicio, aunque todas estas funciones también existen como circuitos integrados separados. Si los bloques incorporados disponibles no cumplen con sus requisitos, debe usar los externos. O puede intentar encontrar una MCU con todos los bloques correctos, que pueden no existir o ser demasiado costosos o difíciles de transferir su código.

Dmitry Grigoryev
fuente
1

Un perro guardián es un temporizador y activa su salida cuando el IC pierde un pulso de entrada durante un período.

Es un bloque de construcción y se puede utilizar para cualquier aplicación.

Por lo tanto, se pueden usar en cualquier aplicación, por ejemplo, cambiar el enrutamiento de datos en prueba de fallas . Cuando falla el reloj del microcontrolador, no podemos desactivar algunas salidas críticas.

Un perro guardián externo no está relacionado con el dominio de reloj complejo del microcontrolador, y algunos de ellos tienen su temporización de carga RC analógica o reloj interno.

Los circuitos digitales en radiación pueden activar las salidas cuando la carga golpea sus flip-flops. Pero algunos circuitos analógicos son más seguros porque integran la carga en un condensador, y es seguro cuando lo integramos.

M KS
fuente