YAFFS 介绍

这篇内容介绍了NAND Flash的基本知识,并详细阐述了YAFFS2文件系统的概述,包括Tnode结构、对象管理以及一些其他相关细节。YAFFS2为应对NAND Flash的需求,采用了独特的寻址方式,如Level 0 entry和chunk group,以扩展地址空间。
摘要由CSDN通过智能技术生成

10年时候做的一个PPT, 把它整理上来.

 

Outline
NAND Flash介绍
YAFFS2 Overview
Tnode Structure
YAFFS2 Object
YAFFS2 Misc
Reference

 

Nand Flash

页(page)
„页是Nand Flash的写入操作的最小单位
    ○现在常见的flash page size是2KB,老的nand flash多为512B
    ○每一个页,对应还有一块区域,叫做spare area,Linux系统中一般称之为OOB(Out of Band)。这块区域用于存放数据的校验值,文件系统也经常放些标志数据在里面。    2KB/page的flash一般spare area为64B,512B/page为16B
块(block)
„块是Nand Flash的擦除操作的最小单位
    ○块由多个页组成,ICE用的flash为64pages/block

 

写/擦特性
„Flash的擦除操作是以block块为单位的,一次性地把整个块擦除为1,也就是里面的内容全部都是0xFF了,这个过程是充电过程
„Write时,以页为单位,将对应的存储单元放电,所以才说,write过程只能从1变成0
Overwrite / Partial Page Programming
„某些flash支持修改Page中的Data时可以更改部份的Bit而不需要将Page Erase后才更改。如Page中的Data为10111010,要将该Data改成10100010则只需将其中两个Bit更改为0即可,不需先Erase再写入。
„这个功能常会发生这样的问题:在更改Bit时可能会有部分bit保持不变
„这个功能会给硬件设计增加难度,新的flash已不提供这个功能
Flash和普通设备相比所具有的特殊性

 

 
普通设备(硬盘/内存等)
Flash
读取/写入的叫法
读取/写入
读取/编程(Program)
读取/写入的最小单位
Bit/位
Page/页
擦除(Erase)操作的最小单位
Bit/位
Block/块
擦除操作的含义
将数据删除/全部写入0
将整个块都擦除成全是1,也就是里面的数据都是0xFF
对于写操作
直接写即可
在写数据之前,要先擦除,然后再写

Nand Flash对FS的要求

Nand Flash可能发生bit位翻转
„FS需要有ECC机制。因为一般NAND都自带ECC,所以这点不是必备
Nand Flash出厂就有坏块,使用时也可能出现坏块
„FS需要能识别/标记坏块
Nand Flash寿命有限(SLC约10万次擦写)
„FS需要尽量平均的使用各block
„FS需要提供buffer机制
Nand Flash的Partial Page Programming特性
„FS需要设计机制去区分一个数据是有效还是无效
Nand Flash的擦/写特性
„FS需要针对这个特性做特殊设计,如何实现garbage collection,如何提高performance

 

YAFFS2 Overview

是什么?
„YAFFS(Yet Another Flash File System) 是专门为NandFlash设计的文件系统
    ○JFFS/JFFS2文件系统是为NorFlash设计的
„主要由Aleph One公司的Charles Manning开发
„以GNU GPL协议开放源码
„YAFFS目前有YAFFS1、YAFFS2两个版本
    ○一般来说,YAFFS对小页面(512B+16B/页)有很好的支持,YAFFS2对更大的页面(2K+64B/页)支持更好。
    ○但两个版本有很多设计上的不同,不只是简单大小区别。Android中使用的是YAFF2,本文以YAFFS2为主
„YAFFS1是不完整的LFS( log­structured file system),YAFFS2是真正的LFS
特点
„针对Nand特性优化,提高performance及延长Nand寿命
    ○加载速度快,耗用内存少
    ○Wear Levelling延长Nand寿命
    ○Error Correction 提高了可靠性,尤其是使用时断电情形
„极好的可移植性
    ○YAFFS采用模块化设计,虽然最初是用在linux系统上的,但是也已经移植到其他系统比如wince。甚至可以使用在没有操作系统的设备上(“YAFFS/Direct”)
„不断的发展
    ○能支持很多新的flashIt now handles larger page sizes of 2KB
    ○正在开发对MLC NAND的支持

YAFFS concept

Object

„is anything that is stored in the file system:
    ○Regular data files
    ○Directories
    ○Hard­links
    ○Symbolic links
    ○Special objects (pipes, devices etc).
„All objects are identified by a unique integer objectId
Chunk
„the unit of allocation is the chunk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值