Изменяется ли флэш-память при выполнении?

Мне необходимо выполнить проверку кода с помощью CRC. В этом случае все, что я делаю, это пропускаю каждый найденный байт флэш-памяти через алгоритм для вычисления CRC и сравнения результата с заранее заданным значением CRC.

Однако я зациклен на мысли, что флэш-память может измениться в какой-то момент, что приведет к сбою проверки CRC.

Если предположить, что код больше не трогается, возможно ли, что флэш-память изменится во время выполнения? Если да, то что может вызвать его изменение? И как мне избежать указанного изменения?


person RCRod21    schedule 23.11.2016    source источник
comment
Вы не говорите, что это NAND или NOR вспышка. Основной режим отказа для NOR flash состоит в том, что ячейка либо не стирается, либо не записывается. Пока данные во флеш-памяти NOR только читаются, они должны оставаться нетронутыми в течение некоторого времени. Проверьте свой лист данных на предмет времени хранения. Помимо сбоев записи и стирания, флэш-память NAND может нарушать чтение. То есть чтение ячейки может вызвать изменения в других соседних ячейках. Для правильного использования флэш-памяти NAND требуется ECC.   -  person Sean    schedule 24.11.2016
comment
Весь смысл добавления CRC заключается в обнаружении повреждения флэш-памяти. CRC является предпочтительным алгоритмом, поскольку он хорошо обнаруживает ошибки в самой контрольной сумме, а также в данных. С достаточно большим полиномом вы обнаружите все однобитовые ошибки и большинство многобитовых ошибок.   -  person Lundin    schedule 24.11.2016


Ответы (2)


Флэш-память означает только то, что она сохраняет свое содержимое при отсутствии питания; флеш-память определенно можно стирать / перепрограммировать. Отдельный термин постоянное запоминающее устройство (ПЗУ) означает, что его нельзя изменить после начальной записи.

Но память не изменяется, если инструкция ЦП не касается ее, не ухудшается или не подвергается воздействию внешних факторов. Содержимое флэш-памяти может храниться без изменений десять лет. Обычно это количество циклов чтения / записи, которое ухудшает флеш-память до того, как это произойдет. Высокие статические электрические заряды могут повредить вспышку, но магнитные поля не должны иметь большого влияния.

Если у вас есть какое-либо влияние на технические характеристики оборудования, следует рассмотреть возможность использования ПЗУ, если это является основной целью; Для этой цели у него есть несколько преимуществ перед флеш-памятью.

Наконец, обратите внимание, что вы будете передавать «каждый байт» памяти через свой алгоритм CRC. Если правильная контрольная сумма должна храниться на том же носителе памяти, у вас возникает рекурсивная проблема попытки предварительно вычислить контрольную сумму, которая содержит ее собственную контрольную сумму. В большинстве случаев действительная контрольная сумма должна находиться в каком-то сегменте памяти, который сам не подвергается сканированию.

person Special Sauce    schedule 23.11.2016
comment
Спасибо за ответ! Вы правы, я даже не подумал об этом. Если я попытаюсь заранее определить правильную контрольную сумму, она также будет сохранена во флэш-памяти, верно? Это изменит контрольную сумму, полученную во время выполнения -.- - person RCRod21; 24.11.2016
comment
@ RCRod21 Пожалуйста, не забудьте принять ответ, когда у вас появится такая возможность. - person Special Sauce; 24.11.2016
comment
Если у вас есть продукт, который живет дольше, чем указано в спецификации хранения данных, то в какой-то момент флэш-память всегда выйдет из строя. - person Lundin; 24.11.2016

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

В большинстве случаев это не вопрос спонтанного изменения, а скорее вопрос того, что изначально написано неправильно или, возможно, защита от злонамеренного или случайного вмешательства. Если часть флэш-памяти используется для переменного энергонезависимого хранилища, вы, очевидно, не включите эту область в свой CRC. Если вы разбиваете одну и ту же флеш-память на пространство кода и хранилище NV, потенциально ошибки в коде хранилища NV могут непреднамеренно изменить пространство кода, поэтому ваш CRC защищает от этого, а также от внешнего вмешательства (например, через JTAG ).

Флэш-память подвержена длительному циклу стирания / записи, и после определенного количества циклов некоторые биты могут оставаться на высоком уровне. Выносливость варьируется от 10000 до 100000 частей и редко является проблемой для хранения кода. Флэш-память также имеет номинальное время хранения данных; обычно это 10 лет; но это рейтинг наихудшего случая в экстремальных условиях - опять же, ваш CRC защищает от этих эффектов.

person Clifford    schedule 24.11.2016