Какова реальная продолжительность жизни EEPROM?

ATMEL говорит, что время жизни ячейки ячейки EEPROM составляет около 100 000 циклов записи /ячейки. Действительно ли это, как EEPROM работает в дикой природе?

Если я не изменю значение ячейки, это ли это напряжение жизни? Например, если я снова и снова записываю значение 0xFF в одну и ту же ячейку, это может отличаться от записи 0x00, 0xFF, 0x00 и т. Д.

19 голосов | спросил Marlon Abeykoon 15 FebruaryEurope/MoscowbSat, 15 Feb 2014 08:09:14 +0400000000amSat, 15 Feb 2014 08:09:14 +040014 2014, 08:09:14

3 ответа


18

Как вы заявляете, внутренняя EEPROM имеет срок службы 100 000 циклов записи. Это не догадка - очень значительная часть ATmega328 достигнет этого номера без проблем. Я тестировал три процессора раньше, и все достигли 150 000 циклов без проблем.

Важно отметить режим сбоя EEPROM. Большинство проектов «EEPROM destroyer» многократно читают /записывают до тех пор, пока данные не будут записаны вообще. До этого момента EEPROM по-прежнему будет поврежден. Это проявляется в том, что данные не сохраняются в течение разумного периода времени. Неразумно полагаться на более чем 100 000 циклов записи по этой причине.

EEPROM отличается от RAM на ATmega. Письмо на это не просто или быстро, но оно завернуто в дружественную библиотеку Arduino , скрывая эту сложность от пользователя.

Первым уровнем косвенности является библиотека EEPROM , которая тривиально простой], просто называя две другие функции для чтения и записи. Это вызывает eeprom_write_byte, здесь здесь .

Эта функция использует встроенную сборку, поэтому ее нелегко понять. Есть комментарий, который легко понять:

  

Установить режим программирования: стереть и записать

Это указывает на одну из сложностей в работе с EEPROM - писать на вам сначала нужно его стереть. Это означает, что если вы вызываете EEPROM.write (), он будет выполнять цикл записи независимо от значения, которое вы пишете.

Это означает, что повторная запись 0xFF, вероятно, будет иметь тот же эффект, что и запись 0xFF, 0x00,0xFF, 0x00 и т. д.

Есть способы обойти это: вы можете попробовать позвонить EEPROM.read () перед EEPROM.write (), чтобы узнать, не совпадает ли это значение, но это занимает дополнительное время.

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

ответил Cybergibbons 15 FebruaryEurope/MoscowbSat, 15 Feb 2014 11:33:52 +0400000000amSat, 15 Feb 2014 11:33:52 +040014 2014, 11:33:52
8

Однажды я провел эксперимент на внешнем EEPROM с 1 миллионом максимальных номинальных циклов. Потребовалось около 6 миллионов циклов, чтобы стать крупным коррумпированным, и до этого он прогрессировал со спорадическим количеством коррупции.

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

ответил TheDoctor 15 FebruaryEurope/MoscowbSat, 15 Feb 2014 08:47:54 +0400000000amSat, 15 Feb 2014 08:47:54 +040014 2014, 08:47:54
2

http://hackaday.com/2011/05/16 /уничтожение-ан-arduinos-ЭСППЗУ /

  

Ардуино был подключен к стенной бородавке и сидел «с дивана в течение нескольких месяцев». EEPROM увидела первую ошибку записи после 47 дней и 1230 163 циклов. Это на порядок лучше, чем спецификация на аттестате данных, но аналогична результатам аналогичных экспериментов.

ответил 80HD 15 FebruaryEurope/MoscowbSat, 15 Feb 2014 12:47:31 +0400000000pmSat, 15 Feb 2014 12:47:31 +040014 2014, 12:47:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132