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

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

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

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


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

В 03.08.2024 в 22:51, EdgeAligned сказал:

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

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

В 31.07.2024 в 20:17, Segment сказал:

Хотелось бы послушать советы embedded разработчиков, и не обязательно супер экспертов.

бесполезное занятие -  у каждого свои требования, сколько вариантов накопителей, столько и мнений)

Лучше напишите свою задачу, тогда можно осмысленно обсудить.

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


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

Ну если старенький STM32F429 или даже STM32F407 считать высоконадежным, то таки да 🙂 2 МБ (1 МБ) флеша разделены на два идентичных банка. Пока код работает из одного банка, в другой грузится обновление. Затем после проверки целостности переключаем банки и работает вторая прошивка. Если с ней что-то не так, просто переключаемся обратно на предыдущий банк. "Высоконадежно" 🙂 

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


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

Автор в общих чертах и описал свою задачу - некие датчики собирают данные, логи, затем по запросу выдают их куда-то вовне. Так же есть пользовательские настройки и возможность обновления прошивки МК. Однако, в опросе автор сделал упор вообще на файловую систему.
Как вариант, если накапливаемые данные не слишком велики, их можно вообще хранить в SRAM микроконтроллера. Поскольку устройство, скорее всего, с батарейным питанием. Пользовательские настройки можно хранить во встроенной ЕЕПРОМ (при её наличии).

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


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

Если носитель не съемный, как, например SD карта, то файловая система вообще не нужна.
Файловая система нужна, если данные пишутся на SD карту и эту карту потом втыкаем в компьютер для считывания данных.

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


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

1 hour ago, dimka76 said:

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

ФС это слой абстракции для хранения данных, не обязательно она должна быть распространённой и с чем-то совместимой. На верхний уровень даёт работу с непрерывными блоками данных (файлами) а на нижнем уровне разбирается с конкретным носителем, куда записать новые данные, как потом их читать, когда и как стирать секторы flash, делать выравнивание износа и т.д. Требования к ФС в разных случаях разные, бывают примитивные, но это все равно можно назвать ФС.

Изменено пользователем amaora

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


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

21 час назад, HardEgor сказал:

Лучше напишите свою задачу, тогда можно осмысленно обсудить.

Примерно я ее описал в первом сообщении. Но если чуть более детально, то есть возможность поставить либо nand, либо nor чтобы поверх обернуть чем-то достаточно надежным и простым в обработке, на десяток мегабайт. Мне не обязательно, чтобы формат файловой системы был с чем-то совместим (например, с тем же fat32). При этом мне не особо и нужны директории и файлы, вероятно будет достаточно что-то вроде ключ-значение.

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


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

NOR лучше и быстрее работает с произвольным доступом, но стоимость байта памяти выше, чем у NAND. В вашем случае, как я понимаю, произвольный доступ к отдельным ячейкам не требуется. Как впрочем и большой емкости тоже не требуется.

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


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

Ответ на вопрос ТС фактически зависит от 2 факторов: объем сохраняемых данных и период их сохранения/перезаписи. Скажем, сохранять 100 байт раз в 10 минут или раз в неделю. Или 100 килобайт раз в 10 миллисекунд. Считаем максимальный объем хранимых данных, исходя из этого выбираем память - если объем сотня мегабайт и больше - NAND flash напрямую или в виде SD карты. Если меньше - NOR flash. Если объем единицы-десятки килобайт, но частая перезапись - EEPROM или ее эмуляция на NOR-flash (можно и на встроенной в контроллер). Если период перезаписи нужен очень маленький - можно рассмотреть MRAM.

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


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

После долгих мытарств только такой подход считаю надежным. Кольцевой буфер на NOR Flash. Перепробовал множество файловых систем, в том числе с журналированием и выравниванием износа.

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

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


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

В 06.08.2024 в 10:44, turnon сказал:

MicroSD вообще не рассматриваю из-за разьема

Я еще видел SD карты в корпусе smd, как насчет них? Или тот же eMMC?

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


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

18 hours ago, Segment said:

Я еще видел SD карты в корпусе smd, как насчет них? Или тот же eMMC?

Это где такие водятся?

И если вы их называете SD карты, то это 4 битный параллельный канал данных, а eMMC я видел обычно 8 бит. Но суть одна - NAND с контроллером интерфейса и, возможно, контроллером износа ячеек. Из плюсов - простота использования и объем. 

Минусом такого решения может стать необходимость выделения буфера примерно на 0.5...1 секунду записи данных, что нужно при непрерывной записи данных (т.к. контролллер флешки иногда чем-то занимается во время записи), а если там еще и обертка из файловой системы, то надо еще учесть задержки на поиск системой свободных кластеров при фрагментации (это для FAT32, может есть более быстрые ФС). Для ПК буфер не проблема, а вот в контроллере может и не быть несколько лишних сотен килобайт.

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


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

19 часов назад, kochevkv сказал:

Это где такие водятся?

Я про что-то подобное https://www.lcsc.com/datasheet/lcsc_datasheet_2207051415_MK-MKDV8GIL-AS_C379094.pdf

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


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

1 hour ago, Segment said:

Да, по описанию обычная SD карта в корпусе микросхемы. Спасибо за даташит, я на такие не натыкался

Изменено пользователем kochevkv

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


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

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

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

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

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

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

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

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

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

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