yurmala 0 27 апреля, 2011 Опубликовано 27 апреля, 2011 · Жалоба Приветствую! Планируется хранить некие настройки во внешнем EEPROM. Естественно возник вопрос о гарантии достоверности прочитанных параметров. Всякое ведь может быть? Правильно? Какой вариант для этого оптимален? 1) Подсчет одной контрольной суммы на весь массив параметров (записанных данных) и запись его в начало EEPROM перед массивом параметров. 2) Отдельная CRC Для каждого параметра (например +1 байт к каждому параметру размерностью U32). 3) ? Правильно ли хранить CRC Тоже в EEPROM, если как раз в чтении из EEPROM "мы слегка сомневаемся"? Какой алгоритм CRC (реализацию на Си) порекомендуете? Какие еще есть ньюансы при хранении параметров в EEPROM? Заранее спасибо за помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 27 апреля, 2011 Опубликовано 27 апреля, 2011 · Жалоба На мой взгляд вариантов два: - eeprom исправна; - eeprom неисправна (читает/пишет с ошибками, и ее надо менять). CRC массива данных ответит на этот вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yurmala 0 27 апреля, 2011 Опубликовано 27 апреля, 2011 · Жалоба На мой взгляд вариантов два: - eeprom исправна; - eeprom неисправна (читает/пишет с ошибками, и ее надо менять). CRC массива данных ответит на этот вопрос. спасибо за ответ. Т.е. наверное принципиально достаточно после инициализации EEPROM проверить тестовой записью/чтением (1-2 раза) определенных значений и проверкой, чтобы сделать заключение о работе памяти и дальше не заморачиваться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvs157 0 27 апреля, 2011 Опубликовано 27 апреля, 2011 · Жалоба Т.е. наверное принципиально достаточно после инициализации EEPROM проверить тестовой записью/чтением (1-2 раза) определенных значений и проверкой, чтобы сделать заключение о работе памяти и дальше не заморачиваться?А писать-то зачем? Надо только проверять правильности записи после внесения изменений. Если параметры меняются часто, то предпочтительно писать CRC для каждого параметра, так как ресурс на запись у EEPROM не бесконечен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 27 апреля, 2011 Опубликовано 27 апреля, 2011 · Жалоба Приветствую! Планируется хранить некие настройки во внешнем EEPROM. Естественно возник вопрос о гарантии достоверности прочитанных параметров. Всякое ведь может быть? Правильно? Какой вариант для этого оптимален? 1) Подсчет одной контрольной суммы на весь массив параметров (записанных данных) и запись его в начало EEPROM перед массивом параметров. 2) Отдельная CRC Для каждого параметра (например +1 байт к каждому параметру размерностью U32). 3) ? Правильно ли хранить CRC Тоже в EEPROM, если как раз в чтении из EEPROM "мы слегка сомневаемся"? Какой алгоритм CRC (реализацию на Си) порекомендуете? Какие еще есть ньюансы при хранении параметров в EEPROM? Заранее спасибо за помощь. Правильно все-таки говорить о просто контрольной сумме, а CRC это ее частный случай. 1. Нужно защититься от тривиальной ситуации "со всех адресов EEPROM читается одно и то же". Для этого в EEPROM должна быть записана какая-нибудь фраза, наличие которой проверяется програмой, ну скажем фраза "EEPROM" 2. Считаете контрольную сумму (КС) всей EEPROM и сравниваете с КС, записанной в той же EEPROM, если совпадает-то все в порядке. Защищать по частям или нет- зависит от того, возможна ли работоспособность прибора при частичном слете EEPROM. То есть если возможно разделение данных на критичные и некритичные- то лучше защищать с помощью КС отдельно каждую область. Насчет алгоритма подсчета КС- лучше всего CRC. как считать-зависит от того какой алгоритм быстрее работает на вашем железе. Некоторые микроконтроллеры имеют аппаратный вычислитель контрольных сумм, если это есть- однозначно нужно использовать. Если считать программно CRC, то как правило табличное вычисление быстрее, но опять же смотреть нужно насколько. часто выигрыш незначительный и можно просто циклом посчитать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 28 апреля, 2011 Опубликовано 28 апреля, 2011 · Жалоба Можно просто применить избыточность (например троекратную (нечётную в общем случае)) писать всё в трёх экземплярах, а за валидный результат принимать чаще повторяющееся значение. ИМХО так просто и надёжно. Я такой принцип применял несколько раз в особо параноидальных случаях - работает отлично. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться