首页 理论教育 Linux嵌入式开发实例:YAFFS文件系统实现

Linux嵌入式开发实例:YAFFS文件系统实现

时间:2023-10-31 理论教育 版权反馈
【摘要】:嵌入式Linux内核本身并不支持YAFFS文件系统。下面介绍将YAFFS直接编译到内核的方法。首先需要将YAFFS源代码复制到内核fs目录下,进行必要的配置后,重新编译得到一个能够支持YAFFS文件系统的Linux内核。YAFFS代码主要包括yaffs_ecc.c、yaffs_fileem.c、yaffs_fs.c、yaffs_guts.c、yaffs_mtdif.c和yaffs_ramem.c。yaffs_fs.c:YAFFS与虚拟文件系统接口。yaffs_ramem.c:NANDFlash的RAM块仿真实现。Makefile的内容为:Kconfig文件是YAFFS文件系统的详细配置文件,其内容可参考下载的源代码中的/Linux-kernel/fs/yaffs/Kconfig文件。YAFFS文件系统主要配置选项说明见表7-5。

Linux嵌入式开发实例:YAFFS文件系统实现

嵌入式Linux内核本身并不支持YAFFS文件系统。要实现Linux内核支持YAFFS文件系统有两种方法:一种是直接把YAFFS编译到内核,另一种是将YAFFS编译成单独的模块加载。下面介绍将YAFFS直接编译到内核的方法。

首先需要将YAFFS源代码复制到内核fs目录下,进行必要的配置后,重新编译得到一个能够支持YAFFS文件系统的Linux内核。YAFFS源代码可以从http:/www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs/上免费下载。YAFFS代码主要包括yaffs_ecc.c、yaffs_fileem.c、yaffs_fs.c、yaffs_guts.c、yaffs_mtdif.c和yaffs_ramem.c。各文件的主要功能如下。

yaffs_ecc.c:ECC校验算法

yaffs_fileem.c:实现NANDFlash文件层仿真。

yaffs_fs.c:YAFFS与虚拟文件系统接口

yaffs_guts.c:YAFFS文件系统主要算法。

yaffs_mtdif.c:NANDMTD封装函数。

yaffs_ramem.c:NANDFlash的RAM块仿真实现。

实现支持YAFFS文件系统的Linux内核的具体步骤如下:

1)在内核源代码fs目录下建立YAFFS目录,并把下载的YAFFS代码复制到该目录下面。

2)修改fs/config.in,添加配置YAFFS文件系统选项。

978-7-111-33316-6-Chapter07-26.jpg(www.xing528.com)

978-7-111-33316-6-Chapter07-27.jpg

3)修改fs/Makefile,添加如下内容。

978-7-111-33316-6-Chapter07-28.jpg

4)在fs/yaffs/目录下生成Makefile和Kconfig文件。Makefile的内容为:

978-7-111-33316-6-Chapter07-29.jpg

Kconfig文件是YAFFS文件系统的详细配置文件,其内容可参考下载的源代码中的/Linux-kernel/fs/yaffs/Kconfig文件。YAFFS文件系统主要配置选项说明见表7-5。

表7-5 YAFFS文件系统主要配置选项说明

978-7-111-33316-6-Chapter07-30.jpg

5)修改内核源代码中关于NAND的分区设置。

NAND闪存支持两种分区格式:一种是MTD分区格式,另一种是BON分区格式。MTD技术实现对内存设备支持的统一接口,提供FLASH设备到字符设备和块设备的驱动转换,包含对各种不同类型NOR、NANDFLASH等的支持。通常多采用MTD分区格式。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