Программирование Файловые системы Библиотека FatFS: модуль файловой системы FAT Mon, May 01 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Библиотека FatFS: модуль файловой системы FAT Печать
Добавил(а) microsin   
FatFs является модулем простой файловой системы FAT (generic FAT file system), предназначенным для маленьких встраиваемых систем на микроконтроллерах (embedded systems). FatFS-module-layersFatFs написан на ANSI C и полностью разделен по уровням дискового ввода/вывода диска (disk I/O). Таким образом, модуль полностью не зависит от аппаратной архитектуры подключения носителя данных (карта памяти, жесткий диск, FLASH, SDRAM и т. п.) к микроконтроллеру, и может быть легко портирован на любой микроконтроллер и систему. Модуль хорошо подходит для микроконтроллеров нижней ценовой категории типа AVR, 8051, PIC, ARM, Z80, 68k и т. д., и портируется без всяких изменений. Для того, чтобы модуль заработал, нужно только предоставить низкоуровневый интерфейс ввода вывода (см. далее, Disk I/O Interface). Модуль Petit FatFs(см. [2]) также доступен как пример реализации такого ввода/вывода для 8-битных микроконтроллеров.

Возможности FatFS

  • Поддержка файловой системы, совместимой с FAT Windows.
  • Не зависит от платформы. Легко портируется на любую архитектуру.
  • Очень малые затраты на код и рабочую область.
  • Многочисленные опции конфигурации:
    • Поддержка нескольких томов (Multiple volumes) - физических дисков и их разделов.
    • Поддержка нескольких кодовых страниц ANSI/OEM, включая DBCS.
    • Поддержка длинных имен (Long file name, LFN) в кодировке ANSI/OEM или Unicode.
    • Поддержка со стороны операционных систем реального времени (RTOS, например FreeRTOS) и популярных библиотек (LUFA).
    • Поддержка нескольких размеров сектора.
    • Поддержка Read-only (только чтение), минимизация API, настройка буфера I/O и т. д. ...
  • Низкоуровневый код доступа к карте поддерживает как карты стандарта SD, так и SDHC (причем одновременно). Правда, это не совсем относится к библиотеке FatFS, так как уровни доступа к носителю памяти разделены, но все равно упомянуть о поддержке SDHC необходимо, так как это очень полезная и востребованная возможность.

Интерфейс приложения (Application Interface)

Модуль FatFs предоставляет набор функций для приложения (API). Другими словами, в этом списке показано, как через модуль FatFs можно получить доступ к томам FAT.

  • f_mount - регистрация/дерегистрация рабочей области
  • f_open - открытие или создание нового файла (Open/Create)
  • f_close - закрытие файла (Close)
  • f_read - чтение файла (Read)
  • f_write - запись в файл (Write)
  • f_lseek - перемещение по файлу позиции чтения/записи, увеличение размера файла (Expand file size)
  • f_truncate - обрезка файла (Truncate file size)
  • f_sync - сброс кэшированных данных на физический носитель (Flush cached data)
  • f_opendir - открыть директорию/папку (Open a directory)
  • f_readdir - прочитать информацию об объекте директории
  • f_getfree - получить количество свободных кластеров
  • f_stat - получить информацию о состоянии файла (Get file status)
  • f_mkdir - создать директорию/папку (Create a directory)
  • f_unlink - удалить файл или директорию
  • f_chmod - поменять атрибуты
  • f_utime - поменять время/дату (Change timestamp)
  • f_rename - переименовать/переместить файл или директорию (Rename/Move a file or directory)
  • f_chdir - поменять текущую директорию (Change current directory)
  • f_chdrive - поменять текущий диск (Change current drive)
  • f_getcwd - запросить текущую директорию
  • f_forward - перенаправить данные файла напрямую в поток
  • f_mkfs - создать файловую систему на диске
  • f_fdisk - поделить физический диск на разделы (логические диски)
  • f_gets - прочитать строку
  • f_putc - записать символ
  • f_puts - записать строку
  • f_printf - записать форматированную строку
  • f_tell - получить текущее значение позиции чтения/записи файла
  • f_eof - проверить на окончание данных файла (т. е. дошла ли позиция чтения до конца файла EOF, end-of-file)
  • f_size - получение размера файла
  • f_error - проверка - были ли ошибки при работе с файлом

Низкоуровневый интерфейс ввода/вывода диска (Disk I/O Interface)

Поскольку модуль FatFs спроектирован так, что полностью отделен от ввода/вывода на физический носитель, то для работы он нуждается в нескольких функциях для доступа к физической памяти, где хранятся данные файловой системы FAT (physical media). Если разрешена опция, связанная с операционной системой, то дополнительно нужны функции для работы с процессами/памятью (process/memory functions). Модуль низкоуровневого ввода/вывода не является частью модуля FatFs, и он должен быть предоставлен пользователем (в этом собственно и заключается основной процесс портирования на целевую систему). Примеры таких низкоуровневых модулей/драйверов можно найти в разделе Ссылки. Список функций низкоуровневого ввода/вывода:

  • disk_initialize - инициализация диска (disk drive)
  • disk_status - получение состояния диска (disk status)
  • disk_read - прочитать сектор (секторы)
  • disk_write - записать сектор (секторы)
  • disk_ioctl - управление опциями, зависящими от устройства
  • get_fattime - получение текущего времени

Ссылки

Модуль FatFs является свободным программным обеспечением (free software), открытым для целей образования, исследования и разработки. Вы можете его использовать, модифицировать и/или распространять для персональных проектов или коммерческих продуктов под Вашей личной ответственностью и без каких-либо ограничений. Для подробностей обращайтесь к указаниям по применению (application note).

[Ссылки]

1. FatFs Generic FAT File System Module - оригинал статьи на английском языке.
2. Библиотека Petit FatFS: модуль файловой системы FAT.

 

Добавить комментарий


Защитный код
Обновить

Top of Page