| .. _task_wdt_api: |
| |
| Task Watchdog |
| ############# |
| |
| Overview |
| ******** |
| |
| Many microcontrollers feature a hardware watchdog timer peripheral. Its purpose |
| is to trigger an action (usually a system reset) in case of severe software |
| malfunctions. Once initialized, the watchdog timer has to be restarted ("fed") |
| in regular intervals to prevent it from timing out. If the software got stuck |
| and does not manage to feed the watchdog anymore, the corrective action is |
| triggered to bring the system back to normal operation. |
| |
| In real-time operating systems with multiple tasks running in parallel, a |
| single watchdog instance may not be sufficient anymore, as it can be used for |
| only one task. This software watchdog based on kernel timers provides a method |
| to supervise multiple threads or tasks (called watchdog channels). |
| |
| An existing hardware watchdog can be used as an optional fallback if the task |
| watchdog itself or the scheduler has a malfunction. |
| |
| The task watchdog uses a kernel timer as its backend. If configured properly, |
| the timer ISR is never actually called during normal operation, as the timer is |
| continuously updated in the feed calls. |
| |
| It's currently not possible to have multiple instances of task watchdogs. |
| Instead, the task watchdog API can be accessed globally to add or delete new |
| channels without passing around a context or device pointer in the firmware. |
| |
| The maximum number of channels is predefined via Kconfig and should be adjusted |
| to match exactly the number of channels required by the application. |
| |
| Configuration Options |
| ********************* |
| |
| Related configuration options can be found under |
| :zephyr_file:`subsys/task_wdt/Kconfig`. |
| |
| * :kconfig:option:`CONFIG_TASK_WDT` |
| |
| * :kconfig:option:`CONFIG_TASK_WDT_CHANNELS` |
| |
| * :kconfig:option:`CONFIG_TASK_WDT_HW_FALLBACK` |
| |
| * :kconfig:option:`CONFIG_TASK_WDT_MIN_TIMEOUT` |
| |
| * :kconfig:option:`CONFIG_TASK_WDT_HW_FALLBACK_DELAY` |
| |
| API Reference |
| ************* |
| |
| .. doxygengroup:: task_wdt_api |