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

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

Знающий
   
Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571

|
Цитата(Forger @ Mar 4 2018, 02:58)  Ваши слова? Как мои слова связаны с Цитата(Forger @ Mar 4 2018, 02:25)  В вашем примере - задача, которая может тупить (загружает проц. на 100%) слишком долго (намного дольше допустимого времени реакции системы на сбой),.. ? Вытесняющая многозадачность. Задача зависла или завершилась и не работает и не кому не мешает, и не грузит на 100% наверняка. Хотя точно не знаю, не принципиально и не интересно. Но ваши способности удалённо читать "мысли" микроконтроллера поражают.
|
|
|
|
|
Mar 4 2018, 00:17
|

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

|
Цитата(Den64 @ Mar 4 2018, 03:12)  Вытесняющая многозадачность. Неважно, о какой многозадачности идет речь. Сделайте бесконечный цикл в любой задаче так, чтобы она полностью загружала проц: Код void someTask(...) { while (true) {} } Такая задача позволит выполнится любой другой задаче с бОльшим приоритетом, но меньшим приоритетом - ни разу. Именно поэтому я помещаю сброс WDT только в одном месте - в фоне задач (не прерываний!), причем, в самой низкоприоритетной задаче. Цитата Задача зависла или завершилась и не работает и не кому не мешает, и не грузит на 100% наверняка. Зависшася задача, которая не потребляет ресурсов - это задача, которая ждет некого внешнего события: семафор, сообщение. Если этого события нет, то это задача тут ни при чем, искать нужно того, что не прислал нужного сообщения. Такие ошибки не решит никакой WDT. Другой же случай: задача зависла (например, бесконечно полит некий флажок или крутится в бесконечном цикле), то такая задача загружает проц на 100%. Такая ситуация сама по себе не возникает, но мое решение с WDT с ней борется на все 100%. Ибо в реальном устройстве, которое, например, управляет внешней силой, подобные зависания могут привести к печальным последствиям. И потому способ борьбы должен быть максимально аппаратным, вплоть до установки внешнего WDT, который сбрасывается точно также, но уже дерганием ножки проца в такой же самой низкоприоритетной задаче. Цитата Но ваши способности удалённо читать "мысли" микроконтроллера поражают. Вы зря одушевляете голую железку, приписывая ей некие "мысли" Когда знаешь как она устроена, и как устроен софт на ней (OCь), то умение "читать мысли" не требуется - оно и так все понятно
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Mar 4 2018, 00:28
|

Знающий
   
Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571

|
Цитата(Forger @ Mar 4 2018, 03:17)  Неважно, о какой многозадачности идет речь. Сделайте бесконечный цикл в любой задаче так, чтобы она полностью загружала проц: Код void someTask(...) { while (true) {} } Такая задача позволит выполнится любой другой задаче с бОльшим приоритетом, но меньшим приоритетом - ни разу. Именно поэтому я помещаю сброс WDT только в одном месте - в фоне задач (не прерываний!), причем, в самой низкоприоритетной задаче. Согласен. Вылетело из головы. Но у меня это не сработает, кроме приоритетов у задач задаю квант времени работы. (хотя скорей всего сработает, не проверял) Цитата(Forger @ Mar 4 2018, 03:17)  Вы зря одушевляете голую железку, приписывая ей некие "мысли" Когда знаешь как она устроена, и как устроен софт на ней (OCь), то умение "читать мысли" не требуется - оно и так все понятно  Мысли в кавычках.
|
|
|
|
|
Mar 4 2018, 00:32
|

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

|
Цитата(Den64 @ Mar 4 2018, 03:28)  Согласен. Вылетело из головы. Но у меня это не сработает, кроме приоритетов у задач задаю квант времени работы. (хотя скорей всего сработает, не проверял) Квант времени работает ТОЛЬКО для задач с равным приоритетом, он всегда измеряется в периодах системного таймера, в котором вызывается шедулер. Это квант (slice) дает возможность работать другим задачам с РАВНЫМ приоритетом. В остальном - все то же самое: все низкоприоритные задачи ждут, пока им не достанется чуток процессорного времени. По крайней мере так сделано во всех ОСях, которые поддерживают time slice. Подобная штука категорически необходима для проектов, где ВСЕ задачи имеют равный приоритет.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
Сообщений в этой теме
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 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
|
|
|