NandFlash概念
Bad block Management 坏块管理
Wear-Leveling 负载平衡
ECC 错误校验码(海明码,BCH)
Flash的硬件机制:是以电荷形式存储,有电荷为1,电荷释放掉为0
Nor Flash NandFlash
成本高
容量小
速度快
不容易出错
存储启动代码,如uboot 存储系统和用户数据
Linux嵌入式平台的启动流程:
系统从装有启动代码的Nor Flash启动后,初始化对应的硬件,包括SDRAM等,然后将Nand Flash的linux内核读取到内存中,再跳转到SDRAM中去执行内核,最后,去Nand Flash上,挂载根文件系统,比如jffs2,yaffs2,再运行初始化脚本。
SLC 单个存储单元,1位数据,表示1或0
MLC 多个存储单元
Block 块,是擦除操作的最小单元
Page 页,是读写操作的基本单元
Oob 每一页外的空闲区域,作用为
· 标记是否为坏块
· 存储ECC数据
· 存储一些和文件系统相关的数据
Flash擦除后,全为1,而数据的写入,就是放电过程,代表数据从1变为0,在写数据之前,要先擦除,然后再写。
Nadn Flash位反转,原因:
· 漂移效应
· 编程干扰所产生的错误
· 读干扰所产生的错误
解决方法,ECC检测并纠正错误(软件算法,或硬件方法)
ONFI,统一了Nand Flash的操作接口,规范了全集集接口
LBA,samsung与Toshiba的规范
MTD,内存技术设备,
是linux的存储设备中的一个子系统,
对内存类设备,提供一个抽象层,一个统一的接口
韦东山老师的编写步骤
S3c_nand_init()
1. 分配一个nand_chip结构体 kzalloc
2. 设置nand_chip,提供给nand_scan函数使用,需要编写多个函数
3. 硬件相关的设置
使能时钟
使能片选
4. 使用nand_scan