Литтл ФС — небольшая отказоустойчивая файловая система, предназначенная для микроконтроллеров.
Устойчивость к потере питания — литтл ФС разработана для работы с произвольными сбоями питания. Все файловые операции имеют надёжные гарантии копирования при записи, и в случае потери питания файловая система возвращается к последнему известному исправному состоянию.
Динамическое выравнивание износа — литтл ФС создана с учётом особенностей флеш-памяти и обеспечивает выравнивание износа динамических блоков. Кроме того, литтл ФС может обнаруживать неисправные блоки и работать с ними.
Ограниченное использование RAM/ROM — литтл ФС предназначена для работы с небольшим объёмом памяти. Использование RAM строго ограничено, что означает, что потребление RAM не меняется по мере роста файловой системы. Файловая система не содержит неограниченной рекурсии, а динамическая память ограничена настраиваемыми буферами, которые могут быть предоставлены статически.
Вот простой пример, который обновляет файл с именем boot_count
каждый раз, когда запускается основная программа. Программа может быть прервана в любой момент без потери информации о том, сколько раз она была загружена, и без повреждения файловой системы:
#include "lfs.h"
// переменные, используемые файловой системой
lfs_t lfs;
lfs_file_t file;
// конфигурация файловой системы предоставляется этой структурой
const struct lfs_config cfg = {
// операции блочного устройства
.read = user_provided_block_device_read,
.prog = user_provided_block_device_prog,
.erase = user_provided_block_device_erase,
.sync = user_provided_block_device_sync,
// конфигурация блочного устройства
.read_size = 16,
.prog_size = 16,
.block_size = 4096,
.block_count = 128,
.cache_size = 16,
.lookahead_size = 16,
.block_cycles = 500,
};
// точка входа
int main(void) {
// монтируем файловую систему
int err = lfs_mount(&lfs, &cfg);
// переформатируем, если не можем смонтировать файловую систему
// это должно происходить только при первой загрузке
if (err) {
lfs_format(&lfs, &cfg);
lfs_mount(&lfs, &cfg);
}
// читаем текущий счётчик
uint32_t boot_count = 0;
lfs_file_open(&lfs, &file, "boot_count", LFS_O_RDWR | LFS_O_CREAT);
lfs_file_read(&lfs, &file, &boot_count, sizeof(boot_count));
// обновляем счётчик загрузки
boot_count += 1;
lfs_file_rewind(&lfs, &file);
lfs_file_write(&lfs, &file, &boot_count, sizeof(boot_count));
// помним, что хранилище не обновляется до тех пор, пока файл не будет успешно закрыт
lfs_file_close(&lfs, &file);
// освобождаем все ресурсы, которые мы использовали
lfs_unmount(&lfs);
// выводим счётчик загрузки на экран
printf("boot_count: %d\n", boot_count);
}
Подробную документацию (или, по крайней мере, столько деталей, сколько доступно в настоящее время) можно найти в комментариях в lfs.h.
Литтл ФС принимает конфигурацию структуры, которая определяет, как работает файловая система. Структура конфигурации предоставляет файловой системе операции с блочным устройством и размеры, настраиваемые параметры, которые позволяют сбалансировать использование памяти и производительность, а также необязательные статические буферы, если пользователь хочет избежать динамической памяти.
Состояние литтл ФС хранится в типе lfs_t
, который пользователь должен выделить, позволяя одновременно использовать несколько файловых систем. С помощью lfs_t
и структуры конфигурации пользователь может отформатировать блочное устройство или смонтировать файловую систему.
После монтирования литтл ФС предоставляет полный набор функций файлов и каталогов, подобных POSIX, с отклонением, заключающимся в том, что выделение структур файловой системы должно осуществляться пользователем.
Все операции POSIX, такие как удаление и переименование, являются атомарными, даже в случае потери питания. Кроме того, обновления файлов фактически не фиксируются в файловой системе до вызова синхронизации или закрытия файла.
Литтл ФС написана на языке C и должна компилироваться любым компилятором, соответствующим стандарту C99.
Все вызовы литтл ФС могут возвращать отрицательный код ошибки. Ошибки могут быть либо одной из тех, что указаны в перечислении enum lfs_error
в lfs.h, либо ошибкой, возвращаемой пользователем. Литтл ФС (LittleFS)
ЛиттлФС может быть полезен для отладки. ЛиттлФС — это простая файловая система, предназначенная для встраиваемых устройств с ограниченными ресурсами.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )