EasyFlash
Примечание: с версии EasyFlash V4.1 официально запущен новый проект с открытым исходным кодом FlashDB, разработанный на основе EasyFlash. Новый проект включает в себя функции временной базы данных, многораздельного управления и нескольких экземпляров баз данных. Он также в определённой степени повышает общую производительность. Приглашаем вас следить за обновлениями: https://github.com/armink/FlashDB. В то же время существующий EasyFlash будет продолжать поддерживаться.
EasyFlash — это лёгкая библиотека для встраиваемых систем на базе Flash-памяти, которая помогает разработчикам легко создавать приложения на основе Flash-памяти. Она особенно подходит для продуктов, требующих функций хранения при отключении питания, таких как «умный дом», носимые устройства, промышленная автоматизация, медицина, Интернет вещей и т. д. Библиотека имеет очень низкие требования к ресурсам и поддерживает различные типы микроконтроллеров (MCU). Библиотека предоставляет три основные функции:
ENV — быстрое сохранение параметров продукта, поддержка балансировки износа и защиты от отключения питания. EasyFlash может не только сохранять информацию о настройках продукта или журналах работы при отключении питания, но и предоставляет простые методы добавления, удаления, изменения и запроса, что снижает сложность обработки параметров продукта для разработчиков и обеспечивает лучшую расширяемость продукта при будущих обновлениях. Это превращает Flash в небольшую базу данных типа «ключ-значение» (Key-Value) без SQL (нереляционная база данных).
IAP — онлайн-обновление больше не является проблемой. Библиотека предоставляет часто используемые интерфейсы для IAP (In-Application Programming), поддерживает проверку CRC32 и поддерживает обновление загрузчика и приложения.
Log — нет необходимости в файловой системе, журналы могут быть непосредственно сохранены во Flash. Это особенно полезно для небольших продуктов без файловых систем, облегчая разработчикам поиск и устранение причин сбоя системы или зависания. В сочетании с EasyLogger (моя открытая и высокопроизводительная библиотека журналов C, которая обеспечивает бесшовный интерфейс с EasyFlash), она позволяет легко реализовать функцию хранения журналов C во Flash.
В настоящее время существует два основных режима для функции ENV: режим NG, представленный в версии V4.0, и устаревший режим legacy, который продолжает версию V3.0.
Соответствующий исходный файл: ef_env.c
После более чем четырёх лет итераций EasyFlash наконец выпустила версию V4.0. Эта версия представила новый режим ENV, называемый NG (Next Generation). Этот режим представляет собой полностью переработанную новую версию со следующими новыми функциями:
Для получения дополнительной информации о дизайне и внутренней логике V4.0 и руководстве по миграции см. следующий раздел [документации](#3 Документация).
Примечание: некоторые типы Flash не поддерживают обратную запись, например STM32L4 встроенный Flash, поэтому режим NG использовать нельзя. В этом случае рекомендуется использовать устаревший режим.
Соответствующие исходные файлы: ef_env_legacy.c и ef_env_legacy_wl.c
Устаревший режим также поддерживает балансировку износа и защиту от отключения питания, но требует дополнительного пространства RAM для временного кэширования каждого ENV перед окончательным вызовом интерфейса сохранения для стирания разделенной области и сохранения во Flash.
Режим NG версии V4.0 | Устаревший режим версии V3.0 | |
---|---|---|
Использование RAM | Низкое | Высокое |
Поддержка различных типов Flash | Ограничена для некоторых типов, например, STM32L4 встроенного Flash | Более широкая поддержка |
Требуется ли сборщик мусора (GC) | Да, это может замедлить скорость записи при срабатывании GC | Нет |
Ограничения типа значения | Без ограничений | Лучше поддерживает строки |
Защита от отключения питания | Поддерживается | Поддерживается |
Балансировка износа | Поддерживается | Поддерживается |
Инкрементное обновление | Поддерживается | Поддерживается |
Минимальные требования: ROM: 6 КБ байт RAM: 0,1 КБ байт
На данный момент EasyFlash был перенесён на аппаратные платформы STM32F10x и STM32F4xx с внутренним Flash и SPI Flash на основе SFUD (https://github.com/armink/SFUD), которые также являются платформами, используемыми автором. Перенос на другие платформы относительно прост, поскольку при разработке проекта учитывались проблемы совместимости всех платформ (кроме 64-битных), и все интерфейсы переноса были зарезервированы заранее. Для переноса требуется изменить только один файл \easyflash\port\ef_port.c
, чтобы реализовать функции стирания, записи, чтения и печати.
Приглашаем всех fork and pull request (Github|OSChina|Coding). Если вам нравится этот открытый проект, вы можете нажать кнопку Star в правом верхнем углу главной страницы проекта (https://github.com/armink/EasyFlash) и порекомендовать его другим заинтересованным пользователям. ### 4. Модификация «температуры» до значения 456 и сохранение, перезапуск
На рисунке ниже показан процесс обновления программного обеспечения через консоль с помощью IAP. Используется библиотечный интерфейс IAP с демонстрацией использования протокола последовательного порта + Ymodem. Также можно реализовать удалённое сетевое обновление через CAN, 485, Ethernet и другие шины.
Рисунок ниже показывает процесс вывода журнала через консоль и сохранения его во Flash. После перезагрузки можно прочитать сохранённый ранее журнал и затем очистить его.
\docs\zh\api.md
.\docs\zh\port.md
.\docs\zh\v4_migrate.md
.\docs\zh\design.md
.Обязательно ознакомьтесь с документацией перед переносом.
Если EasyFlash решит вашу проблему, отсканируйте QR-код выше и пригласите меня на чашку кофе!
Используется лицензия MIT с открытым исходным кодом. Подробности см. в содержании файла LICENSE в проекте. Автобус для онлайн-обновления
2.3 Log
На следующем рисунке представлен результат процесса ведения журнала через консоль. Журналы сохраняются во флэш-память в реальном времени. Затем плата перезагружается, и журналы считываются обратно из флэш-памяти. В конце журналы будут удалены.
Документы
Все документы находятся в папке \docs\en\
(https://github.com/armink/EasyFlash/tree/master/docs/en). Пожалуйста, прочитайте документы, прежде чем переносить их и использовать.
Лицензия
Используя лицензию с открытым исходным кодом MIT, пожалуйста, прочтите файл LICENSE проекта.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )