UTFS — это легковесная файловая система с нулевым выделением памяти для встраиваемых устройств

Компания CLI Systems представила UTFS (μTFS) — простую, легковесную встраиваемую систему хранения, предназначенную для небольших микроконтроллеров. В отличие от традиционных файловых систем, таких как FAT32 или EXT4, или даже более легких вариантов, как LittleFS и SPIFFS, используемых на платах вроде ESP32, UTFS гораздо проще. Она не использует динамическую память и избегает сложных функций, таких как выравнивание износа, что упрощает её использование на устройствах с ограниченными ресурсами.

Разработанная для плоской, побайтно адресуемой памяти, такой как сырая EEPROM, страницы флеш-памяти CPU или внешняя SPI/I²C флеш-память, UTFS позволяет прошивке на голом железе хранить именованные блоки данных («файлы») последовательно. Каждый файл дополняется фиксированным 24-байтовым заголовком, содержащим метаданные, такие как идентификаторы, размеры и определенные приложением сигнатуры.

μTFS lightweight, zero allocation file system

Спецификации и возможности UTFS

  • Занимаемая память – фиксированный 24-байтовый заголовок на файл; нулевое использование кучи (без malloc)
  • Формат – последовательная разметка, вдохновленная TAR; обратно совместимая, так что файлы могут быть добавлены позже без нарушения существующей разметки памяти
  • Независимость от носителя – требует портирования только двух функций для взаимодействия с аппаратным носителем: sys_read и sys_write
  • Надежность – использует определенные приложением сигнатуры (например, 0xABCD) для обнаружения поврежденного или неинициализированного хранилища при первом вызове utfs_load()
  • Лицензия – с открытым исходным кодом под лицензией MIT, полностью свободна от проприетарных форматов вендоров

Многие проекты на микроконтроллерах просто хранят все данные в виде одной большой структуры по фиксированному адресу EEPROM. Это просто, но становится проблемой, если формат данных впоследствии изменится, поскольку старые данные могут перестать работать. С другой стороны, полноценные файловые системы, такие как FatFs или LittleFS, предлагают расширенные возможности, но требуют больше памяти и более ресурсоемки для работы на маленьких устройствах.

UTFS automatically adjusts data positions when file sizes change across firmware revisions [Left], and uses a custom base address to safely coexist with legacy data [Right]
UTFS автоматически корректирует положения данных при изменении размеров файлов между версиями прошивки (слева) и использует пользовательский базовый адрес для безопасного сосуществования с устаревшими данными (справа)

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

Дополнительная информация, включая рабочие примеры для таких плат, как Arduino Uno (ATmega328), использующая встроенную EEPROM, и Microchip SAMD20, использующая внутреннюю флеш-память, доступна на странице CLI Systems . Для использования UTFS на другом оборудовании достаточно подключить её API к функциям чтения и записи устройства. Исходный код на C99, примеры и полная документация доступны в репозитории GitHub CLI Systems для интеграции в проекты.

UTFS Hello World Program

Программа UTFS «Hello World»

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

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments