没有合适的资源?快使用搜索试试~ 我知道了~
首页如何编写linux下nand flash驱动
【Nand flash的特点】 Nand flash的操作,和其他一些常见的设备,如硬盘等,不同,其有自己特殊的方式。 其特殊就在于: 1.Nand flash的最小单位是页page,而不是其他很多设备所说的位bit。 2.写入数据之前必须先进行擦除erase操作 3.写的时候,最小单位是页page,对也进行写操作,也称作“页编程”,page programming 4.擦除的最小单位是块block 5.由于物理特性,容易出错,所以无论是读还是写,都要采取检测和校验,即EDC。 6.nand flash出厂时候,就有一定坏的块block,成为换块,并且做了一定标记。 7.nand flash中有个额外的空间,叫做spare area/oob
资源详情
资源评论
资源推荐

【简介】如何编写 linux 下 nand flash 驱动
【简介】如何编写 linux 下 nand ash 驱动
Version: V0.1
Time:10/06/2008
Author:green-waste@163.com
【编写驱动之前要了解的知识】
1.硬件方面:
【Flash 的种类】
Flash 主要分 nand flash 和 nor flash
除了网上最流行的这个解释之外:
NAND 和 NOR 的比较
我再多说几句,nor 的成本相对高,比较适合应用于存储少量的代码。
Nand flash 相对成本低,因此可以用来存储大量的数据,其在嵌入式系统中的作用,相当于 PC 上的硬盘,
用于存储大量数据。
Nor flash,有类似于 dram 之类的地址总线,因此可以直接和 CPU 相连,CPU 可以直接通过地址总线对
nor flash 进行访问,而 nand flash 没有这类的总线,只有 IO 接口,只能通过 IO 接口发送命令和地址,对
nand flash 内部数据进行访问。相比之下,nor flash 就像是并行访问,nand flash 就是串行访问,所以相对
来说,前者的速度更快些。
但是由于物理制程/制造方面的原因,导致 nor 和 nand 在一些具体操作方面的特性不同:

Nand 和 Nor Flash 的区别
NOR NAND
(备注)
接口 总线 I/O 接口
这个两者最大的区
别
单个 cell 大小 大 小
单个 Cell 成本 高 低
读耗时 快 慢
单字节的编程时间 快 慢
多字节的编程时间 慢 快
擦除时间 慢 快
功耗 高 低,但是需要额外的 RAM
是否可以执行代码 是
不行, 但是一些新的芯片,
可以在第一页之外执行一
些小的 loader
即是否允许,芯片
内执行(XIP,
eXecute In Place)
位反转 Bit twiddling 几乎无限制
1-3 次,也称作 “部分页编
程限制”
也就是数据错误
了?
在芯片出厂时候是否允许坏块 不允许 允许
【Nand Flash 的种类】
具体再分,又可以分为
1)Bare NAND chips:裸片,单独的 nand 芯片
2)SmartMediaCards: =裸片+一层薄塑料,常用于数码相机和 MP3 播放器中。之所以称 smart,是由于其
软件 smart,而不是硬件本身有啥 smart 之处。^_^
3)DiskOnChip:裸片+glue logic,glue logic=硬件 ECC 产生器+用于静态的 nand 芯片控制的寄存器+直接访
问一小片地址窗口,那块地址中包含了引导代码的 stub 桩,其可以从 nand flash 中拷贝真正的引导代码。
【Nand flash 的特点】
Nand flash 的操作,和其他一些常见的设备,如硬盘等,不同,其有自己特殊的方式。
其特殊就在于:
1.Nand flash 的最小单位是页 page,而不是其他很多设备所说的位 bit。
2.写入数据之前必须先进行擦除 erase 操作
3.写的时候,最小单位是页 page,对也进行写操作,也称作“页编程”,page programming
4.擦除的最小单位是块 block
5.由于物理特性,容易出错,所以无论是读还是写,都要采取检测和校验,即 EDC。
6.nand flash 出厂时候,就有一定坏的块 block,成为换块,并且做了一定标记。
7.nand flash 中有个额外的空间,叫做 spare area/oob
【spare area/oob】

Nand 由于最初硬件设计时候考虑到,额外的错误校验等需要空间,专门对应每个页,额外设计了叫做
spare area 空区域,在其他地方,比如 jffs2 文件系统中,也叫做 oob(out of band)数据。
其具体用途,总结起来有:
1. 标记是否是坏快
2. 存储 ECC 数据
3. 存储一些和文件系统相关的数据,如 jffs2 就会用到这些空间存储一些特定信息
【常见 Nand Flash 的大小及参数】
常见的 nand flash 的大小,由最开始的小于 256M,到现在的常见的 1G,2G,甚至更大。
以前的 nand flash 的
Pagesize 页大小,多为 512B+16B 的 oob,block 大小为 64*(512B+16B)=32KB+1KB
现在目前市场上见到的,绝大多数,都是新的 nand falsh,其 Pagesize 页大小多为 2KB+64B 的 oob,block
大小多为 64pages 页=64*(2K+64B)=128KB+4KB,一个 nand flash 中的芯片,一般含有 4096 个块,比如
samsung 的 K9F4G08U0M,所以这个 nand flash 大小就是
4096 Blocks = 4096 * 64 *(2K+64B)=512MB
即:
1 Page = (2K + 64)Bytes
1 Block = (2K + 64)B x 64 Pages
= (128K + 4K) Bytes
1 Device = (2K+64)B x 64Pages x 4,096 Blocks
= 4,224 Mbits =512MB
【Nand flash 工作原理】
所谓工作原理,其实也就是对应对其如何操作的。
还是以上面提到的 samsung 的 K9F4G08U0M 的 nand flash 为例,简单描述如下:
1.nand flash 定义了一些引脚,使得你可以发送命令过去,实现对 nand flash 的操控:
剩余10页未读,继续阅读


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1