精华内容
下载资源
问答
  • JESD84-B51规范 ,分 11章节 ,353页 ,2014年 7月的 版本 ,定义了 EMMC的 电气 接口 ,为 系统 设计者 提供指导 。需要 学习 EMMC规范的同学看过来!
  • 本文主要参考eMMC规范,从总体上对eMMC 进行简要介绍。主要包含如下的内容: (1)eMMC系统的总体架构 (2)eMMC的总线协议 (3)device controller ...eMMC规范主要定义了Device Controller和接口的相关规范,...

    本文主要参考eMMC规范,从总体上对eMMC 进行简要介绍。主要包含如下的内容:

    (1)eMMC系统的总体架构

    (2)eMMC的总线协议

    (3)device controller

    (4)flash memory

    1.eMMC系统总体架构

    图 eMMC 系统总体架构                   

    eMMC规范主要定义了Device Controller和接口的相关规范,如图中蓝色部分标识

    • power部分

    (1)VCCQ主要用于MMC IO BLOCK的供电也就是与host接口IO部分的供电,同时也给eMMC core供电;
              VCC主要给eMMC内部的flash memory,以及eMMC core与flash接口部分IO的供电;

               VCCQ和VCC分为两种电压,一种电压是high voltage(2.7v~3.6v),一种电压是dual voltage(1.70v~1.95v和2.7v~3.6v)

    (2)VSSQ是IO的地也就是eMMC内部的CORE的地,VSS是eMMC内部的flash的地;

    图 eMMC供电

     

     注:VCCQ一定要小于或等于VCC

    • bus部分

    有11条信号线:

    (1)clk, 0~200MHZ,每个cycle可以在上升沿或下降沿传输,也可以在上升沿和下降沿都传输;

    (2)data strobe,由slave device 发送给host controller,主要用在HS400 mode(5.1规范?),频率与clk一致,用于host同步接收device的data(上升沿和下降沿有效),response和CRC status(只有上升沿有效);

    (3)cmd,双向信号线,用于从host发送命令给device和device发送response给host,有两种操作模式:open drain(初始化模式)和push pull(fast command transfer)

    (4) 8 bit data bus,双向信号线,工作在push pull mode,支持 1bit, 4bit, 8bit传输,默认上电或reset后只有DATA0用于数据传输,可以通过命令配置有多少条数据线用于传输数据。在device内部,DAT1~DATA7包含上拉电阻,平时不使用时保持上拉状态(也就是高电平??),使用时则断开上拉。

    • Host Controller

    通过发送CMD读写device端数据或通过CMD对device端进行配置

    • eMMC device  controller

    实现对memory的管理,接收bus端的CMD,实际读写I/O寄存器

    • flash memory

    包含了实际的存储介质nand flash

    图 eMMC接口

    注:

    1.4.1规范之前使用32位地址,最高容量达到2G;

    2.4.1之后采用512B扇区访问模式,可支持大于2G的存储空间

    2. eMMC总线

    2.1 eMMC总线协议

    eMMC 总线中,可以有一个 Host,多个 eMMC Devices。总线上的所有通讯都由 Host 端以一个 Command 开发发起,Host 一次只能与一个 eMMC Device 通讯。

    系统在上电启动后,Host 会为所有 eMMC Device 逐个分配地址(RCA,Relative device Address)。

    当 Host 需要和某一个 eMMC Device 通讯时,会先根据 RCA 选中该 eMMC Device,只有被选中的 eMMC Device 才会响应 Host 的 Command。

    (1)包含四种token

    • command:  任何操作都要以CMD开始,只能由host发往device,且要串行完成;
    • response:   在接收到host端发送的CMD,device作为回应将通过command line发送一个response,只能有device发往host,且只能通过command line串行传输;
    • data: data可由host发送device(写)可以由device发往host(读),data线可采用1线,4线,8线传输,对于每条data线,可以选择单沿传输(single data rate)还是双沿传输 (dual data rate)
    • crc status:用于device发送给host告知接收到的写入数据校验是否成功

    注:有些CMD是不需要发送respnse回应的,后面会有讲述

     

    (2)device地址采用session地址,由host controller在初始化阶段指定???

    (3)device通过CID进行识别;

    (4)bus操作由CMD,response,data中的一种或几种组成,包括三种:CMD;CMD+response;CMD+response+data;

    (5)读(写)数据时,data block后跟CRC bits,支持单个data block读(写)和multi blocks读(写),当multi blocks读(写)时,command发送stop命令表示读(写)结束;

    (6)写数据时,device通过DATA0 的busy位来告知host当前block写入是否完成;

     

    2.2 bus speed modes

    随着 eMMC 协议的版本迭代,eMMC 总线的速率越来越高。为了兼容旧版本的 eMMC Device,所有 Devices 在上电启动或者 Reset 后,都会先进入兼容速率模式(Backward Compatible Mode)。

    在完成 eMMC Devices 的初始化后,Host 可以通过特定的流程,让 Device 进入其他高速率模式,目前支持以下的几种速率模式

     

    图 bus speed mode

     

    2.3 clk control

    1.总线速率在任何时刻都可以改变;

    2.不带回应的命令,命令结束位后有8个clock;

    3.带有回应的命令,设备响应结束位后有8个clock;

    4.读数据传输。在上个data blcok的结束位后有8个clock;

    5.写数据传输,CRC status token结束位后有8个clock

    2.4 Error conditions

    1.CRC and illegal command

    如果发送给某地址的设备的命令的CRC检测错误,则不会执行这条命令,也不会回应

    2.Time-out conditions

    读写擦除操作的超时时间,一般超时时间是典型时间的10倍,spec中规定了每种操作的超时时间

    3.Read ahead in multiple block read operation

    为了提高效率,当有多个块读取时,设备可能会超前读取,如果host读取的最后一个物理地址,那么device会出错,因此host要忽略这个错误

    2.5 Minimum performance

    TODO,参考spec6.9.2

    2.6 Memory array partitioning

     

    BYTE:基本的传输单元

    BLOCK:面向读写命令的操作单元

    GROUP: for erase and WP

    2.7 timing

    TODO 见 spec 6.15

    3. device controller

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

    eMMC 则在其内部集成了 Flash Controller,用于完成擦写均衡、坏块管理、ECC校验等功能。

    相比于直接将 NAND Flash 接入到 Host 端,eMMC 屏蔽了 NAND Flash 的物理特性,可以减少 Host 端软件的复杂度,让 Host 端专注于上层业务,省去对 NAND Flash 进行特殊的处理。

    同时,eMMC 通过使用 Cache、Memory Array 等技术,在读写性能上也比 NAND Flash 要好很多。

    图 NAND Flash 与 eMMC

     

     

     

    3.1 eMMC操作模式

    主要有5种操作模式:

    1. boot mode

    有三种情况会进入boot mode:上电;硬件reset信号;发送CMD0并带参数0xf0f0f0f0

     

    2.device identification mode

    如果boot mode完成或者host/device不支持boot mode,则会进入此模式,接收到CMD3(SET_RCA)会退出此模式,进入transfer模式的standby state

     

    3. interrupt mode

     host和device会同时进入或退出中断模式。中断模式没有数据传输,唯一允许的消息是设备发送给host已经进入中断模式

     

    4.data transfer mode

    指定完RCA后,device进入此模式;host在identification device后进入此模式

     

    5.inactive mode

    三种途径进入此模式:操作电压非法;访问模式非法;通过CMD15(GO_INACTIVE_MODE)命令

     

     

    图 eMMC操作模式与device status对应关系表 

     

    3.2 device寄存器

    图 eMMC寄存器

    有三种方式可以对设备reset:

    1.断电在上电;

    2.reset信号;

    3.发送特定命令

    4. flash memory

    4.1 分区管理

     

     

    图:eMMC 内部分区

    eMMC 在内部对 Flash Memory 划分了几个主要区域:

    1. BOOT Area Partition 1 & 2
      此分区主要是为了支持从 eMMC 启动系统而设计的。
      该分区的数据,在 eMMC 上电后,可以通过很简单的协议就可以读取出来。同时,大部分的 SOC 都可以通过 GPIO 或者 FUSE 的配置,让 ROM 代码在上电后,将 eMMC BOOT 分区的内容加载到 SOC 内部的 SRAM 中执行。

    2. RPMB Partition
      RPMB 是 Replay Protected Memory Block 的简称,它通过 HMAC SHA-256 和 Write Counter 来保证保存在 RPMB 内部的数据不被非法篡改。
      在实际应用中,RPMB 分区通常用来保存安全相关的数据,例如指纹数据、安全支付相关的密钥等。

    3. General Purpose Partition 1~4
      此区域则主要用于存储系统或者用户数据。 General Purpose Partition 在芯片出厂时,通常是不存在的,需要主动进行配置后,才会存在。

    4. User Data Area
      此区域则主要用于存储系统和用户数据。
      User Data Area 通常会进行再分区,例如 Android 系统中,通常在此区域分出 boot、system、userdata 等分区。

    更多 eMMC 分区相关的细节,请参考 eMMC基础技术: 分区管理 章节。

    5. 参考文档

    [1]eMM spec(注册后可免费下载),http://www.jedec.org/standards-documents/results/jesd84-b51

    [2]http://www.wowotech.net/basic_tech/emmc_intro.html

    [3]http://www.wowotech.net/basic_tech/emmc_bus_protocol.html

    展开全文
  • TCG存储接口交互规范

    2020-03-26 16:17:54
    本文档主要介绍了TCG存储架构中Tper和SCSI、ATA、NVMe和eMMC接口命令和传输之间的交互。
  • 在手机产品演化的后端,多用eMMC存储器来取代NAND了。优点在于接口简单、读写速度快,容易匹配。eMMC存储器的框架一般如下图: 常用的寄存器控制列表如下所示:

           在手机产品演化的后端,多用eMMC存储器来取代NAND了。优点在于接口简单、读写速度快,容易匹配。eMMC存储器的框架一般如下图:


    常用的寄存器控制列表如下所示:



    展开全文
  • eMMC在封装中集成了一个控制器,提供标准接口并管理Nand Flash,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。 对于我们来说,eMMC就是在Nand Flash上添加负责ECC、管理坏块等功能的...

    一、MMC简介

    eMMC在封装中集成了一个控制器,提供标准接口并管理Nand Flash,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。

    对于我们来说,eMMC就是在Nand Flash上添加负责ECC、管理坏块等功能的控制器。

     

    在内核中,使用MMC子系统统一管理MMC、SD、SDIO等设备。从MMC规范发布至今,基于不同的考量(物理尺寸、数据位宽和clock频率等),进化出了MMC、SD、microSD、SDIO、eMMC等不同的规范。其本质是一样的,这也是内核将它们统称为MMC的原因。

     

    和MTD相同,MMC驱动也有一个单独的文件夹,位于drivers/mmc目录下,目录下的三个目录card、core、host对应MMC驱动的三个层次。

    1. card:区块层,用于实现卡的块设备驱动。

    2. core:核心层,抽象了卡的设备驱动的函数。

    3. host:主机控制器层,依赖于不同平台的控制器操作函数。

     

     

    二、MMC框架分析

    为了方便分析框架,我们需要分析host目录,读者可在此目录下任意选择一个单板驱动文件进行分析,我选择的是s3cmci.c文件。

    文件链接:

    https://files.cnblogs.com/files/Lioker/19_emmc.zip

     

    首先来看它的入口函数:

    1 static int __init s3cmci_init(void)
    2 {
    3     return platform_driver_register(&s3cmci_driver);
    4 }

    我们进入platform_driver的probe函数中,看看它如何初始化。

     1 static int __devinit s3cmci_probe(struct platform_device *pdev)
     2 {
     3     struct s3cmci_host *host;
     4     struct mmc_host    *mmc;
     5 ...
     6     /* 分配mmc_host */
     7     mmc = mmc_alloc_host(sizeof(struct s3cmci_host), &pdev->dev);
     8 ...    /* 省略阶段做的是设置s3cmci_host成员和gpio管脚 */
     9     request_irq(host->irq_cd, s3cmci_irq_cd, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, DRIVER_NAME, host));    
    10 ...
    11     /* 设置mmc_host */
    12     mmc->ops     = &s3cmci_ops;
    13     mmc->ocr_avail    = MMC_VDD_32_33 | MMC_VDD_33_34;
    14 #ifdef CONFIG_MMC_S3C_HW_SDIO_IRQ
    15     mmc->caps    = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ;
    16 #else
    17     mmc->caps    = MMC_CAP_4_BIT_DATA;
    18 #endif
    19     mmc->f_min     = host->clk_rate / (host->clk_div * 256);
    20     mmc->f_max     = host->clk_rate / host->clk_div;
    21 
    22     if (host->pdata->ocr_avail)
    23         mmc->ocr_avail = host->pdata->ocr_avail;
    24 
    25     mmc->max_blk_count    = 4095;
    26     mmc->max_blk_size    = 4095;
    27     mmc->max_req_size    = 4095 * 512;
    28     mmc->max_seg_size    = mmc->max_req_size;
    29 
    30     mmc->max_segs        = 128;
    31 ...
    32     /* 添加mmc_host */
    33     ret = mmc_add_host(mmc);
    34 ...
    35     platform_set_drvdata(pdev, mmc);
    36 ...
    37     return ret;
    38 }

    其中,

    1. mmc_alloc_host()函数调用关系如下:

    mmc = mmc_alloc_host(sizeof(struct s3cmci_host), &pdev->dev);
      -> host = kzalloc(sizeof(struct mmc_host) + extra, GFP_KERNEL);
      /* 初始化工作队列 */
      -> INIT_DELAYED_WORK(&host->detect, mmc_rescan);

    2. mmc_add_host()函数调用关系如下:

    mmc_add_host(mmc);
      -> device_add(&host->class_dev);
      -> mmc_start_host(host);
        -> mmc_power_off(host);            /* 掉电刷新 */
        -> mmc_detect_change(host, 0);
          -> mmc_schedule_delayed_work(&host->detect, delay);
            /* 在工作队列中添加一个延迟的工作任务host->detect */
            -> return queue_delayed_work(workqueue, work, delay);

     

    mmc_add_host()函数最终会调用mmc_alloc_host()初始化工作队列的mmc_rescan()函数。此函数用于检测是否有卡插入了卡控制器。

     1 void mmc_rescan(struct work_struct *work)
     2 {
     3     static const unsigned freqs[] = { 400000, 300000, 200000, 100000 };
     4     struct mmc_host *host = container_of(work, struct mmc_host, detect.work);
     5     int i;
     6 ...
     7     mmc_bus_get(host);
     8 
     9     /* 检测卡是否仍旧存在 */
    10     if (host->bus_ops && host->bus_ops->detect && !host->bus_dead
    11         && !(host->caps & MMC_CAP_NONREMOVABLE))
    12         host->bus_ops->detect(host);
    13 
    14     /* If the card was removed the bus will be marked
    15      * as dead - extend the wakelock so userspace
    16      * can respond */
    17     if (host->bus_dead)
    18         extend_wakelock = 1;
    19 
    20     /*
    21      * Let mmc_bus_put() free the bus/bus_ops if we've found that
    22      * the card is no longer present.
    23      */
    24     mmc_bus_put(host);
    25     mmc_bus_get(host);
    26 
    27     /* 如果卡仍存在, stop here */
    28     if (host->bus_ops != NULL) {
    29         mmc_bus_put(host);
    30         mmc_set_drv_state(e_inserted,host);//ly
    31         goto out;
    32     }
    33 
    34     /*
    35      * Only we can add a new handler, so it's safe to
    36      * release the lock here.
    37      */
    38     mmc_bus_put(host);
    39 
    40     /* 卡不存在,释放 */
    41     if (host->ops->get_cd && host->ops->get_cd(host) == 0){
    42         mmc_set_drv_state(e_removed,host);
    43         goto out;
    44     }
    45     mmc_claim_host(host);
    46     for (i = 0; i < ARRAY_SIZE(freqs); i++) {
    47         if (!mmc_rescan_try_freq(host, max(freqs[i], host->f_min))) {
    48             extend_wakelock = true;
    49             break;
    50         }
    51         if (freqs[i] <= host->f_min)
    52             break;
    53     }
    54     mmc_release_host(host);
    55 
    56  out:
    57     if (extend_wakelock)
    58         wake_lock_timeout(&host->detect_wake_lock, HZ / 2);
    59     else
    60         wake_unlock(&host->detect_wake_lock);
    61     if (host->caps & MMC_CAP_NEEDS_POLL) {
    62         wake_lock(&host->detect_wake_lock);
    63         mmc_schedule_delayed_work(&host->detect, HZ);
    64     }
    65 }
    View Code

     

    probe()函数所做的有以下几点:

    1. 分配、设置并添加mmc_host

    2. 检测卡是否插入了卡控制器

     

    如果在probe()函数执行时,卡并没有插入呢?也就是除了probe()函数,一定会有其他函数最终调用了mmc_rescan()函数。现在我们需要重新看一遍probe()函数,它注册了一个中断函数s3cmci_irq_cd()。

    1 static irqreturn_t s3cmci_irq_cd(int irq, void *dev_id)
    2 {
    3     struct s3cmci_host *host = (struct s3cmci_host *)dev_id;
    4     dbg(host, dbg_irq, "card detect\n");
    5 
    6     mmc_detect_change(host->mmc, msecs_to_jiffies(500));
    7 
    8     return IRQ_HANDLED;
    9 }

    之前分析过,mmc_detect_change(host->mmc, msecs_to_jiffies(500));函数最终会调用mmc_rescan()函数。

     

    此时如果有卡插入了,会调用到mmc_rescan()函数,此函数调用关系如下:

    mmc_rescan(struct work_struct *work)
      -> mmc_rescan_try_freq(host, max(freqs[i], host->f_min))
        -> mmc_attach_sdio(host)    /* 检测卡的类型 */
        -> mmc_attach_sd(host)
        -> mmc_attach_mmc(host)
          -> mmc_send_op_cond(host, 0, &ocr);         /* 发送卡的ID */
          -> mmc_init_card(host, host->ocr, NULL);    /* 初始化mmc_card */
            -> card = mmc_alloc_card(host, &mmc_type);
              -> device_initialize(&card->dev);
              -> card->dev.bus = &mmc_bus_type;   /* 设置总线为mmc_bus_type */
            -> card->type = MMC_TYPE_MMC;         /* 设置card结构体 */
          -> mmc_release_host(host);
          -> mmc_add_card(host->card);            /* 添加卡mmc_card */
            -> device_add(&card->dev);
          -> mmc_claim_host(host);                /* 使能host */

     

    在添加mmc_card调用device_add()函数时,mmc_bus_type总线会调用match()函数匹配设备驱动,如果匹配成功会调用总线的probe()函数或设备驱动的probe()函数。

    1 static int mmc_bus_match(struct device *dev, struct device_driver *drv)
    2 {
    3     return 1;    /* 匹配永远成功 */
    4 }

    probe()函数最终会调用mmc_driver的probe()函数。

    1 static int mmc_bus_probe(struct device *dev)
    2 {
    3     struct mmc_driver *drv = to_mmc_driver(dev->driver);
    4     struct mmc_card *card = mmc_dev_to_card(dev);
    5 
    6     return drv->probe(card);
    7 }

    在SI4的Project中搜索struct mmc_driver,发现只有block.c文件有对此结构体的定义。

     

    现在我们来查看mmc_driver的probe()函数。

    static int mmc_blk_probe(struct mmc_card *card)
    {
        struct mmc_blk_data *md, *part_md;
        int err;
        char cap_str[10];
    ...
        md = mmc_blk_alloc(card);
    
        err = mmc_blk_set_blksize(md, card);
    ...
        mmc_set_drvdata(card, md);
        mmc_fixup_device(card, blk_fixups);
    ...
        if (mmc_add_disk(md))
            goto out;
    
        list_for_each_entry(part_md, &md->part, part) {
            if (mmc_add_disk(part_md))
                goto out;
        }
        return 0;
    
     out:
        mmc_blk_remove_parts(card, md);
        mmc_blk_remove_req(md);
        return err;
    }

    其中,

    1. mmc_blk_alloc()函数调用关系如下:

    md = mmc_blk_alloc(card);
      -> md = mmc_blk_alloc_req(card, &card->dev, size, false, NULL);
        -> md->disk = alloc_disk(perdev_minors);
        -> ret = mmc_init_queue(&md->queue, card, &md->lock, subname);
          -> mq->queue = blk_init_queue(mmc_request, lock);
        -> set_capacity(md->disk, size);

    2. mmc_add_disk()函数调用关系如下:

    mmc_add_disk(md)
      -> add_disk(md->disk);
      -> device_create_file(disk_to_dev(md->disk), &md->force_ro);

     

    这个mmc_driver底层做的与块设备驱动相同:

    1. 分配、初始化请求队列,绑定请求队列和请求函数

    2. 分配、设置并添加gendisk

    3. 注册块设备驱动

     

    队列函数为mmc_blk_issue_rq(),其调用关系如下:

    mmc_blk_issue_rq
      -> mmc_blk_issue_secdiscard_rq(mq, req);
      -> mmc_blk_issue_discard_rq(mq, req);
      -> mmc_blk_issue_flush(mq, req);
      -> mmc_blk_issue_rw_rq(mq, req);    /* 上面四个函数选一个执行 */
        -> mmc_wait_for_req(card->host, &brq.mrq);
          -> mmc_start_request(host, mrq);
            -> host->ops->request(host, mrq);    /* s3cmci.c中host->requset = s3cmci_request */

     

     

    三、MMC驱动框架总结

    1. 各个结构体作用:

    struct mmc_card用于描述卡,struct mmc_driver用于描述卡驱动,sutrct mmc_host用于描述卡控制器,struct mmc_host_ops用于描述卡控制器操作函数。

    2. 整体框架:

     

    下一章  二十、网卡框架分析和虚拟网卡驱动和DM9621驱动分析

     

    转载于:https://www.cnblogs.com/Lioker/p/11258958.html

    展开全文
  • sdcard, emmc, sdio, sd标准

    千次阅读 2018-07-17 13:28:47
    emmc与sd card说的是两种不同...而他们使用的通信接口都是SD内存卡通信标准SDIO:SDIO是在SD卡规范间上增加了对IO设备的支持, 操作命令与sd有些不同有些相同, sd支持的叫sd card, sdio支持的叫sdio卡(如各种wifi, gp...

    emmc与sd card说的是两种不同的分装, emmc是bga封装,一般焊接在板子上;而sd card为tf card/sd card的形式;注意这仅是物理的表现形式不一样!!!
    而他们使用的通信接口都是SD内存卡通信标准
    SDIO:SDIO是在SD卡规范间上增加了对IO设备的支持, 操作命令与sd有些不同有些相同, sd支持的叫sd card, sdio支持的叫sdio卡(如各种wifi, gps, bluetooth等)。
    SD memory cards may also support a second security system based on commonly used standards,
    such as ISO-7816, which can be used to interface the SD memory card into public networks and other
    systems supporting mobile e-commerce and digital signature applications.
    In addition to the SD Memory Card, there is the SD I/O (SDIO) Card. The SDIO Card specification is
    defined in a separate specification named: "SDIO Card Specification" that can be obtained from the SD
    Association. The SDIO Specification defines an SD card that may contain interfaces between various
    I/O units and an SD Host. The SDIO card may contain memory storage capability as well as its I/O
    functionality. The Memory portion of SDIO card shall be fully compatible to the given Physcial Layer
    Specification. The SDIO card is based on and compatible with the SD Memory card. This compatibility
    includes mechanical, electrical, power, signalling, and software. The intent of the SD I/O card is to
    provide high-speed data I/O with low power consumption for mobile electronic devices. A primary goal is
    that an I/O card inserted into a non-SDIO aware host will cause no physical damage or disruption of
    that device or its software. In this case, the I/O card should simply be ignored. Once inserted into an
    SDIO aware host, the detection of the card will be via the normal means described in the given Physical
    Layer Specification with some extensions that are described in the SDIO Specification.
    The SD Memory Card communication is based on an advanced 9-pin interface (Clock, Command,
    4xData and 3xPower lines) designed to operate in at maximum operating frequency of 50 MHz and low
    voltage range. The communication protocol is defined as a part of this specification.
    From: SD Specifications Part 1 Physical Layer Specification Version 3.00
     

    展开全文
  • eMMC是可以自我管理的闪存(NAND Flash)芯片,内部集成了控制器,实现了多芯片封装,简化了应用接口设计,节省了板级空间,在移动终端领域得到了广泛应用。然而,基于Flash的存储器件在掉电时容易出现比特位损坏、...
  • 标准SPI通常就称SPI,它是一种串行外设接口规范,有4根引脚信号:clk , cs, mosi, miso Dual SPI 它只是针对SPI Flash而言,不是针对所有SPI外设。对于SPI Flash,全双工并不常用,因此扩展了mosi和miso的用法,让...
  • 这里写自定SDHC(安全数字主机控制器)LX216x和LS...eSDHC接口可用于从SD卡或eMMC获取重置配置字(RCW)、预引导初始化(PBI)、引导映像。eSDHC也可用作存储接口。eSDHC接口与1.8伏eMMC配合使用时没有问题,因为它在两
  • SD卡规范解读

    千次阅读 2017-10-16 20:33:08
    1.1 各类型储存卡/接口 首先了解一下我们在SD卡驱动学习中会碰到的主要几个储存卡名词: SD:Security Digital Memory Card,新一代多媒体储存卡,高速,安全(但安全机制貌似很少用到) MMC:Multimedia Card,...
  • 完整英文原版MMC标准协议,该标准协议文档共296页,详细的描述了EMMC的电气接口、协议规范、功能等,是EMMC开发的的第一手资料,值得珍藏。
  • NVIDIA Jetson TX1(4)

    千次阅读 2017-01-13 11:31:52
    3.0 接口和信号描述 3.1 SD/eMMC控制器 标准 注释 SD规范Part A2 SD Host控制器标准规范V4.00   SD规范Part 1 物理层规范V4.00   SD规范Part E1 SDIO规范V...
  • STM32之CubeL4(四)--- SD/MMC + SDIO + HAL

    千次阅读 2020-03-31 02:03:27
    后来基于不同的考量,进化出了MMC、SD、microSD、SDIO、eMMC等不同的规范。 SDIO强调的是接口 I/O功能,不再关注另一端的具体形态(可以是Wi-Fi card、Bluetooth card、GPS card、GSM/GPRS card 、Camera card、...
  • •HDMI接口,支持HDMI 1.4接口规范 •CSI&DSI接口 音频接口 •McASP音频接口,双声道音频输出,MIC音频输入 输入接口 •标准I2C电容屏接口 扩展接口 •MINI_PCIE 2.0接口 EIM总线接口 •SIM卡接口 电源输入 •+...
  • 基于64位的410处理器,该开发板支持快速软件开发,可作为样机设计学习参考,并符合消费者96Boards 规范(就是ARM联合Linaro定义的一个以Cortex-A系列处理器开发板为主的ARM开放平台规范,取名96Boards)。...
  • USB2642是符合USB 2.0规范的高速集线器和读卡器组 合解决方案。这种完全集成的单芯片解决方案可提供 USB扩展和集成的闪存卡读卡器。 Microchip USB2642 在USB主机和当今流行的闪存卡格式之间提供超高速 接口。该控制...
  • 3、闪存:4GB eMMC (v4.51 规范) 4、WiFi:Broadcom 43340 802.11 a/b/g/n;双频(2.4 和 5GHz);板载天线或外置天线 (见不同配置) 5、蓝牙:BT 4.0 + 2.1 EDR 6、经由一个 70 针连接器连接 30 多种业界标准 I/O 接口 7...
  • 标准SPI通常就称SPI,它是一种串行外设接口规范,有4根引脚信号:clk , cs, mosi, miso Dual SPI 它只是针对SPI Flash而言,不是针对所有SPI外设。对于SPI Flash,全双工并不常用,因此扩展了mosi和miso的用法,让...

空空如也

空空如也

1
收藏数 20
精华内容 8
关键字:

emmc接口规范