Перейти к содержанию
    

Опрос по системам хранения данных

Разбираюсь сейчас с подходами к хранению данных на микроконтроллерных устройствах в своей работе. Мне требуется хранить довольно стандартные данные - настройки системы, пользовательские настройки, обновления прошивок, логи, исторические данные от сенсоров. Один из проектов это IoT сенсор в bluetooth mesh сети, который может автономно собирать данные и потом постепенно их отдавать, при этом может локально соединяться с мобильным приложением и иметь пользовательские настройки. Хотелось бы послушать советы embedded разработчиков, и не обязательно супер экспертов. Собрал все интересующее в опросник, если не трудно, пройдите, пожалуйста (займет где-то 5-15 минут) https://forms.gle/Z7jD3uvtLg8PeNat7

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, EdgeAligned сказал:

Микросхема NAND Flahs, micro-SD карта в слоте.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как-то совсем немного участников опроса, подскажите, может как-то можно улучшить его? Или просто не так много людей погружаются в тему встроенных систем хранения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видимо, да 🙂 В основном вон там в соседней теме думают, как соединить УАРТ-ом два МК на проводках, а такие сложности, как системы хранения, тут фантазии уже столько не наберется 🙂 

В принципе, тут как бы вариант, как уже озвучил - микросхема NAND Flash или же microSD карта в слоте. Ну и файловая система FatFS, потому что она неплохо интегрируется с FreeRTOS. Хотя мы тут конечно не знаемчто у вас там за система, на каком МК и как сделато. ESP, не?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 minutes ago, Segment said:

Как-то совсем немного участников опроса, подскажите, может как-то можно улучшить его? Или просто не так много людей погружаются в тему встроенных систем хранения?

Ваш вопрос напомнил мне про разговор двух друзей:

-- Вась, поедем на рыбалку?
-- Ну, я не знаю, я на рыбалку никогда не ездил...
-- А чего там знать-то? Наливай да пей!

Для встроенных систем возможности чаще всего такие:
1. Хранить во встроеннном FLASH микроконтроллера
2. Хранить во встроеннном EEPROM микроконтроллера
3. Хранить во внешнем I2C EEPROM
4. Хранить во внешнем SPI FLASH
5. Хранить во внешнем SPI FRAM
6. Хранить во внешнем micro-SD

Это самые "ходовые" варианты, плюс все их комбинации. А далее - исходя из здравого смысла и технических характеристик каждого типа памяти.

Например, я чаще всего использую комбинацию (1) и (3), где в (1) храню постоянные и неизменяемые данные (ака серийный номер, номера ревизий и т.д).

Бывает, использую комбинацию (1), (2) и (3), если (2) есть в наличии.

Иногда использую комбинацию (1) и (4), чаще всего в случаях, когда (4) уже есть в наличии (ака модули ESP32 и т.п.)

Редко когда, но бывает использую комбинацию (1) и (5), когда запись данных должна быть мгновенной

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Встроенный флеш МК - решение "от бедности", ныне устаревшее и спорное по надежности.
2. Встроенный ЕЕПРОМ МК - маловато и медленно.
3. Аналогично.
4. Уже лучше, в основном годится для статических или нечасто изменяемых данных.
5. Невысокий объем
6. Годный вариант для больших объемов и файловой системы.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 minutes ago, EdgeAligned said:

1. Встроенный флеш МК - решение "от бедности", ныне устаревшее и спорное по надежности.
2. Встроенный ЕЕПРОМ МК - маловато и медленно.
3. Аналогично.
4. Уже лучше, в основном годится для статических или нечасто изменяемых данных.
5. Невысокий объем
6. Годный вариант для больших объемов и файловой системы.
 

К сожалению, ваши критерии "хорошо - плохо" слишком предвзяты. Очевидно, вам глаза застит какая-то конкретная задача, для которой micro-SD подходит лучше, несмотря на ее совершенно очевидную ненадежность по сравнению с прочими перечисленными. Тогда как по надежности хранения вариант (1) стоит на первом месте, а вариант (2) - на втором. Скажем, хранить серийный номер устройства где-бы то ни было, кроме (1) - очень плохо.   А для хранения, скажем, калибровок датчиков (2) подходит лучше всех прочих вариантов. 

