What is the main purpose of the Watchdog task pattern in FreeRTOS?
The Watchdog task pattern monitors other tasks to ensure they are running correctly and not stuck. It helps detect and recover from system failures by resetting or taking action if a task stops responding.
Click to reveal answer
beginner
How does a Watchdog task typically check the health of other tasks?
It usually waits for periodic signals or 'heartbeats' from other tasks. If a task fails to send its heartbeat in time, the Watchdog assumes it is stuck or failed.
Click to reveal answer
intermediate
What is a common action taken by a Watchdog task when it detects a stuck task?
The Watchdog task may reset the system, restart the stuck task, or log an error to recover the system and maintain stability.
Click to reveal answer
intermediate
Why is it important to keep the Watchdog task simple and fast?
Because the Watchdog task must run reliably and quickly to detect problems early without causing delays or blocking other tasks.
Click to reveal answer
intermediate
In FreeRTOS, what synchronization method can be used for tasks to send their heartbeat to the Watchdog task?
Tasks can use queues, semaphores, or event groups to send heartbeat signals to the Watchdog task safely and efficiently.
Click to reveal answer
What does the Watchdog task monitor in FreeRTOS?
ANetwork traffic
BMemory usage only
CCPU temperature
DOther tasks' health and responsiveness
✗ Incorrect
The Watchdog task monitors other tasks to ensure they are running and responsive.
How do tasks usually communicate their status to the Watchdog task?
ABy writing to a file
BBy sending periodic heartbeats
CBy changing CPU frequency
DBy disabling interrupts
✗ Incorrect
Tasks send periodic heartbeats (signals) to indicate they are alive.
What is a typical response if the Watchdog task detects a stuck task?
AReset the system or restart the task
BIgnore the problem
CIncrease task priority
DSend an email alert
✗ Incorrect
The Watchdog task usually resets the system or restarts the stuck task to recover.
Which FreeRTOS feature can be used for heartbeat signaling?
AFile system
BDirect memory access
CQueues or semaphores
DInterrupt disabling
✗ Incorrect
Queues and semaphores are common synchronization tools for heartbeat signaling.
Why should the Watchdog task be simple and fast?
ATo detect problems early without blocking other tasks
BTo use more CPU time
CTo avoid sending heartbeats
DTo increase memory usage
✗ Incorrect
A simple and fast Watchdog task ensures timely detection without slowing the system.
Explain how the Watchdog task pattern helps maintain system reliability in FreeRTOS.
Think about how the Watchdog watches other tasks and what it does if something goes wrong.
You got /4 concepts.
Describe how tasks communicate their status to the Watchdog task and what happens if a task fails to respond.
Focus on the signals tasks send and the Watchdog's reaction to missing signals.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of a watchdog task in FreeRTOS?
easy
A. To create new tasks dynamically during runtime
B. To monitor other tasks and reset the system if a task fails
C. To handle user input events
D. To manage memory allocation for tasks
Solution
Step 1: Understand the watchdog task role
The watchdog task monitors the health of other tasks to ensure they are running correctly.
Step 2: Identify the action taken on failure
If a task fails or stops responding, the watchdog task can reset the system or take corrective action.
Final Answer:
To monitor other tasks and reset the system if a task fails -> Option B
Quick Check:
Watchdog monitors and resets = A [OK]
Hint: Watchdog watches tasks and resets on failure [OK]
Common Mistakes:
Confusing watchdog with task creation
Thinking watchdog handles user input
Assuming watchdog manages memory
2. Which of the following is the correct way to reset a watchdog timer in a FreeRTOS task?
easy
A. Call watchdog_reset() periodically from monitored tasks
B. Use xTaskCreate() to reset the timer
C. Call vTaskDelay() inside the watchdog task
D. Call vTaskDelete() on the watchdog task
Solution
Step 1: Identify how watchdog timers are reset
Monitored tasks must periodically signal the watchdog by calling a reset function like watchdog_reset().
Step 2: Eliminate incorrect options
vTaskDelay() delays a task but does not reset the watchdog timer. xTaskCreate() creates tasks, not reset timers. vTaskDelete() deletes tasks, not reset timers.
Final Answer:
Call watchdog_reset() periodically from monitored tasks -> Option A
Quick Check:
Reset watchdog by calling reset function = C [OK]
Hint: Reset watchdog by calling its reset function in tasks [OK]
Common Mistakes:
Using delay functions to reset watchdog
Trying to reset watchdog by creating or deleting tasks
Confusing task management functions with watchdog reset
3. Consider this simplified watchdog task code snippet in FreeRTOS:
void WatchdogTask(void *pvParameters) {
for (;;) {
if (xSemaphoreTake(watchdogSemaphore, pdMS_TO_TICKS(1000)) == pdFALSE) {
// No reset signal received
vTaskDelay(pdMS_TO_TICKS(500));
// Take recovery action
} else {
// Reset signal received
vTaskDelay(pdMS_TO_TICKS(100));
}
}
}
What happens if the monitored task never calls xSemaphoreGive(watchdogSemaphore)?
medium
A. The watchdog task will detect no reset signal and take recovery action repeatedly
B. The watchdog task will keep waiting forever without action
C. The watchdog task will crash due to semaphore misuse
D. The watchdog task will reset the semaphore automatically
Solution
Step 1: Analyze semaphore wait behavior
The watchdog task waits 1000 ms for a semaphore signal. If none arrives, xSemaphoreTake returns pdFALSE.
Step 2: Understand the consequence of no signal
When no signal is received, the watchdog delays 500 ms and then takes recovery action repeatedly in the loop.
Final Answer:
The watchdog task will detect no reset signal and take recovery action repeatedly -> Option A
Quick Check:
No semaphore signal triggers recovery = A [OK]
Hint: No semaphore signal means watchdog triggers recovery [OK]
Common Mistakes:
Assuming watchdog waits forever without action
Thinking semaphore misuse causes crash here
Believing semaphore resets automatically
4. Given this watchdog task snippet:
void WatchdogTask(void *pvParameters) {
for (;;) {
if (xSemaphoreTake(watchdogSemaphore, 0) == pdTRUE) {
// Reset received
} else {
// No reset, take action
}
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
What is the main problem with this code?
medium
A. The task deletes itself after one loop
B. The task delays too long after receiving a reset signal
C. The semaphore wait time is zero, so it never blocks to wait for reset signals
D. The semaphore is given incorrectly in the monitored task
Solution
Step 1: Examine semaphore wait time parameter
The call xSemaphoreTake(watchdogSemaphore, 0) means it does not wait and returns immediately.
Step 2: Understand impact on watchdog behavior
Because it never blocks, the watchdog may miss reset signals if they arrive after the check, causing false recovery actions.
Final Answer:
The semaphore wait time is zero, so it never blocks to wait for reset signals -> Option C
Quick Check:
Zero wait means no blocking = D [OK]
Hint: Semaphore wait time zero means no blocking, causing missed signals [OK]
Common Mistakes:
Thinking delay length is the problem
Assuming semaphore is given incorrectly without evidence
Believing task deletes itself here
5. You want to implement a watchdog task that monitors three tasks: TaskA, TaskB, and TaskC. Each task must send a heartbeat signal every 500 ms. Which approach best ensures the watchdog detects a failure in any task within 2 seconds?
hard
A. Use one binary semaphore shared by all tasks; each task gives it every 500 ms
B. Use a single counting semaphore incremented by all tasks; watchdog resets counter every 2 seconds
C. Use three separate semaphores; watchdog waits up to 2 seconds for each semaphore in sequence
D. Use three separate semaphores; watchdog checks each semaphore with a 700 ms timeout and flags failure if any miss
Solution
Step 1: Understand heartbeat timing requirements
Each task sends a heartbeat every 500 ms. The watchdog must detect failure within 2 seconds.
Step 2: Evaluate semaphore usage options
Using separate semaphores allows independent monitoring. Checking each with a 700 ms timeout ensures missing any heartbeat triggers failure detection quickly.
Step 3: Compare with other options
One shared semaphore (Use one binary semaphore shared by all tasks; each task gives it every 500 ms) cannot distinguish which task failed. Waiting 2 seconds per semaphore (Use three separate semaphores; watchdog waits up to 2 seconds for each semaphore in sequence) delays detection. Counting semaphore (Use a single counting semaphore incremented by all tasks; watchdog resets counter every 2 seconds) loses individual task info.
Final Answer:
Use three separate semaphores; watchdog checks each semaphore with a 700 ms timeout and flags failure if any miss -> Option D
Quick Check:
Separate semaphores + short timeout = fast failure detection = B [OK]
Hint: Separate semaphores with short timeout catch failures fast [OK]
Common Mistakes:
Using one semaphore for all tasks losing failure detail
Waiting too long per semaphore delaying detection
Using counting semaphore losing individual task info
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.