Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15482403
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: 嵌入式

2011-01-11 09:42:19

 YAFFS 中是从头到尾对块搜索,所以在垃圾收集上 JFFS 的速度慢,但是能延长 NAND 的寿命。
  3 )、 JFFS 支持文件压缩,适合存储容量较小的系统; YAFFS 不支持压缩,更适合存储容量大的系统。
  YAFFS 还带有 NAND 芯片驱动,并为嵌入式系统提供了直接访问文件系统的 API ,用户可以不使用 Linux 中的 MTD 和 VFS ,直接对文件
  进行操作。 NAND Flash 大多采用 MTD+YAFFS 的模式。 MTD ( Memory Technology Devices ,内存技术设备)是对 Flash 操作的
  接口,提供了一系列的标准函数,将硬件驱动设计和系统程序设计分开。
  YAFFS2 是 YAFFS 的升级版,能更好的支持 NAND FLASH 。
  2.4.1 yaffs2文件系统制作工具 mkyaffs2image
  1. android yaffs2 源代码 external/yaffs2/
  2. 从网上下载 yaffs2 源码
  下载:
  下载:
  //点击左下角的 Download tarball 下整个tar包
  cvs下载:
  export CVSROOT=:pserver:anonymous@cvs.aleph1.co.uk:/home/aleph1/cvs cvs logon
  cvs co yaffs2
  tar -xvf yaffs2.tar.bz;cd yaffs2;make

  1. 必须sudo make,否则提示如下错误(但使用本文介绍的方法,我并没有在ubuntu 10.04实验通过)
  2. luther@gliethttp:~/yaffs2$
  3. make -C /lib/modules/2.6.32-24-generic/build M=/home/luther/Desktop/yaffs2 modules
  4. make[1]: Entering directory `/usr/src/linux-headers-2.6.32-24-generic'
  5. /usr/src/linux-headers-2.6.32-24-generic/arch/x86/Makefile:81: stack protector enabled but no compiler support
  6.   CC [M] /home/luther/Desktop/yaffs2/yaffs_mtdif.o
  7. Assembler messages:
  8. Error: unknown architecture `i586'

  9. Error: unrecognized option -march=i586
  10. cc1: error: unrecognized command line option "-mregparm=3"
  11. cc1: error: bad value (i586) for -march switch
  12. make[2]: *** [/home/luther/Desktop/yaffs2/yaffs_mtdif.o] Error 1
  13. make[1]: *** [_module_/home/luther/Desktop/yaffs2] Error 2
  14. make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-24-generic'
  15. make: *** [modules] Error 2

  16. 使用sudo可以正常编译通过
  17. luther@gliethttp:~/yaffs2$ sudo make
  18. make -C /lib/modules/2.6.32-24-generic/build M=/home/luther/yaffs2 modules
  19. make[1]: Entering directory `/usr/src/linux-headers-2.6.32-24-generic'
  20.   CC [M] /home/luther/yaffs2/yaffs_mtdif.o
  21.   CC [M] /home/luther/yaffs2/yaffs_mtdif2.o
  22.   CC [M] /home/luther/yaffs2/yaffs_mtdif1.o
  23.   CC [M] /home/luther/yaffs2/yaffs_packedtags1.o
  24.   CC [M] /home/luther/yaffs2/yaffs_ecc.o
  25.   CC [M] /home/luther/yaffs2/yaffs_fs.o
  26.   CC [M] /home/luther/yaffs2/yaffs_guts.o
  27. /home/luther/yaffs2/yaffs_guts.c:1712: warning: ‘yaffs_DeleteWorker’ defined but not used
  28. /home/luther/yaffs2/yaffs_guts.c:612: warning: ‘yaffs_VerifyTnodeWorker’ defined but not used
  29.   CC [M] /home/luther/yaffs2/yaffs_packedtags2.o
  30.   CC [M] /home/luther/yaffs2/yaffs_qsort.o
  31.   CC [M] /home/luther/yaffs2/yaffs_tagscompat.o
  32.   CC [M] /home/luther/yaffs2/yaffs_tagsvalidity.o
  33.   CC [M] /home/luther/yaffs2/yaffs_checkptrw.o
  34.   CC [M] /home/luther/yaffs2/yaffs_nand.o
  35.   LD [M] /home/luther/yaffs2/yaffs2.o
  36.   Building modules, stage 2.
  37.   MODPOST 1 modules
  38.   CC /home/luther/yaffs2/yaffs2.mod.o
  39.   LD [M] /home/luther/yaffs2/yaffs2.ko
  40. make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-24-generic
  为ubuntu 8.10 添加yaffs文件系统支持
  sudo mkdir -p /lib/modules/2.6.27-4-generic/kernel/fs/yaffs2
  sudo cp yaffs2.ko /lib/modules/2.6.27-4-generic/kernel/fs/yaffs2/
  sudo insmod /lib/modules/2.6.27-4-generic/kernel/fs/yaffs2/yaffs2.ko
  制作yaffs2文件系统
  mkyaffs2image /nfsroot/rootfs/system system.img
  /nfsroot/rootfs/system 为文件系统所在的目录 system.img 为生成的镜像文件
  2.4.2 在pc上挂载yaffs2文件系统
  sudo mkdir -p /mnt/mtd/yaffs2
  sudo modprobe mtdblock
  sudo modprobe mtdram total_size=100000 erase_size=256
  sudo insmod /lib/modules/2.6.27-4-generic/kernel/fs/yaffs2/yaffs2.ko
  sudo dd if=rootfs.yaffs2 of=/dev/mtdblock0
  sudo mount -t yaffs2 /dev/mtdblock0 /mnt/mtd/yaffs2
  #modprobe mtdram total_size=49152 erase_size=128
阅读(6670) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~