免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 954 | 回复: 0
打印 上一主题 下一主题

Linux2.6.26.8 移植之二:YAFFS文件系统移植笔记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-20 14:02 |只看该作者 |倒序浏览

        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中的MTD和VFS,直接对文件进行操作。NAND Flash大多采用MTD+YAFFS的模式。MTD( Memory Technology Devices,内存技术设备)是对Flash操作的接口,提供了一系列的标准函数,将硬件驱动设计和系统程序设计分开。
二、YAFFS文件系统的移植
1、让内核支持yaffs:
下载yaffs2.tar.gz,
http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/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、挂载文件系统,后续。



    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/98651/showart_1971454.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP