嵌入式开发之Nand-Flash和Nor-Flash的区别

一、引言

在嵌入式开发中,想来每一个嵌入式开发工程师不可避免地都会听到或者接触到Flash这个东西。

但是对于一部分人来说,他们并不清楚Flash还有Nand和Nor之分,因此就更不清楚这两者的区别了。

今天偶然想起这个问题,于是查询资料,写下这篇博客,做个简单的笔记。

二、Flash介绍

FLASH是一种存储芯片,全名叫Flash Eeprom Memory,通过程序可以修改数据,即平时所说的“闪存”。Flash又分为Nand-Flash和Nor-Flash二种。U盘和MP3里用的就是这种存储器。

2.1、Nand-Flash

Nand-Flash内存是Flash内存的一种,1989年,东芝公司发表了Nand-Flash结构。其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。

NAND-Flash 没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取 512 个字节,采用这种技术的Flash比较廉价。因此,Nand-flash存储器容量较大、改写速度快等优点,使其成大量数据存储市场的宠儿。

2.2、Nor-Flash

Nor-Flash是Intel公司1988年开发出了Nor-Flash技术。Nor-Flash的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统Ram中。

Nor-Flash的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能,因此Nor-Flash只能用于特定的场合,比如作为Arm板启动代码的载体。

三、Nand-Flash和Nor-Flash的区别

3.1、性能比较

Flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。

任何Flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。

Nand-Flash器件执行擦除操作是十分简单的,而Nor-Flash则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除Nor-Flash器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除Nand-Flash器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。

执行擦除时,块尺寸的不同进一步拉大了Nor-Flash和Nand-Flash之间的性能差距。统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于Nor-Flash的单元中进行。这样,当选择存储解决方案时,设计师就必须权衡以下的各项因素:

1、Nor-Flash的读速度比Nand-Flash稍快一些;
2、Nand-Flash的写入速度比Nor-Flash快很多;
3、Nand-Flash的4ms擦除速度远比Nor-Flash的5s快;
4、大多数写入操作需要先进行擦除操作;
5、Nand-Flash的擦除单元更小,相应的擦除电路更少。

3.2、接口差别

Nor-Flash带有Sram接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。

Nand-Flash器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。

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

3.3、容量和成本

Nand-Flash的单元尺寸几乎是Nor-Flash器件的一半,由于生产过程更为简单,Nand-Flash结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。

Nor-Flash占据了容量为1~16MB闪存市场的大部分,而Nand-Flash只是用在8~128MB的产品当中,这也说明Nor-Flash主要应用在代码存储介质中,Nand-Flash适合于数据存储,Nand-Flash在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。

3.4、可靠性和耐用性

采用Flash介质时一个需要重点考虑的问题是可靠性。

对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较Nor-Flash和Nand-Flash的可靠性。

在Nand-Flash闪存中每个块的最大擦写次数是一百万次,而Nor-Flash的擦写次数是十万次。Nand-Flash存储器除了具有10比1的块擦除周期优势,典型的Nand-Flash块尺寸要比Nor-Flash器件小8倍,每个Nand-Flash存储器块在给定的时间内的删除次数要少一些。

四、补充

4.1、位交换

所有Flash器件都受位交换现象的困扰。在某些情况下(很少见,Nand-Flash发生的次数要比Nor-Flash多),一个比特位会发生反转。一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。

如果只是报告有问题,多读几次就可能解决了。当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。

4.2、坏块处理

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

