截至2011-10-10,最新的版本是 v1.8,可以去这里下载:
【详解】如何编写Linux下Nand Flash驱动 v1.8
http://bbs.chinaunix.net/thread-3603541-1-1.html
对于之后的新版本,想要的,可以发邮件给我:green-waste(At)163.com。
【详解】如何编写Linux下Nand Flash驱动
版本: 1.2
最后更新日期:2011-03-15
作者:crifan
邮箱:green-waste(At)163.com
目录
1.正文之前...................................................................................................................................4
1.1.目的...........................................................................................................................4
1.2.目标读者和阅读此文的前提...................................................................................4
1.3.说明...........................................................................................................................4
1.4.声明...........................................................................................................................4
2.编写驱动之前要了解的知识...................................................................................................5
2.1.硬件特性...................................................................................................................5
2.1.1.什么是Flash.....................................................................................................5
2.1.1.1.Flash的硬件实现机制.............................................................................5
2.1.2.什么是Nand Flash...........................................................................................5
2.1.2.1.Nand Flash和Nor Flash的区别..............................................................6
2.1.2.2.Nand Flash的详细分类............................................................................7
2.1.3.SLC和MLC的实现机制................................................................................7
2.1.3.1.SLC(Single Level Cell)........................................................................7
2.1.3.2.MLC(Multi Level Cell)........................................................................7
2.1.3.3.关于如何识别SLC还是MLC................................................................8
2.1.4.Nand Flash数据存储单元的整体架构............................................................8
2.1.5.Nand Flash的物理存储单元的阵列组织结构................................................9
2.1.5.1.Block块....................................................................................................9
2.1.5.2.Page页......................................................................................................9
2.1.5.3.oob / Redundant Area / Spare Area.........................................................10
2.1.6.Flash名称的由来...........................................................................................10
2.1.7.Flash相对于普通设备的特殊性...................................................................10
2.1.8.Nand Flash引脚(Pin)的说明..........................................................................11
2.1.8.1.为何需要ALE和CLE...........................................................................12
2.1.8.2.Nand Flash只有8个I/O引脚的好处..................................................12
2.1.8.2.1.减少外围连线:..........................................................................12
2.1.8.2.2.提高系统的可扩展性..................................................................13
2.1.9.Nand flash的一些典型(typical)的特性.........................................................13
2.1.10.Nand Flash控制器与Nand Flash芯片.........................................................13
2.1.11.Nand Flash中的特殊硬件结构......................................................................13
2.1.12.Nand Flash中的坏块(Bad Block)..................................................................14
2.1.12.1.坏块的分类...........................................................................................14
2.1.12.2.坏块的标记...........................................................................................14
2.1.12.3.坏块的管理...........................................................................................15
2.1.12.4.坏块的比例...........................................................................................15
2.1.13.Nand Flash中页的访问顺序..........................................................................15
2.1.14.常见的Nand Flash的操作.............................................................................15
2.1.14.1.页编程(Page Program)注意事项.....................................................16
2.1.14.2.读(Read)操作过程详解...................................................................17
2.1.14.2.1.需要使用何种命令....................................................................17
2.1.14.2.2.发送命令前的准备工作以及时序图各个信号的具体含义....17
2.1.14.2.3.如何计算出我们要传入的行地址和列地址............................19
2.1.14.2.4.读操作过程的解释....................................................................20
2.1.15.Nand Flash的一些高级特性..........................................................................20
2.1.15.1.片选无关(CE don’t-care)技术..............................................................20
2.1.15.2.带EDC的拷回操作以及Sector的定义(Copy-Back Operation with EDC & Sector Definition for EDC).....................................................................21
2.1.15.3.多片同时编程(Simultaneously Program Multi Plane).........................21
2.1.15.4.交错页编程(Interleave Page Program)............................................21
2.1.15.5.随机输出页内数据(Random Data Output In a Page).....................22
2.2.软件方面.................................................................................................................22
2.2.1.内存技术设备,MTD(Memory Technology Device)..............................22
2.2.2.读操作的硬件到软件的映射.........................................................................23
2.2.3.Nand flash驱动工作原理..............................................................................28
3.Linux下Nand Flash驱动编写步骤简介..............................................................................30
3.1.对于驱动框架部分.................................................................................................30
3.2.对于Nand Flash底层操作实现部分.....................................................................30
4.引用文章.................................................................................................................................33
图表
图表1 典型的Flash内存单元的物理结构..........................................................................5
图表2 Nand Flash 和Nor Flash的区别...............................................................................6
图表3 Nand Flash 第3个ID的含义...................................................................................8
图表4 Nand Flash物理存储单元的阵列组织结构...............................................................9
图表5 Flash和普通设备相比所具有的特殊性..................................................................10
图表6 Nand Flash引脚功能说明........................................................................................11
图表7 Nand Flash引脚功能的中文说明.............................................................................12
图表8 Nand Flash读写时的数据流向................................................................................14
图表9 Nand Flash K9K8G08U0A的命令集合...................................................................16
图表10 Nand Flash数据读取操作的时序图.......................................................................18
图表11 Nand Flash的地址周期组成...................................................................................19
图表12 MTD设备和硬盘设备之间的区别........................................................................23
图表13 Nand Flash数据读取操作的时序图.......................................................................24
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |