zaro

What is Window Watchdog?

Published in Microprocessor Supervisory Circuits 4 mins read

A Window Watchdog (WWDG) is a sophisticated and highly reliable feature designed to monitor the correct execution of software within microprocessors, asserting a system reset or Non-Maskable Interrupt (NMI) if a software anomaly is detected.

Understanding the Window Watchdog (WWDG)

As a special subset of the watchdog timer feature found on microprocessor supervisory circuits, a Window Watchdog is primarily used to monitor software execution and assert a reset or an NMI if the processor gets stuck in a loop. However, its unique "window" mechanism sets it apart from a traditional watchdog.

The core concept of a WWDG revolves around a specific time window during which the software is expected to "feed" (reset) the watchdog timer. If the watchdog is fed:

  • Too Early: This indicates that the software is executing too fast, potentially due to a critical error, an infinite loop, or runaway code. The WWDG will trigger a reset or NMI.
  • Too Late: This signifies that the software has stalled, hung, or entered an unexpected state, preventing it from refreshing the timer. Like a traditional watchdog, this also triggers a reset or NMI.

Essentially, the WWDG ensures that the software operates not just within a maximum timeout period but also not faster than a minimum allowed period. This dual-threshold monitoring provides a much more robust mechanism for detecting software failures.

How a Window Watchdog Works

A typical WWDG operates with two main registers or thresholds:

  1. Lower Window (Minimum Value): This defines the earliest point within a refresh cycle that the watchdog can be fed. If the software attempts to feed the watchdog before this minimum value is reached, it indicates an issue, and a reset/NMI is generated.
  2. Upper Window (Maximum Value): This defines the latest point within a refresh cycle that the watchdog can be fed. If the software fails to feed the watchdog before this maximum value expires, it's considered a timeout, triggering a reset/NMI.

The software is responsible for periodically writing a specific value (the "feed" action) to the WWDG's control register. This action resets the internal counter of the watchdog, preventing a timeout, but only if performed within the defined window.

Window Watchdog vs. Standard Watchdog

While both types of watchdogs aim to improve system reliability, the WWDG offers enhanced diagnostic capabilities:

Feature Standard Watchdog Window Watchdog
Core Function Prevents software from getting stuck Prevents software from getting stuck or running wild
Early Feed Action No action (often considered safe) Triggers a reset/NMI (indicates an anomaly)
Late Feed Action Triggers a reset/NMI Triggers a reset/NMI
Detection Scope Detects stalled or hung software Detects stalled, hung, or excessively fast software
Configuration Simpler: Single timeout value More complex: Requires a lower and an upper window
Reliability Good for basic reliability Superior for critical applications

Practical Insights and Applications

  • Enhanced Reliability: WWDGs are crucial in safety-critical applications where software anomalies, whether slow or fast, could lead to dangerous situations.
  • Debugging Tool: By triggering a reset/NMI on early feeds, the WWDG can help developers identify issues like:
    • Infinite Loops: Code getting stuck.
    • Race Conditions: Unexpectedly fast execution due to unforeseen timing interactions.
    • Stack Overflows: Corrupted stack leading to erroneous program flow.
    • Uninitialized Pointers: Dereferencing invalid memory locations, causing unpredictable behavior.
  • Typical Applications:
    • Automotive Systems: Engine control units, braking systems.
    • Industrial Control: PLCs, robotic systems, factory automation.
    • Medical Devices: Life support, diagnostic equipment.
    • Aerospace: Flight control systems.
  • Implementation Best Practices:
    • Placement of Feed Code: The WWDG feed instruction should be placed strategically within the main loop or a critical task of the software, ensuring that all essential parts of the code are executing correctly before the feed occurs.
    • Careful Window Sizing: The window must be wide enough to accommodate normal execution variations but narrow enough to catch deviations quickly. This often requires thorough testing and calibration.
    • Pre-Reset Actions: Configure the system to log diagnostic information (e.g., register states, error codes) before the WWDG asserts a reset to aid in post-mortem analysis.

By actively monitoring not just the presence but also the rate of software execution, the Window Watchdog significantly enhances the robustness and safety of embedded systems.