Nor Flash数据存储规则与数据读写方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NOR Flash
NOR FLASH是INTEL在1988年推出的一款商业性闪存芯片,它需要很长的时间进行抹写,大半生它能够提供完整的寻址与数据总线,并允许随机存取存储器上的任何区域,而且它可以忍受一万次到一百万次抹写循环,是早期的可移除式闪存储媒体的基础。
目录
∙NOR Flash的访问方式
∙NOR Flash的烧写方式
∙NOR Flash的原理
NOR Flash的访问方式
∙在NOR FLASH的读取数据的方式来看,它与RAM的方式是相近的,只要能够提供数据的地址,数据总线就能够正确的挥出数据。考虑到以上的种种原因,多数微处理器将NOR FLASH当做原地运行(Execute in place,XIP)存储器使用,这其实以为着存储在NOR FLASH上的程序不需要复制到RAM就可以直接运行。由于NOR FLASH没有本地坏区管理,所以一旦存储区块发生毁损,软件或驱动程序必须接手这个问题,否则可能会导致设备发生异常。在解锁、抹除或写入NOR FLASH区块时,特殊的指令会先写入已绘测的记忆区的第一页(Page)。接着快闪记忆芯片会提供可用的指令清单给实体驱动程序,而这些指令是由一般性闪存接口(Comm ON FLASH memory Interface,CFI)所界定的。与用于随机存取的ROM不同,NOR FLASH也可以用在存储设备上;不过与NAND FLASH相比,NOR FLASH的写入速度一般来说会慢很多。
NOR Flash的烧写方式
∙相对于硬件工程师和嵌入式软件工程师一般在完成设计之后常常需要验证FLASH是否在工作。在应用当中,也有很多时候需要对FLASH进行写操作。该文章简单介绍了基于ARM芯片的NOR FLASH烧写,并提供了2个具体的实例和源代码,希望对有需要的朋友有点帮助。在开始之前,先声明一下,这篇文章只是介绍了如何写NOR FLASH 的烧写驱动,和H-JTAG/H-FLASHER没有直接的联系。
在后面的介绍里,如无特别说明,处理器指的是ARM 处理器,FLASH 指的都是NOR FLASH。另外,BYTE 指的是8-BIT的数据单元,HALF-WORD代表的是16-BIT的数据单元,而WORD 则代表了32-BIT的数据单元。
1。NOR FLASH 的简单介绍
NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失。NOR FLASH支持Execute ON Chip,即程序可以直接在FLASH片内执行。这点和NAND FLASH不一样。
因此,在嵌入是系统中,NOR FLASH很适合作为启动程序的存储介质。
NOR FLASH的读取和RAM很类似,但不可以直接进行写操作。对NOR FLASH的写操作需要遵循特定的命令序列,最终由芯片内部的控制单元完成写操作。从支持的最小访问单元来看,NOR FLASH一般分为8 位的和16位的(当然,也有很多NOR FLASH芯片同时支持8位模式和是16 位模式,具体的工作模式通过特定的管脚进行选择) 。对8位的NOR FLASH芯片,或是工作在8-BIT模式的芯片来说,一个地址对应一个
BYTE(8-BIT)的数据。例如一块8-BIT的NOR FLASH,假设容量为4个BYTE。那芯片应该有8个数据信号D7-D0 和2个地址信号,A1-A0。地址0x0对应第0个BYTE,地址0x1对应于第1BYTE,地址0x2对应于第2个BYTE,而地址0x3则对应于第3 个BYTE对16位的NOR FLASH芯片,或是工作在16-BIT模式的芯片来说,一个地址对应于一个HALF-WORD(16-BIT)的数据。例如,一块16-BIT的NOR FLASH,假设其容量为4个BYTE。那芯片应该有16 个数据信号线D15-D0 和1个地址信号A0。地址0x0对应于芯片内部的第0个HALF-WORD,地址0x1对应于芯片内部的第1个HALF-WORD。FLASH一般都分为很多个SECTOR,每个SECTOR包括一定数量的存储单元。对有些大容量的FLASH,还分为不同的BANK,每个BANK包括一定数目的SECTOR。FLASH的擦除操作一般都是以SECTOR,BANK或是整片FLASH为单位的。
在对FLASH进行写操作的时候,每个BIT可以通过编程由1变为0,但不可以有0修改为1。为了保证写操作的正确性,在执行写操作前,都要执行擦除操作。擦除操作会把FLASH的一个SECTOR,一个BANK或是整片FLASH 的值全修改为0xFF。这样,写操作就可以正确完成了。
2。ARM 处理器的寻址
ARM 可以说是目前最流行的32位嵌入式处理器。在这里只提一下ARM 处理器的寻址,为后面做个铺垫。从处理器的角度来看,系统中每个地址对应的是一个BYTE的数据单元。这和很多别的处理器都是一样的。
3。处理器和NOR FLASH 的硬件连接
从前面的介绍,我们知道从处理器的角度来看,每个地址对应的是一个BYTE 的数据单元。而,NOR FLASH 的每个地址有可能对应的是一个BYTE的数据单元,也有可能对应的是一个HALF-WORD的数据单元。所以在硬件设计中,连接ARM处理器和NOR FLASH时,必须根据实际情况对地址信号做特别的处理。
如果ARM处理器外部扩展的是8-BIT的NOR FLASH,数据线和地址线的连接应该如图1所示。从图中我们可以看到,处理器的数据信号D0-D7和FLASH的数据信号
D0-D7是一一对应连接的,处理器的地址信号A0-An和NOR FLASH的地址信号A0-An 也是一一对应连接的。
如果ARM处理器外部扩展的是16-BIT的NOR FLASH,数据线必须要错位连接。图2给了一个ARM处理器和16-BITNOR FLASH 的连接示意图。如图2所示,ARM处理器的数据信号D0-D15和FLASH 的数据信号D0-D15是一一对应的。而ARM处理器的地址信号和NOR FLASH 的地址信号是错位连接的,ARM的A0悬空,ARM 的A1 连接FLASH 的A0,ARM 的A2连接FLASH 的A1,依次类推。需要错位连接的原因是:ARM 处理器的每个地址对应的是一个BYTE 的数据单元,而16-BIT 的FLASH 的每个地址对应的是一个HALF-WORD(16-BIT)的数据单元。为了保持匹配,所以必须错位连接。这样,从ARM处理器发送出来的地址信号的最低位A0对16-BIT FLASH来说就被屏蔽掉了。
补充说明: