加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

基于fl2440的nand flash 实验

发布时间:2020-12-15 07:14:57 所属栏目:百科 来源:网络整理
导读:nand flash 与 nor flash的区别: Nand Flash与Nor Flash经常在一些地方被提到,一直没认真去理解它们的区别,因此,今天花了一段时间仔细理解了一下,下面把我的笔记放在这里: 1、NOR的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪

nand flash 与 nor flash的区别:

Nand Flash与Nor Flash经常在一些地方被提到,一直没认真去理解它们的区别,因此,今天花了一段时间仔细理解了一下,下面把我的笔记放在这里:


1、NOR的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。优点是可以直接从FLASH中运行程序,但是工艺复杂,价格比较贵,NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。
  NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。优点:大存储容量,而且便宜。缺点,就是无法寻址直接运行程序,只能存储数据。另外NAND FLASH 非常容易出现坏区,所以需要有校验的算法。
??? 任何flash器件的写入操作只能在空或已擦除的单元内进行
(1)NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为1。
(2)擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,NORFLASHSECTOR擦除时间视品牌、大小不同而不同,比如,4MFLASH,有的SECTOR擦除时间为60ms,而有的需要最大6S。与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms
(3)当选择存储解决方案时,设计师必须权衡以下的各项因素。
  ●NOR的读速度比NAND稍快一些。
  ●NAND的写入速度比NOR快很多。
  ●NAND的4ms擦除速度远比NOR的5s快。
  ●大多数写入操作需要先进行擦除操作。
  ●NAND的擦除单元更小,相应的擦除电路更少。
(4)接口差别
  NORflash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
  NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,基于NAND的存储器就可以取代硬盘或其他块设备。
(5)容量差别:
??? NORflash占据了容量为1~16MB闪存市场的大部分,而NANDflash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储。
(6)可靠性和耐用性
-寿命(耐用性)
  在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。
-位交换
  所有flash器件都受位交换现象的困扰。位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,在使用NAND闪存的时候,应使用EDC/ECC算法。用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。
-坏块处理
  NAND器件中的坏块是随机分布的,NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。
(7)易于使用
  可以非常直接地使用基于NOR的闪存。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。
(8)软件支持
在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。
??? 使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被WindRiverSystem、Microsoft、QNXSoftwareSystem、Symbian和Intel等厂商所采用。驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡。
(9)在掌上电脑里要使用NAND FLASH 存储数据和程序,但是必须有NOR FLASH来启动。除了SAMSUNG处理器,其他用在掌上电脑的主流处理器还不支持直接由NAND FLASH 启动程序。因此,必须先用一片小的NOR FLASH 启动机器,在把OS等软件从NAND FLASH 载入SDRAM中运行才行

转自http://www.laogu.com/wz_1852.htm

?

nand flash controller

During reset,Nand flash controller will get information about the connected NAND flash through Pin status
(NCON(Adv flash),GPG13(Page size),GPG14(Address cycle),GPG15(Bus width) – refer to PIN
CONFIGURATION),After power-on or system reset is occurred,the NAND Flash controller load automatically the 4-
KBytes boot loader codes. After loading the boot loader codes,the boot loader code in steppingstone is executed.

?

引脚配置:

PIN CONFIGURATION
OM[1:0] = 00: Enable NAND flash memory boot
NCON: NAND flash memory selection(Normal / Advance)
0: Normal NAND flash(256Words/512Bytes page size,3/4 address cycle)
1: Advance NAND flash(1KWords/2KBytes page size,4/5 address cycle)
GPG13: NAND flash memory page capacitance selection
0: Page=256Words(NCON = 0) or Page=1KWords(NCON = 1)
1: Page=512Bytes(NCON = 0) or Page=2KBytes(NCON = 1)
GPG14: NAND flash memory address cycle selection
0: 3 address cycle(NCON = 0) or 4 address cycle(NCON = 1)
1: 4 address cycle(NCON = 0) or 5 address cycle(NCON = 1)
GPG15: NAND flash memory bus width selection
0: 8-bit bus width
1: 16-bit bus width

?

ECC (error correct code)编程指导:

?

1. In software mode,ECC module generates ECC parity code for all read / write data. So you have to reset ECC
value by writing the InitECC(NFCONT[4]) bit as ‘1’ and have to clear theMainECCLock(NFCONT[5]) bit to
‘0’(Unlock) before read or write data.
MainECCLock(NFCONT[5]) and SpareECCLock(NFCONT[6]) control whether ECC Parity code is generated or
not.

1.在软模式中,ECC模块为读和写的数据产生了ECC奇偶校验编码,所以在读或者是写数据的之前,将NFCONT[4] 设置为1, 将NFCONT[5]设置为0


2. Whenever data is read or written,the ECC module generates ECC parity code on register NFMECC0/1.

2. 每当读或者是写数据发生时,ECC模块就会在NFMECC0/1寄存器上产生ECC奇偶校验编码

3. After you completely read or write one page (not include spare area data),Set the MainECCLock bit to ‘1’(Lock).

??? ECC Parity code is locked and the value of the ECC status register will not be changed.

3.当你完成一页的读或者是写时,需要将MainECCLock 位设置为‘1’,ECC的校验码会被锁住,而且ECC状态寄存器的值不会发生变化。

4. To generate spare area ECC parity code,Clear as ‘0’(Unlock) SpareECCLock(NFCONT[6]) bit.


5. Whenever data is read or written,the spare area ECC module generates ECC parity code on register NFSECC.


6. After you completely read or write spare area,Set the SpareECCLock bit to ‘1’(Lock). ECC Parity code is locked
and the value of the ECC status register will not be changed.

7. Once completed you can use these values to record to the spare area or check the bit error.

?

?

nandflash 存储映射图:

SROM means ROM or SRAM type memory

从上面的表格来看:

0M[1:0] = 00 表示Nand Flash Mode

NAND Flash不对应任何BANK,它是通过几组寄存器来访问的在上电后,NAND Flash开始的4k数据被自动地复制到芯片内部一个被称为“Steppingstone”RAM上。Steppingstone被映射为地址0,上面的4k程序完成必要的初始化

?SDRAM使用BANK6,它的物理起始地址为6*128M=0x30000000。(为什么程序每次都是把0x32000 000当成镜像的入口);

?

nandflash 的信号描述:

?

command latch enable 命令锁存器能

address latch enable??? 地址锁存使能

nand flash chip enable nand flash芯片使能

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读