emmc的读写浅析

1 篇文章 0 订阅

emmc总线
这个emmc有11根通讯总线:
cmd:命令线是双向信号。主机和设备驱动程序以两种模式运行,有开漏和推挽二种模式。
DAT0-7:数据线是双向信号,主机和设备驱动都是在推挽模式下(data0默认为拉高的状态)

CLK:clk是主机向设备发送的信号,clock操作在推挽模式下

数据 选通: 数据选通是设备给主机的信号,数据选通操作在推挽模式

emmc的擦写次数是有限的,一般使用久了速度会变慢,是因为emmc内部数据处理变慢了,我们可以从寄存器中获知,状态寄存器data0一直为0,即data0一直为拉低的状态,data0一直是busy的状态,就会出现传输数据(一般是写超时)超时,这个是因为emmc老化导致内部处理的数据变慢,一直在处理数据,不让主机在往里面写。

emmc传输数据是并行方式,是采用半双工模式,最快的是8根数据线同时传输。

MMC前面加了个embedded,主要就是为了突出现在这个设备是embedded 在电路板上。eMMC 和 MMC一样,沿用了 8 bit 的并行接口。在传输速率不高的时代,这个接口够用了。但随着设备对接口的带宽要求越来越高,想把并行接口速率提高也越来越难。eMMC 的最新 5.1标准理论最高值最高可以达到400 MB/s,再往上提高频率也不是不行,但就未必划算了。

emmc的擦写次数是有限的,一般闪存分为三种类型:TLC,MLC,SLC。TLC的擦写次数约都为500~1000次,寿命和速度都不行;MLC的擦写次数是1W次,SLC最好了为10W次。

擦写次数:将emmc等闪存颗粒完全写满后,全部删除才算一次擦写。

                                               Figure 2 — Multiple-block read operation






        总线协议
        MMC命令是面向块的命令:这些命令发送一个数据块通过一个CRC比特校验。读写操作都允许单个或多个块传输。一个多

        块的停止命令在CMD线后面,比如顺序读需要停止就可以在cmd线发一个停止命令cmd12。

      


     这个按照块(block)写的操作使用一个简单的忙信号,在写的过程中使用data0作为忙信号,即往emmc内部写数据时,就将data00信号线拉低(默认为高)作为写数据忙信号,emmc会阻塞主机的io request(这个指的是往emmc内部写数据的io request),主机收到这个忙信号就不能再往emmc写数据。当data0恢复默认的拉高状态时,即emmc内部处理数据完成,现在是空闲的状态,对主机的写数据IO操作可以响应。如果emmc内部老化,内部数据处理较慢,data0就会一直是busy状态,出现传输数据超时,我们直观的感受就是手机比较卡。

以下这段参阅:http://blog.csdn.net/joychanger/article/details/42100883

eMMC block i/o的繁忙程度,百分比的统计是统计在固定间隔时间内有多久是在持续做I/O request,有多久是空闲的。如果达到99%,那就说明eMMC block i/o这段时间内完全没有空闲,一直在做读写数据的操作,这时候很容易发生由于blocki/o瓶颈导致的上层APP要访问i/o时可能等待时间较久的问题。block i/o如果performance不佳,在同时有多个thread需要对i/o进行读写时,就可能发生短时间内的卡顿或等待。

  

               

       


       emmc总线数据传输是由命令,响应,和数据块结构组成一个以token为单位的,一个数据传输是一个总线操作,总线操作总是包括一个命令和一个响应,另外,一些操作还可能有数据token.

       e•MMC bus data transfers are composed of command, response, and data block structure tokens. One
data transfer is a bus operation. Operations always contain a command and a response token. In addition,
some operations have a data token。

      

    

      命令token如下所示:

       Command tokens have the following coding scheme:

 

      

     响应token如下所示:

    Response tokens have five coding schemes depending on their content. The token length is either 48 or
136 bits.



数据token如下所示:

data token  have the following coding scheme

 





  • 9
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自制eMMC读写工具是一项相对复杂的任务,需要一定的硬件和软件知识。下面是一些关于自制eMMC读写工具的基本步骤: 硬件准备: 1. 首先,需要准备一台电脑或者单板计算机作为eMMC读写工具的控制器。 2. 开发板需要具备可用的eMMC接口,例如SD卡插槽、eMMC转接卡等。确保能够正确连接eMMC芯片和控制器。 软件准备: 1. 下载并安装适用于控制器的操作系统,例如Linux、Windows等。确保控制器能够与eMMC芯片进行通信。 2. 确保系统中安装了适用于eMMC芯片的驱动程序。 编程和配置: 1. 编写或获取eMMC读写的相关程序或脚本,以便能够从eMMC芯片读取数据或将数据写入芯片。 2. 配置控制器和软件以确保正确的通信协议和参数设置。 3. 通过控制器调用适用的API来实现eMMC芯片的读写操作。 运行和测试: 1. 将待读取或写入的数据准备好,可以是文件、镜像等。 2. 运行读写程序,根据需要选择读或写模式,指定需要读取或写入的位置和大小。 3. 确认读取或写入操作是否成功。 注意事项: 1. 在进行eMMC读写操作时,请务必小心谨慎,以免意外损坏eMMC芯片。 2. 熟悉eMMC芯片的规格和特性有助于更好地操作和配置工具。 希望上述回答能够帮助您了解如何自制eMMC读写工具。请注意,这只是一个简要的概述,并且根据具体情况可能会有所不同。对于初学者来说,建议先参考相关文档和教程,以便更好地理解和实践。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值