daniel.gutson at tallertechnologies.com
Tue Jan 13 15:40:44 UTC 2015
We are thinking about a "supervisor" watchdog, which runs in a high
priority task, and
has the following characteristics:
a) tasks that "want" to be supervised are registered in the supervisor watchdog
b) each supervised task is in one of the following mode:
- automatic supervision
- manual supervision
c) in "automatic supervision" mode, the supervisor watchdog keeps
track of the program counter of the task.
When the PC is the same after N cycles, the watchdog performs a
predefined action (e.g. reset).
d) supervised tasks in "manual supervision" have to kick the watchdog
explicitly (e.g. by invoking a function of the API).
e) the watchdog leaves alone the tasks in sleeping mode.
The idea of the "automatic supervision" mode is to avoid polluting the
task code due to spreading calls to the kick function,
specially difficult when having to estimate the "distance" between
these function calls.
The idea of the "manual supervision" mode, which is rather
traditional, is when the task executes tight inner loops.
In this scheme, tasks should be in automatic mode as much as possible
and switch to manual just in small bounded
places of the code.
Before entering in the discussion of the implementation, I'd like
feeedback about the general idea please.
More information about the devel