norflash原理和操作

本文详细介绍了NorFlash的基本特性及用途,并重点讲解了如何通过U-Boot进行NorFlash的解锁、擦除及写入操作。文章包括具体命令的使用方法及步骤说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先介绍一下norflash .norflash 是一个容量比较小的内存相比nandflash ,但是比nandflash的质量好,不会有坏块,也就不会有数据丢失。所以可以用来存放一下不予许出错的数据。nandflash 可以存放海量数据如视频等。

我们用的的norflash是2M大小的。可以直接读,但不可以直接写。如果要写的话,先要解锁写操作,解锁的操作会在norflash手册上有。下面,一个是16位的,一个是8位的数据。我们的是16位的,可以从原理图上看出。

所以我们用的写操作是word那一行。嗯,好。怎么写呢。

当我们现在u-boot之后,我们退出菜单模式,进入命令行。使用mw.w,mw.b进行写操作,md.w,md.b进行读操作。.w,.b是word,byte的意思。

由于我们CPU的LADDR1接到nor芯片的A0上面,所以默认是地址LADRR0开始的,但我们得左移一位,把数据移动LADDR1上面,这样才能符合他们之间的规则。

上面的programmer里面的写解锁有3个命令:

555HAAH2AAH55H555HA0H

1.把AA写到555地址上       地址左移一位后aaa       在终端我们的操作是:mw.w aaa aa

2.把55写到2AA地址上       地址左移一位后554       在终端我们的操作是:mw.w 554 55

3.把a0写到555地址上        地址左移一位后aaa       在终端我们的操作是:mw.w aaa a0

好了写的解锁操作完成了,但不一定就可以写。只有当一个地址上数据是FFFF也就是被清除时,才可以写。

那再说一下清除地址上的数据操作。

Chip Erase 我们猜测是把整个norflash都擦除一下,Sector E rase 就把把一个地址擦除一下。

解锁操作和上面一样,这次比上次多了2个命令,其他都一样。

1.把AA写到555地址上       地址左移一位后aaa       在终端我们的操作是:mw.w aaa aa

2.把55写到2AA地址上       地址左移一位后554       在终端我们的操作是:mw.w 554 55

3.把a0写到555地址上        地址左移一位后aaa       在终端我们的操作是:mw.w aaa a0

4.把55写到2AA地址上       地址左移一位后554       在终端我们的操作是:mw.w 554 55

5.把30写到写到你要擦除的地址上   假如我们要擦除的地址是100000          在终端我们的操作是:mw.w 100000 a0

然后我们再用md.w 100000指令看一下100000地址上的数据是不是被清除了。肯定是被擦除了。

然后我们再用mw.w 100000 1234 在100000上写1234.

然后你在用md.w 100000 读一下,肯定是1234

这样就完成了在norflash上的读写操作。

 

 

 

 

 

 

 

 

