RT-Thread文件系统

        RT-Thread 的文件系统采用了三层的结构,如下图所示:

        最顶层的是一套面向嵌入式系统,专门优化过的虚拟文件系统(接口)。通过它,RT-Thread 操作系统能够适配下层不同的文件系统格式,例如个人电脑上常使用的FAT 文件系统,或者是嵌入式设备中常见的flash 文件系统(YAFFS2、JFFS2 等)。

        接下来中间的一层是各种文件系统的实现,例如支持FAT文件系统的DFS-ELM、支持NandFlash 的YAFFS2,只读文件系统ROMFS 等。(RT-Thread 1.0.0版本中包含了ELM FatFS,ROMFS以及网络文件系统NFS v3实现,YAFFS2等flash 文件系统则包含在了RT-Thread 1.1.0 版本中)

        最底层的是各类存储驱动,例如SD 卡驱动,IDE 硬盘驱动等。RT-Thread 1.1.0 版本也在NandFlash 上构建了一层转换层(FTL),以使NandFlash 能够支持Flash 文件系统。
        RT-Thread 的文件系统对上层提供的接口主要以POSIX 标准接口为主,这样也能够保证程序可以在PC 上编写、调试,然后再移植到RT-Thread 操作系统上。

        文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data type),是一种用于向用户提供底层数据访问的机制。文件系统通常存储的基本单位是文件,即数据是按照一个个文件的方式进行组织。当文件比较多时,将导致文件繁多,不易分类、重名的问题。而文件夹作为一个容纳多个文件的容器而存在。在 RT-Thread 中,文件系统名称使用上类似UNIX 文件、文件夹的风格,例如下图的目录结构: