Разработка V4.0 EasyFlash: причины, особенности и реализация
EasyFlash — это моё второе открытое программное обеспечение, которое я разрабатываю самостоятельно. С 2015 года оно официально доступно для использования, и к февралю 2019 года прошло уже более четырёх лет с момента его выпуска. За это время многие разработчики встраиваемых систем из других отраслей связались со мной и сообщили, что они уже внедрили EasyFlash в свои продукты. Это очень приятно, так как это свидетельствует о том, что EasyFlash стал зрелым продуктом, который получил признание в различных отраслях.
1.1 Простота функций, но ограниченная производительность
Многие считают, что функции EasyFlash просты и легко применимы в продуктах. Однако с развитием технологий и растущими требованиями к разнообразию KV, а также к ресурсам MCU (в основном RAM, Flash-хранилище и срок службы Flash), старая версия EasyFlash всё ещё имеет потенциал для улучшения в этих областях. Например:
1.3 NG версия: начало с нуля
С начала 2017 года я начал работу над улучшением производительности EasyFlash, основываясь на потребностях пользователей. Я постоянно анализировал и пересматривал документацию, а также активно общался с некоторыми энтузиастами сообщества. В конечном итоге было решено, что простое улучшение существующей основы будет иметь слишком много ограничений для реализации функций. Поэтому я решил разработать совершенно новую версию компонента ENV следующего поколения (NG).
Версия NG была почти завершена к концу 2017 года, но у меня не было времени на её разработку. Благодаря поддержке моих родственников, я наконец смог завершить разработку версии V4.0 NG во время отпуска по случаю китайского Нового года в доме моих родителей.
2. Особенности V4.0
3. Реализация
3.1 Алгоритмы
Предположим, что в разделе ENV есть четыре сектора. Ниже мы рассмотрим различные операции с ENV и соответствующие состояния Flash и изменения данных.
3.1.1 Процесс операции ENV1 (обычный режим)
3.1.1.1 Первое использование
При первом использовании EasyFlash проверяет заголовки каждого сектора. Если формат не соответствует требованиям, выполняется полная операция форматирования. После форматирования заголовок каждого сектора записывает текущую информацию о секторе, включая статус, магическое число и другую информацию. Состояние форматирования инициализируется пустым состоянием.
3.1.1.2 Добавление KV1, KV2, KV3
Перед выполнением операции добавления необходимо сначала найти подходящее место для размещения нового KV. Стратегия поиска в основном включает в себя:
Из рисунка видно, что KV1, KV2 и KV3 были помещены в sector1, и состояние сектора было изменено на используемое.
3.1.1.3 Изменение KV2 и KV3, удаление KV1 и добавление KV4
Во время модификации ENV старое значение ENV будет удалено, а состояние сектора будет изменено на грязное. Затем будет выполнена новая операция добавления ENV.
3.1.1.4 Добавление KV5 и KV6, запуск GC
3.1.2 Процесс операции ENV2 (режим большого хранилища данных)
Продолжение следует…
3.2 Структура данных
Легко заметить, что все операции связаны с состоянием сектора и состоянием ENV. Эти состояния хранятся в заголовках сектора и ENV соответственно. Важно отметить, что эти состояния изменяются однонаправленно без стирания данных сектора. В коде программы эти состояния и другая информация называются метаданными.
Помимо обычных функций, ещё одним важным показателем, которому EasyFlash придаёт большое значение, является защита от потери мощности. Это похоже на то, как любая операция сталкивается с потерей мощности, насколько жёсткой является устойчивость к сбоям всего EasyFlash и может ли он восстановиться после потери мощности. Подготовка к записи и подготовка к удалению этих промежуточных состояний предназначены для обеспечения защиты от потери мощности.
Для обеспечения расширяемости в будущем здесь также зарезервированы некоторые атрибуты. Кроме того, некоторые заранее запланированные состояния и атрибуты будут использоваться в будущих функциях, таких как многосекторное хранение, шифрование и сжатие.
После завершения проектирования вся структура данных ENV выглядит следующим образом. Эта диаграмма также может быть преобразована в соответствующую структуру данных.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )