65 lines
2.2 KiB
ReStructuredText
65 lines
2.2 KiB
ReStructuredText
.. _file_system_api:
|
|
|
|
File Systems
|
|
############
|
|
|
|
Zephyr RTOS Virtual Filesystem Switch (VFS) allows applications to mount multiple
|
|
file systems at different mount points (e.g., ``/fatfs`` and ``/lfs``). The
|
|
mount point data structure contains all the necessary information required
|
|
to instantiate, mount, and operate on a file system. The File system Switch
|
|
decouples the applications from directly accessing an individual file system's
|
|
specific API or internal functions by introducing file system registration
|
|
mechanisms.
|
|
|
|
In Zephyr, any file system implementation or library can be plugged into or
|
|
pulled out through a file system registration API. Each file system
|
|
implementation must have a globally unique integer identifier; use
|
|
:c:macro:`FS_TYPE_EXTERNAL_BASE` to avoid clashes with in-tree identifiers.
|
|
|
|
.. code-block:: c
|
|
|
|
int fs_register(int type, const struct fs_file_system_t *fs);
|
|
|
|
int fs_unregister(int type, const struct fs_file_system_t *fs);
|
|
|
|
Zephyr RTOS supports multiple instances of a file system by making use of
|
|
the mount point as the disk volume name, which is used by the file system library
|
|
while formatting or mounting a disk.
|
|
|
|
A file system is declared as:
|
|
|
|
.. code-block:: c
|
|
|
|
static struct fs_mount_t mp = {
|
|
.type = FS_FATFS,
|
|
.mnt_point = FATFS_MNTP,
|
|
.fs_data = &fat_fs,
|
|
};
|
|
|
|
where
|
|
|
|
- ``FS_FATFS`` is the file system type like FATFS or LittleFS.
|
|
- ``FATFS_MNTP`` is the mount point where the file system will be mounted.
|
|
- ``fat_fs`` is the file system data which will be used by fs_mount() API.
|
|
|
|
|
|
|
|
Samples
|
|
*******
|
|
|
|
Samples for the VFS are mainly supplied in ``samples/subsys/fs``, although various examples of the
|
|
VFS usage are provided as important functionalities in samples for different subsystems.
|
|
Here is the list of samples worth looking at:
|
|
|
|
- ``samples/subsys/fs/fat_fs`` is an example of FAT file system usage with SDHC media;
|
|
- ``samples/subsys/shell/fs`` is an example of Shell fs subsystem, using internal flash partition
|
|
formatted to LittleFS;
|
|
- ``samples/subsys/usb/mass/`` example of USB Mass Storage device that uses FAT FS driver with RAM
|
|
or SPI connected FLASH, or LittleFS in flash, depending on the sample configuration.
|
|
|
|
API Reference
|
|
*************
|
|
|
|
.. doxygengroup:: file_system_api
|
|
:project: Zephyr
|