不同于PC机(文件是存储在硬盘上的),手机使用FLASH作为存储介质。HTC的G1使用的是NAND FLASH——这种存储目前已经相当普及了,而且种类也颇多(如SLC、MLC等),存储密度也越来越高(已经出现几十GB大小的NANDFLASH),价格也越来越低。
YAFFS2是专门用在FLASH上的文件系统,YAFFS2是“Yet Another Flash File System,2nd edition”的缩写。YAFFS2为Linux内核提供了一个高效访问NANDFLASH的接口。但是NANDFLASH的支持并不包含在标准的2.6.25内核中,所以Google在其中添加了对NANDFLASH的支持。据统计,为了支持YAFFS2,Google一共改动和增加了以下35个文件:
1、Chg:fs/Kconfig添加YAFFS配置
2、Chg: fs/Makefile添加YAFFS
以下为新增的YAFFS2:
1、New:fs/yaffs2/Kconfig18New:fs/yaffs2/yaffs_mtddif2.h
2、New:fs/yaffs2/Makefile19New:fs/yaffs2/yaffs_nand.c
3、New:fs/yaffs2/devextras.h20New:fs/yaffs2/yaffs_nand.h
4、New:fs/yaffs2/moduleconfig.h21New:fs/yaffs2/yaffs_nandemul2k.h
5、New:fs/yaffs2/yaffs_checkptrw.c22New:fs/yaffs2/yaffs_packedtags1.c
6、New:fs/yaffs2/yaffs_checkprtw.h23New:fs/yaffs2/yaffs_packedtags1.h
7、New:fs/yaffs2/yaffs_ecc.c24New:fs/yaffs2/yaffs_packedtags2.c
8、New:fs/yaffs2/yaffs_ecc.h25New:fs/yaffs2/yaffs_packedtags2.h
9、New:fs/yaffs2/yaffs_fs.c26New:fs/yaffs2/yaffs_qsort.c
10、New:fs/yaffs2/yaffs_getblockinfo.h27New:fs/yaffs2/yaffs_qsort.h
11、New:fs/yaffs2/yaffs_guts.c28New:fs/yaffs2/yaffs_tagscompat.c
12、New:fs/yaffs2/yaffs_guts.h29New:fs/yaffs2/yaffs_tagscompat.h
13、New:fs/yaffs2/yaffs_mtdif.c30New:fs/yaffs2/yaffs_tagsvaliditiy.c
14、New:fs/yaffs2/yaffs_mtdif.h31New:fs/yaffs2/yaffs_tagsvalidity.h
15、New:fs/yaffs2/yaffs_mtddif1.c32New:fs/yaffs2/yaffsinterface.h
16、New:fs/yaffs2/yaffs_mtddif1.h33New:fs/yaffs2/yportenv.h