<think>我们正在讨论Nor Flash的读操作原理。根据引用[1][2],我们可以总结如下: 1. Nor Flash是一种非易失性存储器,常用于存储固件,因为它支持随机访问(即可以按地址直接读取任意字节)。 2. 在读取操作时,CPU会发送要读取的地址到Nor Flash的地址总线上。 3. 由于Nor Flash的数据总线宽度可能是8位、16位或32位,因此每次读取的数据量取决于数据总线的宽度。例如,16位的Nor Flash每次会返回2个字节的数据。 4. 如果CPU只需要其中的一个字节,那么CPU内部的控制器(或Nor Flash控制器)会从返回的数据中选取所需的字节(通过地址的低位来选择)。 5. 地址总线的连接方式:CPU的地址总线与Nor Flash的地址总线直接相连。但是,需要注意的是,CPU的地址是按字节编址的,而Nor Flash的地址是按字(数据总线宽度)编址的。因此,在连接时,CPU的地址线的最低几位可能不直接连接到Nor Flash的地址线上,而是用于选择返回数据中的字节位置。 - 例如,对于16位的Nor Flash,每个地址对应2个字节,因此CPU的地址线的最低位(A0)通常不连接到Nor Flash,而是用A1连接Nor Flash的A0。这样,当CPU访问地址0时,实际上访问的是Nor Flash的地址0(包含字节01);当CPU访问地址1时,它仍然访问Nor Flash的地址0,但此时需要的是字节1(由A0=1指示)。然而,由于Nor Flash返回的是整个字(16位),所以需要由控制器根据CPU地址的最低位来选择高字节还是低字节。 - 但是,在实际系统中,这种选择可能由硬件自动完成。如引用[2]所述,CPU的地址加1代表一个字节的偏移量,而存储器的地址加1代表其位宽的偏移量。因此,在连接时,CPU的地址线从A1(对于16位Nor Flash)或A2(对于32位Nor Flash)开始连接到Nor Flash的A0。 6. 片选信号:当CPU要访问Nor Flash时,会通过片选信号(如ngcs0)选中该Nor Flash芯片,使其工作。其他未被选中的设备不会响应。 现在,我们详细描述Nor Flash的读操作过程: 1. CPU将目标地址放到地址总线上,同时发出读命令。 2. CPU的存储器控制器根据目标地址所在的地址范围,激活相应的片选信号(例如,如果Nor Flash连接到bank0,则激活ngcs0)。 3. Nor Flash芯片被片选信号激活后,根据地址总线上的地址(注意:这里Nor Flash看到的地址是CPU地址去掉低位后的值,因为低位用于字节选择)来读取内部存储单元。 4. Nor Flash将读取到的数据(整个字)放到数据总线上。 5. CPU的存储器控制器根据CPU地址的最低位(对于16位Nor Flash是A0,对于32位是A0A1)来选择数据总线上的相应字节(如果需要的话),并传送给CPU。 注意:有些系统可能不需要CPU控制器做选择,而是由Nor Flash直接根据CPU地址的最低位输出相应的字节(如果支持字节使能信号的话)。但一般来说,Nor Flash输出整个字,由控制器选择。 引用[2]中提到了一个例子:16位nandflash(这里应该是nor flash,因为nandflash通常不支持随机访问)总是返回2个字节,然后由控制器选择。 因此,Nor Flash的读操作原理可以总结为:通过地址总线片选信号选中芯片,然后根据地址读取数据,再根据地址的低位选择需要的字节。 §§相关问题§§ 1. Nor FlashNAND Flash在读取操作上有何主要区别? 2. 为什么Nor Flash适合用于存储固件? 3. 在嵌入式系统中,Nor Flash的接口电路设计需要注意哪些关键点?</think>### Nor Flash操作工作原理详解 Nor Flash的读操作基于**随机访问**机制,允许CPU直接通过地址总线访问任意存储单元,其工作原理可分为以下步骤: #### 1. **地址传输阶段** - CPU将目标地址发送至地址总线(如`ADDR[26:0]`)。 - 地址解码器根据地址范围激活对应的**片选信号**(如`nGCSx`),选中目标Nor Flash芯片[^2]。 *示例*:访问`0x0000_1000`时,若该地址属于Bank0,则`nGCS0`置为低电平。 #### 2. **数据读取阶段** - Nor Flash收到地址后,从浮栅晶体管阵列中读取电荷状态,转换为数字信号(0/1)。 - 数据通过**数据总线**(如16位宽)返回给CPU。 *关键点*: - **位宽对齐**:若CPU需单字节数据(如8位),但Nor Flash为16位宽,则返回全部2字节数据,由CPU控制器提取目标字节[^2]。 - **时序控制**:需满足`t_{ACC}`(访问时间)`t_{OE}`(输出使能时间)等时序参数。 #### 3. **字节选择机制** - **地址线连接规则**: - 16位Nor Flash:CPU地址线`A1`连接Flash的`A0`(因`A0`用于字节选择)。 - 32位Nor Flash:CPU地址线`A2`连接Flash的`A0`[^2]。 - **原因**:CPU地址+1表示**1字节偏移**,而Flash地址+1表示**位宽偏移**(如16位Flash偏移2字节)。 #### 4. **电路连接示例** ```plaintext CPU地址总线 --ADDR[26:1]--> Nor Flash地址引脚(A[n:0]) CPU数据总线 --DATA[15:0]--> Nor Flash数据引脚(DQ[15:0]) CPU控制信号 --nGCS0-------> Nor Flash片选(CE#) -nOE-------> 输出使能(OE#) ``` *注*:`nOE`(输出使能)信号控制数据输出时机,避免总线冲突。 #### 5. **与NAND Flash的差异** | **特性** | **Nor Flash** | **NAND Flash** | |----------------|---------------------|---------------------| | **访问方式** | 随机访问(直接读任意地址) | 顺序访问(按页读取) | | **读延迟** | 微秒级(快速随机读) | 毫秒级(需整页读取) | | **适用场景** | 固件存储、代码执行 | 大容量数据存储(如SSD)[^1] | ### 核心优势 - **XIP执行能力**:CPU可直接从Nor Flash执行代码,无需加载至RAM,适用于无硬盘的嵌入式系统(路由器、车载设备等)[^1]。 - **可靠性**:单比特翻转率低,适合存储关键固件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值