本文主要是关于nor flash的相关介绍,并着重对nor flash打开电源方式及原理应用进行了详尽的阐述。
nor flash
nor flash是现在市场上两种主要的非易失闪存技术之一。Intel于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM(Erasable Programmable Read-Only-Memory电可编程序只读存储器)和EEPROM(电可擦只读存储器Electrically Erasable Programmable Read - Only Memory)一统天下的局面。紧接着,1989年,东芝公司发表了NAND Flash 结构,强调降低每比特的成本,有更高的性能,并且像磁盘一样可以通过接口轻松升级。NOR Flash 的特点是芯片内执行(XIP ,eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。NOR 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能。NAND的结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理需要特殊的系统接口。通常读取NOR的速度比NAND稍快一些,而NAND的写入速度比NOR快很多,在设计中应该考虑这些情况。
flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。执行擦除时块尺寸的不同进一步拉大了NOR和NAND之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。l 、NOR的读速度比NAND稍快一些。2、 NAND的写入速度比NOR快很多。3 、NAND的4ms擦除速度远比NOR的5s快。4 、大多数写入操作需要先进行擦除操作。5 、NAND的擦除单元更小,相应的擦除电路更少。此外,NAND的实际应用方式要比NOR复杂的多。NOR可以直接使用,并可在上面直接运行代码;而NAND需要I/O接口,因此使用时需要驱动程序。不过当今流行的操作系统对NAND结构的Flash都有支持。此外,Linux内核也提供了对NAND结构的Flash的支持。
什么是nor flash方式打开电源
flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。
norflash的启动方式
电子产品如果没有了电,就跟废品没什么区别,是电赋予了他们生命,然而程序则是他们的灵魂。
小时候一直很好奇,一个个死板的电子产品为什么一上电以后就能够工作了呢?为什么一个小小芯片就能够运行我们编写的程序呢?一个开发板从刚上电到整个操作系统能够运行起来是怎么办到的呢?这些东西困扰了好久,参考了好多资料现在才慢慢弄明白其中一些原理。
我们现在接触的大多数电子产品都是使用数字电路设计出来的,数字电路的精髓就是两个数字:0和1,这两个数字千变万化的组合创造了计算机世界的缤纷多彩,不管是cpu、内存还是其他外设都是通过0和1的变化来进行记录、交互以及计算。硬件是怎么操作这两个数字以及这两个数字是怎么控制硬件工作的,这里不进行讨论,那都是一些二极管、三极管、与非门、信号放大取样编码等等知识,所以这里将对一个个功能完整的芯片,从上电以后,他们通过电信号完成各种操作的过程进行解析。如果有玩过单片机的同学应该知道,一个cpu加上一个电源,然后外接一个外部晶振就能够做成一个最小系统了,单片机就能够在他可怜的64k或者128k内存中运行起来了,这些简单的控制芯片虽然有它的存在价值,但是它不能满足日益复杂的计算需求,所以需要更快的运算速度以及更大的运行内存,因此我们会用到更复杂的处理器,比如mips、arm等。下面将使用arm s3c2440 处理器分析上电启动的过程。
作为一个嵌入式产品,它的多样性让它更具有可玩性,以及更容易适应不同的需求,它不像我们的PC启动方式相对比较单一(ROM启动),arm启动方式有从norfalsh启动、nandflash启动、SD卡启动和UBS启动等,但是他们的启动原理都是大同小异的。
开始之前,先理清几个概念:
SDRAM(Synchronous Dynamic Random Access Memory):同步动态随机存取存储器,同步是指Memory工作需要步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是由指定地址进行数据读写,简单的说,它就是cpu使用的外部内存,即我们常说的内存条。
SRAM是英文Static RAM的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据,速度比SDRAM快,一般用作高速缓冲存储器(Cache)。
norflash:非易失闪存,是一种外部存储介质,芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中,由于它有地址总线,cpu可以直接从norflash中取指,直接从FLASH中运行程序,但是工艺复杂,价格比较贵,容量较小(1~4M),NOR的传输效率很高
nandflash:它也是非易失闪存(掉电不丢失)的一种,但是它虽然有数据总线,但是没有地址总线,所以cpu不能直接从nandflash中取指运行,由于它价格便宜,所以常常用来存储大量数据,和我们常说的硬盘类似。
下面将解析nandflash启动和norflash启动两种方式(arm s3c2440),其他启动方式将在uboot代码部分分析。
一、 Nandflash启动
首先必须把一个正确的bootload烧写到nandflash的最低位置,即从0x000开始烧写。当我们选择从nandflash启动开发板的时候,开发板就会启动连接nandflash的电路结构,当开发板一上电的时候,Nand Flash控制器会自动的把Nand Flash上的前4K数据搬移到CPU的内部RAM中(SRAM-cache),这个内部RAM我们通常称作stepping stone,同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000),CPU从内部RAM的0x00000000位置开始启动(执行),这个过程不需要程序干涉的。
这个过程就是启动过程的stage1,它将nandflash的前4看内容拷贝到stepping stone中,然后从stepping stone的第一条指令开始执行,这4k内容里面的指令将会完成以下几个动作:
1.硬件设备初始化
2. 加载U-Boot第二阶段代码到SDRAM空间
3. 设置好栈
4. 跳转到第二阶段stage2代码入口
从下图我们可以看到,板子重置以后,内存的映射关系。从图中可以看到以下几点:
1.刚开始bank0~bank5是只能映射SROM的,而bank6和bank7才能够接SDRM,而且每个bank最大接128M的SDRM,所以决定了S3C2440的最大可外接SDRAM是256M;
2.从图中我们可以看到bank6的起始地址是0x3000_0000, 所以我们在执行stage1的第二个动作(加载U-Boot第二阶段代码到SDRAM空间)时,需要将uboot代码放到0x3000_000~0x4000_0000区间内(SDRAM内),才能从SDRAM中正常执行stage2;
3.当没有选择从nandflash启动时,Boot internal SRAM(4k)的起始地址是0x4000_0000, 当选择从nandflash启动时,Boot internal SRAM(4k)的起始地址是0x00, 因为我们的开发板没有外接SROM,所以bank1~bank5都是空闲的,而bank0的位置将被Boot internal SRAM(4k)替代,也就是说bank0的前4k就是stepping stone(起步石),板子上电以后,在nandflash的启动模式下,S3C2440在硬件上会完成下图中的地址映射,并自动将nandflash中的前4k拷贝到stepping stone中,并从stepping stone的开始地址(0x00)获取到第一条指令并执行。
经过上面的分析后,我们可以将上面两图合并成下图所示:
前面说了nandflash启动过程中第一个代码搬移,下面将解析第二个代码搬移,这4k代码首先会设置cpu运行模式,关看门狗,设置时钟,关中断,初始化内存,初始化nandflash,设置堆栈,然后将整个bootload搬运到SDRAM中,并跳转到SDRAM中执行。
基本过程如下图所示:
关于4k代码的执行过程将会在后面详细解释,而且在新的uboot-2015中,这4k代码是由uboot_spl.bin完成的,下面将基于uboot-2015.10 列出uboot从上电到启动内核的整个过程进行概述:
二、norflash启动
其实理解了nandflash的启动方式,norflash的启动也就好理解多了,首先需要知道的是norflash是可以在片上执行代码(XIP)的,也就是说,我们只需要将bootload烧写到norflash的开始地址,当开发板上电以后,从内存映射图可以知道,nor flash会被映射到0x00000000地址(就是nGCS0,这里就不需要片内SRAM来辅助了,所以片内SRAM的起始地址还是0x40000000,不会改变),然后cpu从0x00000000开始执行(也就是在Norfalsh中执行)整个uboot,直到引导内核启动。
从norflash启动可以省事多了,不仅如此,我们自己编写的裸机程序需要调试,一般也是直接烧写到norflash中进行的,因为只要我们将编译好的可执行文件放到norflash的开始,开发板上电以后就会从norflash的第一条指令开始取指执行,我们后面写裸机程序的调试就是用这种方式进行的。
从norflash启动虽然从开发的角度会很方便(其实也方便不了多少),但是从产品的角度却增加了它的成本,毕竟norflash还是相对较贵的,我们明明只要一块nandflash就足够启动整个开发板了,就没必要在产品中添加一块norflash了,只要代码改改就能省下不少成本,何乐不为。而且nandflash对产品是必不可少的,因为后面还要存放内核和文件系统,起码需要几十兆的空间,用norflash来存储也不现实。
也许你会想,能不能只用norflash,不用nandflash和SDRAM行不行呢,毕竟norflash即可以存储,也可以运行程序的啊,从理论来说是可以的,但是了解一下他们的市场价格、运行速度和工作原理,应该就会知道答案了。
结语
关于nor flash的相关介绍就到这了,如有不足之处欢迎指正。
-
存储器
+关注
关注
39文章
7715浏览量
170870 -
NOR flash
+关注
关注
2文章
98浏览量
23842
发布评论请先 登录
什么是串行Nor Flash?串行Nor Flash的结构和参数特性
NAND Flash和NOR Flash的差别
NAND FLASH与NOR FLASH的技术对比
旺宏并行串行NOR Flash对比参考指南
nand nor flash区别
NOR FLASH的原理及应用
NOR Flash供需持续紧张,中芯长电抢夺NOR Flash测试设备订单
NAND Flash与NOR Flash的区别
NOR falsh、NAND flash、SDEMMC、QSPI flash、SPI flash
NOR Flash和NAND FLASH的区别是什么
NAND Flash和NOR Flash的区别

什么是nor flash方式打开电源 浅谈nor flash原理及应用
评论