是我的例子里就这么写的,还是你简化了?
1.直接写 “mt29f” 这个字符串是有风险的,先查找设备,然后用超找到的设备名当参数。
2.你没有调用 yaffs_start_up 这个初始化 yaffs 函数吧。
// rt_mtd_nand_t mtd_dev = RT_NULL;
// mtd_dev = (rt_mtd_nand_t)rt_device_find("mt29f");
// if (mtd_dev == RT_NULL)
// {
// rt_kprintf("no mtd device foundn");
// return -RT_ENOSYS;
// }
// yaffs_start_up();
// result = dfs_mount(mtd_dev->parent.parent.name, "/usr", "yaffs", 0, 0);
// if (result == RT_EOK)
// {
// rt_kprintf("Mount YAFFS2 on NAND successfullyn");
// }
// else
// {
// result = dfs_mkfs("yaffs", mtd_dev->parent.parent.name);
// if (result == RT_EOK)
// {
// result = dfs_mount(mtd_dev->parent.parent.name, "/usr", "yaffs", 0, 0);
// }
// else
// {
// rt_kprintf("Mount YAFFS2 on NAND failedn");
// return -RT_ERROR;
// }
// rt_kprintf("Mount YAFFS2 on NAND successfullyn");
// }
还有,一个地方是 yaffs_flashif.c 中的 yaffs_start_up 函数
mtd_nand = (rt_mtd_nand_t)rt_device_find("root");
这里得改成 rt_device_find("mt29f");
yaffs 的源码替换过了吗?