EMMC基础知识总结

1、说明

1.0 整体架构

‘ EMMC最简单的可理解为带有控制器的FLASH,具体结构如下:
在这里插入图片描述
EMMC: Embedded multiMediaCard EMMC.

EMMC内部: host interface 、 flash controller 、 flash memory

1.1 flash memory 结构

EMMC 中一般都有4个分区:

  • Boot Area partitions:支持EMMC 启动系统,该分区在EMMC上电后,可通过简单协议就可读取
    • Boot Area partition 1
    • Boot Area partition 2
  • RPMB partition : replay protected Memory block,用于存放的数据不被非法篡改,如指纹,安全支付密钥等
  • General Purpose Partitions: 存储系统或者用户数据,芯片出厂时,通常不存在,需主动配置
  • User Data Area:主要用于存储系统和用户数据。通常在此区域分成:boot、system、userdata

在这里插入图片描述

1.2 FLash controller

flash 与 emmc 很重要的区别之一就是对于一些特殊功能储在的控制链路的位置:

  • flash :仅有存储设备,ECC 和 坏块管理等都在host 侧
  • emmc: ECC 和 wear leveling 块管理都在 EMMC的芯片侧, host侧秩序提供emmc Driver接口

几个关键词的实际含义:

  • ECC : error checking and correcting,实现数据纠错(奇偶校验只能发现并不能纠错)。
  • wer leveling: 跟踪flash存储空间的使用情况,使得每次数据的写入都能写入到不同的位置去,尽量减少内存控制的磨损程度。
  • Bad Block management: :坏块管理,对memory中坏块进行标记

在这里插入图片描述

1.3 flash interface

如下为host和eMMC之间的接口定义:

  • clk:时钟同步信号
  • data strobe: 有的接口有,有的接口没有
  • CMD: 信号用于host 的 command 和 device 的response
  • data0 - 7 : 数据位
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

2、芯片电路参数

2.0 EMMC的工作模式

在这里插入图片描述

2.1 基本接口设计

十分注意:
对于EMMC的接口中,data strobe 可以不管,一般集成在主控或者不涉及。但是其他的线如CMD data 都需要额外挂接上拉电阻,防止总线出现浮空

在这里插入图片描述

如下图是JEDEC 中的标准描述,对每一个上拉电阻的设计都给出了推荐:
在这里插入图片描述

2.2 电源设计

EMMC 的电源分成了两个部分:

  • VCC: 给存储供电
  • VCCq: 给控制器供电

在这里插入图片描述
“”“”“”“”“”额外注意: VCCQ的电压不能大于VCC的电压“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“

在这里插入图片描述

2.2.2 布线基本原则

  • 去耦考虑
    • 信号CLK、CMD、DQ和DS均做阻抗50Ω±10%匹配管控。
    • 信号CLK、CMD、DQ和DS约束为同组信号,长度差控制在±50mil范围内。
    • 所有信号线走线长度约束在2000mil以内,且注意使用IBIS模型进行仿真评估阻抗匹配和反射情况。
    • 信号线有完整的参考层。
    • 内部走不出来的信号可以从NC PAD走,不能从RFU PAD上走线。
    • CLK和RST_N长度差在1000mil以内。

加粗样式

3、特别注意

3.1 NAND 的操作管理方式

单位换算:
1 (Device) = xxxx (Blocks),1 (Block) = xxxx (Pages)
1(Page) =528 (Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes)
除OOB第六字节外,通常至少把OOB的前3个字节存放Nand Flash硬件ECC码)。

  • OOB 区域,每个page都有,每512个字节有16字节的ODB; 因此,2K的page 就是64字节的Page

3.2 坏块

  • 为什么出现坏块

    • Nand flash 的工艺,不能保证其在整个生命周期中性能可靠,因此产生坏块 -
  • 坏块分类

    • 固有坏块:这是生产过程中产生的坏块,一般芯片原厂都会在出厂时都会将每个坏块 第一个page的spare area的第6个byte标记为不等于0xff的值。
    • 使用坏块:Nand flash 在使用过程中,Block erase 或者 page program 错误的时候,就可以将其简单标记为坏块。新发现的坏块的第一个page 的spare area 的 第6个 Byte标记为 非0xff
  • 坏块管理

    • 1、 擦除块之前,需检查是否为坏块(spare 的 第6个字节是否为0xff),如果是0xff,就是好块,可擦除。否则为坏块,其不能擦除。
    • 2、 这种操作方法可能会由于电压不稳定导致nand 操作错误(即本来是好块,但还是被标记成了坏块)
    • 3、BBT: bad block table : 坏块表管理。

OOB是每个页都有的数据,里面存的有ECC(当然不仅仅);而BBT是一个FLASH才有一个;针对每个BLOCK的坏块识别则是该块第一页spare area的第六个字节。

3.3 坏块纠正

  • Nand flash 出错一般不会造成block 或者 page 不能读取
  • 如果page(512Bytes)中, 只有一个bit 或者几个bit 出错,ECC 能够纠正单bit错误和检测双bit错误,2bit以上不保证能检测到

3.4 补充

  • 由于page program发现的坏块:如果变成时候出错就标记坏块,则需要把块里面的内容首先备份到新的好块里面,然后对此标记的坏块有可能本身是好块,造成”错杀“
  • 补救方法如下: 完成备份后,再将此坏块进行擦除,如果block erase 错误,则说明该坏块是一个不折不扣的坏块。
  • 每个block(块)的 第一页 的spare area 的第6个字节作为坏块标记” 这个是nand 厂商的默认约定“
  • 为什么好块用0xff 来标记: nand flash的擦除实际是将所有的块变为1,写操作也只能将1变成0

4 总结

本文介绍了EMMC的基本结构,接口设计,电路设计,工作模式及特殊功能,包括ECC及坏块管理的基本逻辑

  • 2
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有水杯和雨伞的工科男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值