【RT-Thread读书笔记】虚拟文件系统
前言
很早就开始关注RT-Thread嵌入式实时操作系统,最近也将其应用到了项目当中。从实际使用来看,实时性及稳定性都不错,使用也比较方便。官方提供了大量例程和中文资料,方便大家进行学习。如果你想学习一款嵌入式操作系统,强烈推荐RT-Thread。
对操作系统的看法
在平时的项目中,很多朋友喜欢裸机编程,即不上操作系统,我这里称其为裸奔。之所以这样选择,一是代码逻辑不复杂,系统较简单,裸奔即可轻松搞定。二是相对于操作系统,其代码更加精简,执行效率更高。三是担心系统可靠性,并且裸奔即使出了问题也好查找和解决。
话说之前我也有过类似的一些想法。但是随着项目系统的复杂度越来越高。在既要实现业务逻辑,又要保证实时性的情况下,基于裸机编程就显得有点力不从心了。于是开始寻找一款实时操作系统。一开始接触的是用户量较大的FreeRTOS,而后又遇到了RT-Thread,两者各有千秋。之所以选择后者,一是其与linux相同的编码风格,二是官方提供了大量的组件,如本文接下来将介绍的虚拟文件系统。使用起来非常方便,对开发者来说不能太友好了。
DFS介绍
关于Device File System-设备虚拟文件系统的介绍,书中已经介绍得很详细了。这里我简单对书中的内容做一下概括。
DFS的结构如下图
主要分为POSIX接口层,虚拟文件系统层和设备抽象层。从图中可以看出,DFS是对各具体文件系统的抽象。用户在使用DFS的时候,不用关心不同文件系统类型之间的差异。
DFS使用
在RT-Thread中使用文件系统,需要经历如下几个步骤。
首先是调用dfs_init()函数进行DFS的初始化,并使用dfs_register()函数将刚刚初始化的文件系统注册到DFS中。然后将存储设备,如SPI Flash注册为块设备,以便后续进行挂载。之后是调用dfs_mkfs()进行文件系统的格式化。最后是调用dfs_mount()挂载文件系统。
文件系统的操作中,主要涉及到文件操作和目录操作。
文件操作主要涉及如下一些操作:
- 打开和关闭文件
- 读写数据
- 重命名
- 获取文件状态
- 删除文件
- 同步文件数据到存储设备
- 查询文件系统相关信息
- 监视I/O设备状态
目录操作主要涉及如下一些操作:
- 创建和删除目录
- 打开和关闭目录
- 读取目录
- 获取目录流的读取位置
- 设置下一次读取目录的位置
- 重设读取目录的位置为开头位置
具体各个操作方法的详细描述,请看官方的RT-Thread API参考手册。
总结
本文首先聊了一下为何由裸奔转入使用操作系统,然后选择《嵌入式实时操作系统RT-Thread设计与实现》一书中的第15章-虚拟文件系统,对其内容做了一下简单的概括。文中如有不妥之处,欢迎指正。