threadx下的filex文件系统移植注意

filex移植步骤

因为使用的是oneos操作系统,实际上bsp和sd卡驱动程序,在rtos中已经得到了支持。因此,底层硬件的适配不是我们要着重关心的事情,需要注意的是:

  1. 函数 fx_system_initialize()实现FileX 的初始化
  2. 函数 fx_media_open 实现挂载 SD 卡功能,上电后仅调用一次,方便用户实现 FileX 驱动多个磁盘
  3. 函数 fx_media_close 实现卸载 SD 卡功能
  4. 函数 fx_directory_next_full_entry_find 实现文件浏览
  5. 函数 fx_file_create 用来创建文件
  6. 函数 fx_file_open 用来打开文件
  7. 函数 fx_file_close 用于关闭文件
  8. 函数 fx_file_seek 用来设置操作的起始位置
  9. 函数 fx_file_write 用来写入数据
  10. 函数 fx_file_delete 用于删除文件
  11. 函数 fx_media_flush 用于文件写入全部生效
  12. 函数 fx_directory_create 用于创建文件夹
  13. 函数 fx_directory_delete 用于删除文件夹
  14. 函数 fx_media_format 用于filex文件系统的格式化/初始化

对比一下vfs_fatfs.c里面适配的接口:

static const struct vfs_mops vfs_mops = {
    .fs_name   = "fatfs",
    .m_mkfs    = vfs_fat_mkfs,    //fx_media_format
    .m_mount   = vfs_fat_mount,   //fx_media_open
    .m_statfs  = vfs_fat_statfs,
    .m_umount  = vfs_fat_unmount, //fx_media_close
};
static const struct vfs_vops _fat_vops = {
    .v_mkdir    = vfs_fat_mkdir,      //fx_directory_create
    .v_opendir  = vfs_fat_opendir,
    .v_closedir = vfs_fat_closedir,   //fx_directory_delete
    .v_readdir  = vfs_fat_readdir,    //fx_directory_next_full_entry_find
    .v_seekdir  = vfs_fat_seekdir,  
    .v_telldir  = vfs_fat_telldir,  
    .v_rename   = vfs_fat_rename,
    .v_unlink   = vfs_fat_unlink,     //fx_file_delete
    .v_stat     = vfs_fat_stat,

};

static const struct vfs_fops _fat_fops = {
    .f_open      = vfs_fat_open,      //fx_file_create,fx_file_open
    .f_close     = vfs_fat_close,     //fx_file_close
    .f_read      = vfs_fat_read,      fx_file_read
    .f_write     = vfs_fat_write,     //fx_file_write
    .f_lseek     = vfs_fat_lseek,     //fx_file_seek
    .f_sync      = vfs_fat_sync,      //fx_media_flush
    .f_ftruncate = vfs_fat_ftruncate,

};

最重要的关注是什么?

  1. 类似fatfs的diskio.c,或者littlefs的lfs_io.c,filex也需要有自己的filex_io.c文件。
    • 用于连接filex文件系统和底层存储设备。用来实现filex所需的底层磁盘I/O函数,包括获取磁盘状态、初始化磁盘、读扇区、写扇区和控制磁盘。这些函数为filex提供了对存储设备的基本访问功能。
  2. 类似fatfs的vfs_fatfs,或者littlefs的vfs_lfs.c,filex也需要有自己的vfs_filex.c文件。
    • 用于将filex注册到rtos的vfs层,这样其它应用程序就可以通过标准的系统调用(如open、read、write、close等)来访问filex文件系统。
    • 并且vfs_filex.c包含适配代码,将filex的API转换为操作系统下vfs层所期望的接口,隐藏了filex内部的具体实现细节。

因此,知道了要做的是什么?而后的开发工作就应该着重于:filex_io.c&&vfs_filex.c。但在这期间,我们也应了解filex的代码基本实现,因此,下一步查看filex的doc文件,以及filex的代码,需要进行,学习才能进步。
filex的文档地址:rtos-docs/rtos-docs/filex

先看看代码框架吧!!注意:在最新版本的filex,已经删除了对exfat的代码支持。

cmake    编译所需要的cmake文件
common
	inc  源码对应的头文件
	src  filex的实现都在里面啦
docs     没有啥,就几张图片
port     里面有个重要的文件fx_port.h
sample   就是有个demo,可以参考一下如何使用filex的
script   都是sh文件,用于执行编译操作的
test     测试用例,写测试用例的时候可以参考下

总结一下就三点,其它都是无关紧要的:

  • 源码都在:common
  • 对filex的配置在port中的fx_port.h
  • demo和测试用例在sample和test中
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值