реклама на сайте
подробности

 
 
> Хранение параметров в EEPROM. Контрольная сумма, ARM7. LPC24XX
yurmala
сообщение Apr 27 2011, 06:10
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 9-02-11
Из: Трехгорный
Пользователь №: 62 814



Приветствую! Планируется хранить некие настройки во внешнем EEPROM.
Естественно возник вопрос о гарантии достоверности прочитанных параметров. Всякое ведь может быть? Правильно?
Какой вариант для этого оптимален?
1) Подсчет одной контрольной суммы на весь массив параметров (записанных данных) и запись его в начало EEPROM перед массивом параметров.
2) Отдельная CRC Для каждого параметра (например +1 байт к каждому параметру размерностью U32).
3) ?

Правильно ли хранить CRC Тоже в EEPROM, если как раз в чтении из EEPROM "мы слегка сомневаемся"?
Какой алгоритм CRC (реализацию на Си) порекомендуете?
Какие еще есть ньюансы при хранении параметров в EEPROM?

Заранее спасибо за помощь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
sergeeff
сообщение Apr 27 2011, 07:03
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



На мой взгляд вариантов два:
- eeprom исправна;
- eeprom неисправна (читает/пишет с ошибками, и ее надо менять).

CRC массива данных ответит на этот вопрос.
Go to the top of the page
 
+Quote Post
yurmala
сообщение Apr 27 2011, 07:28
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 9-02-11
Из: Трехгорный
Пользователь №: 62 814



Цитата(sergeeff @ Apr 27 2011, 13:03) *
На мой взгляд вариантов два:
- eeprom исправна;
- eeprom неисправна (читает/пишет с ошибками, и ее надо менять).

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


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

Т.е. наверное принципиально достаточно после инициализации EEPROM проверить тестовой записью/чтением (1-2 раза) определенных значений и проверкой, чтобы сделать заключение о работе памяти и дальше не заморачиваться?
Go to the top of the page
 
+Quote Post
vvs157
сообщение Apr 27 2011, 07:57
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(yurmala @ Apr 27 2011, 11:28) *
Т.е. наверное принципиально достаточно после инициализации EEPROM проверить тестовой записью/чтением (1-2 раза) определенных значений и проверкой, чтобы сделать заключение о работе памяти и дальше не заморачиваться?
А писать-то зачем? Надо только проверять правильности записи после внесения изменений. Если параметры меняются часто, то предпочтительно писать CRC для каждого параметра, так как ресурс на запись у EEPROM не бесконечен.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Apr 27 2011, 21:07
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(yurmala @ Apr 27 2011, 09:10) *
Приветствую! Планируется хранить некие настройки во внешнем EEPROM.
Естественно возник вопрос о гарантии достоверности прочитанных параметров. Всякое ведь может быть? Правильно?
Какой вариант для этого оптимален?
1) Подсчет одной контрольной суммы на весь массив параметров (записанных данных) и запись его в начало EEPROM перед массивом параметров.
2) Отдельная CRC Для каждого параметра (например +1 байт к каждому параметру размерностью U32).
3) ?

Правильно ли хранить CRC Тоже в EEPROM, если как раз в чтении из EEPROM "мы слегка сомневаемся"?
Какой алгоритм CRC (реализацию на Си) порекомендуете?
Какие еще есть ньюансы при хранении параметров в EEPROM?

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

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

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

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

Насчет алгоритма подсчета КС- лучше всего CRC. как считать-зависит от того какой алгоритм быстрее работает на вашем железе. Некоторые микроконтроллеры имеют аппаратный вычислитель контрольных сумм, если это есть- однозначно нужно использовать.
Если считать программно CRC, то как правило табличное вычисление быстрее, но опять же смотреть нужно насколько. часто выигрыш незначительный и можно просто циклом посчитать.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 28 2011, 10:11
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Можно просто применить избыточность (например троекратную (нечётную в общем случае)) писать всё в трёх экземплярах,
а за валидный результат принимать чаще повторяющееся значение.
ИМХО так просто и надёжно.
Я такой принцип применял несколько раз в особо параноидальных случаях - работает отлично.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016