如何编写Linux下Nand nandflash驱动动

如何编写Linux下Nand Flash驱动_百度知道新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
富足长乐, 积分 5530, 距离下一级还需 2470 积分
论坛徽章:0
本帖最后由 crifan 于
16:49 编辑
【详解】如何编写Linux下Nand Flash驱动
版本: 1.7作者:crifan邮箱: green-waste(
由于本文内容太长,不方便此处发表全文,所以只列出了目录。完成的PDF版本下载或查看:1. 豆丁网在线看2. 爱问下载3.china unix bbs附件
(1.71 MB, 下载次数: 2816)
16:43 上传
点击文件名下载附件
简介如何在Linux下实现Nand Flash驱动
整理了排版
添加了很多内容
修正了Nand Flash行列地址的计算方法
添加了ONFI,LBA规范的介绍
添加了Unique ID介绍
添加了对应的MTD中检测不同类型芯片的代码
增加了关于Nand Flash的软件和硬件的ECC算法的简介
1 正文之前 5
1.1 目的 5
1.2 目标读者和阅读此文的前提 5
1.3 说明 5
1.4 声明 5
2 编写驱动之前要了解的知识 6
2.1 一些相关的名词的解释 6
2.1.1 Non-Volatile Memory非易失性存储器 6
2.1.2 OTP(One Time Programmable)一次性可编程存储器 6
2.1.3 NDA(None-Disclosure Agreement) 6
2.1.4 Datasheet数据手册和Specification规范 6
2.1.5 Nand Flash相关的一些名词解释 7
2.1.5.1 (Bad) Block Management(坏)块管理 7
2.1.5.2 Wear-Levelling负载平衡 7
2.1.5.3 ECC(Error Correction Code)错误校验(代码) 7
2.2 硬件特性 8
2.2.1 什么是Flash 8
2.2.1.1 Flash的硬件实现机制 8
2.2.2 什么是Nand Flash 8
2.2.2.1 Nand Flash和Nor Flash的区别 9
2.2.2.2 Nand Flash的详细分类 10
2.2.3 SLC和MLC的实现机制 10
2.2.3.1 SLC(Single Level Cell) 10
2.2.3.2 MLC(Multi Level Cell) 10
2.2.3.3 关于如何识别SLC还是MLC 10
2.2.4 Nand Flash数据存储单元的整体架构 11
2.2.5 Nand Flash的物理存储单元的阵列组织结构 12
2.2.5.1 Block块 12
2.2.5.2 Page页 12
2.2.5.3 oob / Redundant Area / Spare Area 12
2.2.6 Flash名称的由来 13
2.2.7 Flash相对于普通设备的特殊性 13
2.2.8 Nand Flash引脚(Pin)的说明 14
2.2.8.1 为何需要ALE和CLE 15
2.2.8.2 Nand Flash只有8个I/O引脚的好处 15
2.2.8.2.1 减少外围连线: 15
2.2.8.2.2 提高系统的可扩展性 16
2.2.9 Nand flash的一些典型(typical)的特性 16
2.2.10 Nand Flash控制器与Nand Flash芯片 16
2.2.11 Nand Flash中的特殊硬件结构 16
2.2.12 Nand Flash中的坏块(Bad Block) 17
2.2.12.1 坏块的分类 17
2.2.12.2 坏块的标记 17
2.2.12.3 坏块的管理 18
2.2.12.4 坏块的比例 18
2.2.13 Nand Flash中页的访问顺序 18
2.2.14 常见的Nand Flash的操作 18
2.2.14.1 页编程(Page Program)注意事项 19
2.2.14.2 读(Read)操作过程详解 20
2.2.14.2.1 需要使用何种命令 20
2.2.14.2.2 发送命令前的准备工作以及时序图各个信号的具体含义 20
2.2.14.2.3 如何计算出我们要传入的行地址和列地址 22
2.2.14.2.4 读操作过程的解释 25
2.2.15 Nand Flash的一些高级特性 26
2.2.15.1 Nand Flash的Unique ID 26
2.2.15.1.1 什么是Unique ID唯一性标识 26
2.2.15.1.2 不同Nand Flash厂商的对Unique ID的不同的实现方法 26
2.2.15.1.2.1 Toshiba东芝的Nand的Unique ID 26
2.2.15.1.2.2 读取Toshiba的Nand的Unique ID 27
2.2.15.1.3 Samsung三星的Nand的Unique ID 27
2.2.15.1.3.1 读取Samsung的Nand的Unique ID 28
2.2.15.1.4 遵循ONFI规范的厂商的Nand的Unique ID 28
2.2.15.1.4.1 读取遵循ONFI的厂商的Nand的Unique ID 29
2.2.15.2 片选无关(CE don’t-care)技术 30
2.2.15.3 带EDC的拷回操作以及Sector的定义(Copy-Back Operation with EDC & Sector Definition for EDC) 31
2.2.15.4 多片同时编程(Simultaneously Program Multi Plane) 31
2.2.15.5 交错页编程(Interleave Page Program) 32
2.2.15.6 随机输出页内数据(Random Data Output In a Page) 32
2.3 软件方面 32
2.3.1 Nand Flash相关规范 – ONFI和LBA 32
2.3.1.1 ONFI是什么 32
2.3.1.1.1 ONFI Block Abstracted NAND 34
2.3.1.1.2 ONFI的好处 35
2.3.1.2 LBA规范是什么 35
2.3.1.3 为何会有ONFI和LBA 36
2.3.1.3.1 技术层面的解释 36
2.3.1.3.2 现实层面的解释 36
2.3.1.4 ONFI和LBA的区别和联系 36
2.3.1.4.1 ONFI和LBA的区别 36
2.3.1.4.2 ONFI和LBA的联系 36
2.3.2 内存技术设备,MTD(Memory Technology Device) 36
2.3.2.1 Linux MTD中检测不同类型Nand Flash的ID部分的代码 37
2.3.3 读操作的硬件到软件的映射 42
2.3.4 Nand flash驱动工作原理 47
3 Linux下Nand Flash驱动编写步骤简介 49
3.1 对于驱动框架部分 49
3.2 对于Nand Flash底层操作实现部分 49
4 引用文章 52
图表 1 典型的Flash内存单元的物理结构 8
图表 2 Nand Flash 和 Nor Flash的区别 9
图表 3 Nand Flash 第3个ID的含义 11
图表 4 Nand Flash物理存储单元的阵列组织结构 12
图表 5 Flash和普通设备相比所具有的特殊性 13
图表 6 Nand Flash引脚功能说明 14
图表 7 Nand Flash引脚功能的中文说明 15
图表 8 Nand Flash读写时的数据流向 17
图表 9 Nand Flash K9K8G08U0A的命令集合 19
图表 10 Nand Flash数据读取操作的时序图 21
图表 11 Nand Flash的地址周期组成 22
图表 12 Toshiba的Unique ID 27
图表 13 ONFI的参数页数据结构定义 29
图表 14 ONFI中Unique ID的结构 30
图表 15 ONFI中Read Unique ID命令的时序图 30
图表 16 ONFI中的Nand Flash的命令集合 34
图表 17 MTD设备和硬盘设备之间的区别 37
图表 18 Nand Flash数据读取操作的时序图 43
BBMBad Block ManagementBBTBad Block TableEEPROMElectrically Erasable Programmable Read-Only MemoryMLCMulti Level CellMOSFETMetal-Oxide -Semiconductor Field Effect Transistor金属氧化物半导体场效应晶体管
SLCSingle Level Cell
可用积分 +10
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
稍有积蓄, 积分 352, 距离下一级还需 148 积分
论坛徽章:0
LZ 辛苦了,这个必须顶
论坛徽章:0
crifan兄一发就是经典呀
小富即安, 积分 4530, 距离下一级还需 470 积分
论坛徽章:0
文档很棒,很深入
白手起家, 积分 23, 距离下一级还需 177 积分
论坛徽章:0
&&顶顶顶 楼主再接再厉
白手起家, 积分 57, 距离下一级还需 143 积分
论坛徽章:0
分享这个知识真的太无私了,真的非常感谢!
白手起家, 积分 49, 距离下一级还需 151 积分
论坛徽章:0
顶顶顶……
白手起家, 积分 87, 距离下一级还需 113 积分
论坛徽章:0
楼主总结的很好,条理很明晰,仔细研究下NAND Flash的datasheet并结合楼主这个文章会对NAND Flash的驱动有更深层次的理解!
白手起家, 积分 11, 距离下一级还需 189 积分
论坛徽章:0
厉害,高手。。。仰慕
白手起家, 积分 67, 距离下一级还需 133 积分
论坛徽章:0
作者真的辛苦了,thanks!如何编写linux下nand flash驱动_百度知道【详解】如何编写Linux下Nand Flash驱动
【详解】如何编写Linux下Nand Flash驱动
本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flash的常见的物理特性,且深入介绍了Nand Flash的一些高级功能,然后开始介绍Linux下面和Nand Flash相关的软件架构MTD的相关知识,最后介绍了在Linux的MTD驱动框架下,如何实现Nand Flash的驱动。
本文提供多种格式供:
HTML版本的在线地址为:
有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论:
简介如何在Linux下实现Nand Flash驱动
整理了排版
添加了很多内容
修正了Nand Flash行列地址的计算方法
添加了ONFI,LBA规范的介绍
添加了Unique ID介绍
添加了对应的MTD中检测不同类型芯片的代码
增加了关于Nand Flash的软件和硬件的ECC算法的简介
添加了Nand Flash位翻转的详细介绍
添加了Nand Flash的结构图
通过Docbook发布
修订 2.2.1
修正关于Nand Flash物理架构组成总容量方面的解释
修正其他一些笔误
添加了和Nand Flash相关的一些资料,比如id的命名规则
添加了keyword,第二章所有章节的id
修正了笔误,把"第7000个块中的第25页中的1208字节处"改为"第7000个块中的第64页中的1208字节处",以及同步修正了相关的数字
添加eMMC,eUSB等接口的简介
本文章遵从:1132人阅读
linux 设备驱动(92)
【详解】如何编写Linux下Nand Flash驱动 - 1 of 2
最后更新日期:
作者:crifan
邮箱:green-waste(
2.1.7.&&&&& Flash...
2.1.8.&&&&& Nand Flash(Pin)...
3.&&& LinuxNand Flash...
3.1.&&&&&&&& ...
3.2.&&&&&&&& Nand Flash..
4.&&& ... 2
Nand FlashLinuxLinuxNand FlashNand Flash
bugNand Flash
LinuxNand FlashNand FlashLinuxNand Flash
v2.6LinuxNand Flash
Nand FlashNand FlashReadLinuxNand FlashLinuxNand Flash
Nand FlashMTDLinuxMTDNandFlash
Nand Flash步步映射到具体的软件实现的过程,这样,使得读者更明白其中的内在逻辑,然后接着再介绍如何在理解了软硬件各自的所具有的功能,以及LinuxMTDLinuxNand Flash
FlashFlash Memory存储设备,存储设备有很多类,Flash(Non-volatile Memory Device)(Volatile Memory Device)/FlashROMSDRAMDDR SDRAMDDR2DDR3
的硬件实现机制
FlashMOSFET(Floating Gate)
Flash(uv-erasable)EPROMFloating Gate
1 典型的Flash内存单元的物理结构
Flash(electrical charge) external gateVthFlash0010
FlashNand Flashnor flash
Nand FlashNor Flash5
1.Nor128KB256KB1MB2MBNor Flash
2.Nand flashECCNand Flash1GB2GB8GBPC
Nor FlashubootNand Flash
Nor FlashSDRAMNand FlashLinux SDRAMLinuxNand Flashjffs2yaffs2consleconsole
Nor FlashUbootNand FlashLinux
和Nor Flash的区别
Nor flashdramCPUCPUnor flashNand FlashIOIONand Flashnor flashNand Flash
2 Nand Flash 和 Nor Flash的区别
1Nand Flash/Nand FlashXIP/
的详细分类
Nand Flash
1Bare NAND chipsNand Flash
2SmartMediaCards =+MP3smartsmartsmart
3DiskOnChip+glue logicglue logic=ECC+nand +stubNand Flash
Nand Flash1SLCMLC
(Single Level Cell)
VthVth1Vth0.
Nand Flash1External GateVth10Vth0
Nand Flash010101,FlashFlash
(Multi Level Cell)
SLC24Vin4V224 1/4 Vin1V2/4Vin2V3/4Vin3VVin4V200011011
2224 Level Cell2 Level CellNand flashdatasheet晕了。
4 2416 Level Cell
Nand FlashRead IDIDIDID45Nand FlashchipchipPlaneflashSLCMLCNand Flashdatasheet33rd byteSLC/MLC
3 Nand Flash 第3个ID的含义
Nand Flashchipchipplane
Nand FlashchipchipplaneNand FlashMulti Plane ProgramInterleave Page Program
Nand Flash -& Chip -& Plane -& Block -& Page -& oob
K9K8G08U0AchipK9F4G08U0AK9F4G08U0A2PlanePlane1GbK9F4G08U0A1Gb22Gb256MBK9K8G08U0A2K9F4G08U0A4Plane4256MB1GB
K9WAG08U1ANand Flash2K9K8G08U0AK9K8G08U0A1GB22GBK9NBG08U5A4K9K8G08U0A41GB4GB
blockpageNand FlashchipMulti Plane ProgramInterleave Page ProgramchipchipplaneNand Flashsize1GB2GB
Nand Flashchip
Nand Flash
4 Nand Flash物理存储单元的阵列组织结构
K9K8G08U0Adatasheet
Nand FlashchipBlock128KB256KB512KB128KB128KB64KBsmall blockNand Flash
BlockNand Flash/
pageNand Flash2KBNand Flash4KB8KB大于2KBNand Flashbig blockNand Flash5(cycle)Nand Flash是256B512BNand Flashsmall block4
Nand Flashsubpage1/21/4
oob / Redundant Area / Spare Area
spare area/redundant areaLinuxOOBOut Of BandNand FlashEDC(Error Detection Code)/ECCError Code Correction,
Error Checking and Correcting
?jffs2yaffs2oob
Flashblockbit/Flashblock128KB/256KB10xFF形容,所以,叫做Flash MemoryFlash
Flash10初始值,都是10xFFFFFFFF0block1010.
5 Flash和普通设备相比所具有的特殊性
flashEPROMEEPROMEEPROMProgram/
是2K/4KNand Flash128KB/256KB/512KBNor Flash64K/32K
6 Nand Flash引脚功能说明
Nand FlashPin
&7 Nand Flash引脚功能的中文说明
/RERECECLE
VccVssALECLE,
(Command Latch Enable, CLE)
(Address Latch EnableALE)Nand Flash8I/OCLEALENand Flash,Nand Flash,,,,.
只有8个I/O引脚的好处
Nand FlashRAM
(Parellel)Nor Flash4852
addraddr//addr8I/ONand Flash8(Nand Flash)
Nand FlashNand Flash
1. 200us800us
4. Serial access25nsNand Flash30ns50ns
5. multiplex
6. Nand Flash/
Nand Flash/K9G8G08U0M5K10K=1Nand FlashMicronMT29F1GxxABBNumonyx NAND04G-B2D/NAND08G-BxC100K10/常见的Nor Flash
7. 48TSOP1
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:546293次
积分:6090
积分:6090
排名:第2829名
原创:52篇
转载:270篇
评论:39条
(2)(1)(1)(2)(5)(16)(7)(8)(26)(12)(2)(1)(3)(5)(5)(3)(1)(20)(16)(16)(8)(2)(3)(2)(6)(9)(38)(12)(1)(15)(3)(7)(8)(11)(2)(2)(4)(6)(5)(3)(9)(15)

我要回帖

更多关于 linux 查看nandflash 的文章

 

随机推荐