1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Armink-EasyFlash

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 08:38 4887d5c

EasyFlash

GitHub release GitHub commits MIT licensed

1. Введение

Примечание: с версии 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.

1.1 Два режима ENV

В настоящее время существует два основных режима для функции ENV: режим NG, представленный в версии V4.0, и устаревший режим legacy, который продолжает версию V3.0.

1.1.1 Режим NG, представленный версией V4.0

Соответствующий исходный файл: ef_env.c

После более чем четырёх лет итераций EasyFlash наконец выпустила версию V4.0. Эта версия представила новый режим ENV, называемый NG (Next Generation). Этот режим представляет собой полностью переработанную новую версию со следующими новыми функциями:

  • Меньшее использование ресурсов, почти нулевое использование памяти (предыдущие версии использовали дополнительное пространство RAM для кэширования);
  • Тип значения ENV поддерживает любой тип и любую длину, аналогично прямому копированию переменной во Flash;
  • Эффективность операций ENV выше, чем у предыдущих режимов, эффективно использует оставшееся свободное пространство, значительно снижая количество стираний и время операции;
  • Встроенная поддержка балансировки износа и функции защиты от отключения питания (в предыдущих версиях требовалось дополнительное пространство Flash для раздельных областей);
  • Поддержка инкрементного обновления для ENV, после обновления прошивки ENV также можно обновить;
  • Поддерживает режим большого объёма данных, длина не ограничена, данные могут храниться последовательно в нескольких областях Flash. Ресурсы, которые занимают более одной области Flash, такие как сценарии, аудио и т.д., также могут быть сохранены в ENV (будет поддерживаться в V4.2);
  • Поддерживает шифрование данных для повышения безопасности хранения (будет поддерживаться в V4.3);
  • Поддерживает сжатие данных для уменьшения использования Flash (будет поддерживаться в V4.4).

Для получения дополнительной информации о дизайне и внутренней логике V4.0 и руководстве по миграции см. следующий раздел [документации](#3 Документация).

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

1.1.2 Устаревший режим, продолжающий версию V3.0

Соответствующие исходные файлы: ef_env_legacy.c и ef_env_legacy_wl.c

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

1.1.3 Сравнение режимов ENV

Режим NG версии V4.0 Устаревший режим версии V3.0
Использование RAM Низкое Высокое
Поддержка различных типов Flash Ограничена для некоторых типов, например, STM32L4 встроенного Flash Более широкая поддержка
Требуется ли сборщик мусора (GC) Да, это может замедлить скорость записи при срабатывании GC Нет
Ограничения типа значения Без ограничений Лучше поддерживает строки
Защита от отключения питания Поддерживается Поддерживается
Балансировка износа Поддерживается Поддерживается
Инкрементное обновление Поддерживается Поддерживается

1.2 Использование ресурсов

Минимальные требования: ROM: 6 КБ байт RAM: 0,1 КБ байт

1.3 Поддерживаемые платформы

На данный момент 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 и сохранение, перезапуск

    1. Проверка успешной модификации «температуры».
    1. Удаление переменной среды «температура».

easy_flash_env

2.2 IAP: онлайн-обновление

На рисунке ниже показан процесс обновления программного обеспечения через консоль с помощью IAP. Используется библиотечный интерфейс IAP с демонстрацией использования протокола последовательного порта + Ymodem. Также можно реализовать удалённое сетевое обновление через CAN, 485, Ethernet и другие шины.

easy_flash_iap

2.3 Log: хранение журнала

Рисунок ниже показывает процесс вывода журнала через консоль и сохранения его во Flash. После перезагрузки можно прочитать сохранённый ранее журнал и затем очистить его.

easy_flash_log

3 Документация

Обязательно ознакомьтесь с документацией перед переносом.

4 Поддержка

support

Если EasyFlash решит вашу проблему, отсканируйте QR-код выше и пригласите меня на чашку кофе!

5 Лицензия

Используется лицензия MIT с открытым исходным кодом. Подробности см. в содержании файла LICENSE в проекте. Автобус для онлайн-обновления

2.3 Log

На следующем рисунке представлен результат процесса ведения журнала через консоль. Журналы сохраняются во флэш-память в реальном времени. Затем плата перезагружается, и журналы считываются обратно из флэш-памяти. В конце журналы будут удалены.

Документы

Все документы находятся в папке \docs\en\ (https://github.com/armink/EasyFlash/tree/master/docs/en). Пожалуйста, прочитайте документы, прежде чем переносить их и использовать.

Лицензия

Используя лицензию с открытым исходным кодом MIT, пожалуйста, прочтите файл LICENSE проекта.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/Armink-EasyFlash.git
git@api.gitlife.ru:oschina-mirror/Armink-EasyFlash.git
oschina-mirror
Armink-EasyFlash
Armink-EasyFlash
master