Segment 3 31 июля Опубликовано 31 июля · Жалоба Разбираюсь сейчас с подходами к хранению данных на микроконтроллерных устройствах в своей работе. Мне требуется хранить довольно стандартные данные - настройки системы, пользовательские настройки, обновления прошивок, логи, исторические данные от сенсоров. Один из проектов это IoT сенсор в bluetooth mesh сети, который может автономно собирать данные и потом постепенно их отдавать, при этом может локально соединяться с мобильным приложением и иметь пользовательские настройки. Хотелось бы послушать советы embedded разработчиков, и не обязательно супер экспертов. Собрал все интересующее в опросник, если не трудно, пройдите, пожалуйста (займет где-то 5-15 минут) https://forms.gle/Z7jD3uvtLg8PeNat7 Понимаю, что до универсального опроса это не дотягивает, поэтому если в вашей практике очень большое разнообразие от очень маленьких систем хранения для нескольких байт до больших логгеров на гигабайты, то можно при заполнении опроса опираться на наиболее сложный или показательный проект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 84 31 июля Опубликовано 31 июля · Жалоба Микросхема NAND Flahs, micro-SD карта в слоте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Segment 3 31 июля Опубликовано 31 июля · Жалоба 6 часов назад, EdgeAligned сказал: Микросхема NAND Flahs, micro-SD карта в слоте. Можете ли рассказать подробнее о Вашей архитектуре? Можно тут или через опрос, там есть соответствующие поля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Segment 3 3 августа Опубликовано 3 августа · Жалоба Как-то совсем немного участников опроса, подскажите, может как-то можно улучшить его? Или просто не так много людей погружаются в тему встроенных систем хранения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 84 3 августа Опубликовано 3 августа · Жалоба Видимо, да 🙂 В основном вон там в соседней теме думают, как соединить УАРТ-ом два МК на проводках, а такие сложности, как системы хранения, тут фантазии уже столько не наберется 🙂 В принципе, тут как бы вариант, как уже озвучил - микросхема NAND Flash или же microSD карта в слоте. Ну и файловая система FatFS, потому что она неплохо интегрируется с FreeRTOS. Хотя мы тут конечно не знаемчто у вас там за система, на каком МК и как сделато. ESP, не? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 3 августа Опубликовано 3 августа · Жалоба 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), когда запись данных должна быть мгновенной Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 84 3 августа Опубликовано 3 августа · Жалоба 1. Встроенный флеш МК - решение "от бедности", ныне устаревшее и спорное по надежности. 2. Встроенный ЕЕПРОМ МК - маловато и медленно. 3. Аналогично. 4. Уже лучше, в основном годится для статических или нечасто изменяемых данных. 5. Невысокий объем 6. Годный вариант для больших объемов и файловой системы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 3 августа Опубликовано 3 августа · Жалоба 22 minutes ago, EdgeAligned said: 1. Встроенный флеш МК - решение "от бедности", ныне устаревшее и спорное по надежности. 2. Встроенный ЕЕПРОМ МК - маловато и медленно. 3. Аналогично. 4. Уже лучше, в основном годится для статических или нечасто изменяемых данных. 5. Невысокий объем 6. Годный вариант для больших объемов и файловой системы. К сожалению, ваши критерии "хорошо - плохо" слишком предвзяты. Очевидно, вам глаза застит какая-то конкретная задача, для которой micro-SD подходит лучше, несмотря на ее совершенно очевидную ненадежность по сравнению с прочими перечисленными. Тогда как по надежности хранения вариант (1) стоит на первом месте, а вариант (2) - на втором. Скажем, хранить серийный номер устройства где-бы то ни было, кроме (1) - очень плохо. А для хранения, скажем, калибровок датчиков (2) подходит лучше всех прочих вариантов. Мне micro-SD совсем не подходит, поэтому я их не использую. Я предпочитаю хранить данные в облаке. А для временного хранения, прежде чем данные переправлены в облако, мне хватает вариантов (3)...(5) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 84 3 августа Опубликовано 3 августа · Жалоба Я исхожу из описанного топикстартером здесь и в его опросе (вы опрос видели?). Посему, из всех ваших вариантов под эту задачу с файловой системой хорошо подходит только микро-СД. От себя еще добавлю микросхему NAND Flash как компактное и достаточно ёмкое решение. Варианты со встроенной в МК флеш или еепром, а так же с внешней еепром вообще не подходят. Встроенная флеш имеет определенные сложности с записью, еепром - медленная запись и небольшой объем. Вариант (1) годится только для постоянного хранения постоянных или очень редко изменяемых данных. Вариант (2) ограничен тем, что не во всех МК есть встроенная ЕЕПРОМ, а так же тем, что она всё-таки довольно медленная на запись. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 3 августа Опубликовано 3 августа · Жалоба Я исхожу из текста в первом посте ТС. Из которого наличие FS никак не следует. Что подтверждается моим собственным опытом: решая аналогичные задачи, я не использую FS за ненадобностью. Вместо этого данные хранятся в облаке в DB. Когда-то давно, лет 30 назад, мы тоже полагались на FS, но со временем отказались от этого ошибочного для нас решения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 84 3 августа Опубликовано 3 августа · Жалоба А я исхожу из того, что было затронуто в опросе в целом. Там как раз были вопросы работы с файловой системой и иерархией файлов. Как понимаете, файловая система на вариантах (1)-(3) вообще не возможна, либо затруднена. Еще один вариант - внешняя SDRAM или псевдо-SDRAM. Число перезаписей неограничено, скорость записи и чтения очень высокая, объем достаточный. Единственная проблема - энергозависимость. Кстати, 30 лет назад с облаком вы не могли работать по той причине, что его не было 🙂 Да и файловая система на микроконтроллерах того времени была, как бы это сказать помягче, бессмысленной. Сейчас же, когда нет таких жестких ограничений по емкости и типу носителей, нет нужды экономить каждый байт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 3 августа Опубликовано 3 августа · Жалоба 15 minutes ago, EdgeAligned said: Кстати, 30 лет назад с облаком вы не могли работать по той причине, что его не было 🙂 Да и файловая система на микроконтроллерах того времени была, как бы это сказать помягче, бессмысленной. Сейчас же, когда нет таких жестких ограничений по емкости и типу носителей, нет нужды экономить каждый байт. Вы почитайте внимательней, что я написал. 30 лет назад мы использовали FS, но ни о каком облаке и речи не было. Однако уже тогда (в РС) могли бы использовать DB вместо FS, жаль что не дотумкали. А сейчас мы используем облако и DB в облаке. И никакая FS нам нигде и нафиг не нужна, поэтому и SD карты нам без надобности. Для промежуточного хранения данных, прежде чем они переправлены в облако, нам более чем хватает EEPROM или FRAM. Даже FLASH не нужна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 84 3 августа Опубликовано 3 августа · Жалоба А как в ЕЕПРОМ хранить обновление прошивки? (про это написал топикстартер) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 3 августа Опубликовано 3 августа · Жалоба 5 minutes ago, EdgeAligned said: А как в ЕЕПРОМ хранить обновление прошивки? (про это написал топикстартер) Хм... Уж не знаю что он имел ввиду, но у меня новая прошивка для МК сначала записывается (частями, по RF каналу) в EEPROM, и только посли валидации переписывается во флэш МК. Так что для меня это звучит вполне осмысленно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 44 3 августа Опубликовано 3 августа · Жалоба 3 hours ago, =AK= said: у меня новая прошивка для МК сначала записывается (частями, по RF каналу) в EEPROM, и только посли валидации переписывается во флэш МК. Использую в ПЛК схожую схему. Гружу программу пользователя во внешний флэш, а перед исполнением проверяю CRC и гружу на исполнение во флэш МК, предварительно сравнив содержимое внешнего и внутреннего флэш. При таком подходе программа сохраняется в двух микросхемах, МК и внешней флэш, что повышает шансы на сохранение программы в случае повреждения одной из микросхем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться