NOR Flash擦写和原理分析 (一)

猪哥-嵌入式 2018-07-13 16:26:10

1. NOR FLASH 的简单介绍

NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行(这意味着存储在NOR FLASH上的程序不需要复制到RAM就可以直接运行).这点和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.这样,写操作就可以正确完成了.

由于NOR FLASH没有本地坏区管理,所以一旦存储区块发生毁损,软件或驱动程序必须接手这个问题,否则可能会导致设备发生异常. 在解锁、抹除或写入NOR FLASH区块时,特殊的指令会先写入已绘测的记忆区的第一页(Page).接着快闪记忆芯片会提供可用的指令清单给实体驱动程序,而这些指令是由一般性闪存接口(CommON FLASH memory Interface, CFI)所界定的. 与用于随机存取的ROM不同,NOR FLASH也可以用在存储设备上;不过与NAND FLASH相比,NOR FLASH的写入速度一般来说会慢很多.

小结:NOR FLASH类似于RAM,8位地址就是每个地址对应1个byte,16位地址就是每个地址对应2个byte,ARM的每个地址只对应1个byte

2.NOR Flash的读写方式

2.1 处理器寻址

ARM处理器中每个地址对应的是一个byte的数据单元,这和很多别的处理器是一样的。

2.2 CPU于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-BIT NOR  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来说就被屏蔽掉了.如下图所示:

这里简单的总结:CPU发出地址对应1个字节,而16位flash的一个地址对应2个字节,所以需要错位,那么数据对应关系如下图所示:

从上可以看到,CPU读地址0和1对应的字节,flash返回的都是第1个字(相对于flash,地址为0)

CPU读地址2和3对应的字节,flash返回的都是第2个字(相对于flash,地址为1)

CPU读地址4和5对应的字节,flash返回的都是第3个字(相对于flash,地址为2)

这个逻辑竟然是对的,CPU要做的就是对读到的16bit字进行取高8位字节,还是低8位字节处理。

补充说明:

  • 一般来说,ARM处理器内部要设置相应的寄存器,告诉处理器外部扩展的FLASH的位宽(8-BIT/16-BIT/32-BIT) .这样,处理器才知道在访问的时候如何从FLASH正确的读取数据;

  • 有些ARM处理器内部可以设置地址的错位.对于支持软件选择地址错位的处理器,在连接16-BIT FLASH的时候,硬件上可以不需要把地址线错位.读者设计的时候,请参考MCU的数据手册,以手册为准,以免造成不必要的麻烦;

  • 假如处理器支持内部设置地址错位,在实际访问的时候,送出的地址实际上是在MCU内部做了错位处理,其作用是等效于硬件连接上的错位的

2.3 从软件角度来看 ARM 处理器和 NOR FLASH 的连接

从软件的角度来理解ARM处理器和 FLASH的连接.对于8-BIT的FLASH的连接,很好理解,由于ARM处理器和8-BIT FLASH的每个地址对应的都是一个 BYTE 的数据单元.所以地址连接毫无疑问是逐一对应的.假如 ARM 处理器连接的是 16-BIT 的处理器,由于 ARM 处理器的每个地址对应的是一个 BYTE 的数据单元,而 16-BIT FLASH 的每个地址对应的是一个 HALF-WORD 的16-BIT的数据单元.所以,也毫无疑问,ARM处理器访问16-BIT处理器的时候,地址肯定是要错开一位的.在写FLASH驱动的时候,我们不需要知道地址错位是由硬件实现的,还是是通过设置ARM处理器内部的寄存器来实现的,只需要记住2点:

  1. ARM处理器访问8-BIT FLASH的时候,地址是逐一对应的;

  2. ARM处理器访问16-BIT FLASH的时候,地址肯定是错1位的.

(0)

相关推荐

  • 学习单片机必须要知道的字节小知识

    很二很二的单片机 单片机比较二,啥都不认识,只认识0和1,即所谓的"二进制",由于把0和1认到了极致,所以单片机能用0和1干许多事情.人在看二进制数据时,比较麻烦.比如二进制110 ...

  • 国六PM传感器CAN通信报文矩阵

    PM传感器通信CAN报文矩阵详细教学 1.传感器发送18FF0055 250Kb 1000ms 扩展帧Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0Byte0Byte1Byte2By ...

  • 解决STM32 Flash擦写操作导致USART接收丢数据

    问题: 该问题由客户提出,发生在STM32F103VDT6器件上.据客户工程师讲述,在其产品设计中使用了STM32片上Flash模拟了EEPROM的功能,用于存贮数据.在软件调试时,发现开启此功能,会 ...

  • 如何提高FLASH的擦写次数

    在实际应用中,用户经常需要在程序运行过程中保存或读取一些数据,这些数据在工作中经常会变化,而且掉电后也不能丢失,所以需要及时地进行存储,存储这些数据常用的存储器是EEPROM.HXM6002虽然本身不 ...

  • 电水壶的电路原理分析与检测

    电水壶的基本功能是烧水.电水壶根据结构分为一体式和分体式两种,根据功能分为非保温型和保温型两种. 一.分体非保温式电水壶的检测 下面以格来德 WEF-115S 电水壶为例,介绍使用万用表检修分体非保温 ...

  • 行书快写的原理

    要写快行书,不单是笔画功夫要熟练,更重要的是行书在它的结构上用到了许多独特的书写规则和原理,今天我们就一起来整理一下到底有哪些行书快写的原理. 一.呼应连带原理 行书的呼应,有实连和意连两种,实连是指 ...

  • 豆浆机电路原理分析与故障检测

    下面以九阳 JYDZ-22 型豆浆机为例,介绍用万用表检修豆浆机故障的方法与技巧.该机电路由电源电路.微处理器电路.打浆电路.加热电路构成,如下图所示. 提示:改变图中 R19 的阻值,该电路板就可以 ...

  • 24V开关电源电路构成几工作原理分析

    电路以UC3842振荡芯片为,构成逆变.整流电路.UC3842一种高性能单端输出式电流控制型脉宽调制器芯片,相关引脚功能及内部电路原理已有介绍,此处从略.AC220V电源经共模滤波器L1引入,能较好抑 ...

  • EIS和OIS有啥差别?OIS光学防抖原理分析

    描述 翻阅智能手机的相册,我们总能看到一些拍糊的照片或视频.问题来了,如今哪怕是千元价位的手机都能用上4800万像素的索尼IMX586高端传感器,为何依旧无法保证每一张照片.每一段视频都是无比清晰的呢 ...

  • 开关电源工作原理分析及图解

    描述 开关电源就是用通过电路控制开关管进行高速的导通与截止. 将直流电转化为高频率的交流电提供给变压器进行变压,从而产生所需要的一组或多组电压!转为高频交流电的原因是高频交流在变压器变压电路中的效率要 ...

  • BUCK/BOOST电路原理分析

    描述 Buck变换器:也称降压式变换器,是一种输出电压小于输入电压的单管不隔离直流变换器. 图中,Q为开关管,其驱动电压一般为PWM(Pulse width modulation脉宽调制)信号,信号周 ...