[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Работая с RTOS UCOS-II я делаю самую низкоприоритетную задачу сторожем, занимающимся системной диагностикой.
Такая задача получает управление если в данный момент делать больше нечего. Если одна из задач зациклилась, или сломался внутренний механизм диспетчеризации задач RTOS, то задача диагностики не получит управления, и если сброс WDT происходит именно в ней, то он и сработает когда нужно.
Задача диагностики проверяет стеки остальных задач на переполнение (а резервирование памяти под стеки задач дело не тривиальное, без run-time измерений не обойтись), собирает другую информацию о состоянии системы (заполненность динамических буферов, диагностические счетчтки ошибок, % использованного задачами времени и т.п.) и выводит ее на консоль (обычно это один из UART'ов) либо периодически, либо в случае обнаружения ошибки, либо интерактивно по командам с консоли.
E-mail: info@telesys.ru