Подпись сторожевого таймера во флэш-памяти или в ОЗУ?

Раньше мы использовали сигнатуры Watchdog в наших управляющих приложениях.

В основном мы выделяли зарезервированную память в ОЗУ (неинициализированную) и использовали для хранения сигнатур сторожевого таймера.

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

Мой вопрос в том, какая память лучше для хранения сигнатур сторожевого таймера, будь то ОЗУ или флэш-память?

Ответы (2)

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

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

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

2) Сброс сторожевого таймера, вероятно, вызван ложной ошибкой в ​​аппаратной электронике. Как вы можете быть уверены, что это не скомпрометировало хранение подписей?

3) Хранение подписей во FLASH или другой энергонезависимой памяти проблематично из-за того, что может произойти тайм-аут/сброс сторожевого таймера во время хранения таких подписей.


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

Спасибо за ваш развернутый ответ. У меня есть одно сомнение относительно вашего последнего предложения: «В случаях, когда сторожевой таймер реализован вне контроллера, рассмотрите возможность добавления простой внешней схемы, которая может предоставить «причину сброса» процессору через вывод ввода-вывода. Если я это сделаю, Я получу индикацию состояния, но, поскольку процессор все еще перезагружен, у меня не будет индикации, не так ли??
@badz - Многое действительно зависит от того, как ваше оборудование реализовано в настоящее время. Мое последнее предложение было основано на системе, в которой сброс при включении питания (POR) и сторожевой таймер (WDT) реализованы вне процессора. В этом случае у вас будут схемы POR и WDT, реализованные таким образом, что POR очищает добавленный триггер, а WDT устанавливает его (либо с помощью предустановки, либо с синхронизацией по фронту). Чтобы это работало правильно, необходимо, чтобы POR и WDT были разными сигналами, прежде чем они будут объединены для сброса процессора. Обратите внимание, что в наши дни гораздо проще найти процессор с такой встроенной функцией.

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

Спасибо за ответ. У меня есть одно особое сомнение в записи в ОЗУ. Согласно определению оперативной памяти, при отключении питания информация теряется. Но как неинициализированное местоположение (которое определено для подписи сторожевого таймера) по-прежнему сохраняет сохраненное значение. Я пропустил некоторые основные здесь?
Достаточно короткий сбой питания сохранит содержимое ОЗУ, как указано в другом ответе. Кроме того, не уверен, где в вопросе подразумевается, что подпись нужно часто переписывать.