[Linux 基础] -- eMMC 小总结

        通俗的来说,eMMC = NAND 闪存 + 闪存控制芯片 + 标准接口封装。

        本文大致做下面几点小结:

一、MMC 与 Host 之间的连接

        连接由下图可见:

 

 

 二、eMMC 和 NAND Flash 与 Host 的连接比较

        NAND Flash 直接接入 Host

        NAND Flash 直接接入 Host 时,Host 端通常需要有 NAND Flash Translation Layer,即 NFTL 或者 NAND Flash 文件系统来做坏块管理、ECC 等的功能。

        由 eMMC 接入 Host

        eMMC 则在其内部集成了 Flash Controller,包括了协议、擦写均衡、坏块管理、ECC 校验、电源管理、时钟管理、数据存取等功能。相比于直接将 NAND Flash 接入到 Host 端,eMMC 屏蔽了 NAND Flash 的物理特性,可以减少 Host 端软件的复杂度,让 Host 端专注于上层业务,省去对 NAND Flash 进行特殊的处理。同时,eMMC 通过使用 Cache、Memory Array 等技术,在读写性能上也比 NAND Flash 要好很多。

 三、Flash Controller 与 NAND Flash 的连接

        

        由上图知 MMC 相较于 NAND Flash,内部集成了 Flash Controller,其与存储介质大致连接如图。

四、关于 Flash Controller / MMC Controller

        

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

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

  •  CID:卡身份识别寄存器 128 bit,只读,厂家号,产品号,串号,生产日期。
  • RCA:卡地址寄存器,可写的 16 bit 寄存器,存有 Device identification 模式由 host 分配的通信地址,host 会在代码里面记录这个地址,MMC 则存入 RCA 寄存器,默认值 0x0001。保留 0x0000 以用来将 all device 设置为等待 CMD7 命令状态。
  • CSD:卡专有数据寄存器部分可读写 128 bit,卡容量,最大传输速率,读写操作的最大电流、电压,读写擦除块的最大长度等。
  • SCR:卡配置寄存器,可写的 64 bit 是否用 Security 特性(Linux 不支持),以及数据位宽(1 bit 或者 4 bit)。
  • OCR:卡操作电压寄存器 32 位,只读,每隔 0.1V 占 1 位,第 31 位卡上电郭晨是否完成。

拓展:

        当没有sn的时候可使用emmc cid替代使用!

五、Device Identification Mode 和初始化

 MMC 通过发送 CMD 的方式来实现卡的初始化和数据访问。

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

        Idle State:

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

        如果 eMMC Device 和 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 后,会将 128 bits 的 CID 的内容通过 Response 返回给 Host。

        Identification State:

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

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

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

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

High Volatage MultiMediaCard,工作电压为 2.7V~3.6V。

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值