This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM5718:MMC3读取错误

Guru**** 1980975 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/760620/linux-am5718-mmc3-read-error

器件型号:AM5718

工具/软件:Linux

尊敬的 TI:

在定制板(AM571x 的参考)中、当我使用 dd 命令对 SD/uSD 卡执行正常读取/写入操作时、它在 mmc1和 mmc3控制器上工作正常。 但是、当我在 mmc1和 mmc3控制器上使用特定的写入/读取序列并具有供应商命令时、mmc1 SD/uSD 工作正常、但 mmc3在 cmd17中失败

对我的理解:

1.对于 cmd17、SD/uSD 卡读取失败的可能性有多大。

2.在执行读/写操作时、需要考虑 mmc1和 mmc3之间的区别是什么。

3.以下情况下获取超时的原因可能是什么?

使用命令如下所示:

发送 cmd60、cmd24/cmd25、cmd17

错误:

CMD:17 arg=55aa 标志= 3a0010
需要将软件复位到 CMD 线路
错误:等待 SRD/SRC 复位完成超时
错误 CMD-17


[688.239507] CMD:25 arg=55aa flags = 3a002a
[688.246542] RESP0:900
[688.248825]在 MMC_WRITE_DATA cnT-128中、大小=16384
[688.271114]需要软件复位到数据线路
[689.277024]错误:等待 SRD/SRC 复位完成超时
[689.282795]错误:WR 状态错误
[689.286470] CMD:12 arg=0 FLAGS = 1b0000
[689.292333] RES0:c00
[690.296183]等待 dati | CMI 超时
[691.303039]等待 dati | CMI 超时

代码片段:

if ((MMC_stat & IE_CTO)!= 0){
      printk (Kern_ERR "需要将软件复位到 CMD 行\n");
      if (MMC_RESET_CMD_DATA (MMC->base、SYSCTL_SRC)){
         返回1;
      }

while (((HSMMC_Read (base、sysctl)& bit)!= 0){
      if (i++> MAX_RETRY){
         printk (KERR_ERR "错误:等待 SRD/SRC 重置完成超时");
         返回1;
      }否则{
         mdelay (1);
      }
   }

if ((MMC_stat &(IE_DTO | IE_DCRC | IE_DEb))!= 0){
         printk(Kern_ERR"需要将软件重置为数据行\n");
         if (MMC_RESET_CMD_DATA (MMMC->base、SYSCTL_SRD)){
            //返回1;
         }
      }

谢谢、此致、

Anil Kumar

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Anil:

    您是否使用 AM57x TI PSDK Linux? 如果是、是哪个版本?

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Pavel、

    感谢您的回复、
    以下是 SDK 详细信息:ti-processor-sdk-linux-am57xx-evm-03.03.00.04

    谢谢、此致、
    Anil
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Anil、

    MMC1和 MMC3之间的主要区别在于支持的速度。 使用 MMC1和 MMC3模块的速度是多少? 有关更多信息、请参阅以下指针:

    AM571x 勘误表、i887:MMC3速度限制为64MHz
    AM571x DM、部分:7.24.1 MMC1-SD 卡接口以及7.24.3 MMC3和 MMC4-SDIO/SD

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Pavel、

    我将@25MHz 时钟频率用于 mmc1和 mmc3。

    我观察到 、在 cmd24前后的工作条件下(对于 mmc1控制器)、卡电流状态(cmd13)处于转换状态、cmd17也处于 tran 状态模式。

    故障情况下(对于 mmc3控制器)、在 cmd24之前、卡状态处于 tran 状态模式、但在 cmd24之后、卡状态仍处于 rcv 状态模式。

    请对此发表评论。

    谢谢、

    Anil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Anil、

    当您使用定制板时、MMC3可能会出现一些硬件问题。 您可以使用 RTOS 软件包中的 mmcsd_test/mmcsdStress_test 诊断检查您的硬件。

    software-dl.ti.com/.../index_board.html

    请注意、MMC1针对 SD 卡访问进行了优化、而 MMC3针对 SDIO 访问进行了优化。 MMC1为"1x UHSI 4b"、MMC3为"1x SDIO 8b"。 例如、对于 AM572x TI EVM、MMC1用于 MMC/SD 卡、而 MMC3用于 WLAN/WiLink SDIO。

    MMC3接口符合 SDIO3.0标准 v1.0、SD 第 E1部分、对于通用 SDIO 器件、它支持以下应用:

    - MMC3 8位数据 SD 默认速度,SDR
    - MMC3 8位数据、SD 高速、SDR
    - MMC3 8位数据、UHS-1 SDR12 (SD 标准 v3.01)、4位数据、SDR、半周期
    - MMC3 8位数据、UHS-I SDR25 (SD 标准 v3.01)、4位数据、SDR、半周期
    - MMC3 8位数据、UHS-I SDR50

    对于用于 SD 卡的 MMC3、初始 SD 卡通信需要3.3V IO。

    为了使 mmc3_clk 信号正常工作、必须通过软件将相应 CTRL_CORE_PAD_x 寄存器的 INPUTENABLE 位设置为0x1。

    此外、请检查以下 e2e 线程是否有帮助:

    e2e.ti.com/.../619879
    e2e.ti.com/.../709887
    e2e.ti.com/.../665980
    e2e.ti.com/.../688595

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Pavel、

    感谢您的参与。

    谢谢、此致、

    Anil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Pavel、
    纠正 MMC IO 的电压、解决了该问题。
    谢谢、此致、
    Anil
x 出现错误。请重试或与管理员联系。