Chinaunix首页 | 论坛 | 博客
  • 博客访问: 348036
  • 博文数量: 69
  • 博客积分: 3077
  • 博客等级: 中校
  • 技术积分: 602
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-11 09:40
个人简介

或以为孤权重,妄相忖度

文章分类

全部博文(69)

文章存档

2012年(1)

2011年(10)

2010年(39)

2009年(19)

我的朋友

分类: LINUX

2009-06-20 14:02:04

        Linux2.6.26.8 移植之二:YAFFS2文件系统移植                    


一、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中的MTDVFS,直接对文件进行操作。NAND Flash大多采用MTD+YAFFS的模式。MTD Memory Technology Devices,内存技术设备)是对Flash操作的接口,提供了一系列的标准函数,将硬件驱动设计和系统程序设计分开。


二、YAFFS文件系统的移植

1、让内核支持yaffs:

 下载yaffs2.tar.gz 解压,里面有个patch-ker.sh,用来给内核打补丁使内核支持yaffs
 $./patch-ker.sh c kerneldir
 
这样makemennuconfig的时File systems  ---> Miscellaneous filesystems  ---> 里面就有yaffs2了。

2、配置内核时选中YAFFS支持:

File systems  --->
 Miscellaneous filesystems  --->
 <*> YAFFS2 file system support                                  
  -*-   512 byte / page devices                                   
  [ ]     Use older-style on-NAND data format with pageStatus byte
  [*]       Lets Yaffs do its own ECC                              
  [ ]         Use the same ecc byte order as Steven Hill's nand_ecc
  -*-   2048 byte (or larger) / page devices

 

3、/arch/arm/plat-s3c24xx/common-smdk.C找到smdk_default_nand_part结构,修改nand分区,如下://如果你已经成功移植内核,且分区已经完成,则,这一步可以省略
static struct mtd_partition smdk_default_nand_part[] = {
 {
  name:  "vivi",
  offset:  0,
  size:  0x00020000
 }, {
  name:  "param",
  offset:  0x00020000,
  size:  0x00010000
 }, {
  name:  "kernel",
  offset:  0x00040000,
  size:  0x001C0000
 }, {
  name:  "root",
  offset:  0x00200000,
  size:  0x03e00000
 }
};
注:请结合vivi里面的分区来进行设置。
4、
配置内核时选中MTD支持:
Memory Technology Devices (MTD)  --->
 <*> Memory Technology Device (MTD) support
  [*]   MTD partitioning support
  
……
  --- User Modules And Translation Layers
  <*> Direct char device access to MTD devices
  <*> Caching block device access to MTD devices
 
……
NAND Flash Device Drivers  --->
 <*> NAND Device Support
 <*> NAND Flash support for S3C2410 SoC
 [*]   S3C2410 NAND driver debug

5、
编译内核并将内核下载到开发板的flash中。


三、Yaffs文件系统测试:
1、
内核启动之后,在启动信息里面可以看到如下内容:
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
Scanning device for bad blocks
Creating 5 MTD partitions on "NAND 64MiB 3,3V 8-bit":
.......

此时,你可能会遇到诸如:WARNING: Unable to open an initial console等的错误,这是因为此时,根分区里面还没有任何文件系统或者虽然已经有文件系统,但无法被内核识别,多半是文件系统的原因,请重新移植根文件系统。

2、挂载文件系统,后续。

 

阅读(1666) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~