RT-Thread:在运行RTT的GD32E103的Flash芯片上挂载文件系统


前言

GD25QXX挂载文件系统。文末有代码工程下载。

一、添加文件系统相关文件

1、新建文件夹,并且添加文件。文件路径:
rt-thread-rt-smart\components\dfs\src\,
rt-thread-rt-smart\components\dfs\filesystems\devfs\,
rt-thread-rt-smart\components\dfs\filesystems\elmfat\,
rt-thread-rt-smart\components\dfs\filesystems\elmfat\option\,
rt-thread-rt-smart\components\libc\compilers\armlibc\,
rt-thread-rt-smart\components\libc\compilers\common\,
rt-thread-rt-smart\components\finsh
在这里插入图片描述
在这里插入图片描述
2、添加头文件路径
在这里插入图片描述
3、加大tshell线程栈空间。
在这里插入图片描述
4、加大动态内存池
在这里插入图片描述
5、添加宏
在这里插入图片描述

/* Device virtual file system */

#define RT_USING_DFS
#define DFS_USING_WORKDIR
#define DFS_FILESYSTEMS_MAX 2
#define DFS_FILESYSTEM_TYPES_MAX 2
#define DFS_FD_MAX 16
#define RT_USING_DFS_ELMFAT

/* elm-chan's FatFs, Generic FAT Filesystem Module */

#define RT_DFS_ELM_CODE_PAGE 437
#define RT_DFS_ELM_WORD_ACCESS
#define RT_DFS_ELM_USE_LFN_3
#define RT_DFS_ELM_USE_LFN 3
#define RT_DFS_ELM_MAX_LFN 255
#define RT_DFS_ELM_DRIVES 2
#define RT_DFS_ELM_MAX_SECTOR_SIZE 4096
#define RT_DFS_ELM_REENTRANT
#define RT_USING_DFS_DEVFS

/* POSIX layer and C standard library */

#define RT_USING_LIBC
#define RT_USING_POSIX

二、编写应用层程序

1、编写gd25q相关应用层挂载文件系统代码。
在这里插入图片描述
gd25qxx.c

#include "gd25qxx.h"

/*******************************************************************************
* 函 数 名         : create_file_system
* 输    入         : 空
* 输    出         : 空
* 函数功能		   : 创建文件系统
* 详细描述		   : 空
*******************************************************************************/
static void create_file_system(void)
{
	/*格式化指定存储设备,并创建文件系统*/
	if(dfs_mkfs("elm", "gd25q") == RT_EOK)
	{
		rt_kprintf("create file system succeed!\n");
	}
	else
	{
		rt_kprintf("create file system failed!\n");
	}
}

/*******************************************************************************
* 函 数 名         : w25qxx_mount
* 输    入         : 空
* 输    出         : 空
* 函数功能		   : 挂载Flash文件系统
* 详细描述		   : 空
*******************************************************************************/
void gd25qxx_mount(void)
{
	/*查找Flash设备*/
	if(rt_device_find("gd25q") != RT_NULL) 
	{
		/*挂载Flash*/
		if(dfs_mount("gd25q", "/", "elm", 0, 0) == 0)
		{
			rt_kprintf("flash mount success!\n");
		} 
		else 
		{
			rt_kprintf("flash mount failed!\n");
		}
	}
}

/*******************************************************************************
* 函 数 名         : w25qxx_unmount
* 输    入         : 空
* 输    出         : 空
* 函数功能		   : 卸载Flash文件系统
* 详细描述		   : 空
*******************************************************************************/
void gd25qxx_unmount(void)
{
	/*查找Flash设备*/
	if(rt_device_find("gd25q") != RT_NULL) 
	{
		/*挂载Flash*/
		if(dfs_unmount("/") == 0)
		{
			rt_kprintf("flash unmount success!\n");
		} 
		else 
		{
			rt_kprintf("flash unmount failed!\n");
		}
	}
}

MSH_CMD_EXPORT(create_file_system,create file system);
MSH_CMD_EXPORT(gd25qxx_mount,gd25qxx mount);
MSH_CMD_EXPORT(gd25qxx_unmount,gd25qxx unmount);

gd25qxx.h

#ifndef __GD25QXX_H
#define __GD25QXX_H

#include <rtthread.h>
#include "spi_flash.h"
#include "spi_flash_sfud.h"
#include "drv_spi.h"
#include <dfs_elm.h>
#include <dfs_fs.h>
#include <dfs_posix.h>

void gd25qxx_mount(void);
void gd25qxx_unmount(void);

#endif

2、编译,下载和运行,输入create_file_system对gd25qxx进行格式化,再输入gd25qxx_mount进行文件系统挂载,挂载成功后就可以像往常一下对其操作了,贼爽…
在这里插入图片描述
3、代码下载。

总结

放假回家咯,明年见...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小破孩 != ERR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值