使用了romfs.创建了“/”根目录。
flash设备想要单独挂载在“/flash”目录下。
初始化时,在romfs.c文件中增加了增加了flash文件夹。代码如下
RT_WEAK const struct romfs_dirent _root_dirent[] =
{
{ROMFS_DIRENT_DIR, "dummy", (rt_uint8_t *)_dummy, sizeof(_dummy) / sizeof(_dummy[0])},
{ROMFS_DIRENT_FILE, "dummy.txt", _dummy_txt, sizeof(_dummy_txt)},
{ROMFS_DIRENT_DIR, "flash", RT_NULL, 0},
};
我觉得这样不直观,想要在自己写的初始化函数中创建一个目录。代码如下
int norflash_init(void)
{
/* 初始化 fal /
fal_init();
/ Create a block device on the file system partition of spi flash*/
struct rt_device mtd_dev = fal_mtd_nor_device_create(FS_PARTITION_NAME);
if (!mtd_dev)
{
LOG_E("Can't create a mtd device on '%s' partition.", FS_PARTITION_NAME);
}
else
{
//必须先创建rom文件系统,以提供后面的挂载目录
dfs_mount(RT_NULL,"/","rom",0,&(romfs_root));
if(mkdir("/flash",0x777) < 0)
{
LOG_E("Failed to create a directory:'/flash'");
}
/ 挂载 littlefs /
if (dfs_mount(FS_PARTITION_NAME, "/flash", "lfs", 0, 0) == 0)
{
LOG_I("Filesystem initialized!");
}
else
{
/ 格式化文件系统 /
dfs_mkfs("lfs", FS_PARTITION_NAME);
/ 挂载 littlefs */
if (dfs_mount(FS_PARTITION_NAME, "/flash", "lfs", 0, 0) == 0)
{
LOG_I("Filesystem initialized!");
}
else
{
LOG_E("Failed to initialize filesystem!");
}
}
}
return RT_EOK;
}
//上电自动初始化norflash创建,保证在norflash挂载前创建设备
INIT_ENV_EXPORT(norflash_init);
创建目录失败。是因为rom是只读的,只能按照结构体方式创建文件夹吗?

举报
更多回帖