Chinaunix

标题: 【详解】如何编写Linux下Nand Flash驱动 v1.2.pdf [打印本页]

作者: crifan    时间: 2011-03-16 22:22
标题: 【详解】如何编写Linux下Nand Flash驱动 v1.2.pdf
本帖最后由 crifan 于 2011-10-10 23:37 编辑

截至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驱动 v1.0 .pdf

现在最新版本是:【详解】如何编写Linux下Nand Flash驱动 v1.2.pdf

具体内容主要是:
详细解释了Nand flash的硬件特性以及对应的Linux下相关的软件架构,以及如何实现硬件到软件的映射,最后解释了如何在Linux下实现Nand Flash的驱动。

感兴趣的可以下载下来看看: 【详解】如何编写Linux下Nand Flash驱动 v1.2.pdf (1.14 MB, 下载次数: 1771)

下面贴出目录:
-------------------------------------------------------------

【详解】如何编写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 3ID的含义...................................................................................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


作者: ChiyuT    时间: 2011-03-23 00:31
讲得确实很详细,支持一下。

期待楼主继续讲解别的设备驱动。
作者: crifan    时间: 2011-03-25 19:26
另外有个DMA的驱动讲解,之前就贴出来过了,感兴趣的话可以去看看:
详解ARM的AMBA设备中的DMA设备PL08X的Linux驱动
http://bbs.chinaunix.net/thread-1932320-1-1.html

其他方面:
熟悉cpufreq(动态调节cpu频率以节省功耗),nor flash;
了解部分驱动,比如I2C,USB,I2S,keyboard,MMC/SD,RTC,GPIO,UART等。

感兴趣的,可以一起讨论:green-waste (at)13.com
作者: amarant    时间: 2011-03-27 19:35
收了,有时间学习学习
谢谢楼主分享
作者: Cedric761193    时间: 2011-03-31 21:43
Excellent reference
作者: _MipS    时间: 2011-04-01 13:05
好人一生平安
作者: crifan    时间: 2011-05-03 11:22
貌似,不贴出目录,看的人就少,呵呵。所以贴出目录,方便看的人,大概知道有哪些内容。
此道理,貌似就像卖东西,要会吆喝,才能吸引人啊~~~
作者: tommy_zzx    时间: 2011-05-17 11:53
回复 1# crifan


    顶顶顶!!!!
作者: gnepnaur    时间: 2011-05-17 14:30
看起来很棒,谢谢楼主!
作者: ckf513728912    时间: 2011-05-24 20:59
谢谢了 支持一下
作者: ckf513728912    时间: 2011-05-24 21:12
再顶一个 谢谢啊
作者: xxw19840406    时间: 2011-05-27 12:38
Thanks!
It's helpful
作者: sdwhlcf    时间: 2011-06-07 10:03
怎么下不下来啊
作者: sdydding    时间: 2011-08-26 11:45
不顶不仗义啊




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2