Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。 NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。 所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。 一般地址线和数据线共用,对读写速度有一定影响;而NOR Flash闪存数据线和地址线分开,所以相对而言读写速度快一些。 NAND FLASH和NOR FLASH的共性 NAND和NOR芯片的共性首先表现在向芯片中写数据必须先将芯片中对应的内容清空,然后再写入,也就是通常说的“先擦后写”。
背景 支持一款nor flash时,出于性能考虑,一般会查看其nor支持的最高频率以及主控端spi控制器的最高频率,以选择一个合适的运行频率。 对于一款主控支持多款flash的情况,还得考虑好兼容性等问题。 主控端的最高频率,可以查看主控的规格书,本文主要说下nor的频率限制。 看来我应该把标题取成 “震惊,nor flash最慢的一条命令竟然是...” 那下面的fT和fQ标注的84M又是什么意思? 基本nor flash都提供了双线,四线操作,驱动中应该尽量支持起来,提高性能。退一步讲即使不支持双线四线,我们还有FAST_READ命令可以用,这个是支持100M以上的。 多看几款规格书,我们就可以发现,READ并不孤单,有些nor flash,不止READ跑不到100M,读ID之类的命令也跑不到100M。
NOR FLASH硬件原理参考:https://blog.csdn.net/qq_16933601/article/details/102653367 一、内核NOR FLASH驱动框架分析 1.physmap_init ; } 2.physmap_flash static struct platform_device physmap_flash = { .name = "physmap-flash", .id ,//nor flash的物理基地址 .end = CONFIG_MTD_PHYSMAP_START + CONFIG_MTD_PHYSMAP_LEN - 1,//nor flash的容量长度 . ,这里是map_info结构体和mtd_info结构体来完成的,当我们要对nor flash分区就要使用add_mtd_partitions()才行 其中当*probe=="cfi_probe"时: 就会通过 使用: 调用NOR FLASH协议层提供的函数来识别 */ printk("use cfi_probe\n"); s3c_nor_mtd = do_map_probe("cfi_probe", s3c_nor_map
问题:flash掉电数据出错 为什么掉电会导致flash数据出错呢? flash正常的工作电压,flash就不保证继续正常工作了。 下主面要介绍下nor flash写保护,这个是可以在驱动层面做的。 nor写保护 写保护是nor提供的功能,即可以通过配置一些寄存器,将某些区域保护起来。 BP保护 大多数nor flash支持使用BP位来配置写保护,这种保护的特点是其保护的数据是成片的,一般是从flash头部开始的一片数据,或者从flash尾部开始的一片数据。 不同厂家的保护bit设置都不太一样,涉及到BP bit,SEC bit, CMP bit等,每适配一款新的nor,都得重新查下规格书才行。
最近研究了下nor flash的掉电问题,对nor的掉电有了更多的认识。总结分享如下 擦除从0变1,写入从1变0 nor flash的物理特性是,写入之前需要先进行擦除。 多次写入的例子 在uboot中就有一个利用nor这个特性的例子。当使用了冗余env功能时,flash上会维护两份env,我们记为envA和envB吧。 [41f6na3zx0.png] 擦除过程中掉电 从nor flash原厂了解到,erase操作其实在flash内部分成三个步骤: 1)pre-program all "00"; 2)erase; 第一步骤:pre-program all "00"; 当收到擦除命令时,首先flash会对这4k写入全0数据,这个是按先后顺序串行写入的,就理解为一个正常的写入全0数据。 从擦除过程掉电的特征看,擦除过程掉电可能导致flash上存在杂乱数据,或者不稳定的全0xFF数据,因此对于全0xFF的数据,写入之前还是要先做一次擦除让nor达到稳定状态。
之前有介绍过写保护,这里就不赘述了,可参考:https://www.cnblogs.com/zqb-all/p/12182920.html 但没有谈到开销,今天有同事问起,便记录一下 性能 不考虑写保护的nor p/12011436.html bp保护的开销 bp保护,一般都需要写Status Register,这种寄存器是一般是non-volatile,即非易失性,也就是写入后掉电值不会丢失重置,就像写入了flash 放两家flash的规格书截图供参考,请看其中的tw值: [5kuo3knds8.png] [pr0xd9ij08.png] ms级别的开销意味着,如果在每次写入之前解保护,写入之后恢复保护,会对写性能造成很大的影响 每次发送的解保护命令和保护命令,导致的状态改变是volatile,即易失性的,掉电后就会被清空,上电时flash总是处于全保护的状态。 每个block的保护状态标记,其实是记录在sram中的,不需要固化到flash中,其开销是ns级别的,这个规格书中没有标注,但可以向厂商了解或自行实测。
NAND NOR FLASH闪存产品概述 随着国内对集成电路,特别是存储芯片的重视,前来咨询我们关于NOR Flash,NAND Flash,SD NAND, eMMC, Raw NAND的客户越来越多了 擦写寿命长;5,耐高低温冲击;6,容量适宜(128MB~4GB) 具体可以可以看链接:http://www.longsto.com/product/31.html 我们把存储产品大概分为E2PROM,NOR 二,NOR Flash 是目前应用领域最广泛的一种存储芯片了.基本上主流的电子产品里都有使用。甚至我们手机摄像头内部,屏幕驱动电路板上都会用到。主要用来存储代码和一些比较小的数据文件。 主流是SPI NOR接口; 主流容量:1Mbit~128Mbit; 封装:SOP-8居多,也有更小的;尺寸也都比较小。 NOR Flash架构决定了它的容量不能做大,而且读取速度比较慢。 3.3 使用特点/管理机制 NAND Flash产品本身存在一定的特性,要正常使用,必须配备对应的管理机制。主要有: 1,NAND Flash存在位翻转和位偏移。
擦写寿命长;5,耐高低温冲击;6,容量适宜(128MB~4GB) 具体可以可以看链接:http://www.longsto.com/product/31.html 我们把存储产品大概分为E2PROM,NOR 二,NOR Flash 是目前应用领域最广泛的一种存储芯片了.基本上主流的电子产品里都有使用。甚至我们手机摄像头内部,屏幕驱动电路板上都会用到。主要用来存储代码和一些比较小的数据文件。 主流是SPI NOR接口; 主流容量:1Mbit~128Mbit; 封装:SOP-8居多,也有更小的;尺寸也都比较小。 NOR Flash架构决定了它的容量不能做大,而且读取速度比较慢。 二,NOR Flash 是目前应用领域最广泛的一种存储芯片了.基本上主流的电子产品里都有使用。甚至我们手机摄像头内部,屏幕驱动电路板上都会用到。主要用来存储代码和一些比较小的数据文件。 主流是SPI NOR接口; 主流容量:1Mbit~128Mbit; 封装:SOP-8居多,也有更小的;尺寸也都比较小。 NOR Flash架构决定了它的容量不能做大,而且读取速度比较慢。
前言 随着国内对集成电路,特别是存储芯片的重视,越来越多的客户开始咨询关于NOR Flash、NAND Flash、SD NAND、eMMC、Raw NAND等存储产品的相关信息。 一、存储产品分类 我们将存储产品大致分为E2PROM、NOR Flash、NAND Flash三类,下面是具体分类介绍。 1.2 NOR Flash NOR Flash是目前应用最为广泛的存储芯片之一,几乎存在于所有主流电子产品中,如手机摄像头、屏幕驱动电路板等。它主要用于存储代码和小型数据文件。 主流NOR Flash多采用SPI接口,容量范围从1Mbit到128Mbit,封装形式多为SOP-8,且尺寸相对较小。 由于其架构限制,NOR Flash的存储容量无法做大,读取速度也相对较慢。 1.3 NAND Flash NAND Flash是目前最为热门的存储芯片,广泛应用于生活中的各类电子产品中,如手机和笔记本电脑。
使用超过 16M bytes 的 nor flash,则需要了解 4 字节地址模式, 即命令格式是 cmd + addr[3] + addr[2] + addr[1] + addr[0] + ... 驱动修改 新的 uboot, kernel 驱动中都是支持的,配置下就可以了,如配置上 SPI_NOR_4B_OPCODES 。 但软件退出的缺点是,只能解决正常重启的情况,无法处理硬件 reset 主芯片的操作,因为 reset 主芯片并不会让 nor 也 reset,那么 nor 就仍处于 4 字节地址模式,不响应 boot 另一种更好的处理方式是,硬件设计上支持让主芯片和 nor 同步 reset。 其他 nor 在 16M 这个容量是个分界点,不仅驱动上因为 4 字节地址模式的引入而更加复杂,价格上也是差别巨大,32M nor 远不止 16M nor 价格的两倍。
接下来必经的步骤,就是从PC端接收数据写入flash了。 已有优化 目前倒是已经有一个优化,在收到数据需要写入时,会先读出flash中的数据跟这笔要写入的数据进行比较,如果数据相同就直接跳过,数据不同,才进行擦除和写入。 优化点 初步分析,从流程上看没什么问题,最大的耗时在擦除上,但毕竟nor的物理特性就是需要先擦除再写入的。 但仔细分析,其实还是有优化空间的,这个空间还就在于nor的擦除上。 nor拥有多条擦除的命令,可以擦除4k,32k,64k或者整片擦除。这些命令的耗时是不同的。 方案上由于分区规划设置了最小为4k的分区,所以nor就被配置为4k sector,则nor驱动使用的擦除命令就是对应的4k擦除的命令。而这是效率最低的一种擦除方式。
在嵌入式系统开发中,“存储选型”是经常会遇到的问题,特别是许多曾长期使用 NOR Flash 的工程师,在切换到 NAND Flash 时常常感到疑惑: 为什么 NAND Flash 容量更大、 为什么 NAND 需要坏块管理,而 NOR 不需要? 为什么NOR随机读取速度很快,而顺序写入速度却不理想?而NAND情况却有一些截 然相反? 二、底层结构差异决定使用方式差异 1)NOR Flash:并联结构 → 随机访问友好 NOR 内部单元呈并联矩阵结构,每个存储位可以直接寻址读取和写入 因此 NOR 支持: 字节级(Byte)读取 Flash 更高,并且写入速度显著更快。 六、CS SD NAND:让 NAND 的优势变得“可直接使用” 前面已经提到,NAND Flash 的性能与寿命并不由硬件本身决定,而是由Flash管理管算法决定。
除非装载完程序,才能使用NAND Flash. 装载程序只能从mask rom 或者Nor flash。 3.2 NOR启动: 如果配置为NOR FLASH启动(启动模式选择开关拔到nor端,此时OM0管脚拉高),0x00000000就是NOR FLASH实际的起始地址,NOR FLASH中的程序就从这里开始运行 3.3 总结: NAND启动时,地址0x00000000为内部SRAM映射的地址; NOR启动时,地址0x00000000为NOR FLASH的实际起始地址。 向NOR FLASH中写数据需要特定的命令时序,而向内存中写数据可以直接向内存地址赋值。 用NOR启动时,片内的存储控制器的BANK0-BANK7这8个BANK都对应了其他用途,所以设计者在BANK7结束的地址0x40000000的地方作为NOR FLASH的启动地址,而NAND FLASH
#第001节_Nor Flash原理及硬件操作 # Nor Flash的连接线有地址线,数据线,片选信号读写信号等,Nor Flash的接口属于内存类接口,Nor Flash可以向内存一样读,但是不能像内存一样写 Nor Flash原理图如图: ? Flash介绍 常用的Flash类型有Nor Flash和NAND Flash两种。 Nor Flash的测试 nor_flash_test函数通过switch语句,分别处理识别NOR Flash,擦除NOR Flash某个扇区,编写某个地址,读某个地址。 写NOR Flash do_write_nor_flash的代码如下所示,开发板上的NOR Flash的位宽是16bit,所以可以把要写的数据构造出16bit然后在写进NOR Flash中。 读NOR Flash do_read_nor_flash函数代码如下,由于NOR Flash是内存类接口,可以像内存一样读取。
2月13日消息,受全球消费电子市场需求持续下滑影响,不仅智能手机、PC出货大跌,无线耳机需求也是非常疲软,这也直接拖累了对于NOR Flash的需求,导致NOR Flash价格持续下跌。 据日经新闻报道,由于自无线耳机的需求疲弱,拖累NOR Flash价格续跌,指标性产品SPI类型256Mb本季(1-3月)批发价为每个2.0美元左右,较前一季(2022年10-12月)下跌9%,容量较小的 据报导,近年来因来自无线耳机的需求快速增长,也带动了其所需的NOR Flash价格在2021年初至2022年夏天期间呈现上涨,但自去年秋天以来、需求呈现放缓,与此同时因电视销售不振,OLED面板用Nor Flash需求疲弱,因此2023年4-6月期间价格下行压力仍大。
8月19日消息,兆易创新宣布,推出1.2V超低功耗SPI NOR Flash产品——GD25UF系列。 从系统设计层面来看,一些先进工艺器件的工作电压已低至1.2V,如果所需的Flash可支持1.2V的电压操作,这对于主控而言,将能够有效简化电源设计并优化系统成本。 相比于1.8V供电的SPI NOR Flash,1.2V GD25UF系列在Normal Mode下,相同电流情况下的功耗降低了33%,而在Low Power Mode下,相同频率下的功耗降低了70%,
对应代码目录:drivers/mtd/spi-nor/spi-nor.c M25P80(generic SPI NOR controller driver):这层主要对SPI NOR Framework Flash NOR Flash 是一种非易失闪存技术,是Intel 在1988 年创建 MTD MTD(memory technology device 内存技术设备) 是用于访问memory 设备( //配置根据需求选择 All available flash: //flash类型,只区分nor和非nor方案,Android方案无此选项,默认非nor 0. default 1. nor Choice ---sunxi_flash的初始化/退出/读/写/擦除等flash接口 ├─mmc ---mmc接口代码 ├─nand ---nand接口代码 ├─spinor ---spi nor接口代码 ├─sunxi_flash.c ---nand接口代码 ├─spinor ---spi nor接口代码 ├─sunxi_flash.c ---sunxi_flash 2.4.2 KERNEL 源码目录 \longan\kernel\
实际选型中,SD NAND、SPI NAND、NOR Flash 是常见的非易失性存储方案,但业界有一条明确共识:SD NAND 几乎不用于存放启动代码,而 SPI NAND 和 NOR Flash 是主流启动介质 Flash:真正原生支持启动,XIP 王者NOR Flash 是最早为代码存储设计的非易失存储,架构最接近 SRAM,是启动最稳定、最通用的方案,分并行 NOR(传统)和 SPI NOR(主流小容量) NOR Flash 数据传输与接口机制(1)并行 NOR(经典启动架构)· 总线结构:独立地址线 + 数据线 + 控制信号(CE/OE/WE)与 CPU 总线直连,地址直接映射,完全等同于访问静态内存。 NOR Flash:总线直连、XIP、随机读、稳定 → 原生完美启动3. 三类存储优劣势总表七、工程选型指南:该用谁?1. 一句话记住选型本质:SD NAND 是「盘」,SPI NAND 是「可启动的盘」,NOR Flash 是「真正的启动内存」。
DM368可以支持NOR Flash, NAND Flash, UART, SD Card启动等多种启动方式。对于NAND启动,DM365支持的特性如下: 不支持一次性全部固件下载启动。 支持需要片选信号在Tr读时间为低电平的NAND Flash。 在网络网络摄像机的应用中为了节约成本,有一些用户使用了NAND Flash启动方式。 在DM368上,除了AEMIF (Nor Flash)启动,其他的启动方式都需要运行RBL。 只要检测到电平不是001,也就是不是AEMIF (NOR Flash)启动,ARM程序就会从ARM的ROM的地址0x00008000地址开始执行。 刚才在介绍NAND Flash启动原理的时候,我们提到了RBL需要到NAND Flash上面搜索特殊数字标志。这个特殊数字标志就是由烧写NAND的CCS的工程写到Flash上的。