前言
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、代码下载。