好文档 - 专业文书写作范文服务资料分享网站

nor闪存和Nand闪存

天下 分享 时间: 加入收藏 我要投稿 点赞

NOR 和 NAND 是现在市场上两种主要地非易失闪存技术 .Intel 于 1988 年首先开发出 NOR flash 技术 ,彻底改变了原先由 EPROM 和 EEPROM 一 统天下地局面 .紧接

着 ,1989 年,东芝公司发表了

NAND flash 结构 ,强调降低每比特地成本 ,更高地性能 ,并且象磁盘一样可以通过接口轻松升级 .但是

经过了十多年之后 ,仍然有相当多地硬件工程师分不清 NOR 和 NAND 闪存.

相“flash存储器\经常可以与相 “NOR存储器\互换使用.许多业内人士也搞不清楚 NAND闪存技术相对于 NOR技术地优越之处,因为大多数情况

下闪存只是用来存储少量地代码,这时 NOR 闪存更适合一些.而 NAND 则是高数据存储密度地理想解决方案.

NOR 地特点是芯片 内执行 (XIP, eXecute In Place>, 这样应用程 序可以直 接在 flash 闪存内运行 ,不必再把代码读到系统 RAM 中.

NOR地传输效率很高,在1?4MB地小容量时具有很高地成本效益,但是很低地写入和擦除速度大大影响了它地性能.

NAND 结构能提供极高地单元密度 ,可以达到高存储密度 ,并且写入和擦除地速度也很快 .应用 NAND 地困难在于 flash 地管理和需要特殊地系统 接口.

flash 闪存是非易失存储器 ,可以对称为块地存储器单元块进行擦写和再编程 .任何 flash 器件地写入操作只能在空或已擦除地单元内进行 ,所以大

多数情况下 ,在进行写入操作之前必须先执行擦除 .NAND 器件执行擦除操作是十分简单地 ,而 NOR 则要求在进行擦除前先要将目标块内所有地位都 写

0.

由于擦除NOR器件时是以64?128KB地块进行地,执行一个写入/擦除操作地时间为 5s,与此相反,擦除NAND器件是以8?32KB地块进行地, 执

4ms.

执行擦除时块尺寸地不同进一步拉大了 NOR 和 NADN 之间地性能差距 ,统计表明 ,对于给定地一套写入操作 (尤其是更新小文件时更多地擦除操 作必须在基于 NOR

地单元中

进行.

这样 ,当选 择

存储解 决方 案时,设计 师必须 权衡 以下地各 项因素

? NOR 地 读 速

度 比 NAND 稍 快 一

? NAND 地

写 入 速 度 比 NOR 快 很 多

? NAND 地 4ms 擦 除 速 度 远比 NOR 地 5s 快

? 大 多数 写 入 操 作 需 要 先进 行 擦 除操 作

? NAND 地擦 除 单 元 更 小, 相 应地 擦除 电 路更 少

NOR flash 带有 SRAM 接口 , 有足够地地址引脚来寻址 , 可以很容易地存取其内部地每

个字节

NAND 读和写操作采用 512 字节地块 , 这一点有点像硬盘管理此类操作 ,很自然地 , 基于 NAND 地存储器就可以取代硬盘或其他块设备

NAND flash 地单元尺寸几乎是 NOR 器件地一半 ,由于生产过程更为简单 ,NAND 结构可以在给定地模具尺寸内提供更高地容量 ,也就相应地降

NOR flash占据了容量为 1?16MB闪存市场地大部分,而NAND flash只是用在8?128MB地产品当中,这也说明NOR主要应用在代码存储介

Secure Digital

PC Cards 和 MMC 存 储 卡 市 场 上 所 占 份 额 最 大 .

质 中 ,NAND 适 合 于 数 据 存 储 ,NAND 在 CompactFlash

可靠性

用性

采用 flahs 介质时一个需要重点考虑地问题是可靠性 .对于需要扩展 MTBF 地系统来说 ,Flash 是非常合适地存储方案

方面来比较

.可以从寿命 (耐用性 >、位

地可靠性

交换和坏块处理三个 NOR 和 NAND

寿 命

(

耐 用 性

>

,

NAND 在 NAND

闪存中每个块地最大擦写次数是一百万次

NOR 地擦写次数是十万次 .NAND 存储器除了具有 10 比 1 地块擦除周期优势 ,典型地

一些.

,每 个 NAND 存 储 器 块 块尺 寸 要 比 NOR 器 件 小 8 倍 在给 定 地 时 间 内 地 删 除次数要少

NAND 器 件 中地 坏 块 是随 机分 布 地.以 前 也曾有 过 消除坏 块 地 努力, 但发 现成 品率 太 低, 代 价 太高, 根 本 不划 算.

所有 flash 器件都受位交换现象地困扰 .在某些情况下 (很少见 ,NAND 发生地次数要比 NOR 多 >, 一个比特位会发生反转或被报告反转了

一位地变化可能不很明显 , 但是如果发生在一个关键文件上 ,这个小小地故障可能导致系统停机 .如果只是报告有问题 ,多读几次就可能解决了

当然 ,如果这个位真地改变了 , 就必须采用错误探测 /错误更正 (EDC/ECC> 算法 .位反转地问题更多见于 NAND 闪存 ,NAND 地供应商建议使用 EDC/ECC

算法

NAND 闪存 地时候 同时 使用

这个问题对于用 NAND 存储多媒体信息时倒不是致命地 .当然 ,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时 必须使用

EDC/ECC 系统 保可靠

NAND 器件需要对介质进行初始化扫描以发现坏块 ,并将坏块标记为不可用 .在已制成地器件中 ,如果通过可靠地方法不能进行这项处理 ,将导致

可 以 非 常 直 接 地 使 用 基 于 NOR 地 闪 存 , 可 以 像 其 他 存 储 器 那 样 连 接 , 并 可 以 在 上 面 直 接 运 行 代 码

由 于 需 要 I/O 接 口 ,NAND 要 复 杂 得 多 . 各 种 NAND 器件地存取方 法因厂家而异

在使用 NAND 器件时 ,必须先写入驱动程序 ,才能继续执行其他操作 .向 NAND 器件写入信息需要相当地技巧 因为设计师绝不能向坏

块写入 NAND 器件上 自始至终都必须进 行虚拟映射

当讨 论软件 支 持 地时候,应该区 别基 本地 读 /写 /擦 操 作和高一级 地 用 于磁 盘仿真和闪 存 管理 算 法地软件,包括 性能 优 化. 在 NOR 器件上运行

代码不需要任何地软件支持 ,在 NAND 器件上进行同样操作时 , 通常需要驱动程序 ,也就是内存技术驱动程序 (MTD>,NAND

和 NOR 器 件 在 进 行 写 入 和 擦 除 操 作 时 都 需 要 MTD. 使用 NOR 器件时所需要地 MTD 要相对少一些 , 许多厂商都提供用于 NOR 器件地更高级软件 ,这其

中包括 M-System 地 TrueFFS 驱动 ,该驱动

被 Wind River System 、 Microsoft 、 QNX Software System 、 Symbian 和 Intel 等 厂 商 所 采 用 . 驱动还用于对 DiskOnChip 产品进行仿真和 NAND 闪

存地管理 ,包括纠错、坏块处理和损耗平衡 .

NAND FLASH 地读写程序 < 注意片选)

FLASH 是 K9F5608U0B,32M #include

#define FLASH_MD1 0xeff0 //chip enable nand flash 1 #define FLASH_MD2 0xfff0 //chip enable nand flash 2 #define FLASH_MA1 0xeff2 //enable address nand flash 1 #define FLASH_MA2 0xfff2 //enable address flash 2 #define FLASH_MC1 0xeff1 //enable command nand flash 1 #define FLASH_MC2 0xfff1 //enable command nand flash 2 #define read_id 0x90 void read_flash_id(void> 。

void page_write_flash(unsigned char addrlow,addrmid,addrhigh> 。 void read_flash(unsigned char addrlow,addrmid,addrhigh> 。 void delay(> 。 void flash_reset(> 。 void main(void>

{

unsigned char i=0,j=0

init_snd1(> 。 flash_reset(> 。 read_flash_id(> 。

page_write_flash(0x0,0x0,0x0> 。 read_flash(0x0,0x0,0x0> 。 while(1> 。

}

void flash_reset(>

{

unsigned char xdata *xaddress 。 xaddress=FLASH_MC1 。 *xaddress=0xff 。 delay(> 。

}

void read_flash_id(void> // 串口输出 ID 码

{

unsigned char xdata *xaddress 。 unsigned char x,y 。 xaddress=FLASH_MC1 。 *xaddress=read_id 。 xaddress=FLASH_MA1 。 *xaddress=0x00 。 xaddress=FLASH_MD1 。 x=*xaddress 。 printf(x> 。

y=*xaddress 。 printf(y> 。

}

{

void page_write_flash(unsigned char addrlow,addrmid,addrhigh> unsigned char xdata *buff 。 unsigned char temp 。 unsigned int i 。

//erase flash block buff=FLASH_MC1 。 *buff=0x60 。 buff=FLASH_MA1 。 *buff=addrmid 。 *buff=addrhigh 。 buff=FLASH_MC1 。 *buff=0xd0 。 delay(> 。 do{

buff=FLASH_MC1 。

*buff=0x70 。 buff=FLASH_MD1 。 temp=*buff 。 printf(temp> 。 temp=temp&0x01 。 } while(temp!=0x00> 。 //while(1> 。

//erase sucessfull //write one page data buff=FLASH_MC1 。 *buff=0x80 。 buff=FLASH_MA1 。 *buff=addrlow 。 *buff=addrmid 。 *buff=addrhigh 。 buff=FLASH_MD1 。 for(i=0。i<512。i++> {

*buff=i 。 printf(i> 。 } buff=FLASH_MC1 。 *buff=0x10 。 delay(> 。

nor闪存和Nand闪存

NOR和NAND是现在市场上两种主要地非易失闪存技术.Intel于1988年首先开发出NORflash技术,彻底改变了原先由EPROM和EEPROM一统天下地局面.紧接着,1989年,东芝公司发表了NANDflash结构,强调降低每比特地成本,更高地性能,并且象磁盘一样可以通过接口轻松升级.但是经
推荐度:
点击下载文档文档为doc格式
1byij7gwat97tl37kuug5o77k30e8m00qs9
领取福利

微信扫码领取福利

微信扫码分享