|
Как правильно использовать сторожевой таймер с РТОС?, wathdog timer, RTOS |
|
|
|
Feb 18 2018, 11:43
|
Группа: Новичок
Сообщений: 1
Регистрация: 9-03-16
Пользователь №: 90 775

|
Сейчас период таймаута выбран 0,5 сек, обнуление счетчика сторожевого таймера происходит в одной задаче РТОС, которая начинает выполняться только через 1 секунду после подачи питания (такая особенность). Получается сторожевой таймер срабатывает раньше… Где должен обнуляться счетчик сторожевого таймера? Сейчас он обнуляется в одной из задач РТОС, почти безусловно, т.е. контролируется только правильность работы этой задачи. Как контролировать остальные, особенно если они взаимосвязанные (ждут результатов работы других задач)? Или задачи во время своего выполнения сами должны анализировать себя и сигнализировать выше, но если РТОС вытесняющая, то задача может прерваться и анализ оказаться неполным или не быть готовым к моменту принятия решения о сбросе по сторожевому таймеру. Как тут быть? Обязательно ли проводить самодиагностику сторожевого таймера при подаче питания (когда ждем сброса по срабатыванию сторожевого таймера, а после него фиксируем успешность его работы и загружаемся как обычно). Но это ограничивает период таймаута сторожевого таймера, чтобы долго не загружать устройство. Спасибо!
|
|
|
|
|
 |
Ответов
|
Feb 18 2018, 13:31
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Обычно период сторожевика выбирают от внешних условий работы. Чем ответственней применение и чем печальней могут быть последствия подвисания МК, тем меньше период. И уже исходя из периода так планируют программу, чтобы при нормальной работе софта гарантированно уложиться до автосброса. Я обычно обслуживаю сторожевик в средне-низкоприоритетной задаче, которая вызывается регулярно со временем в несколько раз чаще периода сторожевика. Остальные важные регулярные задачи выставляют флаги, а та задача исходя из них сбрасывает сторожевик. Нерегулярные задачи, которые могут не возникнуть за период сторожевика, не контроллирую. Цитата(Abcde @ Feb 18 2018, 13:43)  Обязательно ли проводить самодиагностику сторожевого таймера при подаче питания (когда ждем сброса по срабатыванию сторожевого таймера, а после него фиксируем успешность его работы и загружаемся как обычно). Про такое даже никогда не слышал, хотя возможно это и имеет смысл в параноидально-ответственных приложениях
|
|
|
|
|
Feb 19 2018, 05:57
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Baser @ Feb 18 2018, 15:31)  Нерегулярные задачи, которые могут не возникнуть за период сторожевика, не контроллирую. Я контролирую все задачи. Нерегулярные в том числе (те, которые ждут какого-то события, потом его обрабатывают?) - посылаю им пинг (пустое событие), на который они должны ответить. Все задачи построены в виде циклов ожидания/обработки события, схематически: Код while (1) { WaitForEvent(...); //ожидание eventa ОС ILive(TASK_ID_...); if (!needForService) continue; ... } В ILive() контролируемая задача посылает контролирующей сообщение, что она жива (ставит флажок например). Регулярные построены точно так же - без разницы. Контролирующая, после установки состояния "проверка состояния задачи TASK_ID...", перестаёт генерить WDI до того момента, пока контролируемая задача не вызовет ILive(). Таким образом проверяется, что задача выполняет главный цикл своего функционирования (не заблокировалась например на каком-то ожидании или dead-lock-е) в хвосте главного своего цикла.
|
|
|
|
|
Mar 1 2018, 19:03
|

Местный
  
Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264

|
Цитата(jcxz @ Feb 19 2018, 08:57)  Контролирующая, после установки состояния "проверка состояния задачи TASK_ID...", перестаёт генерить WDI до того момента, пока контролируемая задача не вызовет ILive(). Таким образом проверяется, что задача выполняет главный цикл своего функционирования (не заблокировалась например на каком-то ожидании или dead-lock-е) в хвосте главного своего цикла. На самом деле интересная идея, но не совсем понятно, как именно отслеживается зависание. Ну не ответила задача - вполне может быть, что у неё время выполнения большое. Не совсем понял Вашего механизма, если честно. Да и период пингуюшей задачи, не понятно, должен ли как-то зависеть от периодов задач, которые подвергаются контролю?
|
|
|
|
|
Mar 1 2018, 20:37
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Arlleex @ Mar 1 2018, 21:03)  Ну не ответила задача - вполне может быть, что у неё время выполнения большое. Не должно быть такого. У любой задачи должно быть строго известное время максимальной задержки ответа. Не ответила - перезагрузка. Цитата(Arlleex @ Mar 1 2018, 21:03)  Да и период пингуюшей задачи, не понятно, должен ли как-то зависеть от периодов задач, которые подвергаются контролю? Никак. Он должен быть меньше времени таймаута WDT.
|
|
|
|
Сообщений в этой теме
Abcde Как правильно использовать сторожевой таймер с РТОС? Feb 18 2018, 11:43 Den64 Бывает что процессы зависают из-за ошибки алгоритм... Feb 18 2018, 12:02 jcxz Цитата(Abcde @ Feb 18 2018, 13:43) Где до... Feb 18 2018, 13:29 HardEgor Цитата(Abcde @ Feb 18 2018, 18:43) Где до... Feb 18 2018, 13:41 haker_fox QUOTE (Abcde @ Feb 18 2018, 19:43) Где до... Feb 19 2018, 00:44 Forger Цитата(Abcde @ Feb 18 2018, 14:43) Как пр... Mar 3 2018, 17:53 ViKo 1. Впервые слышу про сторожевой таймер в МК, котор... Mar 3 2018, 18:33 Forger Цитата(ViKo @ Mar 3 2018, 21:33) 1. Вперв... Mar 3 2018, 18:44 jcxz Цитата(ViKo @ Mar 3 2018, 20:33) 4. Сбрас... Mar 4 2018, 01:49 Den64 У меня в домашней автоматике, периодически, зависа... Mar 3 2018, 19:53 Forger Цитата(Den64 @ Mar 3 2018, 22:53) У меня ... Mar 3 2018, 21:26  Den64 Цитата(Forger @ Mar 4 2018, 00:26) В моме... Mar 3 2018, 22:31   Forger Цитата(Den64 @ Mar 4 2018, 01:31) Как пом... Mar 3 2018, 23:25    Den64 Цитата(Forger @ Mar 4 2018, 02:25) Вы в у... Mar 3 2018, 23:36     Forger Цитата(Den64 @ Mar 4 2018, 02:36) Это Вы ... Mar 3 2018, 23:41    Den64 Цитата(Forger @ Mar 4 2018, 02:25) В ваше... Mar 3 2018, 23:45     Forger Цитата(Den64 @ Mar 4 2018, 02:41) С чего ... Mar 3 2018, 23:58 Den64 Цитата(Forger @ Mar 4 2018, 02:58) Ваши с... Mar 4 2018, 00:12 Forger Цитата(Den64 @ Mar 4 2018, 03:12) Вытесня... Mar 4 2018, 00:17  Den64 Цитата(Forger @ Mar 4 2018, 03:17) Неважн... Mar 4 2018, 00:28   Forger Цитата(Den64 @ Mar 4 2018, 03:28) Согласе... Mar 4 2018, 00:32    Den64 Цитата(Forger @ Mar 4 2018, 03:32) Квант ... Mar 4 2018, 00:40 ViKo О, про WWDT я и забыл, а когда видел, путал с AWD,... Mar 4 2018, 04:23 Forger Цитата(ViKo @ Mar 4 2018, 07:23) Выходит,... Mar 4 2018, 08:08  jcxz Цитата(Forger @ Mar 4 2018, 10:08) В таки... Mar 4 2018, 11:18   Forger Цитата(jcxz @ Mar 4 2018, 13:52) Вы безус... Mar 4 2018, 11:26    jcxz Цитата(Forger @ Mar 4 2018, 13:26) В ваше... Mar 4 2018, 12:24     Forger Цитата(jcxz @ Mar 4 2018, 15:24) Лучше эт... Mar 4 2018, 12:59
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|