Necesidad de un temporizador de vigilancia externo

18

¿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 interno de vigilancia. Sin embargo, en algunos de los circuitos están usando un temporizador de vigilancia externo (como PIC16F1824).

    
pregunta Photon001

7 respuestas

8

Algunos productos deben cumplir con los requisitos de seguridad, ya sea según lo determine el fabricante o para cumplir con las normas de seguridad internacionales, como IEC 60730-1, o el anterior UL1998 que aún se usa en los Estados Unidos. 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, se toman muy en serio las aplicaciones críticas del sistema de seguridad y es más probable que cumplan con requisitos estrictos, sin embargo, pueden no ser adecuados para aplicaciones sensibles al costo.

Por lo general, la WDT es una de las 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 de la MCU o las recuperaciones de programas de la memoria no utilizada, generalmente se utilizan junto con un WDT.

Ejemplos de productos económicos que realizan funciones críticas para la seguridad son los subsistemas automotrices, los controladores de puertas de garaje y los controladores de encendido 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 que no haya un estado seguro de fácil acceso, por ejemplo, en una aeronave.

Idealmente, el temporizador de vigilancia es muy simple, independientemente de la MCU (por ejemplo, debe tener su propia fuente de reloj y quizás un monitor de reloj), no puede configurarse (por software) en un tiempo más prolongado que el que causaría daños por cualquier error de software, y convertirá el sistema en un estado seguro si no se "acaricia" a tiempo, ya sea con un tiempo de espera o en una ventana, por lo que se pueden detectar reinicios demasiado frecuentes. Por ejemplo, un WDT en una aplicación de control térmico podría 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 de confiabilidad y seguridad a nivel de sistema.

    
respondido por el Spehro Pefhany
32

Un temporizador de vigilancia puede proteger contra errores de hardware en buggy piece of ... microcontroladores de última generación. Una que usamos recientemente, de una marca famosa, tenía pines de E / S que ocasionalmente no detectaban las interrupciones, a veces no se iniciaban correctamente y donde el perro guardián integrado a veces no lograba reiniciar el sistema en un estado de buena reputación.

Esto no apareció hasta que comenzamos con las pruebas de confiabilidad de tiempo prolongado, 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 restablecimiento externo o un monitor de voltaje para que todo arranque de manera confiable. Muchos de estos también pueden servir como perro guardián.

    
respondido por el pipe
31

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

Por lo tanto, para la certificación, suele ser mucho más fácil colocar un perro guardián externo en la pizarra y decir: mire, ahí está nuestro perro guardián, debe ser activado por el MCU en ese intervalo, que es más corto que nuestro tiempo para fallar, por lo que nuestro El dispositivo es seguro como lo definimos.

Para abordar algunos de los comentarios:

  

"y siempre corriendo como debería" - Buen punto. Puede ser mas dificil   probar que tu software inicializa correctamente el watchdog interno   bajo todas las circunstancias que simplemente empleando un chip guardián y refiera   a su hoja de datos.

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

  

O para probar que su código no contiene un error que accidentalmente   desactiva el watchdog interno.

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

  

O para demostrar que su código no se ejecuta de forma ininterrumpida, reinicie el   Perro guardián externo tan rápido como pueda. Problema resuelto. ;-)

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

  

O que algún genio no pone la rutina del servicio de vigilancia dentro de un   el temporizador ISR, por lo que el código principal puede fallar, pero la interrupción sigue activándose &   servicio al perro guardián perfectamente ...

Eso es cierto, pero espero que una revisión ponga a ese genio nuevamente en su silla, pero cuando empecé, esa fue mi primera idea también: D. Durante los procesos de certificación en los que he participado, siempre han echado un vistazo a la parte de vigilancia del software.

    
respondido por el Arsenal
11

Los watchdogs incorporados a los microcontroladores tienen propiedades particulares que significan que ellos mismos pueden fallar de manera que un watchdog externo diferente podría no hacerlo.

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

Otra razón es que el watchdog 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 un bloqueo de una manera que hace 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 lo somete a ruido eléctrico.

Los perros guardianes externos a menudo ofrecen un rango mucho más amplio de valores de tiempo de espera también. Un microcontrolador que uso a menudo, el XMEGA, tiene un tiempo de espera máximo de unos 7 segundos. Para un producto, agregué un watchdog 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 alimentado por batería.

Los watchdogs externos a veces tienen múltiples funciones, como un temporizador y un monitor de voltaje / control de reinicio. Nuevamente, estos también pueden tener menos energía que el sistema incorporado de un microcontrolador.

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

    
respondido por el user
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.

    
respondido por el da66en
2

Un watchdog no es realmente diferente a este respecto de cualquier otro periférico incorporado que encuentre en una MCU. Los MCU vienen con temporizadores, RTC, ADC, EEPROM y controladores de reinicio, pero todas estas funciones también existen como circuitos integrados separados. Si los bloques incorporados disponibles no cumplen con sus requisitos, debe utilizar bloques 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 a su código.

    
respondido por el Dmitry Grigoryev
1

Un watchdog es un temporizador y activa su salida cuando el IC pierde un pulso de entrada por un período.

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

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

Un watchdog externo no está relacionado con el complejo dominio del reloj 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 llega a 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.

    
respondido por el M KS

Lea otras preguntas en las etiquetas