报价
HOME
报价
正文内容
emmc固件 nand 存储芯片 emmc,Nand flash,Nor flash之间有什么区别
发布时间 : 2024-10-06
作者 : 小编
访问数量 : 23
扫码分享至微信

存储芯片 emmc、Nand flash、Nor flash之间有什么区别

随着存储领域的发展,有很多不同的存储介质,今天ICMAX就带大家来分一分emmc、Nand flash、Nor flash之间的区别。

一、定义及区别

emmc:全称为embeded MultiMedia Card,是一种嵌入式非易失性存储器系统,由Nand flash和Nand flash控制器组成,以BGA方式封装在一款chip上。

Nand flash:一种存储数据介质;若要读取其中的数据,需要外接的主控电路。

Nor flash:也是一种存储介质;它的存储空间一般比较小,但它可以不用初始化,可以在其内部运行程序,一般在其存储一些初始化内存的固件代码。

这里主要重点讲的是emmc 和Nand flash 之间的区别,主要区别如下:

(1) 在组成结构上:emmc存储芯片简化了存储器的设计,将NAND Flash芯片和控制芯片以MCP技术封装在一起,省去零组件耗用电路板的面积,同时也让手机厂商或是计算机厂商在设计新产品时的便利性大大提高。而NAND Flash仅仅只是一块存储设备,若要进行数据传输的话,只能通过主机端的控制器来进行操作,两者的结构图如下:

(2) 在功能上:eMMC则在其内部集成了 Flash Controller,包括了协议、擦写均衡、坏块管理、ECC校验、电源管理、时钟管理、数据存取等功能。相比于直接将NAND Flash接入到Host 端,eMMC屏蔽了 NAND Flash 的物理特性,可以减少 Host 端软件的复杂度,让 Host 端专注于上层业务,省去对 NAND Flash 进行特殊的处理。同时,eMMC通过使用Cache、Memory Array 等技术,在读写性能上也比 NAND Flash要好很多。而NAND Flash 是直接接入 Host 端的,Host 端通常需要有 NAND Flash Translation Layer,即 NFTL 或者 NAND Flash 文件系统来做坏块管理、ECC等的功能。另一方面,emmc的读写速度也比NAND Flash的读写速度快,emmc的读写可高达每秒50MB到100MB以上;

二、emmc的初始化和数据通信

emmc与主机之间通信的结构图:

其中包括Card Interface(CMD,DATA,CLK)、Memory core interface、总线接口控制(Card Interface Controller)、电源控制、寄存器组。

图中寄存器组的功能见下表:

CID: 卡身份识别寄存器 128bit,只读, 厂家号,产品号,串号,生产日期。

RCA: 卡地址寄存器,可写的16bit寄存器,存有Device identification模式由host分配的通信地址,host会在代码里面记录这个地址,MMC则存入RCA寄存器,默认值为0x0001。保留0x0000以用来将all device设置为等待CMD7命令状态。

CSD: 卡专有数据寄存器部分可读写128bit,卡容量,最大传输速率,读写操作的最大电流、电压,读写擦出块的最大长度等。

SCR: 卡配置寄存器, 可写的 64bit 是否用Security特性(LINUX不支持),以及数据位宽(1bit或4bit)。

OCR: 卡操作电压寄存器 32位, 只读,每隔0.1V占1位, 第31位卡上电过程是否完成。

(5)Device Identification Mode和初始化

MMC通过发CMD的方式来实现卡的初始化和数据通信

Device Identification Mode包括3个阶段Idle State、Ready State、Identification State。

Idle State下,eMMC Device会进行内部初始化,Host需要持续发送CMD1命令,查询eMMC Device是否已经完成初始化,同时进行工作电压和寻址模式协商:eMMC Device 在接收到这些信息后,会将OCR的内容(MMC出厂就烧录在里面的卡的操作电压值)通过 Response 返回给 Host,其中包含了 eMMC Device 是否完成初始化的标志位、设备工作电压范围 Voltage Range 和存储访问模式 Memory Access Mode 信息。

