1. 文件系统(File Systems)
Zephyr RTOS 的虚拟文件系统开关允许应用程序在不同的挂载点(如:/fatfs 和 /nffs)挂载多个文件系统。挂载点数据结构包含实例化、挂载和操作文件系统所需的所有必要的信息。文件系统开关通过引入文件系统注册机制,将应用程序从直接访问一个文件系统指定的 API 或内部函数分离开。
在 Zephyr 中,任何文件系统的实现或库可以通过一个文件系统注册 API 插入或拔出。
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 通过使用挂载点作为磁盘卷名来支持一个文件系统的多个实例,文件系统库在格式化或挂载到一个磁盘时使用这个卷名。
文件系统的声明如下:
static struct fs_mount_t mp = {
.type = FS_FATFS, // FS_FATFS:文件系统的类型,例如:FATFS 或 NFFS。
.mnt_point = FATFS_MNTP, // FATFS_MNTP:文件系统的挂载点。
.fs_data = &fat_fs, // fat_fs:将被 fs_mount( ) API 使用的文件系统数据。
};
2. 已知限制(Known Limitations)
由于库内部实现的限制,NFFS 只支持文件系统的一个实例。
3. 示例(Sample)
在 samples/subsys/fs 中提供了如何使用文件系统的示例。
4. API 参考(API Reference)
4.1. 定义(Defines)
- FS_SEEK_SET
- FS_SEEK_CUR
- FS_SEEK_END