реклама на сайте
подробности

 
 
> Как правильно использовать сторожевой таймер с РТОС?, wathdog timer, RTOS
Abcde
сообщение Feb 18 2018, 11:43
Сообщение #1





Группа: Новичок
Сообщений: 1
Регистрация: 9-03-16
Пользователь №: 90 775



Сейчас период таймаута выбран 0,5 сек, обнуление счетчика сторожевого таймера происходит в одной задаче РТОС, которая начинает выполняться только через 1 секунду после подачи питания (такая особенность). Получается сторожевой таймер срабатывает раньше…
Где должен обнуляться счетчик сторожевого таймера? Сейчас он обнуляется в одной из задач РТОС, почти безусловно, т.е. контролируется только правильность работы этой задачи. Как контролировать остальные, особенно если они взаимосвязанные (ждут результатов работы других задач)?
Или задачи во время своего выполнения сами должны анализировать себя и сигнализировать выше, но если РТОС вытесняющая, то задача может прерваться и анализ оказаться неполным или не быть готовым к моменту принятия решения о сбросе по сторожевому таймеру. Как тут быть?
Обязательно ли проводить самодиагностику сторожевого таймера при подаче питания (когда ждем сброса по срабатыванию сторожевого таймера, а после него фиксируем успешность его работы и загружаемся как обычно). Но это ограничивает период таймаута сторожевого таймера, чтобы долго не загружать устройство.
Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Baser
сообщение Feb 18 2018, 13:31
Сообщение #2


Просто Che
*****

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



Обычно период сторожевика выбирают от внешних условий работы. Чем ответственней применение и чем печальней могут быть последствия подвисания МК, тем меньше период. И уже исходя из периода так планируют программу, чтобы при нормальной работе софта гарантированно уложиться до автосброса.

Я обычно обслуживаю сторожевик в средне-низкоприоритетной задаче, которая вызывается регулярно со временем в несколько раз чаще периода сторожевика. Остальные важные регулярные задачи выставляют флаги, а та задача исходя из них сбрасывает сторожевик.
Нерегулярные задачи, которые могут не возникнуть за период сторожевика, не контроллирую.

Цитата(Abcde @ Feb 18 2018, 13:43) *
Обязательно ли проводить самодиагностику сторожевого таймера при подаче питания (когда ждем сброса по срабатыванию сторожевого таймера, а после него фиксируем успешность его работы и загружаемся как обычно).

Про такое даже никогда не слышал, хотя возможно это и имеет смысл в параноидально-ответственных приложениях sm.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 19 2018, 05:57
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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-е) в хвосте главного своего цикла.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Mar 1 2018, 19:03
Сообщение #4


Местный
***

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



Цитата(jcxz @ Feb 19 2018, 08:57) *
Контролирующая, после установки состояния "проверка состояния задачи TASK_ID...", перестаёт генерить WDI до того момента, пока контролируемая задача не вызовет ILive().
Таким образом проверяется, что задача выполняет главный цикл своего функционирования (не заблокировалась например на каком-то ожидании или dead-lock-е) в хвосте главного своего цикла.

На самом деле интересная идея, но не совсем понятно, как именно отслеживается зависание. Ну не ответила задача - вполне может быть, что у неё время выполнения большое. Не совсем понял Вашего механизма, если честно. Да и период пингуюшей задачи, не понятно, должен ли как-то зависеть от периодов задач, которые подвергаются контролю?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 1 2018, 20:37
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Arlleex @ Mar 1 2018, 21:03) *
Ну не ответила задача - вполне может быть, что у неё время выполнения большое.

Не должно быть такого. У любой задачи должно быть строго известное время максимальной задержки ответа. Не ответила - перезагрузка.

Цитата(Arlleex @ Mar 1 2018, 21:03) *
Да и период пингуюшей задачи, не понятно, должен ли как-то зависеть от периодов задач, которые подвергаются контролю?

Никак. Он должен быть меньше времени таймаута WDT.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 11:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01525 секунд с 7
ELECTRONIX ©2004-2016