Si el problema es repetible va a ayudar muchísimo. El proceso de depuración puede ser abordado si usted tiene un par de claves incorporado herramientas de desarrollo disponibles. Estas herramientas incluyen un osciloscopio digital y dos de repuesto pines GPIO en su procesador. En la ausencia de los dos pasadores de repuesto es a menudo posible temporalmente re-implementar de dos en uso de pines para el propósito de la depuración de ejercicio.
El método de depuración es uno de divide y vencerás para descubrir en qué sección(s) de su código en uso cuando el errante restablecer sucede. El primer paso consiste en la adición de código en su rutina de inicio que establece uno de los pasadores de repuesto como salida y a un nivel de lógica que será cambiado por defecto cuando el MCU vuelve a restablecer. Este GPIO se utiliza como disparador de su ámbito digital tales que el "fin, el modo de disparo" va a ser utilizado. Es posible que usted ya tiene una e/S en el sistema que pueden servir como este evento de disparo. En algunos casos, el WDT reset también puede aparecer visibles directamente en el MCU pin reset. Si cualquiera de estos últimos casos se aplica entonces usted puede utilizar que en lugar de tener que añadir el uso de este primer pin GPIO.
El siguiente paso es definir el otro de repuesto GPIO pin como salida y, a continuación, establezca su defecto no nivel luego de regreso al otro estado dentro de una rama específica de su código de programa. El método más común para la mayoría de los Mcu es que los pines GPIO predeterminada para las entradas después de reiniciar, por lo que un externo pull-up está instalado para mantener el pin de alta, mientras que todavía es una entrada. El código de prueba sería, a continuación, establezca el pin como salida a la baja y, a continuación, después de un tiempo más tarde en el código de la sucursal configurar la salida a un alto nivel.
Re-compilar, enlazar y cargar la versión de prueba del código. Ahora pones el ámbito de aplicación a "fin de disparo" en la aparición de la primera mencionado GPIO que será señal de que el errante WDT restablecer ha sucedido. El otro GPIO en un segundo canal del osciloscopio. A continuación, iniciar el sistema y espere hasta que el errante restablecer sucede. Si usted nota que esta segunda GPIO conjuntos de baja y alta de la espalda antes de que el evento de disparo, entonces se sabe que el WDT evento no ocurra dentro de la rama de código donde se ha añadido el apretón de manos de la señal. Por otro lado, si este segundo GPIO devuelve a su estado predeterminado en conjunción con el WDT reset, entonces usted sabe que el culpable de código es en algún lugar entre los dos lugares en el código donde se establece y se borra el apretón de manos de la señal. (Tenga en cuenta que si usted no ve la segunda GPIO apretón de manos en el ámbito de aplicación, entonces usted sabe que rama particular de código, incluso, nunca se entró y por lo tanto probablemente no es el culpable de la región de el código).
Al evaluar el alcance huellas tomar nota de que el WDT restablecer pasará algún tiempo antes de que el ámbito de aplicación de gatillo ocurre debido al hecho de que el programa de instalación del ámbito gatillo GPIO en la ejecución de código justo después de que el código ha de volver a empezar -. Usted tendrá que evaluar cuánto retraso que hay aquí en el MCU y en su sistema de modo que usted puede juzgar con precisión si el segundo señalización GPIO sucede al WDT tiempo de restablecimiento o anterior en el tiempo. La práctica se ejecuta puede ayudar a perfeccionar la técnica.
El proceso de investigación ahora consiste en mover el ajuste y la eliminación de la segunda GPIO apretón de manos a su alrededor en varias partes de su ruta de ejecución de código para tratar de aislar la parte del código que están involucrados con el problema. Si usted encuentra una rama que se sospecha que puede, a continuación, reducir el área de enfoque....es decir, "divide y vencerás".
Una cosa muy agradable acerca de esta técnica es que el ajuste y la limpieza de la señalización GPIO lleva muy poco tiempo de ejecución en el procesador, y por lo tanto no tienen un grave impacto en el rendimiento en tiempo real de tiempo de código crítico. Hay otras técnicas de depuración disponibles, pero todos ellos generalmente implican mucho mayor ejecución de gastos generales de la técnica descrita.