LINUX.ORG.RU

stm32, нужна нормальная библиотека эмуляции EEPROM через FLASH

 , ,


0

2

Есть App note 2954, в котором довольно понятно все расписано. Проблема в том, что нет готовой библиотеки, которую можно просто подключить и пользоваться. Обычно везде захардкожены хедеры, причем там что переменные нельзя перекрыть - вместо подключения библиотеки надо ручками копировать код и править файлы.

Из наиболее правдоподобного нашел это:

1. https://github.com/jeelabs/embello/blob/master/lib/driver/romvars.h

- Симпатично сделано, но нужен низкоуровневый драйвер FLASH (похоже что от ардуины, а у меня просто HAL)
- Нельзя уменьшить размер потребляемой памяти (она всегда выделяется под максимально возможное количество переменныx)

2. https://github.com/offchooffcho/STM32-1/tree/master/lib/EEPROMEmulation_AN

Тут код лежит в общей солянке, надо выдирать.

Еще непонятно, как сделать чтобы не хардкодить адрес свободного флеша на хвосте, а определять автоматически.

==============

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

Может кто знает или делал нормально оформленную библиотеку которую можно воткнуть в platformio как зависимость и не уродоваться с копированием/правкой исходников?

PS. Ну или может кто возьмется сделать нормально...

★★★★★

Последнее исправление: Vit (всего исправлений: 1)

Ответ на: комментарий от vromanov

Никак не связанные вещи. Эмулятор решает вопрос ресурса flash, остальное - как у обычного eeprom. Если нужны полные гарантии, это надо решать отдельно, как и для eeprom в том числе.

Vit ★★★★★
() автор топика

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

anonymous
()
Ответ на: комментарий от gag

Я в курсе про него. Но смысл в том, чтобы подключить библиотеку, а не коллекционировать в репе проекта посторонний понос.

Для libfixmath засылал PR, теперь его можно нормально в platformio втыкать. А для флеша нет (или не нашел) ничего вменяемого.

PS. Скорей бы в Rust... а с языками без пакетных менеджеров пусть долбятся самые упорные.

Vit ★★★★★
() автор топика
Ответ на: комментарий от gag

угу, работает. хотя по-хорошему там надо ее допатчить - ну к примеру чтобы нули (или FF) не писала и т.п., особенно если строки переменной длины будут храниться.

NiTr0 ★★★★★
()
Ответ на: комментарий от Vit

вот берете библиотеку и подключаете, в чем проблема?

или вы вместо STM32 HAL используете «посторонний понос»(тм)? ну так это ваши проблемы, а не библиотеки...

NiTr0 ★★★★★
()
Ответ на: комментарий от anonymous

Ты из тех, кто вместо разработки любит часами настраивать МК? Может и объективные аргументы против использования HAL подвезёшь? Как HAL с кубом могут превратить твои мозги в опилки, а тебя самого в абдуринщика, например? Простота использования?

Unicode4all ★★★★★
()
Ответ на: комментарий от NiTr0

В том как подключать. У меня такое впечатление, что для вас понятия пакетный менеджер и управление зависимостями - пустой звук.

Vit ★★★★★
() автор топика
Последнее исправление: Vit (всего исправлений: 1)
Ответ на: комментарий от Harald

У флеша лимит перезаписей сильно ниже, и удаление блочное. А приложениям надо модифицировать несколько байтиков, как в eeprom.

Короче, если пройти по ссылкам из первого поста, там можно найти доки, где подробно все изложено.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

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

Harald ★★★★★
()
Ответ на: комментарий от Harald

мысля про прицепить поиходит только когда натрахаешся вдоволь. а у тех кто ресурс считать умеет мыслей скрестить ужа с ежом совсем не возникает :)

anonymous
()
Ответ на: комментарий от anonymous

или выбрать чип со встроенным EEPROM-ом

Harald ★★★★★
()
Ответ на: комментарий от Harald

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

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

но он черт возьми прав, поверь набитым шишкам

anonymous
()
Ответ на: комментарий от Unicode4all

Я просто считаю идиотами тех, кто вместо того, чтобы разрабатывать по-человечески, гробит вычислительные ресурсы на всякий кал!

Простота использования?

Да, например. Всем известно, что мастдайку используют только [censored]. Аналогично было с бубунтой. Сейчас к ней добавляются новые дистрибутивы с анальными зондами, где поднасрал поцтеринг.

anonymous
()
Ответ на: комментарий от Harald

Если нет необходимости переписывать 100500 раз, а надо лишь раз в месяц-два пересохранять новые параметры, то эмуляция EEPROM через FLASH — очень даже ничего!

Как вариант, можно еще развить тему: в линкере автоматом вычислять свободное место и прописывать адрес там. Тогда все свободные страницы можно будет под эмуляцию использовать, т.е. перезаписывать флешь нужно будет реже. И, кстати, алгоритм тоже можно расширить: если вместо последовательного поиска использовать бинарный, считывание настроек при старте значительно ускорится!

Но жрущим кал это не понять.

anonymous
()
Ответ на: комментарий от Vit

В том как подключать

скопировать в каталог проекта и добавить в IDE/мейкфайл пути. в чем проблема-то?

У меня такое впечатление, что для вас понятия пакетный менеджер и управление зависимостями - пустой звук.

в проекте на пару десятков килобайт кода - да, пустой звук. более того - нафиг не нужный «посторонний понос»(тм).

ну и да, у стм32 эмулятора флэши из «зависимостей» - только стандартный HAL. все.

NiTr0 ★★★★★
()
Ответ на: комментарий от NiTr0

скопировать в каталог проекта и добавить в IDE/мейкфайл пути. в чем проблема-то?

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

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Что ты понимаешь под «подключить библиотеку»? Тебе нужна статическая библиотека что ли?

Честно говоря, ни разу не встречал такого варианта распространения кода под микроконтроллеры. Все просто копируют нужные файлы ручками и правят потом. Нафига это оформлять как библиотеку, если в 99% случаев все равно придется что-то добавить, что-то выкинуть и что-то поменять?

И еще раз: бросай калокуб! А то у тебя будет воспаление гомосексуализма.

anonymous
()
Ответ на: комментарий от Vit

Ну ждём успехов в эмбедеостве на расте. Особенно интересно будет посмотреть на работу с низким уровнем. На работу без динамической памяти итд.

vromanov ★★
()
Ответ на: комментарий от vromanov

Не совсем понял, как это связано с эмбедорастом. Смысл ведь в том, чтобы на чистом расте код делать, а не биндинги приворачивать.

С практической точки зрения, я бы смотрел даты здесь https://github.com/rust-embedded/wg/milestones, ну и сами тикеты, если интересно.

Vit ★★★★★
() автор топика
Ответ на: комментарий от vromanov

А в чем конкретно вопрос? HAL есть, энтузиасты юзают, всякие крейты с альтернативными типам без аллокаторов - тоже.

У меня пока набегали вопросы совершенно другого рода:

- Нужен свежий RTFM (с поддержкой сообщений).
- Нет нормальной библиотеки GUI.

PS. Ну еще всякие нюансы из трекера WG, но их-то точно к релизу починят.

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.