首页 > 系统 > Linux > 正文

Linux2.6内核下的YAFFS文件系统移植

2024-08-28 00:12:29
字体:
来源:转载
供稿:网友

一、YAFFS文件系统简介

YAFFS,Yet Another Flash File System,是一种类似于JFFS/JFFS2的专门为Flash设计的嵌入式文件系统。与JFFS相比,它减少了一些功能,因此速度更快、占用内存更少。

YAFFS和JFFS都提供了写均衡,垃圾收集等底层操作。它们的不同之处在于:

(1)、JFFS是一种日志文件系统,通过日志机制保证文件系统的稳定性。YAFFS仅仅借鉴了日志系统的思想,不提供日志机能,所以稳定性不如JAFFS,但是资源占用少。

(2)、JFFS中使用多级链表管理需要回收的脏块,并且使用系统生成伪随机变量决定要回收的块,通过这种方法能提供较好的写均衡,在YAFFS中是从头到尾对块搜索,所以在垃圾收集上JFFS的速度慢,但是能延长NAND的寿命。

(3)、JFFS支持文件压缩,适合存储容量较小的系统;YAFFS不支持压缩,更适合存储容量大的系统。

YAFFS还带有NAND芯片驱动,并为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD和VFS,直接对文件进行操作。NAND Flash大多采用MTD+YAFFS的模式。MTD( Memory Technology Devices,内存技术设备)是对Flash操作的接口,提供了一系列的标准函数,将硬件驱动设计和系统程序设计分开。

二、YAFFS文件系统的移植

yaffs代码可以从http://www.aleph1.co.uk/armlinux/projects/下载(yaffs代码包括yaffs_ecc

.c,yaffs_fileem.c,yaffs_fs.c,yaffs_guts.c,yaffs_mtdif.c,yaffs_ramem.c。)

表一 Yaffs文件系统源代码相关文件及功能描述

文件名 功   能

yaffs_ecc.c ECC校验算法

yaffs_fileem.c 测试flash

yaffs_fs.c 文件系统接口函数

yaffs_guts.c Yaffs文件系统算法

yaffs_mtdif.c NAND函数

yaffs_ramem.c Ramdisk实现

1.内核中没有YAFFS,所以需要自己建立YAFFS目录,并把下载的YAFFS代码复制到该目录下面。

#mkdir fs/yaffs

#cp *.c(yaffs source code) fs/yaffs

2.修改fs/Kconfig,使得可以配置yaffs :

source "fs/yaffs/Kconfig"

3.修改fs/makefile,添加如下内容:

obj-$(CONFIG_YAFFS_FS)          += yaffs/

4.在fs目录下生成yaffs目录,并在里面生成一个makefile 和Kconfig

Makefile 内容为:

yaffs-objs := yaffs_fs.o yaffs_guts.o yaffs_mtdif.o yaffs_ecc.o

EXTRA_CFLAGS += $(YAFFS_CONFIGS) -DCONFIG_KERNEL_2_6

Kconfig内容为:

#

# YAFFS file system configurations

#

config YAFFS_FS

tristate "Yet Another Flash Filing System(YAFFS) file system support"

help

YAFFS, for Yet Another Flash Filing System, is a filing system

optimised for NAND Flash chips.

To compile the YAFFS file system support as a module, choose M here:

the module will be called yaffs.

If unsure, say N.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表