底层驱动接口

RT-Thread DFS 文件系统针对下层媒介使用的是RT-Thread 的设备IO系统,其中主要包括设备读写等操作。但是有些文件系统并不依赖于RT-Thread 的设备系统,例如1.0.x分支引入的只读文件系统、网络文件系统等。对于常使用的FAT 文件系统,下层驱动必须用块设备的形式来实现。

文件系统初始化

在使用文件系统接口前,需要对文件系统进行初始化,代码如下:

  1. #ifdef RT_USING_DFS
  2. /* 包含DFS 的头文件 */
  3. #include <dfs_fs.h>
  4. #include <dfs_elm.h>
  5. #endif
  6.  
  7. /* 初始化线程 */
  8. void rt_init_thread_entry(void *parameter)
  9. {
  10. /* 文件系统初始化 */
  11. #ifdef RT_USING_DFS
  12. {
  13. /* 初始化设备文件系统 */
  14. dfs_init();
  15. #ifdef RT_USING_DFS ELMFAT
  16. /* 如果使用的是ELM 的FAT 文件系统,需要对它进行初始化 */
  17. elm_init();
  18.  
  19. /* 调用dfs_mount 函数对设备进行装载 */
  20. if (dfs_mount("sd0", "/", "elm", 0, 0) == 0)
  21. rt_kprintf("File System initialized!\n");
  22. else
  23. rt_kprintf("File System init failed!\n");
  24. #endif
  25. }
  26. #endif
  27. }

其主要包括的函数接口为:

  1. int dfs_mount(const char* device_name, const char* path, const char* filesystemtype,
  2. rt_uint32_t rwflag, const void* data);

dfs_mount 函数用于把以device_name 为名称的设备挂接到path 路径中。filesystemtype 指定了设备上的文件系统的类型(如上面代码所述的elm、rom、nfs 等文件系统)。data参数对某些文件系统是有意义的,如nfs,对elm 类型系统则没有意义。

  • 参数:

device_name - 设备名; path - 挂接路径; filesystemtype - 文件系统的类型; rwflag - 文件系统的标志; data - 文件系统的数据。

  • 返回值:

装载成功将返回0,否则返回-1。具体的错误需要查看errno。