rt-thread
rt-thread copied to clipboard
[Bug] DFS_V2 无法在非smart环境下编译通过
RT-Thread Version
master
Hardware Type/Architectures
STM32H750
Develop Toolchain
MDK Keil
Describe the bug
- 使用配置如下
/* DFS: device virtual file system */
#define RT_USING_DFS
#define DFS_USING_POSIX
#define DFS_USING_WORKDIR
#define DFS_FD_MAX 64
#define RT_USING_DFS_V2
#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_LFN_UNICODE_0
#define RT_DFS_ELM_LFN_UNICODE 0
#define RT_DFS_ELM_MAX_LFN 255
#define RT_DFS_ELM_DRIVES 2
#define RT_DFS_ELM_MAX_SECTOR_SIZE 512
#define RT_DFS_ELM_REENTRANT
#define RT_DFS_ELM_MUTEX_TIMEOUT 3000
/* end of elm-chan's FatFs, Generic FAT Filesystem Module */
#define RT_USING_DFS_DEVFS
#define RT_USING_DFS_ROMFS
/* end of DFS: device virtual file system */
#define RT_USING_FAL
#define FAL_DEBUG_CONFIG
#define FAL_DEBUG 1
#define FAL_PART_HAS_TABLE_CFG
#define FAL_USING_SFUD_PORT
#define FAL_USING_NOR_FLASH_DEV_NAME "norflash0"
- KEIL AC6编译报错如下
- 报错信息放在 //! 注释中
1. devtmpfs_stat
static int devtmpfs_stat(struct dfs_dentry *dentry, struct stat *st)
{
struct dfs_vnode *vnode;
if (dentry && dentry->vnode)
{
vnode = dentry->vnode;
st->st_dev = (dev_t)(long)(dentry->mnt->dev_id);
st->st_ino = (ino_t)dfs_dentry_full_path_crc32(dentry);
st->st_gid = vnode->gid;
st->st_uid = vnode->uid;
st->st_mode = vnode->mode;
st->st_nlink = vnode->nlink;
st->st_size = vnode->size;
//! rt-thread/components/dfs/dfs_v2/filesystems/devfs/devtmpfs.c(283): error: no member named 'st_mtim' in 'struct stat'
st->st_mtim.tv_nsec = vnode->mtime.tv_nsec;
st->st_mtim.tv_sec = vnode->mtime.tv_sec;
st->st_ctim.tv_nsec = vnode->ctime.tv_nsec;
st->st_ctim.tv_sec = vnode->ctime.tv_sec;
st->st_atim.tv_nsec = vnode->atime.tv_nsec;
st->st_atim.tv_sec = vnode->atime.tv_sec;
//! rt-thread/components/dfs/dfs_v2/filesystems/devfs/devtmpfs.c(288): error: no member named 'st_atim' in 'struct stat'
//! 这一段全部报错;stat,h中结构体没有这个参数;修改为atime等参数也不对劲;
}
return RT_EOK;
}
2. dfs_pcache.c
#include "dfs_pcache.h"
#include "dfs_dentry.h"
#include "dfs_mnt.h"
//! rt-thread/components/dfs/dfs_v2/src/dfs_pcache.c(19): error: 'mm_page.h' file not found
#include "mm_page.h"
#include <mmu.h>
#include <tlb.h>
3. ino_t
- ino_t没有定义 //! rt-thread/components/dfs/dfs_v2/filesystems/devfs/devtmpfs.c(276): error: use of undeclared identifier 'ino_t'
Other additional context
- 不知道怎么修改
- 这个是怎么通过编译的?
- 还是说只能使用DFS_V1?
好像是的,MCU更多来搭配dfs v1来使用。然后针对dfs v2,如果要适配到MCU,估计还需要特别梳理下。
感谢反馈,后续抽时间来看看dfs v2的情况