¿Es posible implementar un temporizador de vigilancia a prueba de fallas en el software?

Quiero agregar un código para el temporizador de vigilancia dentro de mi código fuente para que la placa se reinicie automáticamente cuando los programas se cuelguen. Estoy usando la placa Mediatek Linkit One.

¿El MT2502 ya no tiene un temporizador de vigilancia incorporado?

Respuestas (2)

Puede crear una función que "Alimenta al perro" en un lugar apropiado de su programa. Cuando el perro no está alimentado, el temporizador de vigilancia transcurrirá y restablecerá el programa. Mire la documentación del microcontrolador para ver cómo se implementa. Por lo general, el temporizador Watch Dog deberá configurarse correctamente (con los valores de preescalador apropiados), habilitarse y luego borrarse periódicamente antes de que expire el temporizador. No parece que las referencias de API de los laboratorios de mediatek le den acceso a esta funcionalidad de nivel inferior, pero el resumen técnico del procesador SOC para ARMyEJ-S incluye un temporizador de vigilancia (p. 8), que es la única mención. Si no puede encontrar una respuesta a esto en la documentación, me pondré en contacto con ellos y se lo pediré directamente y presionaré un poco a sus desarrolladores (como ya se solicitó en su foro).

Sí, señor, como dijo correctamente, las referencias de API de los laboratorios de Mediatek no brindan acceso a esta funcionalidad de nivel inferior y no hay una descripción en el resumen técnico de ARM7EJ-S sobre cómo hacer uso del perro guardián. Esto dificulta las cosas ahora si la placa debe usarse en aplicaciones en tiempo real. Sí, sería genial si te pones en contacto con ellos y lo pides directamente. Gracias.

No tengo idea de qué es una placa Mediatek Linkit One (y no proporcionó un enlace), pero, en general, no puede. Si su programa se bloquea, ¿cómo se ejecutará el código de vigilancia?

Por lo general, los perros guardianes tienen que implementarse en el hardware, ya sea internamente por una sección de la CPU que se ejecuta independientemente del programa del usuario o, si eso no se puede hacer, se emplea un perro guardián externo. Su programa restablecería el perro guardián externo periódicamente enviando un pulso. Si el perro guardián externo no ve una transición dentro de un tiempo determinado, se genera un reinicio.

Si el hardware admite una interrupción del temporizador (para admitir la multitarea preventiva), sería posible un tiempo de vigilancia del software a nivel del sistema operativo. (Dado que el sistema operativo puede deshabilitar las interrupciones del temporizador, no tendría tanta cobertura como un perro guardián de hardware). Podría ser posible tener un proceso a nivel de usuario que esté garantizado (de acuerdo con la implementación del programador del sistema operativo) para ejecutarse con un mínimo frecuencia y tal podría usarse para proporcionar la funcionalidad de vigilancia. El tiempo de espera en POSIX select() proporcionaría un medio para un perro guardián a nivel de usuario.