ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
203203 Топик полностью
testerplus (23.07.2010 21:39, просмотров: 195) ответил koyodza на по пунктам:
По пунктам 2 и 4 возражения считаю несерьезными. А по первому и третьему я бы поспорил, но уже устал бодаться. (Надеюсь, в п.3 про АВР и местоположение EEPROM - это шутка?)  Вот случай, где дублирование не спасет: По п.1: вы производите запись в первую страницу, во время этого происходит сбой (пускай пропадание питания, только не надо про кондеры по питанию говорить). Наверняка знаете, что запись производится инжекцией электронов в плавающий затвор транзистора, что повышает его пороговое напряжение открытия. Этот процесс требует длительного времени (относительно длительного, конечно, около 1мс), т.к. пишется много данных. Если запись прервать в середине цикла, то в затворе некоторых транзисторов может оказаться недостаточный заряд, который при различных условиях (напряжение источника питания +/- милливольты, температура, внешнее магнитное поле, наконец утечка заряда (это годы, но все же)) будет то достаточно открывать транзистор, то недостаточно, т.е. из него будет читаться то "0" то "1" (или 1000 раз "0", один раз "1"). При нехороших условиях записываемые данные могут попортиться в нескольких местах, которые при подсчете контрольной суммы взаимокомпенсируют друг друга, т.к. для записываемых данных обычно применяют очень простые алгоритмы подсчета (только не говорите, что контрольную сумму для записываемых данных вычисляете сдвиговым регистром с обратной связью, не поверю). После включения питания Вы видите, что данные в первой странице есть, CRC сходится, а во второй - нет. В результате Вы достоверными данными счиатете те, которые были записаны с ошибкой. А про правильные данные от предыдущей записи забываете. Вот и все. Со стиранием дела еще хуже, т.к. процесс выталкивания заряда из затвора более длительный, тут всю страницу целиком можно сделать "мусорной". (И не забывайте, что не все умные. Некоторые так вообще без CRC пишут) По п.3: понятно, что страницы раздельные, но есть опасность. Вот rezident в соседней ветке жалуется, что есть проблемы с переменными (только он не написал, какие, но, я так понимаю, портятся их значения). Вот и проблема при обращении к нужной странице, номер которой находится в переменной. У него ситуация, в которой проблему сразу удалось обнаружить, а бывает программа несколько лет работает перед тем, как накосячить. Не все МК имеют защиту конкретных блоков от записи. P.S. Чтобы прекратить наш беспредметный спор (уже спать пора): 1) Я не говорю, что EEPROM лучше Flash во всех отношениях. Эти два вида памяти имеют разные применения (они ведь на рынке практически не конкурируют), имеют свои преимущества и недостатки. Я спор начал с того, что сказал, что флеш - не очень удачный выбор для хранения ответственных данных, которые нельзя терять. Это не значит, что надо про него забыть и везде тыкать EEPROM'ы. Но уровень использования встроенной flash - хозяйственно бытовые приборы. 2) Я не говорю, что везде и всю информацию нужно сохранять трижды, а потом выбирать сравнением. Просто там, где нужна гарантия правильного среза данных, троирование с последующим сравнением - единственный выход. Дублирования мало. 3) Повторюсь, что считаю правильным появление на рынке безеепромных микросхем. Это, конечно, скорее следствие борьбы производителей за низкие цены, но когда разработчику нужна именно EEPROM, можно поставить внешнюю (или взять другой контроллер, где она есть внутри)