eMMC (Embedded Multi Media Card) 为MMC协会所订立的、主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。这些特点对于希望通过缩小光刻尺寸和降低成本的NAND供应商来说,同样的重要。
为什么火每次NAND Flash制程技术改朝换代,包括70纳米演进至50纳米,再演进至40纳米或30纳米制程技术,手机客户也都要重新设计 重新设计什么? 因为你要通讯,就需要通讯的电压,时序,甚至接口命令,这些都随着不同厂商,不同制程技术而不同,你作为手机制造商或者soc厂商,想要把每种新的emmc集成到你的产品中,就要根据这些新的特性来花时间设计。 soc这边会有一个controller(比如nand flash controller),你要根据采用的nand flash特性来配置nand flash controller,以达到成功通讯的目的),但半导体产品每1年制程技术都会推陈出新,存储器问题也拖累手机新机种推出的速度, 因此像eMMC这种把所有存储器和管理NAND Flash的控制芯片都包在1颗MCP上的概念,逐渐风行起来。
接口的标准化emmc内部根本的存储介质还是 NAND FLASH,而不是一种全新的storage。 但是他定义并规范了统一接口比如: emmc 4.3, 4.4, 4.5(类似于usb 2.0, 3.0 这样的), 把和nand flash 的通讯 封装在emmc内部做好,而提供给外部的接口就是 emmc 接口。 同理, 外部,比如soc就需要有个 sdmmc controller, 并且宣布支持emmc4.3,4.4,那么,你需要做的就是, 简单的,根据选用的emmc的版本号,来给sdmmc controller来选择一个通讯的接口版本号4.4。
emmc 的controller 叫做:sdmmc controller/ sd controller
CPU启动过程cpu 固化一段code,上电执行。 另外,cpu上可能会同时支持几个instance来挂载storage。比如3个instance,第三个instance支持的种类是emmc。 再比如,有可能固话的code会去读一个叫flash.cfg的文件,你在flash.cfg中指定 存贮介质为:type=emmc, instance=3。 这样cpu 和 emmc就衔接起来了。
为什么要有多个引导(boot):因为有的在正式进入到os之前,需要有很多不同种类的工作,从emmc中读取初始指令到ram,用来做secury作用的一段code也被分成一个单独的boot, 配置设备的基本功能例如usb,uart,display(bootloader)。每个种类的工作,都可以被分为一个boot。
DDR手机上除了emmc这个storage外,还有个叫dram(动态内存)分为ddr1,ddr2,sdr,sdram, 之类的,统称为dram, 现在手机上很多用ddr的 cpu内部有一块很小的sram(静态内存)
设计理念 eMMC的设计概念,就是为了简化手机内存储器的使用,将NAND Flash芯片和控制芯片设计成1颗MCP芯片,手机客户只需要采购eMMC芯片,放进新手机中,不需处理其它繁复的NAND Flash兼容性和管理问题,最大优点是缩短新产品的上市周期和研发成本,加速产品的推陈出新速度。
x86 v.s. armx86 CPU Reset之后的第一个地址是0xFFFFF000,这个是ROM地址,所以必须有SPI Nor做地址映射。
arm CPU开机的时候会把Nand第一个Bank或EMMC第一个块内容放到DDR里面,然后跳转到对应地址
|