Перейти к содержанию
    

Надежный и дешевый watchdog таймер на 30 сек

Видимо у меня принципы другие - мне нужен. Правда на куда меньшее время, порядка секунды.

А что он контролирует?

А если произойдет сбой, обновление начнется сначала само, как ни в чем не бывало? Я с компьютера вручную пересылку прошивки запускаю. И старт обновления в приборе тоже вручную даю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что он контролирует?
Сбой связи.

А если произойдет сбой, обновление начнется сначала само, как ни в чем не бывало?
Да.

И старт обновления в приборе тоже вручную даю.
А я - нет. Мне не нужно лезть в прибор, чтобы запустить обновление. Достаточно запустить программу обновления на компе.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне не нужно лезть в прибор, чтобы запустить обновление. Достаточно запустить программу обновления на компе.

То есть, при подключенном к компу приборе запускаете программу обновления, о процесс пошел. Если произошел сбой связи или программирования флэш-памяти, прибор перезапускается, "вспоминает", что должен обновляться, посылает в комп сигнал, и программа перезапускает обновление? Или программа не дожидается подтверждения завершения, и сама перезапускается обновлять по-новой?

 

На обрыв связи обычного программного таймаута не хватит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или программа не дожидается подтверждения завершения, и сама перезапускается обновлять по-новой?
Не дождавшись подтверждения программа завершается с сообщением об ошибке. Человек может запустить ее снова.

На обрыв связи обычного программного таймаута не хватит?
Хватит. Но собакой значительно проще.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Часто вижу высказываания, что в ответсвенные изделия ставят внешний. Придерживаюсь такого же мнения. Не хочется делать безответственные девайсы.

Практика показывает, что безответственными девайсы получаются сами собой.

Например, если недостаточно хорошо продумать условия сброса ватчдога, половина freertos'а виснет, в живых остаётся только "малозначимые" задачи, одна из которых продолжает дёргать ватчдог.

 

При обновлении программы сторожевой таймер не нужен в принципе.

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

Это если выключение ватчдога вообще предусмотрено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Практика показывает, что безответственными девайсы получаются сами собой.

Например, если недостаточно хорошо продумать условия сброса ватчдога, половина freertos'а виснет, в живых остаётся только "малозначимые" задачи, одна из которых продолжает дёргать ватчдог.

Вот именно. Некоторые умельцы считают, что если они дергают сторожевой таймер везде, куда только фантазия ни заведет (например, в прерываниях), то их программа станет супернадежной. Таймером нужно пользоваться очень аккуратно, чтобы гарантировать, что основной цикл или планировщик задач выполняется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Это если выключение ватчдога вообще предусмотрено.

Вот и включите его в основной программе, а не в загрузчике. Я бы делал так. Сейчас вообще отказался от него, закомментировал инициализацию. Потому что попробовал всунуть его сброс в idle задачу в RTX RTOS, но что-то не получилось, не помню... забил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Практика показывает, что безответственными девайсы получаются сами собой.

Например, если недостаточно хорошо продумать условия сброса ватчдога, половина freertos'а виснет, в живых остаётся только "малозначимые" задачи, одна из которых продолжает дёргать ватчдог.

Этот момент тоже обдумывал. На этот случай контролирую время выполнения всех задач. Если оно превышает заданное - вочдог в системной задаче перестает сбрасываться из-за обнаружения зависшей задачи. А контролируетс время выполнения задачи просто - в начале и конце цикла задачи обновляется время последнего выполнения задачи, а системная задача это видит.

 

Вот именно. Некоторые умельцы считают, что если они дергают сторожевой таймер везде, куда только фантазия ни заведет (например, в прерываниях), то их программа станет супернадежной. Таймером нужно пользоваться очень аккуратно, чтобы гарантировать, что основной цикл или планировщик задач выполняется.

Согласен. Дергать собаку в аппаратном таймере крайне ненадежно. С большей вероятностью зависнет программа, а таймер продолжит тикать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...