Устройства хранения данных SPI: (микро) SD-карта, DataFlash или последовательная EEPROM?


8

Я пересматриваю некоторые из моих привычек дизайна, и один из них находится под пристальным вниманием: устройство хранения на основе SPI - это (микро) SD-карты, из-за их соотношения цены и емкости и, как правило, более высоких скоростей.

Среди трех основных типов запоминающих устройств на основе SPI - (микро) SD-карта, DataFlash и более простая 25Cxxсерия SPI EEPROM (а также 24Cxxучитывается встроенная EEPROM на микроконтроллерах и I2C EEPROM), которая является подходящей средой для данных случаев использования ниже? Имейте в виду, что я использую все носители в качестве необработанных блочных устройств, поэтому аргумент "SD-карта нуждается в файловой системе" не имеет значения

Случаи использования:

  • Конфигурация системы и данные калибровки. Примеры: MAC-адрес для интерфейса Ethernet, измеренное напряжение эталонного напряжения на плате.
  • Журналы. Пример: полученные данные от датчиков.
  • Код и ресурсы кода (слишком большие для размещения в памяти программы или должны переноситься переносимо.) Пример: обновления системы, строки интернационализации и локализации, ресурсы пользовательского интерфейса, шрифты.
  • Безопасность и управление цифровыми правами. Пример: криптографические ключи (открытые и / или закрытые, симметричные и / или асимметричные), цифровые подписи.

1
Ответ в большинстве случаев: это зависит.
Турбо J

1
голые SPI-флеш-чипы могут быть намного меньше и дешевле, чем SD-карты, я видел несколько 2-мегабайтных BGA-компонентов за 2 доллара или около того, и они имеют размер 1,8x2,5 мм, размер зерна риса
Sam

Ответы:


11

В основном выбор зависит главным образом от двух критериев: большие или маленькие данные для хранения и часто ли они перезаписываются или нет:

  • EEPROM отлично подходит для небольших данных, которые часто меняются. Причина в том, что он продается только для небольших размеров, но обычно его можно стирать однобайтово. Кроме того, выносливость EEPROM очень высока (миллионы циклов).
  • Flash отлично подходит для больших данных, которые меняются не часто. Это доступно дешево для больших размеров, но когда вам нужно перезаписать данные, вы можете сделать это только для всей страницы, которая может быть несколько кБ. И выносливость больше в диапазоне 100.000 циклов.

Я не буду вдаваться в подробности о разнице между ними, она уже была рассмотрена:

Что касается SD-карт: SD-карта - это съемная вспышка, и поэтому она соответствует тем же ограничениям, что и обычная вспышка. Тем не менее, он обычно использует флэш-память NAND, в то время как чипы серийной флэш-памяти используют флэш-память NOR. NAND flash более удобен для записи (меньшие страницы, более быстрое стирание), но менее надежен. Вы можете получить плохие блоки через некоторое время, если вы делаете много записей. Выравнивание износа может смягчить это, но это не всегда реализуется в дешевых SD-картах ( правда ли, что SD / MMC-карта выполняет выравнивание износа со своим собственным контроллером? ). Вы могли бы реализовать это в программном обеспечении, но это не тривиально.

Однако выбор интерфейса (I2C или SPI) совершенно не связан. I2C медленнее, но использует меньше контактов. I2C EEPROM также обычно дешевле, чем SPI, но вы обычно решаете использовать один или другой в зависимости от того, как вы приписали контакты MCU в своем приложении.

Теперь вы указали конкретные варианты использования, поэтому давайте рассмотрим их один за другим:

Конфигурация системы и данные калибровки

Ну, этот не накладывает много ограничений: эти данные обычно очень малы и не часто меняются. Итак, самое простое - поставить его там, где он стоит дешевле:

  • либо внутренняя MCU EEPROM, если у вас есть
  • или какая-нибудь внешняя вспышка, если она вам уже нужна для других целей
  • или, в конце концов, SD-карту, если у вас нет другого постоянного хранилища. Однако обратите внимание, что, поскольку SD-карту можно в конечном итоге извлечь и вставить в другое устройство, данные калибровки больше не будут согласованными. Так что вы можете избежать этого.

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

Обратите внимание, что в конкретном случае MAC-адресов существуют EEPROM, которые продаются с предварительно запрограммированным MAC-адресом внутри, гарантированно уникальным (например, Microchip 24AAxxx). Так что это будет путь, если вы не были официально приписаны блоком адресов IEEE или не хотите рисковать, используя локально приписанные адреса.

бревна

Это обычно большое и часто меняется. Большой означает вспышку, а не EEPROM. Таким образом, вы можете использовать флэш-чип или SD-карту, но если журналы действительно часто переписываются, лучше использовать SD-карту. В противном случае вы рискуете изнашивать флеш-чип, и если он припаян на плате, его будет сложнее заменить, чем SD-карту. Также обратите внимание, что при записи журналов путем циклического перемещения по целым страницам флэш выравнивание износа фактически становится тривиальным.

В случае, если это небольшие бревна, вам повезло, используйте EEPROM (если выносливость приемлема).

Обратите внимание, что если выносливость является реальной проблемой, существуют дополнительные решения с практически неограниченной выносливостью и относительно большими размерами: F-RAM и MRAM. Но это стоило руки и ноги, и вы не упомянули их как вариант. Также обратите внимание, что эти две новые технологии достигают намного лучшей скорости стирания / записи, чем флэш-память, поэтому для непрерывной регистрации это может быть интересно.

Код и кодовые ресурсы

Обычно большой, но не часто меняется. Для этого идеально подойдет внешняя флеш-микросхема (обычно NOR).

Безопасность и управление цифровыми правами

Этот хитрее. Если он действительно содержит конфиденциальные данные, которые никогда не следует извлекать, лучше использовать смарт-карту в форм-факторе SIM-карты (в конечном счете, с некоторыми встроенными программами). Но это, конечно, сильно усложняет дизайн . Альтернативным (более простым и дешевым) решением может быть выделенный чип безопасности, такой как серия Atmel AT88SC, но команды, доступные на чипе, должны иметь смысл для вашего конкретного приложения. Что может быть сделано на этом чипе и при каких условиях должно быть тщательно спланировано.

Если вам нужна просто «базовая» защита, проще всего использовать внутреннюю микропрограмму EEPROM. Он не будет таким безопасным, как смарт-карта или специальный чип (который содержит специальные меры безопасности, такие как защита от легких атак, контрмеры против анализа питания / неисправностей внутри чипа и т. Д.), Но это лучшее, что вы можете делать.

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

Наконец, SD-карта определенно является худшей идеей, поскольку она является съемной. Затем конфиденциальные данные могут быть считаны с ПК, даже не требуя какого-либо специального оборудования.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.