yaffs2与mtd之间的连接

yaffs2工作在VFS和MTD之间。

(1)移植yaffs2

在终端执行:

mkdir yaffs2_source
cd yaffs2_source
git clone git://www.aleph1.co.uk/yaffs2

yaffs2最新版本的源代码会下载到yaffs2_source目录中。

假设我使用的LINUX源代码放在linux-2.6目录中。

执行:

./patch-ker.sh c m ../linux-2.6

此命令将yaffs2的源代码复制到../linux-2.6/fs/yaffs2中,并修改../linux-2.6/fs/kconfig和../linux-2.6/fs/makefile文件。

执行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;
}

通过初始化yaffs_dev结构体,将yaffs_mtdif.c中定义的yaffs_mtd_write,yaffs_mtd_read等函数链接到yaffs2文件系统中。




xgbing CSDN认证博客专家 驱动开发 arm开发 嵌入式硬件
专注于嵌入式方向的软硬件设计与开发(ASM\C\C++,RTOS,Linux,android,以太网\嵌入式网络协议栈,蓝牙,WIFI,文件系统/嵌入式存储,显示\音频,单片机\DSP\ARM\Cortex,电路设计\PCB布板\硬件驱动\数字逻辑CPLD,FPGA\niosII),目前从事VirtualBox\qemu\KVM虚拟化研究工作。
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:上身试试 返回首页