linux sd软件,linux SD CARD 调试总结

本文介绍了在嵌入式硬件中遇到的USDHC(通用串行总线高速卡)相关问题,包括WP管脚配置错误导致的环境变量存储失败和根分区挂载问题,以及CD管脚的软件和硬件配置不当引发的挂载状态异常。针对这些问题,提供了相应的代码注释、修改和宏定义等解决方案,帮助开发者诊断并修复电路和设备树配置问题。
摘要由CSDN通过智能技术生成

1.先看电路图

005fbec8a143

image.png

2.再看设备树

&usdhc2 {

pinctrl-names = "default", "state_100mhz", "state_200mhz";

pinctrl-0 = , ;

pinctrl-1 = , ;

pinctrl-2 = , ;

bus-width = <4>; /*位宽配置*/

cd-gpios = ; /*cd 管脚*/

/*wp-gpios = ; wp 管脚 */

/*vmmc-supply = ; 电源控制管脚配置*/

status = "okay";

};

3. WP 管脚配置不正确或(电路没接)出现如下问题:

3.1 无法存储环境变量

005fbec8a143

image.png

3.2 无法挂载当前root 分区

005fbec8a143

image.png

处理办法:先注释掉wp 代码

4.CD 管脚软件配置不正确或者没有配置(硬件没有接)kernel 出现如下log

一直处于要挂载的状态

005fbec8a143

image.png

处理办法(电路设计就是悬空的):

修改代码:

cd-gpios = ;

为:

cd-gpios = ;

5.cd管脚硬件没有接uboot 出现如下log

005fbec8a143

image.png

处理代码如下:

#if !defined(CONFIG_MMC_BROKEN_CD)

/* we pretend there's no card when init is NULL */

no_card = mmc_getcd(mmc) == 0;

#else

no_card = 0;

#endif

#if !CONFIG_IS_ENABLED(DM_MMC)

no_card = no_card || (mmc->cfg->ops->init == NULL);

#endif

if (no_card) {

mmc->has_init = 0;

#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)

pr_err("MMC: no card present\n");

#endif

return -ENOMEDIUM;

}

处理办法: 定义宏 CONFIG_MMC_BROKEN_CD

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值