zoukankan      html  css  js  c++  java
  • SD卡报错“error -110 whilst initialising SD card”

    目前开发遇到了某些SD卡和TI的SOC芯片的驱动不协调的地方,具体表现为:

    uboot 阶段初始化mmc dev 1 没有任何串口信息输出,无法读写mmc

    Kernel阶段报错”SD卡初始化失败 error -110 whilst initialising SD card“

    具体的原因是SD的某些CMD操作不支持,返回-110的错误,需要

    uboot阶段,在dts中屏蔽掉:

    main_sdhci1: sdhci@4fb0000 {
    ti,otap-del-sel-legacy = <0x2>;
    /*ti,otap-del-sel-sd-hs = <0xf>;
    ti,otap-del-sel-sdr12 = <0xf>;
    ti,otap-del-sel-sdr25 = <0xf>;
    ti,otap-del-sel-sdr50 = <0xc>;
    ti,otap-del-sel-sdr104 = <0x5>;
    ti,otap-del-sel-ddr50 = <0xc>;
    sdhci-caps-mask = <0x2 0x0>;*/
    dma-coherent;
    };

    Kernel阶段,在drivers/mmc/host/sdhci.c 的函数 void __sdhci_read_caps 中添加:

    host->quirks2 |= SDHCI_QUIRK2_NO_1_8_V;

    主要是使能SDHCI_QUIRK2_NO_1_8_V

    if (host->quirks2 & SDHCI_QUIRK2_NO_1_8_V) {
       host->caps1 &= ~(SDHCI_SUPPORT_SDR104 | SDHCI_SUPPORT_SDR50 |
       SDHCI_SUPPORT_DDR50);
       /*
            * The SDHCI controller in a SoC might support HS200/HS400
            * (indicated using mmc-hs200-1_8v/mmc-hs400-1_8v dt property),
            * but if the board is modeled such that the IO lines are not
            * connected to 1.8v then HS200/HS400 cannot be supported.
            * Disable HS200/HS400 if the board does not have 1.8v connected
            * to the IO lines. (Applicable for other modes in 1.8v)
             */
             mmc->caps2 &= ~(MMC_CAP2_HSX00_1_8V | MMC_CAP2_HS400_ES);
             mmc->caps &= ~(MMC_CAP_1_8V_DDR | MMC_CAP_UHS);
    }

    重新编译u-boot和Kernel解决SD卡问题。

  • 相关阅读:
    我的收藏:第一章:汇总
    实战:第二章:关于EZDML工具使用踩的坑
    Docker:第二章:部署项目,对镜像,容器的操作
    电商网站项目:第一章:进度
    多线程:第一章:我(线程)这一生
    性能优化:第一章:我们应该怎么优化
    关于EZDML数据库表结构制作设计工具使用踩的坑
    集群与分布的区别
    strip_tags--php
    关于html的一些杂技
  • 原文地址:https://www.cnblogs.com/hutiann/p/12377529.html
Copyright © 2011-2022 走看看