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

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

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
О, про WWDT я и забыл, а когда видел, путал с AWD, где задается окно ADC. Выходит, WWDT подходит именно для программы, работающей периодично. Планировщик задачи - самое то. Сбрасывать сторожевой таймер в низкоприоритетном процессе - это хорошо, но как быть, когда высшие задачи забрали все время? Можно создать задачу с высоким приоритетом, которая только и сбрасывает таймер. Все остальные зависания задач разруливать средствами ОС.
|
|
|
|
|
Mar 4 2018, 08:08
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(ViKo @ Mar 4 2018, 07:23)  Выходит, WWDT подходит именно для программы, работающей периодично. Нет, он создан для любых программ. Причем WWDT значительно упрощает прохождение тестов на безопасность приложения (медицина, космос и т. п.). Цитата Планировщик задачи - самое то. Нет, т.к. планировщик будет вызван в любом случае, ведь системный таймер работает всегда (речь про вытесняющую многозадачность). Цитата Сбрасывать сторожевой таймер в низкоприоритетном процессе - это хорошо, но как быть, когда высшие задачи забрали все время? Вот тут я расписал самый на мой взгляд простейши способ применения WWDT: https://electronix.ru/forum/index.php?showt...p;#entry1549577Сложные (правильные) способы подразумевают связь остальных задач с этой задачей WWDT. Тогда она превращается в некую deamon-задачу, которая умеет мониторить сбои в других задачах. Так сделано в embOS. Сложные ситуации могут состоять не из одной сторожевой задачи, а из как минимум двух - в одной низкоприоритетной работает WWDT, в другой - высокоприоритетной - контроль зависания задач.Цитата(ViKo) Можно создать задачу с высоким приоритетом, которая только и сбрасывает таймер. Все остальные зависания задач разруливать средствами ОС. Цитата(jcxz) Лучше наоборот - с самым высоким. Или в прерывании. В таких случаях WDT становится бесполезным - ему ничто не мешает быть сброшенным. "The watchdog should never be kicked from an interrupt routine” ( MISRA Report 3, p. 38) Вот вам немного литературы для "подумать": https://barrgroup.com/Embedded-Systems/How-...hdog-Timer-TipsУ большинства коммерческих RTOS существуют даже целые API для правильного применения WDT в критичных приложениях. https://blog.segger.com/using-a-watchdog-in...os-environment/
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
Сообщений в этой теме
Abcde Как правильно использовать сторожевой таймер с РТОС? Feb 18 2018, 11:43 Den64 Бывает что процессы зависают из-за ошибки алгоритм... Feb 18 2018, 12:02 jcxz Цитата(Abcde @ Feb 18 2018, 13:43) Где до... Feb 18 2018, 13:29 Baser Обычно период сторожевика выбирают от внешних усло... Feb 18 2018, 13:31 jcxz Цитата(Baser @ Feb 18 2018, 15:31) Нерегу... Feb 19 2018, 05:57  Arlleex Цитата(jcxz @ Feb 19 2018, 08:57) Контрол... Mar 1 2018, 19:03   jcxz Цитата(Arlleex @ Mar 1 2018, 21:03) Ну не... Mar 1 2018, 20:37 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  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
|
|
|