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

Хранение параметров в EEPROM. Контрольная сумма

Приветствую! Планируется хранить некие настройки во внешнем EEPROM.

Естественно возник вопрос о гарантии достоверности прочитанных параметров. Всякое ведь может быть? Правильно?

Какой вариант для этого оптимален?

1) Подсчет одной контрольной суммы на весь массив параметров (записанных данных) и запись его в начало EEPROM перед массивом параметров.

2) Отдельная CRC Для каждого параметра (например +1 байт к каждому параметру размерностью U32).

3) ?

 

Правильно ли хранить CRC Тоже в EEPROM, если как раз в чтении из EEPROM "мы слегка сомневаемся"?

Какой алгоритм CRC (реализацию на Си) порекомендуете?

Какие еще есть ньюансы при хранении параметров в EEPROM?

 

Заранее спасибо за помощь.

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


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

На мой взгляд вариантов два:

- eeprom исправна;

- eeprom неисправна (читает/пишет с ошибками, и ее надо менять).

 

CRC массива данных ответит на этот вопрос.

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


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

На мой взгляд вариантов два:

- eeprom исправна;

- eeprom неисправна (читает/пишет с ошибками, и ее надо менять).

 

CRC массива данных ответит на этот вопрос.

 

спасибо за ответ.

 

Т.е. наверное принципиально достаточно после инициализации EEPROM проверить тестовой записью/чтением (1-2 раза) определенных значений и проверкой, чтобы сделать заключение о работе памяти и дальше не заморачиваться?

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


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

Т.е. наверное принципиально достаточно после инициализации EEPROM проверить тестовой записью/чтением (1-2 раза) определенных значений и проверкой, чтобы сделать заключение о работе памяти и дальше не заморачиваться?
А писать-то зачем? Надо только проверять правильности записи после внесения изменений. Если параметры меняются часто, то предпочтительно писать CRC для каждого параметра, так как ресурс на запись у EEPROM не бесконечен.

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


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

Приветствую! Планируется хранить некие настройки во внешнем EEPROM.

Естественно возник вопрос о гарантии достоверности прочитанных параметров. Всякое ведь может быть? Правильно?

Какой вариант для этого оптимален?

1) Подсчет одной контрольной суммы на весь массив параметров (записанных данных) и запись его в начало EEPROM перед массивом параметров.

2) Отдельная CRC Для каждого параметра (например +1 байт к каждому параметру размерностью U32).

3) ?

 

Правильно ли хранить CRC Тоже в EEPROM, если как раз в чтении из EEPROM "мы слегка сомневаемся"?

Какой алгоритм CRC (реализацию на Си) порекомендуете?

Какие еще есть ньюансы при хранении параметров в EEPROM?

 

Заранее спасибо за помощь.

Правильно все-таки говорить о просто контрольной сумме, а CRC это ее частный случай.

 

1. Нужно защититься от тривиальной ситуации "со всех адресов EEPROM читается одно и то же". Для этого в EEPROM должна быть записана какая-нибудь фраза, наличие которой проверяется програмой, ну скажем фраза "EEPROM"

2. Считаете контрольную сумму (КС) всей EEPROM и сравниваете с КС, записанной в той же EEPROM, если совпадает-то все в порядке.

 

Защищать по частям или нет- зависит от того, возможна ли работоспособность прибора при частичном слете EEPROM. То есть если возможно разделение данных на критичные и некритичные- то лучше защищать с помощью КС отдельно каждую область.

 

Насчет алгоритма подсчета КС- лучше всего CRC. как считать-зависит от того какой алгоритм быстрее работает на вашем железе. Некоторые микроконтроллеры имеют аппаратный вычислитель контрольных сумм, если это есть- однозначно нужно использовать.

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

 

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


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

Можно просто применить избыточность (например троекратную (нечётную в общем случае)) писать всё в трёх экземплярах,

а за валидный результат принимать чаще повторяющееся значение.

ИМХО так просто и надёжно.

Я такой принцип применял несколько раз в особо параноидальных случаях - работает отлично.

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


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

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

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

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

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

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

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

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

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

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