Мне micro-SD совсем не подходит, поэтому я их не использую. Я предпочитаю хранить данные в облаке. А для временного хранения, прежде чем данные переправлены в облако, мне хватает вариантов (3)...(5)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я исхожу из описанного топикстартером здесь и в его опросе (вы опрос видели?). Посему, из всех ваших вариантов под эту задачу с файловой системой хорошо подходит только микро-СД. От себя еще добавлю микросхему NAND Flash как компактное и достаточно ёмкое решение.
Варианты со встроенной в МК флеш или еепром, а так же с внешней еепром вообще не подходят. Встроенная флеш имеет определенные сложности с записью, еепром - медленная запись и небольшой объем.

Вариант (1) годится только для постоянного хранения постоянных или очень редко изменяемых данных. Вариант (2) ограничен тем, что не во всех МК есть встроенная ЕЕПРОМ, а так же тем, что она всё-таки довольно медленная на запись.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я исхожу из текста в первом посте ТС. Из которого наличие FS никак не следует. Что подтверждается моим собственным опытом: решая аналогичные задачи, я не использую FS за ненадобностью. Вместо этого данные хранятся в облаке в DB. Когда-то давно, лет 30 назад, мы тоже полагались на FS, но со временем отказались от этого ошибочного для нас решения. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А я исхожу из того, что было затронуто в опросе в целом. Там как раз были вопросы работы с файловой системой и иерархией файлов. Как понимаете, файловая система на вариантах (1)-(3) вообще не возможна, либо затруднена.

Еще один вариант - внешняя SDRAM или псевдо-SDRAM. Число перезаписей неограничено, скорость записи и чтения очень высокая, объем достаточный. Единственная проблема - энергозависимость.

 

Кстати, 30 лет назад с облаком вы не могли работать по той причине, что его не было 🙂 Да и файловая система на микроконтроллерах того времени была, как бы это сказать помягче, бессмысленной. Сейчас же, когда нет таких жестких ограничений по емкости и типу носителей, нет нужды экономить каждый байт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, EdgeAligned said:

Кстати, 30 лет назад с облаком вы не могли работать по той причине, что его не было 🙂 Да и файловая система на микроконтроллерах того времени была, как бы это сказать помягче, бессмысленной. Сейчас же, когда нет таких жестких ограничений по емкости и типу носителей, нет нужды экономить каждый байт.

Вы почитайте внимательней, что я написал. 30 лет назад мы использовали FS, но ни о каком облаке и речи не было. Однако уже тогда (в РС) могли бы использовать DB вместо FS, жаль что не дотумкали.

А сейчас мы используем облако и DB в облаке. И никакая FS нам нигде и нафиг не нужна, поэтому и SD карты нам без надобности. Для промежуточного хранения данных, прежде чем они переправлены в облако, нам более чем хватает EEPROM или FRAM. Даже FLASH не нужна.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как в ЕЕПРОМ хранить обновление прошивки? (про это написал топикстартер)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, EdgeAligned said:

А как в ЕЕПРОМ хранить обновление прошивки? (про это написал топикстартер)

Хм... Уж не знаю что он имел ввиду, но у меня новая прошивка для МК сначала записывается (частями, по RF каналу) в EEPROM, и только посли валидации переписывается во флэш МК. Так что для меня это звучит вполне осмысленно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, =AK= said:

у меня новая прошивка для МК сначала записывается (частями, по RF каналу) в EEPROM, и только посли валидации переписывается во флэш МК.

Использую в ПЛК схожую схему. Гружу программу пользователя во внешний флэш, а перед исполнением проверяю CRC и гружу на исполнение во флэш МК, предварительно сравнив содержимое внешнего и внутреннего флэш. При таком подходе программа сохраняется в двух микросхемах, МК и внешней флэш, что повышает шансы на сохранение программы в случае повреждения одной из микросхем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...