Раньше мы использовали сигнатуры Watchdog в наших управляющих приложениях.
В основном мы выделяли зарезервированную память в ОЗУ (неинициализированную) и использовали для хранения сигнатур сторожевого таймера.
При включении система проверяет сигнатуру сторожевого таймера, и на основании этого мы определяли, произошел ли сброс сторожевого таймера или обычный сброс.
Мой вопрос в том, какая память лучше для хранения сигнатур сторожевого таймера, будь то ОЗУ или флэш-память?
Использование сигнатур хранилища памяти для определения того, является ли сторожевой таймер причиной вашего последнего сброса, является схемой, которой следует избегать любой ценой. Эта схема чревата проблемами и не обеспечивает надежной схемы.
Вот некоторые ключевые факторы, которые следует учитывать здесь, которые приводят к тому, что этот подход является проблематичным. (Есть и другие, так что внимательно анализируйте).
1) Подписи, хранящиеся в ОЗУ, могут быть или не быть законными после сброса и выключения питания, потому что ОЗУ может сохранять свое содержимое в течение некоторого периода времени после выключения и выключения.
2) Сброс сторожевого таймера, вероятно, вызван ложной ошибкой в аппаратной электронике. Как вы можете быть уверены, что это не скомпрометировало хранение подписей?
3) Хранение подписей во FLASH или другой энергонезависимой памяти проблематично из-за того, что может произойти тайм-аут/сброс сторожевого таймера во время хранения таких подписей.
Гораздо лучше настроить аппаратное обеспечение вашей системы с логикой, которая фиксирует «причину сброса» в специальные флоп-флопы или регистровые биты, которые программное обеспечение может опрашивать в своей последовательности запуска, чтобы определить, был ли перезапуск вызван тайм-аутом сторожевого таймера. Если ваш системный процессор не имеет такой встроенной функции, рассмотрите возможность замены другим процессором, который поддерживает эту функцию. В тех случаях, когда сторожевой таймер реализован вне контроллера, рассмотрите возможность добавления простой внешней схемы, которая может обеспечить «причину сброса» для процессора через вывод ввода-вывода.
Если вам не нужно сохранять информацию во время выключения и включения питания, лучше использовать ОЗУ, особенно если ваша подпись часто перезаписывается и может вызвать проблемы с износом флэш-памяти. Единственная другая проблема, которая может у вас возникнуть, - это если вас беспокоит стабильность источника питания, а затем переходный процесс может стереть вашу подпись.
Бадз
Майкл Карас