如果 eMMC Devcie 和 Host 所支持的工作电压和寻址模式不匹配,那么 eMMC Device 会进入Inactive State。

Ready State,MMC完成初始化后,就会进入该阶段。

在该 State 下,Host 会发送 CMD2命令,获取eMMC Device 的CID。

CID,即 Device identification number,用于标识一个 eMMC Device。它包含了 eMMC Device 的制造商、OEM、设备名称、设备序列号、生产年份等信息,每一个 eMMC Device 的 CID 都是唯一的,不会与其他的 eMMC Device 完全相同。

eMMC Device 接收到CMD2后,会将 127 Bits 的CID的内容通过 Response返回给 Host。

Identification State,发送完 CID 后,eMMC Device就会进入该阶段。

Host 会发送参数包含 16 Bits RCA 的CMD3命令,为eMMC Device 分配 RCA。设定完 RCA 后,eMMC Devcie 就完成了 Devcie Identification,进入 Data Transfer Mode。

注:emmc初始化和数据通信的过程,有点类似USB协议,USB控制器去发送请求给USB设备,以IN包和OUT包的形式去建立与USB设备之间的通信,默认状态下,USB设备也是0地址的,与控制器分配设备地址。(感兴趣的可以看一下USB2.0的协议,主要是第8和9章内容)

三、eMMC工作电压和上电过程

根据工作电压的不同,MMC卡可以分为两类:

High Voltage MultiMediaCard,工作电压为3.3V左右。

Dual Voltage MultiMediaCard,工作电压有两种,1.70V~1.95V和2.7V~3.6V,CPU可以根据需要切换

我所使用的eMMC实测工作电压VCC为2.80V~2.96V,VCCQ为1.70V~1.82V。

其中VCC为MMC Controller/Flash Controller的供电电压,VCCQ为Memory和Controller之间I/O的供电。

上电初始化阶段MMC时钟频率为400KHz,需要等电压调整到它要求的VCC时(host去获取OCR中记录的电压值,上面有说),MMC时钟才会调整到更高的正常工作频率。

eMMC深入浅出 第五章 eMMC特性 第三节 复位

Section 3 Reset

第三节 复位

Today we are going to talk about Reset.

今天我们来聊聊复位。

Let’s entering the kingdom of Reset. Basically there are 3 kinds level of Reset. Power-On reset, Hardware reset and Software Reset.

There are also another two so called reset, one is CMD0 with argument 0x00000000, and the other one is CMD15. We will illustrate them one by one.

让我们走进复位王国。基本上我们有三种层次的复位。上电复位,硬件复位以及软件复位。还有另外两种我们暂且也可以称为复位,一个是CMD0带参数0x00000000,另一个是CMD15。我们将一个一个来解释。

Power-On reset, this is the highest, deepest, and most powerful reset, like the King. Per definition in the eMMC specification ‘after a power-on reset, the host must initialize the device by a special message-based e•MMC bus protocol’, this sentence is so obscure that after reading it, the readers still do not know what it is. To be simple, Power-On reset will bring eMMC device to the default mode or some pre-setting in the Ext_CSD if any,including bus state, data rate, bus width, protection state. But only this should be no any difference compared to other Reset. The secret is in below Power Up diagram, during power ramp up, there is an Initialization Sequence,which is eMMC prepare itself for the interaction with Host, like motor engine start. That’s why we say it is the deepest reset.

上电复位,是最高等级,最深层,最强的复位,就像是国王。eMMC的规范中是这么解释的,‘在上电复位之后,主机必须通过一个特殊的基于消息的eMMC总线协议初始化eMMC器件’。这句话非常晦涩以至于读完这句话,读者还是不知道这是啥。简单的说,上电复位会将eMMC置为到默认模式,或者是在Ext_CSD已经预先设定好的一些设置,包括总线状态,数据速率,总线位宽,保护状态。但是如果仅仅是这些,跟其他的复位相比并没有什么区别。秘密在于下面的上电图解,在上电过程中,有一个初始化流程。这是eMMC在做自我准备跟主机交互,就像发动机引擎发动一样。这是为什么我们说最深层次复位的原因。

Power Up Reset / 上电复位

It is very interesting that both hardware reset and software reset are introduced only since eMMC Specification 4.4. Then we do not need these kinds of reset before? Yes. Then why? That is because eMMC Specification inherit from MMC card specification, card is removable. Reinsert the card in the slot will do another cycle of Power-On reset, Power-On reset is Reset King.

非常有意思的是,硬件复位和软件复位都是在eMMC规范4.4加入的。那么在那之前我们就不需要这些复位了吗?是的。那么原因呢?那是因为eMMC规范是继承MMC卡的规范,卡是可拔插的。重新往插槽里插卡会做另一次的上电复位,而上电复位是复位国王。

Then we turn to the Reset Queen. Normally Hardware reset is the second-deep level reset. By pulling reset signal, host notify device to do the self-recover to the default mode or some pre-setting in Ext_CSD in any. Because this is through hardware signal, theoretically once host send hardware reset signal to the device, device will response with higher awareness as this is received by the eMMC Device Controller ASIC (Application Specific Integrated Circuit) circuit.

接下来我们转到复位王后。通常来说,硬件复位是第二层深度的复位。通过拉低复位信号,主机通知eMMC去做自我恢复到默认模式或者其它在Ext_CSD中的预先设置。因为这个是通过硬件信号,理论上一旦主机给eMMC发送复位信号,eMMC会已最高的警觉度去响应。因为这个信号是被eMMC的控制器ASIC(专用集成电路)电路接收。

While Software Reset goes through protocol interface by sending reset command (here is CMD0 with argument 0xF0F0F0F0). The problem is this software reset receiving and dispatching is normally handled by slave device Firmware, which could be impacted by the software resource scheduling and state machine status, interrupt mechanism, etc. Note that we do not specifically mention this slave device is eMMC device, as sometimes it is tricky for eMMC that this software reset command is handled by ASIC too to monitor this special digital CMD0 data stream (0xF0F0F0F0, think about this code stream is not only special, but also symmetrically beautiful) and do the same reset flow just like the hardware reset signal detection. Sometimes I feel like software reset is prince,it takes control when king is not there.

而软件复位走的是协议接口,通过发送复位指令(这里说的是CMD0带参数0xF0F0F0F0)。问题在于这种软件复位的接收和分发是通过从属设备的固件处理的,这个就可能被软件的资源调度和状态机状态以及中断机制等等影响。注意我们没有特意说这个从属设备是eMMC,因为eMMC尝尝很巧妙的同样用ASIC去监控这个特殊的CMD0的数据流(0xF0F0F0F0,想想这个数据码流不仅特殊而且有一种对称美),接着做和硬件复位信号一样检测的复位流程。有时我觉得软件复位就像是王子,国王不在,他说了算。

Form this point of view, there is almost no difference or extremely minor difference between the Hardware Reset and Software Reset. There is even in Ext_CSD Byte 162 an option setting to disable this Hardware Reset Function, permanently. What’s more this function is temporarily disable by default. This is why in today’s system design with eMMC, Hardware Reset is often ignored and not used, even no connection from Host to this Reset pin when hardware schematic design at the very beginning, as it is almost equal to Software Reset in eMMC and could be replaced. Hardware Reset seems like the Queen of kingdom, should be powerful but often be neglected.

从这个角度看,硬件复位和软件复位几乎没有什么区别或者微乎其微的区别。甚至在Ext_CSD的字节162中可以选择去禁止硬件复位这个功能,而且是永久的。另外这个功能默认是禁止的。这就是为什么在今天的系统含有eMMC设计中,硬件复位经常被忽视或者不用,甚至在最开始的硬件原理图设计的时候,主机和这个复位管脚都不连接,因为这个几乎就相当于软件复位所以可以被替代。硬件复位就像是王国里的王后,本应该有权威但是经常被忽视。

Hardware Reset is through RST_n pin, RST is the abbreviation of Reset, the last ‘n’ means the negative, normally means low pulse or low level signal. Sometimes ‘#’ is also used to present negative signal. Both ‘n’ or ‘#’ could be used before the letter or after letter, like nReset, #Reset, Reset_n, Reset_#. In eMMC specification, the RST_n is rising edge effective to trigger reset sequence, but the minimal pulse width is required to be 1us.

硬件复位是通过RST_n管脚,RST是复位的缩写,最后一个‘n’意思是负,通常意味着低脉冲或者低电平信号。有时’#‘也被用作负信号。’n’和‘#’可以用在字母前或者字母后,比如nReset, #Reset, Reset_n, Reset_#。在eMMC规范里,RST_n是上升沿有效来触发复位序列,但是要求低电平脉宽至少是1微妙。

There are some exceptional situations need to be considered and handled properly, one is the RST_n pulse width less than 1us, eMMC device should ignore and filter them. The other scenario is the VCCQ(VCCQ is the power supply to the eMMC device controller)ramp-up falls after or even in the middle of RST_n pulse, this is kind of stupid and dull question as we already have Power_On reset, (VCCQ)why we need response to another hardware Reset? So, simply let it go, eMMC device will be fine to drop it.

有一些特殊场景需要被考虑和正确处理,一个是RST_n的脉宽小于1微妙,eMMC 器件需要忽视并且过滤掉它们。另一个情形是VCCQ(VCCQ是eMMC器件控制器的供电)的上电落在复位信号之后甚至当中,这是个既傻且无聊的问题因为我们已经有了上电复位(VCCQ),我们为什么还需要响应另一个硬件复位?所以简单的放过他,eMMC器件会不理它就好。

HW Reset / 硬件复位

We almost cover all the detail of Software Reset CMD0(with argument 0xF0F0F0F0), here we only summarize its features. Software Reset is commonly used in system design with eMMC (much more popular than Hardware Reset). It is with a very special but symmetric argument (4 bit ‘1’ followed by a 4 bit ’0’, and repeat 4 times). It will bring the eMMC device to the default Pre_IDLE state in the Boot Mode.

我们几乎涵盖了软件复位 CMD0(带参数0xF0F0F0F0)的所有细节,这里我们只需要总结一下它的特性。软件复位是系统设计使用eMMC经常性用到的(比硬件复位更通用)。它是一个带特别的而且对称的参数(4比特‘1’,跟着4比特‘0’,然后重复4次)。它把eMMC重置到默认的启动模式里的预闲置状态。

Before we finish today’s topic, we have two more things to mentioned. The first one is the CMD0 with argument 0x00000000. It is somehow also called as software reset. But this is not the typical reset we usually think. The purpose of this CMD0 with argument 0x00000000 is to bring the eMMC device to or back to the IDLE state in Card Identification Mode which is after the boot mode. From this point of view, we could treat it as a light software reset.

在我们结束今天的话题之前,还有两件事要交代。一个是CMD0带0x00000000的参数。这个在某种意义上也称为软件复位。但是这不是我们所想的典型的复位。CMD0带参数0x00000000的目的是把eMMC器件置位到启动模式之后卡识别模式里的闲置状态。从这点来看,我们可以认为它是一个轻量级的软件复位。

But never ever think it is not important, actually the frequency we see it is much more than the real Software Reset CMD0 with argument 0xF0F0F0F0. Why? In most normal cases, like from uboot to the LK(little kernel)and then finally entering Linux kernel, what we do is only to jump to the start point of Card Identification Mode, no need boot operation in Boot Mode. uBoot, LK(little kernel)and Linux Kernel are some terminology of Linux. CMD0 with argument 0x00000000 is like the lovely princess, not that powerful, but we see it more frequently.