Nand-Flash器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果不能通过可靠的方法进行这项处理,将导致高故障率。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: J-Flash V7.00 是一个用于嵌入式系统开发的软件工具。它是 Segger 公司推出的一款专业的编程和调试软件。J-Flash V7.00 可以与由 Segger 公司生产的调试器(如 J-Link)和目标设备进行交互,用于烧录和调试嵌入式设备的程序。 J-Flash V7.00 提供了用户友好的界面和强大的功能。它支持多种目标设备,包括各种单片机和处理器,如 ARM、Cortex-M、RISC-V 等。用户可以使用 J-Flash V7.00 进行目标设备的初始化、擦除、编程、校验和调试。此外,它还支持批量烧录,可以同时烧录多个目标设备,提高开发效率。 J-Flash V7.00 支持多种编程方式,包括 JTAG、SWD、SPI、I2C、UART 等。它具有快速的烧录和调试速度,并且能够准确地校验目标设备上的程序。此外,J-Flash V7.00 还提供了丰富的调试功能,包括断点调试、变量监视、寄存器访问等,可以帮助开发人员快速定位和解决问题。 J-Flash V7.00 具有良好的兼容性和稳定性,可以与各种开发环境(如 Keil、IAR、GCC 等)无缝集成。开发人员可以使用 J-Flash V7.00 在不同的开发平台上进行开发和调试,无需切换工具和环境。 总之,J-Flash V7.00 是一款功能强大、易于使用的嵌入式开发工具。它提供了丰富的编程和调试功能,支持多种目标设备和开发环境,可以大大提高嵌入式系统开发的效率和质量。 ### 回答2: j-flashv7.00是一个用于嵌入式系统开发的程序烧录工具。它由SEGGER公司开发,用于连接PC和嵌入式系统,并将程序代码烧录到目标设备的闪存中。 j-flashv7.00具有以下特点和功能。首先,它支持广泛的嵌入式处理器和MCU系列,包括ARM、Cortex-M和RISC-V等。通过支持多种处理器架构,它可以满足不同开发项目的需求。 其次,j-flashv7.00提供了用户友好的图形用户界面(GUI),使得烧录和调试变得简单和直观。用户可以通过GUI设置和配置烧录参数,如目标设备型号、闪存大小和烧录速度等。此外,它还支持一键式烧录操作,用户只需点击一下按钮即可完成烧录过程。 第三,j-flashv7.00具有快速和高效的烧录速度。它采用了高速USB接口和先进的烧录算法,可以大大减少烧录时间,提高开发效率。同时,它还支持多种闪存器件,包括NOR闪存和NAND闪存,适用于不同的应用场景。 最后,j-flashv7.00还提供了丰富的调试功能。它可以与其他SEGGER调试工具(如J-Link)配合使用,实现源代码级调试和实时跟踪。通过这些功能,开发人员可以更方便地进行嵌入式系统调试和软件优化。 总的来说,j-flashv7.00是一个强大的嵌入式系统烧录工具,具有广泛的兼容性、用户友好的GUI、快速高效的烧录速度和丰富的调试功能。它在嵌入式系统开发过程中发挥着重要作用,帮助开发人员提高开发效率和产品质量。 ### 回答3: J-Flash是一个专门为大容量闪存芯片设计的编程工具。J-Flash V7.00是其最新版本,是Segger公司开发的一款非常强大的编程软件。 J-Flash V7.00具有以下主要特点和功能: 1. 支持多种接口:J-Flash V7.00支持多种编程接口,包括J-Link、J-Trace和Flasher等。用户可以根据具体需求选择适合的接口进行编程,方便快捷。 2. 支持多种芯片架构:J-Flash V7.00支持多种芯片架构,包括ARM、Cortex-M、Renesas等。无论是传统的ARM架构还是最新的Cortex-M系列,J-Flash都能够进行编程。 3. 支持多种文件格式:J-Flash V7.00支持多种常见的文件格式,包括bin、hex和elf等。用户可以直接选择所需的文件格式进行编程,方便灵活。 4. 强大的功能性:J-Flash V7.00具有强大的功能性,包括读取、编程、擦除和校验等。用户可以通过简单的操作实现对闪存芯片的各项操作,提高开发效率。 5. 用户友好的界面:J-Flash V7.00拥有简洁、直观的图形界面,使得用户能够快速上手,并且提供了详细的操作指南和帮助文档,方便用户使用和参考。 总的来说,J-Flash V7.00是一款功能强大、易于使用的编程工具,适用于各种大容量闪存芯片的编程需求。无论是初学者还是专业人士,都可以利用J-Flash V7.00轻松实现对闪存芯片的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值