60 lines
1.7 KiB
ReStructuredText
60 lines
1.7 KiB
ReStructuredText
.. _file_system:
|
|
|
|
File Systems
|
|
############
|
|
|
|
Zephyr RTOS Virtual Filesystem Switch (VFS) allows applications to mount multiple
|
|
file systems at different mount points (e.g., ``/fatfs`` and ``/nffs``). 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.
|
|
|
|
.. code-block:: c
|
|
|
|
int fs_register(enum fs_type type, struct fs_file_system_t *fs);
|
|
|
|
int fs_unregister(enum fs_type type, 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 NFFS.
|
|
- ``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.
|
|
|
|
Known Limitations
|
|
*****************
|
|
|
|
NFFS supports only one instance of file system due to the library's internal
|
|
implementation limitation.
|
|
|
|
|
|
Sample
|
|
******
|
|
|
|
A sample of how the file system can be used is supplied in ``samples/subsys/fs``.
|
|
|
|
API Reference
|
|
*************
|
|
|
|
.. doxygengroup:: file_system_api
|
|
:project: Zephyr
|