但是千万千万不要认为它不重要,事实上我们看见它的频度比真正的软件复位CMD0带参数0xF0F0F0F0要多得多。为什么?因为在绝大多数情形下,比如从uBoot到LK(小核)最后到进入Linux内核,我们需要做的都是仅仅是跳转到卡识别模式的开始点,不需要在启动模式里的启动操作。uBoot,LK(小核)以及Linux内核是Linux中的一些术语。CMD0带参数0x00000000就像是可爱的公主一样,没那么大权利,但是我们更多的见到她。

The last one is the CMD15, which is really rarely used in the design nowadays. It will deactivate the eMMC device and bring it to the Inactive_State. Once in status, eMMC device can only be recovered with Power_on Reset to the Pre_Idle State.

最后一个是CMD15, 这个是在今天的设计中真正极其少见的。它会停止激活eMMC器件并且把它置位到非活跃状态。一旦进入这种状态,eMMC器件只能通过上电复位来恢复到预闲置状态。

相关问答

为啥不建议使用 nand 启动?

不建议使用nand启动。使用nand启动存在一些问题和限制。使用nand启动存在以下几个1.可靠性问题:nand启动方式在某些情况下可能会导致系统启动失败或出现错误...

mv300与mv310的 固件 通用不?

通用,一般大部分的固件是海思芯片通用的,所以具体问题具体分析。其次就是还需要注意闪存的型号,有两种,一种NAND闪存,另一种EMMC闪存。通用,一般大部分的固...

台电X80h双系统版都在预售了,那么X80h的双系统 固件 及刷机教...

尊敬的台电用户,您好:台电X80h双系统固件可到台电科技官网下载。感谢您对台电...1、台电完美双系统,正版Win8.1与Android双系统自由切换;2、采用Intel64位X8...

如何查看手机存储空间是ufs还是 emmc -ZOL问答

先来科普一下,eMMC、UFS2.0、UFS2.1其实是三种闪存协议,在速度上eMMC5.1最快可以达到400MB/S,而UFS2.0则是742.4MB/S,UFS2.1更是达到了恐怖的1.45GB/...

华为P10 Plus的157 固件 有问题,为什么华为还不更新?

P10对于华为来说是准备放弃的产品线了,出了emmc闪存偷换诚信事件之后,p10在国内外的口碑非常差,所以对于这款手机系统更新慢点也很正常,毕竟用的人不会太多了...

手机字库损坏如何修复?

一是JTAG修复,它属于软件维修范畴;二是修复是通过编程器重新编写字库启动程序,它的前提是字库本身非物理损坏。扩展资料:简单来说,“字库”(eMMC芯片)就...二...

Emui和rom分别是什么意思-ZOL问答

同时由于第三方固件未经充分测试可能会存在兼容性不好、系统易受病毒入侵等问题...UFS和eMMC有什么区别?9344浏览4回答出现工厂模式自动测试手动测试单...

EMUI和nubia UI对比,国产系统哪家强?

而在相机功能方面,nubiaUI要比EMUI更加完善全面,功能丰富玩法多样。看到这里,你应该明白如何判断一款手机的操作系统是否好用了吧?好看、好用、还要会用;适....

小米盒子怎么刷鸿蒙os?

详细教程如下:一、拿到盒子,首先降级Bootloader,刷入第三方固件;二、然后按照说明,制作好Linux启动盘,插入N1正常启动,并配置好用户名密码,网络连接等,...

台电的双系统平板怎么删除android系统-ZOL问答

1、台电完美双系统,正版Win8.1与Android双系统自由切换;2、采用Intel64位X86架构BayTrail处理器,1.83GHz主频,22nm制程;3、采用2G64bitDDR...

 绝恋倾城  矢来美羽 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部