yaffs2工作在VFS和MTD之间。
(1)移植yaffs2
在终端执行:
mkdir yaffs2_source cd yaffs2_source git clone git://www.aleph1.co.uk/yaffs2
假设我使用的LINUX源代码放在linux-2.6目录中。
执行:
./patch-ker.sh c m ../linux-2.6
执行makemenu配置内核并将yaffs2加上:
cd ../linux-2.6 make menuconfig
修改后保存。
OK, 移植工作完成。
(2) yaffs2与mtd的联系
关于yaffs2的工作原理的介绍,在上一篇我发了一个PPT, 那是我以前写的,源代码是当时的旧版本。
与MTD相关的代码在yaffs_mtdif.c文件中。
void yaffs_mtd_drv_install(struct yaffs_dev *dev) { struct yaffs_driver *drv = &dev->drv; drv->drv_write_chunk_fn = yaffs_mtd_write; drv->drv_read_chunk_fn = yaffs_mtd_read; drv->drv_erase_fn = yaffs_mtd_erase; drv->drv_mark_bad_fn = yaffs_mtd_mark_bad; drv->drv_check_bad_fn = yaffs_mtd_check_bad; drv->drv_initialise_fn = yaffs_mtd_initialise; drv->drv_deinitialise_fn = yaffs_mtd_deinitialise; }