Цитата(Alex_St @ Mar 23 2005, 15:23)
А что в таком случае мешает использовать CRC или прочие алгоритмы контроля целостности данных? И для особо важных данных писать резервные копии?
Совершенно верно. Так делаю я - также как и Билли Гейтс.
Делаем резервные копии в количестве N штук. Снабжаем
каждую CRC16. Хочется CRC32, но для avr это все таки затруднительно.
Фактически, алгоритм такой же (или очень похожий) как у FAT.
А теперь попробуйте описать это переменной вида:
int my_var;
Конечно, можно попытаться.
Но это черезвычайно не удобно. Эта переменная должна быть удвоена,
утроена и.т.п. Как обратится к ее конкретному образу?
Или придется описывать класс MY_INT_VAR и перегружать все операции.
Или что-то вроде:
int my_var_1;
int my_var_2; /* где то далеко от _1 - но ГДЕ ? */
...
А потом массив указателей. Что-то это все не красиво.
Гораздо легче и понятней:
#define ADDR_MY_VAR 0x.....
#define OFFSET1 0x...
#define OFFSET2 0x...
а потом write_eerpom (word addr, byte dat, word offset);
byte read_eerpom (word addr, word offset);
Все просто, понятно и точно известно - где каждая переменная и
где каждая из таблиц данных (я решил сохранить это определение,
поскольку воспользовался алгоритмом как у FAT)
Цитата(Alex_St @ Mar 23 2005, 15:23)
А то, что Вы привели, относится к любым типам памяти, будь то RAM, eeprom или HDD. А не к способу их описания.
Мне кажется, вы сами себе противоречите.
Уж конечно, описание переменной в RAM сильно отличается от того,
что на HD. То, что на HD вообще как бы и не описывается - туда
доступ "описанием" нельзя обеспечить. К HD можно обратиться, как
к внешнему устройству. И к eeprom я предлагаю обращаться также.
Кроме того, RAM с одной стороны и HD, eeprom с другой - существенно
разные памяти по степени "опастности".
Дело в том, что в случае сбоя и после перезапуска RAM обновляется и
все OK. А HD и eeprom запоминают неверный результат и в этом все дело.
Вот и получается, что для работы с ними я выбрал сходные алгоритмы.
По моему, это естественно. На мой взгляд, странно предложить другое.
Применив "FAT-алгоритм" мы вдруг с удивлением обнаружим что:
1. мы можем работать с частично разрушенным физически (навсегда) eeprom
2. мы можем восстанавливать разрушенные (по любым причинам)участки eeprom
3. мы можем не ставить больше системный монитор (экономия $0.5/шт)
4. мы не нуждаемся в средствах бесперебойного питания
5. мы можем наслаждаться красивым алгоритмом который изобрели сами
(увы - мы были не первые, но все-таки)
Кстати - "FAT-алгоритм" работает в IBM-PC, да еще как!!!!!
Просто мы не знаем об этом.
Но однажды, когда посыпался мой Fujitsu - 20гб, я вдруг получил
сообщение:
что то вроде: "Обе фат коррупт, не могу починить..."
После этого диск я сдал назад в Техмаркет, а сам стал делать
от 3 до 6 дублей в eeprom
<_<