NOR Flash 和 NAND Flash 的区别
参考于《ARM嵌入式系统开发典型模块》一书,仅用于笔记学习,如果侵删
Flash Memory是一种非易失性的存储器。
Flash 按照结构可以分为 nor flash 和 nand flash两大类,两者的读取速率差不多。
NOR flash的特点就是芯片内执行,这样应用程序可以直接在 flash 内存内运行,不必再把代码读到系统 RAM 中。nor flash 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。
鉴于NOR Flash擦写速度慢,成本高等特性,NOR Flash主要应用于小容量、内容更新少的场景,例如PC主板BIOS、路由器系统存储等。
NAND FLASH写入性能好,大容量下成本低。目前,绝大部分手机和平板等移动设备中所使用的eMMC内部的Flash Memory都属于NAND FLASH。PC中的固态硬盘中也是使用NAND FLASH。
NAND flash 结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用nand flash 的困难在于flash 的管理和需要的特殊接口。
总结nor flash 和 nand flash的差别在以下的几个方面
1、容量和成本
nor flash 的容量大小为1MB~32MB ,而nand flash 的为16MB~512MB。nand flash 的单元尺寸几乎是nor flash 的一半,由于生产的过程更为简单,因此价格也是相对低。
2、性能差别
(1)nor flash 的读速度比 nand flash稍快一些
(2)nor flash 的写入速度比 nand flash 慢了很多
(3)nand flash 的4ms擦除速度远比nor flash 的5s 快
(4)nand flash 的擦除单元更小,相应的擦除电路也久更小
3、接口差别
nor flash 的接口和RAM一样,而 nand flash 是使用I/O口来串行地存取数据。
3.1 NOR Flash根据与CPU端接口的不同,可以分为Parallel NOR Flash和SPI NOR FLASH两类。
NAND FLASH 需要通过专门的NFI(NAND FLASH Interface)与Host端进行通信,如下图所示:
4、易用性
使用nor flash 的相对简单,可以非常直接地使用基于 nor flash 地内存,可以像其他存储器那样连接,还可以直接在上面运行代码
而使用 nand flash 的话就复杂了,需要I/O接口,必须先写入驱动程序,才可以继续执行其他的操作。
5、耐用性
在nand flash内存中的每个块的最大擦除写次数是100万次,而nor flash 的擦写次数是10万次。
NAND FLASH根据每个存储单元内存储比特个数的不同,可以分为SLC(Single-LevelCell)、MLC(MulTI-LevelCell)和TLC(Triple-LevelCell)三类。其中,在一个存储单元中,SLC可以存储1个比特,MLC可以存储2个比特,TLC则可以存储3个比特。每一个存储单元内部通过不同的电压等级来表示其所存储的信息。在SLC中,存储单元的电压被分为两个等级,分别表示0和1两个状态,即1个比特;在MLC中,存储单元的电压则被分为4个等级,分别表示00011011四个状态,即2个比特位;同理,在TLC中,存储单元的电压被分为8个等级,存储3个比特信息。
NAND FLASH的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。
6、坏块处理
nand flash 器件中的坏处是随机分布的
nand flash 器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。
7、位交换
所有flash器件都受位交换现象的困扰。在某些情况下(很少见,nand flash发生的次数要比nor flash多),一个比特位会发生反转或被报告反转了。
一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法。
这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。
8、主要用途
nor flash常用于保存代码和关键数据。nand flash 用于保存数据。
9、软件支持
当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。
在NOR器件上运行代码不需要任何的软件支持,
在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),
NAND和NOR器件在进行写入和擦除操作时都需要MTD。
使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。
驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡。
IMX6ULL——启动流程(与stm32对比)
一、IMX6ULL——启动流程
飞向深空关注
2021.02.08 10:26:55字数 1,387阅读 1,754
1.IMX6拿C来编程需要C运行环境,这个运行环境由arm汇编来实现,文件夹的start.s文件就是启动文件,来实现C运行环境。其实STM32也有这个.s文件,拿H7举例,startup_stm32h753xx.s,这个文件是MDK自动生成的,不需要自己编写。
2.IMX6编程到运行需要把所有.c文件变成.o可执行文件,然后把所有.o文件链接在运行地址0x87800000转变成一个.bin文件,但是仅仅是.bin文件并不能在IMX中跑,需要在.bin文件头部加上数据头变成.imx文件传入IMX才能运行。
3.上述操作,可以编写make文件来实现,make文件可以实现通用,避免每增加一个文件就需要更改上述的命令。其实make文件也是实现了上述步骤,但最终是实现.bin文件。其实STM32也背地里帮你实现了make文件的功能,MDK帮你把.c文件变为.o然后变为.bin最后变为.hex文件即stm32要的执行文件,等价于IMX6的.imx文件
4.生成了.imx文件,但是如何让imx6获取到代码并执行? 这就涉及到了启动方式。IMX6的启动方式由26个IO所决定,其中有boot0,boot1和其余24个IO。boot1 - boot00 0 从FUSE启动 , 不用0 1 串行下载 , 用到但是代码定型使用到1 0 内部boot模式,用到,常用
串行下载:串行下载的意思就是可以通过 USB 或者 UART 将代码下载到板子上的外置存储设备中这个下载是需要用到 NXP 提供的一个软件,一般用来最终量产的时候将代码烧写到外置存储设备中的。
内部boot模式:在此模式下,芯片会执行内部的 boot ROM 代码,这段 boot ROM 代码会进行硬件初始化(一部分外设),然后从 boot 设 备(就是存放代码的设备、比如 SD/EMMC、NAND)中将代码拷贝出来复制到指定的 RAM 中,一般是 DDR。上面这句话看起来有点难懂,其实就是选了这个模式就先执行内部boot rom程序初始化硬件,然后根据boot0/1的选择和24个IO的选择的启动方式把从什么地方取到.imx文件。可以根据启动方式的配置,配置为从①、接到 EIM 接口的 CS0 上的 16 位 NOR Flash。②、接到 EIM 接口的 CS0 上的 OneNAND Flash。③、接到 GPMI 接口上的 MLC/SLC NAND Flash,NAND Flash 页大小支持 2KByte、4KByte和 8KByte,8 位宽。④、Quad SPI Flash。⑤、接到 USDHC 接口上的 SD/MMC/eSD/SDXC/eMMC 等设备。⑥、SPI 接口的 EEPROM。从这几个地方取.imx文件,其实就是在这几个地方启动,我现在看到的章节,原子说它用5,从SD卡启动。Boot ROM还会初始化IMX的时钟式,主频396Mhz。其实.imx文件下载到SD卡并不算完,代码最终要被放在跟IMX6u连接的DDR3(SDRAM)中,因为imx6没有内部SRAM使用,所以代码最后放到SDRAM运行了,Boot ROM 中有初始化DDR3的代码。
boot0,boot1如上,其余的24个IO,在正点原子板子上用于了LCD , 其实这24个IO用啥都没关系,它只在启动时候用于启动方式选择,后面自动变成普通IO。这个24个IO全部下拉, 实际只用其实6个。具体是哪几个我目前不去管它,只需要知道这板子上8个管脚作用。设置 启动设备0 1 x x x x x x 串行下载,可以通过 USB 烧写镜像文件。1 0 0 0 0 0 1 0 SD 卡启动。1 0 1 0 0 1 1 0 EMMC 启动。1 0 0 0 1 0 0 1 NAND FLASH 启动。
目前选SD卡启动方式
5..bin文件转化成.imx文件。也需要几个步骤,但正点原子提供了一个软件imxdownload来实现了着几个步骤,只需要把这个软件放在.bin文件同级目录下就行了,但此时观察软件名字发现是灰色,需要使用chmod 777 imxdownload来给这个软件可执行权限,发现名字变成绿色可以执行。软件是可以执行了,但如何来使用?上面说到启动设备选择SD卡,于是就用这个软件把.bin文件变成.imx文件传入到SD卡。目前软件有了,启动方式决定了,还插SD卡,拿读卡器装上SD卡,插到电脑上,选择接入到Ubuntu , 执行命令 ls /dev/sd* 看看有没有新增的sd* ,不能决定就插拔SD卡看谁在变化,找不到SD卡重启ubuntu。有SD卡文件化的文件后,执行命令 ./imxdownload led.bin /dev/sdf 就可以把.imx文件传到SD卡。注意拿空SD卡,因为会先格式化清空SD卡。
0人点赞
日记本
相关问答
NAND FLASH 128MB是什么意思?NANDFLASH应该就是NANDMEMORY吧,就是指手机或者MP4的内存,就像电脑的内存一样,为程序的运行保存一些参数变量,断电后会自动清除。他的大小当然也要影响到手...
flash 的帧怎么调大?Flash的帧是指动画中每一帧的时间间隔,调整帧的大小可以改变动画的流畅度和速度。以下是调整Flash帧大小的方法:1.在Flash中打开你的动画文件。2.选...Fl...
Flash 上面的字和 大小大小 怎么改,急急急,谢谢了!!!-ZOL问答字体工具,属性面板上样式可以改字体,大小改字体大小。。。有用(0)回复相关问题主板上2个128Mbitflash是什么意思指什么2.8万浏览5回答Flash硬件加...
一般 FLASH 的尺寸是多少?这个是没有定数的,看制作者要做多大的了,再者要看你做什么用.banner,logo,整站,或者专用广告,都有不同的大小尺寸。另外,一楼的朋友,默认尺寸都是550*400这个...
flash 要多少像素清晰?一般来说,Flash需要的清晰度为870像素。但是,这也取决于具体的动画类型和设计要求。如果需要更高清晰度的动画,可能需要使用更高的像素数。一般来说,Flash需...
flash 怎么调整 大小 ?制作flash动画时在制作软件的属性栏有个画布大小调节在欣赏flash动画时有满屏或固定尺寸之分上传flash动画时尺寸可以随意更改制作flash动画时在制作软件的...
现代 flash 的容量怎么识别T-Flash是一种体积非常小巧的存储卡,在手机领域目前仅被少数机型支持,其中包括摩托罗拉E-398/A1000,三星SGH-M339等。T-Flash卡当前的最大容量为256...
NANDflash 和NORflash的区别?1、存储架构不同NORFlash架构提供足够的地址线来映射整个存储器范围。这提供了随机访问和短读取时间的优势,这使其成为代码执行的理想选择。另一个优点是100%...
Flash 怎么调节字体 大小 ?1、首先我们找的我们桌面的软件Flash。2、双击打开我们的软件,我们稍等一下,设计软件都打开很慢的,来到我们的主页面。3、我们找到上边的文件,执行文件---...1...
Flash 的中文意思是什么 - 懂得Flash的中文意思是交互式矢量图和Web动画标准,它为创建数字动画、交互式Web站点、桌面应用程序以及手机应用程序开发提供了功能全面的创作和编辑环...