nor 和 nand flash 的作用和区别

本文介绍了Flash存储器的两种主要类型:NorFlash和NandFlash。NorFlash速度快,支持XIP,适用于存储引导程序;NandFlash容量大,成本低,适合存放用户程序。文章还讨论了在嵌入式系统中这两种Flash的具体应用。

flash主要分为两种Nor Flash和Nand Flash,这两种flash的结构存在较大的差异,最先出现的Nor flash,采用并口输入输出数据,速度快,CPU可以直接从Nor Flash中取指令执行专门术语叫XIP (eXecute In Place),但是价格昂贵,同时,由于要占用地址线,容量不能很大。基于以上的缺点,三星公司开发了Nand Flash结构,这种结构采用串行数据存储,而且使用块存储,故而容量可以很高。但是他的缺点是程序不能直接在Nand Flash中运行,只能拷贝到Nor Flash或者是RAM中运行,这样程序启动的过程中就存在一个程序拷贝的过程,这个过程主要在Nor Flash中运行。所以,一般Nor Flash用作存放BootLoader(这部分内容也类似于PC中的BIOS和MBR),主要是在单片机上电后,执行将Nand Flash中的程序拷贝到RAM中,然后将CPU控制权交给RAM中的程序(用户自己编写的函数或者是系统内核)。所以,一般的嵌入式系统中都带有容量较小的Nor Flash和大容量的Nand Flash。Nor Flash主要用来存放引导程序,而Nand Flash存放用户真正的程序。如果使用操作系统,一般内核比较大,系统启动过程比较慢,大约5-10秒不等,这个过程中主要执行开机自检和硬件初始化以及程序拷贝。

 

转载地址:http://blog.sina.com.cn/s/blog_4697cdcd0100qy4r.html

### 技术对比:NOR FlashNAND Flash #### 1. **存储结构** NOR Flash NAND Flash 的主要区别之一在于它们的存储单元结构。NOR Flash 的每个存储单元都直接连接到位线字线,这种结构支持随机访问,使得 NOR Flash 能够实现快速读取操作。相比之下,NAND Flash存储单元以串联的方式连接,仅通过一个晶体管与位线相连。这种设计减少了每个存储单元所需的面积,从而提高了存储密度,但同时也限制了其随机访问能力[^1]。 #### 2. **读写速度** 由于 NOR Flash 的并行访问方式,它在读取操作上表现出色,尤其是在需要快速随机访问的应用中。然而,NOR Flash 的写入擦除速度相对较慢,这主要是因为其编程擦除过程需要较高的电压。相反,NAND Flash 在写入擦除操作上具有更快的速度,因为它使用了块操作机制,一次可以处理较大的数据块。 #### 3. **存储密度与成本** NAND Flash 相比于 NOR Flash 可以实现更高的存储密度,这使得 NAND Flash 成为大容量存储应用的理想选择,如固态硬盘(SSD) USB 闪存驱动器。此外,NAND Flash 的制造成本较低,这进一步推动了其在价格敏感型应用中的普及。然而,NOR Flash 的成本较高,且容量通常较小,这限制了其在需要大容量存储的应用中的使用。 #### 4. **寿命与可靠性** NOR Flash 以其高可靠性著称,尤其是在数据保留方面。它能够在较长时间内保持数据的完整性,因此常用于需要高可靠性的应用,如嵌入式系统的代码存储。然而,NOR Flash 的写入擦除寿命有限,通常在10万次左右。相比之下,NAND Flash 的写入擦除寿命更高,可以达到数百万次,但其数据可靠性较低,特别是在多次写入后。 #### 5. **应用场景** NOR Flash 适用于需要快速随机访问的应用,如嵌入式系统中的代码存储、引导启动程序等。它的低功耗特性也使其在电池供电设备中表现出色。而 NAND Flash 则更适合于高存储密度需求的应用,如照片存储、视频存储大型数据库。此外,NAND Flash 的高速写入能力较低的成本使其在固态硬盘(SSD)、存储阵列消费电子产品中广泛应用。 ### 示例代码:NOR FlashNAND Flash 的基本操作 以下是一个简单的示例代码,展示了如何在嵌入式系统中使用 NOR Flash 进行代码存储: ```c #include <stdio.h> // 假设这是 NOR Flash 的地址 #define NOR_FLASH_ADDRESS 0x08000000 int main() { // 从 NOR Flash 读取数据 int data = *(int *)NOR_FLASH_ADDRESS; printf("Data from NOR Flash: %d\n", data); // 向 NOR Flash 写入数据(实际操作中需要调用特定的写入函数) // 注意:NOR Flash 写入前需要先擦除 // NOR_FLASH_Erase(NOR_FLASH_ADDRESS, sizeof(data)); // NOR_FLASH_Write(NOR_FLASH_ADDRESS, &data, sizeof(data)); return 0; } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值