FLASH的类型,结构,比较,驱动编写.docx
《FLASH的类型,结构,比较,驱动编写.docx》由会员分享,可在线阅读,更多相关《FLASH的类型,结构,比较,驱动编写.docx(31页珍藏版)》请在三一办公上搜索。
1、最近一直在致力于基于ARM920T的FLASH的读写,虽然这部分一般没有 多少人屑于研究,认为比较简单(U-boot和VIVI中都有现成的支持程 序),但对于初学的我,还是尽心尽力地学习一下,目的在于自己编写 一个通用flash驱动程序,以下是前段时间对主要两种flash的认识,大致整理了一下FLASH所谓Flash,是内存(Memory)的一种,但兼有RAM和ROM的优点,是一种可在系统 (In-System)进行电擦写,掉电后信息不丢失的存储器,同时它的高集成度和低成本使它 成为市场主流。Flash芯片是由内部成千上万个存储单元组成的,每个单元存储一个bit。具有低功耗、 大容量、擦写速度
2、快、可整片或分扇区在系统编程(烧写)、擦除等特点,并且可由内部嵌 入的算法完成对芯片的操作,因而在各种嵌入式系统中得到了广泛的应用。作为一种非易失性存储器,Flash在系统中通常用于存放程序代码、常量表以及一些在 系统掉电后需要保存的用户数据等。常用的Flash为8位或16位的数据宽度,编程电压为 单3.3V。主要的生产厂商为INTEL、ATMEL、AMD、HYUNDAI等。Flash技术根据不同的应用 场合也分为不同的发展方向,有擅长存储代码的NOR Flash和擅长存储数据的NAND Flash。 一下对NOR Flash和NAND Flash的技术分别作了相应的介绍。一.NOR Flas
3、h1. 市场介绍随着技术的发展,愈来愈多的电子产品需要更多的智能化,这也 对这些产品的程序存储提出了更高的要求。Flash作为一种低成本、 高集成度的存储技术在电子产品领域的应用非常广泛。今天90%的PC、 超过90%的手机、超过50%的Modem,都是用了 Flash,如今Flash市 场规模已经超过了 100亿美元。如此巨大的市场规模,也导致市场上的Flash品牌层出不穷。在 NOR Flash市场中,Intel公司是非常重要的一家生产厂商。Intel公 司生产的Flash芯片多年来占据着市场的很大份额,而它的芯片封装 形式和接口也成为业界标准,从而为不同品牌的Flash带来了兼容的 方便
4、。2. NOR Flash的硬件设计和调试首先,Flash要通过系统总线接在处理器上,即保持一个高速的数据交换的通道。 那么就必须了解一下Flash在系统总线上的基本操作。1)先了解一下处理器存储空间BANK的概念。以32位处理器S3C2410为例,理论 上可以寻址的空间为4GB,但其中有3GB的空间都预留给处理器内部的寄存器和其他设 备了,留给外部可寻址的空间只有1GB,也就是0X000000000X3fffffff,总共应该有 30根地址线。这1GB的空间,2410处理器又根据所支持的设备的特点将它分为了 8份, 每份空间有128MB,这每一份的空间又称为一个BANK。为方便操作,2410
5、独立地给了 每个BANK 一个片选信号(nGCS7nGCS0)。其实这8个片选信号可以看作是2410处理 器内部30根地址线的最高三位所做的地址译码的结果。正因为这3根地址线所代表的 地址信息已经由8个片选信号来传递了,因此2410处理器最后输出的实际地址线就只 有A26A0 (如下图1)图1 2410内存BANK示意图2)以图2(带nWAIT信号)为例,描述一下处理器的总线的读操作过程,来说明Flash 整体读、写的流程。第一个时钟周期开始,系统地址总线给出需要访问的存储空间地址,经 过Tacs时间后,片选信号也相应给出(锁存当前地址线上地址信息),再经过Tcso时间后, 处理器给出当前操作
6、是读(nOE为低)还是写(new为低),并在Tacc时间内将数据数据准 备好放之总线上,Tacc时间后(并查看nWAIT信号,为低则延长本次总线操作),nOE拉 高,锁存数据线数据。这样一个总线操作就基本完成图2带nWAIT信号的总线读操作3)NOR Flash的接口设计(现代的29LV160芯片)29LV160存储容量为8M字节,工作电压为3.3V,采用56脚TSOP封装或48脚FBGA封装,16位数据宽度。29LV160仅需单3.3V电压即可完成在系统的编程与擦除操作,通过对其内 部的命令寄存器写入标准的命令序列,可对Flash进行编程(烧写)、整片擦除、按扇区擦 除以及其他操作。引脚信号
7、描述和接口电路分别如图3和图4所示。信号I地址输入意妹DQ15-DQ0IO数据输入输出引脚pEh :PE2I激活芯片的控制谩辑ADEI输出使能/WEI写使能/RP4复位下电控制/BYTEI字节使能,低电平,戒.模式;高电平,部模式;STS:0.指示内部瘀态机的茯.态;VPENI擦除斓翱加锁便能VCG/GND. F内部电源地麻入媛存反电源此VC.CQA3NDP输出缓存区电源此图3 29LV160引脚信号描述图 4 FLASH (29LV160)接口电路DID3D4D5DgD7D8D3A1.0D1UAllDllA12D12ABD13A 4P14A15DI 5A16Al?ASA1.9A20A22A2
8、1府STSVCCQBT7EOEVCCWTVCCCE_OGXDCE_1GXDL 口 门 Ci上GXD353&4044464P况,513436JPDI。,41454750DU ,52可以从信号引脚图3和总线操作图2看出,NOR Flash的接口和系统总线接口完全匹配, 可以很容易地接到系统总线上。3. NOR Flash的软件设计Flash的命令很多,但常用到的命令就3种:识别、擦除、编程命令。以下就对3种命令作分别的简要介绍:1) NOR Flash 的识别29lv160_CheckId()U8 tmp;U16 manId,devId;int i;_RESET();_WR(0x555,0xaa)
9、;_WR(0x2aa,0x55);_WR(0x555,0x90);manId=_RD(0x0);devId=_RD(0x1);_RESET();printf(Manufacture ID(0x22C4)=%4x, DeviceID(0x2249)=%4xn”,manId,devId);if(manId = 0x22C4 & devId = 0x2249)return 1;elsereturn 0;NOR Flash的识别程序由四个读写周期就可以完成,在Flash的相关 命令表中可以查到相应ID识别的命令。2) NOR Flash 的擦除要对NOR Flash进行写操作,就一定要先进性擦除操作。
10、NOR Flash的 擦除都是以块(sector)为单位进行的,但是每一种型号的Flash的 sector的大小不同,即使在同一片的Flash内,不同sector的大小 也是不完全一样的。void 29lv160db_EraseSector(int targetAddr)printf(Sector Erase is started!n);_RESET();_WR(0x555,0xaa);_WR(0x2aa,0x55);_WR(0x555,0x80);_WR(0x555,0xaa);_WR(0x2aa,0x55);_WR(BADDR2WADDR(targetAddr),0x30);return
11、_WAIT(BADDR2WADDR(targetAddr);图 5 Erase Operation*个*个*如上图5所示,擦除操作时还要有一个关键的操作擦除查询算法,即等待Flash擦除的过程,并返回擦除是否成功的结果。算法如右图6所示*/Int _WAIT(void)unsigned int state, flashStatus, old;old=_RD(BADDR2WADDR(0x0);while(1)flashStatus=_RD(BADDR2WADDR(0x0);if( (old&0x40) = (flashStatus&0x40)break;if( flashStatus&0x20
12、)/printf(DQ5=1:%xn,flashStatus);old=_RD(BADDR2WADDR(0x0);flashStatus=_RD(BADDR2WADDR(0x0);if( (old&0x40) = (flashStatus&0x40)return 0;else return 1;/printf(.);old=flashStatus;return 1;/printf(!n);图 6 Toggle Bit Algorithm以上的方法为查询数据线上的一个特定位Toggle位。此外还有2种检测方法,一种为提供额外 的Busy信号,处理器通过不断查询Busy信号来得知Flash的擦除操
13、作是否完成,一般较少应 用;一种为查询Polling位。3) NOR Flash的编程操作int 29lv160db_ProgFlash(U32 realAddr,U16 data) _WR(0x555,0xaa);_WR(0x2aa,0x55);_WR(0x555,0xa0);_WR(BADDR2WADDR(realAddr),data);return _WAIT(BADDR2WADDR(realAddr);对擦除过的Flash进行编程比较简单,但仍然用到以上提到的查询算法,速度比较慢,一般 为20uS,最长的达到500uS。二.NAND FLASHNAND FLASH在对大容量的数据存储需
14、要中日益发展,到现今,所有的数码相机、多数 MP3播放器、各种类型的U盘、很多PDA里面都有NAND FLASH的身影。1. Flash的简介NOR Flash: 程序和数据可存放在同一片芯片上,拥有独立的数据总线和 地址总线,能快速随机地读取,允许系统直接从Flash中读 取代码执行,而无需先将代码下载至RAM中再执行 可以单字节或单字编程,但不能单字节擦除,必须以块为单 位或对整片执行擦除操作,在对存储器进行编程之前需要对 块或整片进行预编程和擦除操作。NAND FLASH 以页为单位进行读写操作,1页为256B或512B;以块为单位 进行擦除操作,1块为4KB、8KB或16KB。具有快编
15、程和快擦 除的功能 数据、地址采用同一总线,实现串行读取。随机读取速度慢 且不能按字节随机编程 芯片尺寸小,引脚少,是位成本(bit cost)最低的固态存 储器 芯片存储位错误率较高,推荐使用ECC校验,并包含有冗余 块,其数目大概占1%,当某个存储块发生错误后可以进行标 注,并以冗余块代替 Samsung. TOSHIBA和Fujistu三家公司支持采用NAND技术 NAND Flasho目前,Samsung公司推出的最大存储容量可达 8Gbit。NAND 主要作为 SmartMedia 卡、Compact Flash 卡、 PCMCIA ATA卡、固态盘的存储介质,并正成为Flash磁盘
16、技 术的核心。2. NAND FLASH 和 NOR FLASH 的比较1)性能比较flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦 写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内 进行,所以大多数情况下,在进行写入操作之前必须先执行擦除NAND 器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将 目标块内所有的位都写为0。由于擦除NOR器件时是以64128KB的块进行的,执行一个写入/ 擦除操作的时间为5s,与此相反,擦除NAND器件是以832KB的块进 行的,执行相同的操作最多只需要4ms。执行擦除时块尺寸的不同进一步拉大了 NOR和NADN之间
17、的性能差 距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更 多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决 方案时,设计师必须权衡以下的各项因素。 NOR的读速度比NAND稍快一些。 NAND的写入速度比NOR快很多。 NAND的4ms擦除速度远比NOR的5s快。 大多数写入操作需要先进行擦除操作。 NAND的擦除单元更小,相应的擦除电路更少。2)接口差别NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容 易地存取其内部的每一个字节。NAND器件使用复杂的I/O 口来串行地存取数据,共用8位总线(各 个产品或厂商的方法可能各不相同)。8个引脚用来
18、传送控制、地址和 数据信息。NAND读和写操作采用512字节的页和32KB的块为单位,这 一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以 取代硬盘或其他块设备。3)容量和成本NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结 构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格,大概只有NOR 的十分之一。NOR flash占据了容量为116MB闪存市场的大部分,而NAND flash只是用在8 128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储, NAND在CompactFlash、Secure
19、Digital、PC Cards和MMC存储卡市场上所占份额最大。4)可靠性和耐用性采用flahs介质时一个需要重点考虑的问题是可靠性。对于需要 扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐 用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写 次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型 的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时 间内的删除次数要少一些。5) 位交换(错误率)所有flash器件都受位交换现象的困扰。在某些情况下(很少见, NAN
20、D发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。 一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小 小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能 解决了。当然,如果这个位真的改变了,就必须采用错误探测/错误更 正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商 建议使用NAND闪存的时候,同时使用EDC/ECC算法。这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如 果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必 须使用EDC/ECC系统以确保可靠性。6) 坏块处理NAND器件中的坏块是随机分布的。以
21、前也曾有过消除坏块的努力, 但发现成品率太低,代价太高,根本不划算。NAND器件需要对介质进 行初始化扫描以发现坏块,并将坏块标记为不可用。现在的FLSAH 一 般都提供冗余块来代替坏块如发现某个块的数据发生错误(ECC校验), 则将该块标注成坏块,并以冗余块代替。这导致了在NAND Flash中, 一般都需要对坏块进行编号管理,让每一个块都有自己的逻辑地址。7) 易于使用可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连 接,并可以在上面直接运行代码。由于需要I/O接口,NAND要复杂得 多。各种NAND器件的存取方法因厂家而异。在使用NAND器件时,必 须先写入驱动程序,才能继续执
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FLASH 类型 结构 比较 驱动 编写
链接地址:https://www.31ppt.com/p-4884556.html