电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
RT-Thread学习笔记+4.RTT组件之SDIO接口文件系统
分 享
扫描二维码分享
RT-Thread学习笔记+4.RTT组件之SDIO接口文件系统
SDIO
文件系统
川楠
关注
发布时间: 2020-04-30
丨
阅读: 3780
#### 摘要 上一篇的文章,我用到I2C的外设,这次就文件系统来做一个使用介绍。 早些年刚学STM32的时候,用过FATFS文件系统,不过这个文件系统是在裸机上跑的,没有加入到RTOS上。本次使用过的是RT-Thread提供的一个文件组件,全称为 Device File System,即设备虚拟文件系统”,类似 UNIX 文件、文件夹的风格。 至于这个虚拟的文件系统的详细情况,大家可以去RTT官网的文档中心查看相关的资料,我这里主要将如何去使用这个文件系统组件。 ENV工具:env_released_1.1.3 RTT版本:rt-thread-v4.0.1 #### 硬件情况 MCU采用的是STM32F103RCT6芯片,TF卡使用的SDIO接口。 ![](https://cf04.ickimg.com/bbsimages/202004/d0847101edc5c4b715d75f2f7e64c0e9.png) 本次主要的目的是,将传感器采集到的数据写在TF卡上,并且一行一行的保存到文本文件上,以便后期将文件拷贝到电脑,通过表格分析数据。 #### 文件系统组件添加 本次使用的是上一篇文章移植成功的RTT工程。 进入MDK工程目录下,打开ENV配置界面,通过menuconfig进入到图形配置界面,依次进入RT-Thread Configuration → Hardware Drivers Config → On-chip Peripheral Drivers菜单。 ![](https://cf04.ickimg.com/bbsimages/202004/f9870d8b8ab52487f440c822a53e7aea.png) 这里并没有SDIO的相关接口,所以此时需要先修改rt-thread\bsp\stm32\stm32f103-td-demo\board\文件夹下的Kconfig文件。添加下图红框中的内容: ![](https://cf04.ickimg.com/bbsimages/202004/25157414ad4844e298f58ab240a5e7f2.png) 另外,在rt-thread_td\bsp\stm32\stm32f103-td-demo\board\CubeMX_Config文件夹下,运行CubeMX_Config.ioc,配置单片机的SDIO接口。 ![](https://cf04.ickimg.com/bbsimages/202004/cffcc1229a8e9a9266e6ab0d4932d073.png) CubeMX软件生成代码。回到rt-thread_td\bsp\stm32\stm32f103-td-demo\board\CubeMX_Config文件夹下,可以看到CubeMX生成的文件都在这个文件夹下。 但是实际上,只需要保留Inc和Src两个文件夹和CubeMX_Config工程文件即可,Drivers和MDK-ARM文件夹可以直接删掉。 ![](https://cf04.ickimg.com/bbsimages/202004/6df41f667e0b4dd0e2be33b47fb16201.png) SDIO 初始化的时候会调用Src文件下的一些函数。 接下来就需要再次进入到ENV的图形配置界面,分别打开如下的配置: 1、在 RT-Thread Configuration → Hardware Drivers Config → On-chip Peripheral Drivers下打开SDIO总线。 ![](https://cf04.ickimg.com/bbsimages/202004/043fa3dd9de6d11083ec97f38f761fed.png) 2、在 RT-Thread Configuration → RT-Thread Components → Device virtual file system下打开文件系统相关配置。 ![](https://cf04.ickimg.com/bbsimages/202004/c304cf6c43b25d4e1bea036628890f88.png) 3、由于我们在开发的时候,不可避免的会用到一些C库,所以需要在RT-Thread Configuration → RT-Thread Components → POSIX layer and C standard library打开LIBC库。 ![](https://cf04.ickimg.com/bbsimages/202004/fdaabfa23009b2525fe25b5e3eda3d4f.png) 关于图形配置就已经完成了。剩下的就是生成工程代码了。使用命令:scons --target=mdk5 ![](https://cf04.ickimg.com/bbsimages/202004/511da2d98ec5ede3a970963cc06dac0e.png) 接下来就是打开KEIL工程,编译,下载。 ![](https://cf04.ickimg.com/bbsimages/202004/e001e6100a97b82b7feb250662024aa6.png) 插入TF卡,我用的是16G的闪迪,程序运行如下:可以在串口终端上输入一些指令,查看文件系统的挂载情况。 ![](https://cf04.ickimg.com/bbsimages/202004/9502dedca40f82c874bc054491f3d6b2.png) 到了这里,我的文件系统就算是成功的移植到单片机了。 #### 文件系统组件使用 经过上面的步骤,虽然文件系统已经移植完成,但是如果此时使用ls等命令,你会发现头一些故障提示。 ![](https://cf04.ickimg.com/bbsimages/202004/58839f50b759cc2a104640567be5cedd.png) 在使用的时候,必须要将文件系统挂在在一个指定的路径下。另外,为了方便文件系统的程序开发,这里我新建了一个dev_fs.c的文件,这样我文件系统相关的函数就可以全部放在这里了。 ![](https://cf04.ickimg.com/bbsimages/202004/70225930345a765b18037ff1a5cc30ab.png) 其中dfs_mount("sd0","/","elm",0,0)语句的是思议是。 将sd0设备挂载在“/”路径下,也就是根目录下,按照elm格式。支持的文件系统类型如下: ![](https://cf04.ickimg.com/bbsimages/202004/b38752def5643516007983b078e2579a.png) 另外,INIT_APP_EXPORT(dev_dfs_init);这个定义是系统启动后,直接运行dev_dfs_init()这个函数,这个样就可以达到,开机自动挂载文件系统的目的了。同时,之前的main.c的文件也可以不同修改。 接下来就是写一个测试示例函数,新建或者打开一个LogTest.txt文件,将一个字符串写到text文本上。每调用一次,就在文本的末尾新增一行。 ![](https://cf04.ickimg.com/bbsimages/202004/a64279638e997fa1a6cd0027fbb903a0.png) 需要编写的程序就这么多,编译,下载到单片机,串口显示内容如下, ![](https://cf04.ickimg.com/bbsimages/202004/a4b4562dd88ab13fa2f092ace9ff8cc6.png) 此时TF上,应该新建了一个LogTest.txt文件,并且里面有5行RT_Thread FS Test!字符串。那我们将就TF卡插到电脑上看一下吧。 ![](https://cf04.ickimg.com/bbsimages/202004/3029f3d1eff42222e51b291be97da08d.png) 文件内容显示: ![](https://cf04.ickimg.com/bbsimages/202004/600216b03d53a77233b98df85c615c59.png) 到了这里文件系统读写算是完全成功了。当然文件系统的操作不止读写,还有,移动、重命名,删除等操作,具体的大家可以看RTT官网。只不过读写是用的最多的而已。 #### 结语 这种类UNIX风格的文件系统,除了上述功能,也是支持在串口终端对TF卡的文件进行管理的,有兴趣的朋友也可以试试,cd,ls,mv,rm等等指令。相信你一定会喜欢这种风格的。 细心的朋友,可能你已经发现我TF卡山的LogTest.txt文件创建时间竟然是2098年,这个明显的错误应该怎么去解决? 答案是:RTC,只要开启RTC就能解决。 好了,本次汇报就到此结束了,情有终,义还在,大家江湖再见!
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
川楠
擅长:单片机综合应用 硬件设计
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交