玩转RT-Thread系列教程(10)--文件系统使用
Posted Rb菌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转RT-Thread系列教程(10)--文件系统使用相关的知识,希望对你有一定的参考价值。
玩转RT-Thread系列教程(10)–文件系统使用
一、文件系统介绍
RT-Thread的文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型 ,是一种用于向用户提供底层数据访问的机制。
RT-Thread DFS 组件的主要功能特点有:
- 为应用程序提供统一的 POSIX 文件和目录操作接口:read、write、poll/select 等。
- 支持多种类型的文件系统,如 FatFS、RomFS、DevFS 等,并提供普通文件、设备文件、网络文件描述符的管理。
- 支持多种类型的存储设备,如 SD Card、SPI Flash、Nand Flash 等。
更多关于RTT文件系统可以查看RTT官方文档
二、文件系统的配置
2.1、打开cubemx配置
2.2、使用env使能SD设备+文件系统
menuconfig
2.3、生成mdk工程
三、文件系统使用
3.1、下载验证
可以看到,RTT组件已经为我们自动的识别出了SD设备
3.2、编写挂载代码
3.2.1、添加FileSyetem.c文件
3.2.2、在FileSyetem编写业务逻辑
具体代码:
#include "FileSystem.h"
//SD卡挂完成的信号量
static rt_sem_t SD_CardFinsh_mutex = RT_NULL;
static rt_thread_t thread_filesystem;
static void MountSDcard(void)
{
rt_device_t dev;
while (1)
{
dev = rt_device_find("sd0");
if (dev != RT_NULL)
{
if (dfs_mount("sd0", "/", "elm", 0, 0) == RT_EOK)
{
rt_kprintf("SD mount to / success\\n");
//释放SD_CardFinsh_mutex信号量
rt_sem_release(SD_CardFinsh_mutex);
}
else
{
rt_kprintf("SD mount to / failed\\n");
}
break;
}
rt_thread_delay(50);
}
}
void FlieSystem_entry(void *parameter)
{
static rt_err_t result;
MountSDcard();
while (1)
{
/* 永久方式等待信号量*/
result = rt_sem_take(SD_CardFinsh_mutex, RT_WAITING_FOREVER);
if (result != RT_EOK)
{
rt_kprintf("t2 take a SD_CardFinsh_mutex semaphore, failed.\\n");
rt_sem_delete(SD_CardFinsh_mutex);
return;
}
else
{
rt_sem_delete(SD_CardFinsh_mutex);
return;
}
}
}
static int FileSystemInit(void)
{
/* 创建一个信号量 */
SD_CardFinsh_mutex = rt_sem_create("SDCard_mutex", 0, RT_IPC_FLAG_FIFO);
//创建sd线程
thread_filesystem = rt_thread_create("file_sys", FlieSystem_entry, RT_NULL, 2048, 20, 10);
if (thread_filesystem != RT_NULL)
{
rt_thread_startup(thread_filesystem);
}
}
INIT_APP_EXPORT(FileSystemInit);
3.3、编译、下载、验证
FinSH 命令 | 描述 |
---|---|
ls | 显示文件和目录的信息 |
cd | 进入指定目录 |
cp | 复制文件 |
rm | 删除文件或目录 |
mv | 将文件移动位置或改名 |
echo | 将指定内容写入指定文件,当文件存在时,就写入该文件,当文件不存在时就新创建一个文件并写入 |
cat | 展示文件的内容 |
pwd | 打印出当前目录地址 |
mkdir | 创建文件夹 |
mkfs | 格式化文件系统 |
可以看见SD卡挂载成功,下一次我们要利用RTT的文件系统存储一些数据等等
以上是关于玩转RT-Thread系列教程(10)--文件系统使用的主要内容,如果未能解决你的问题,请参考以下文章
玩转RT-Thread系列教程(11)--综合485通信+文件系统综合实战
玩转RT-Thread系列教程(11)--综合485通信+文件系统综合实战