Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 31.10.2010, 01:02  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Программный watchdog

Сторожевой таймер (watchdog timer) - внутренний или внешний модуль процессорной системы, который производит сброс процессора если от него не было сигналов в течении длительного времени (обычно несколько секунд). Эта технология хорошо описана, проста для понимания и отработана.

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

Есть у кого нибудь наработки в этой области? Какие есть простые алгоритмы, обладающие самопроверочной функцией?
Реклама:
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.

Последний раз редактировалось alexgap; 31.10.2010 в 01:04.
alexgap вне форума  
Непрочитано 31.10.2010, 01:45  
аtаs_stas
Заблокирован
 
Регистрация: 23.08.2010
Сообщений: 541
Сказал спасибо: 20
Сказали Спасибо 93 раз(а) в 78 сообщении(ях)
аtаs_stas на пути к лучшему
По умолчанию Re: Программный watchdog

Дык... для этого модули CRC в некоторых процах и существуют, ИМХО...
аtаs_stas вне форума  
Непрочитано 31.10.2010, 01:50  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Программный watchdog

Интересуют алгоритмы без привязки к конкретному процессору. Вот что-нибудь типа этого:

Код:
static byte W1 = 0;
static byte W2 = 1;

void Check()
{
  ++W1;
  if (W1 != W2)
     Reset();

  ++W2;
  if (W2 != W1 + 1)
     Reset();
}
Где функция Check() вызывается, скажем, один раз в 100 миллисекунд.

Но то что я привел выше - примитив. Возможно у кого-то есть более продвинутые идеи.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Непрочитано 31.10.2010, 03:41  
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Программный watchdog

Т.е. программа сама себя проверяет. А смысл? Если произошёл сбой , вся ета проверка автоматически уходит коту под хвост. Если Озу слетело-то даже все вызовы подпрограмм(стек) уходит туда-же. Достоверности "0". Для этого и аппаратная часть , независимая, вводится.
OlegNZH вне форума  
Сказали "Спасибо" OlegNZH
tolikvoron (06.04.2022)
Непрочитано 31.10.2010, 04:17  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Программный watchdog

Сообщение от OlegNZH Посмотреть сообщение
Т.е. программа сама себя проверяет. А смысл?
Смысл есть, поверьте мне. Если сносит ОЗУ, то это будет с некоторой вероятностью определено и система уйдет в перезапуск.

По наблюдениям. Процессор живет на "затертом" ОЗУ некоторое время, отрабатывает прерывания даже при порченном стеке, но алгоритмическая часть конечно, сбоит, ибо значения переменных - мусор. Аппаратный сторожевой таймер эту ситуацию может не покрывать, так как прерывание срабатывает, собаке сообщения посылаются, для него все ок и система висит в таком состоянии сколь угодно долго, при этом еще может натворить каку, беспорядочно дергая пинами ориентируясь на значения переменных в ОЗУ, которое было затерто мусором.

Писать нотации о целесообразности я не рекомендую, ибо не за этим поднимал сей вопрос. Очевидно, что при введении дополнительных контролирующих механизмов отказоустойчивость системы повышается.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Непрочитано 31.10.2010, 07:32  
Uragan90
Почётный гражданин KAZUS.RU
 
Аватар для Uragan90
 
Регистрация: 20.09.2009
Сообщений: 1,899
Сказал спасибо: 470
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
Uragan90 на пути к лучшему
По умолчанию Re: Программный watchdog

Для этого вроде есть метод "контроль четности". Суть такая: при записи в озу вычисляется контрольная сумма данных, двоичная сумма всех бит от которых потом отбрасывают старшие разряды и сохраняется вместе с данными в виде бита четности! При чтении данных из озу снова вычисляется контрольная сумма и биты четности сравниваются. Если они равны данные признаются как истинные.
__________________
Я бы изменил весь мир, но бог не дал исходников
Uragan90 вне форума  
Непрочитано 31.10.2010, 08:48  
RY723
Заблокирован
 
Регистрация: 08.08.2007
Сообщений: 2,843
Сказал спасибо: 378
Сказали Спасибо 1,368 раз(а) в 746 сообщении(ях)
RY723 на пути к лучшему
По умолчанию Re: Программный watchdog

Если использовать прерывания. Другим независимым способом - никак. Прерывание может быть и внешним. По прерыванию вызываются подпрограммы, работающие с ячейками памяти, расположенными в разных областях памяти (и в которых помещены известные константы). Лучше, если будет несколько последовательных вызовов (цепочкой) этих подпрограмм. Для экономии места - рекурсией. Но этой штукой (рекурсией) никогда не пользовался.
При разрушении констант, результат будет отличаться от ожидаемого. При зависании (если стек разрушен) - сработает внешний WDT.
RY723 вне форума  
Непрочитано 31.10.2010, 12:13  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,537
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Программный watchdog

Почитайте тему Самодиагностика PIC. Тесты по IEC 60730.

Последний раз редактировалось realid; 31.10.2010 в 12:16.
realid вне форума  
Сказали "Спасибо" realid
alexgap (31.10.2010)
Непрочитано 31.10.2010, 12:38  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Программный watchdog

realid, огромное спасибо! Там есть вся информация, плюс документы по имеющимся на эту тему стандартам с примерами реализации.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программный сброс в мега под IAR maxik_k42 Микроконтроллеры, АЦП, память и т.д 10 13.09.2010 19:16
AVR Watchdog alberio Микроконтроллеры, АЦП, память и т.д 7 19.08.2010 14:26


Часовой пояс GMT +4, время: 05:25.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot