SDM439平台出现部分机型SD卡不能识别mmc1: error -110 whilst initialising SD card【学习笔记】
SDM439平台出现部分机型SD卡不能识别mmc1: error -110 whilst initialising SD card
打印了如下的log:
- ::02.699 <>[ 3079.000640] mmc1: data txfr (0x00100000) error: - after ms
- ::02.699 <>[ 3079.000652] sdhci: =========== REGISTER DUMP (mmc1)===========
- ::02.699 <>[ 3079.000655] sdhci: Sys addr: 0x00000000 | Version: 0x00004d02
- ::02.699 <>[ 3079.000658] sdhci: Blk size: 0x00004040 | Blk cnt: 0x00000001
- ::02.699 <>[ 3079.000660] sdhci: Argument: 0x80ff3fff | Trn mode: 0x00000013
- ::02.699 <>[ 3079.000663] sdhci: Present: 0x03f80206 | Host ctl: 0x0000001a
- ::02.699 <>[ 3079.000665] sdhci: Power: 0x0000000d | Blk gap: 0x00000000
- ::02.699 <>[ 3079.000667] sdhci: Wake-up: 0x00000000 | Clock: 0x00000007
- ::02.699 <>[ 3079.000670] sdhci: Timeout: 0x00000001 | Int stat: 0x00000000
- ::02.699 <>[ 3079.000672] sdhci: Int enab: 0x03ff900b | Sig enab: 0x03ff100b
- ::02.699 <>[ 3079.000674] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
- ::02.699 <>[ 3079.000677] sdhci: Caps: 0x362dc8b2 | Caps_1: 0x00008007
- ::02.699 <>[ 3079.000679] sdhci: Cmd: 0x0000063a | Max curr: 0x00000000
- ::02.699 <>[ 3079.000682] sdhci: Resp : 0x5b590000 | Resp : 0x00000900
- ::02.699 <>[ 3079.000684] sdhci: Resp : 0x0a404012 | Resp : 0x76b27f80
- ::02.699 <>[ 3079.000686] sdhci: Host ctl2: 0x00000008
- ::02.699 <>[ 3079.000689] sdhci: ADMA Err: 0x00000003 | ADMA Ptr: 0x00000000f5c9820c
- ::02.699 <>[ 3079.000695] ----------- VENDOR REGISTER DUMP -----------
- ::02.699 <>[ 3079.000699] Data cnt: 0x00000040 | Fifo cnt: 0x00000040 | Int sts: 0x000c0000
- ::02.700 <>[ 3079.000702] DLL cfg: 0x6002642c | DLL sts: 0x00000000 | SDCC ver: 0x1000004d
- ::02.700 <>[ 3079.000705] Vndr func: 0x00018a9c | Vndr adma err : addr0: 0x000a3f80 addr1: 0x00000000
- ::02.700 <>[ 3079.000707] Vndr func2: 0xfa8018a8
- ::02.700 <>[ 3079.000746] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000748] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000751] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000753] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000755] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000758] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000760] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000763] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000766] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000768] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000770] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000773] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000776] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000778] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000781] Test bus[ to ]: 0x00000000 0x00000000 0x00000000 0x00000000
- ::02.700 <>[ 3079.000785] mmc1: clk: clk-gated: claimer: kworker/: pwr: host->irq =
- ::02.700 <>[ 3079.000788] mmc1: rpmstatus[pltfm](runtime-suspend:usage_count:disable_depth)(::)
- ::02.700 <>[ 3079.000790] sdhci: ===========================================
- ::02.765 <>[ 3079.066337] [FTS][Info]TP Ready, Device ID = 0x54
- ::03.559 <>[ 3079.862932] mmc1: mmc_sd_init_card() failure (err = -)
- ::03.559 <>[ 3079.862944] mmc1: error - whilst initialising SD card
从log上分析出错的应该是在SD的初始化的阶段有问题(mmc1: error -110 whilst initialising SD card)。有可能是SD卡在上电的时候出现电源还没有稳定,需要增大上电等待的延迟,延迟的时间自己设定。代码修改如下:
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index eb9ff36..7842f45
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -, +, @@ void mmc_power_up(struct mmc_host *host, u32 ocr) host->ios.vdd = fls(ocr) - ;
host->ios.power_mode = MMC_POWER_UP;
+
+ printk(KERN_ERR"zhuangzebin:>>>>>%s-%d<<<<<<<\r\n",__func__,__LINE__);
+ dev_dbg(mmc_dev(host), "zhuangzebin mmc before init\n");
/* Set initial state and call mmc_set_ios */
mmc_set_initial_state(host); @@ -, +, @@ void mmc_power_up(struct mmc_host *host, u32 ocr)
* This delay should be sufficient to allow the power supply
* to reach the minimum voltage.
*/
- mmc_delay();
+ mmc_delay(); mmc_pwrseq_post_power_on(host); @@ -, +, @@ void mmc_power_up(struct mmc_host *host, u32 ocr)
* This delay must be at least clock sizes, or ms, or the
* time required to reach a stable voltage.
*/
- mmc_delay();
+ mmc_delay(); mmc_host_clk_release(host);
+
+ mmc_delay();
}
编译重新烧录固件,仍然有这个问题的存在,已经把延迟的时间增大了10倍,排除软件问题,后面找硬件分析,SD卡的一颗物料没有焊接。而且机器有拆过的痕迹,那颗物料刚好处于边缘的地方,有可能是拆卸的时候导致物料脱落,后面硬件把物料焊接上,可以识别到SD卡。
SDM439平台出现部分机型SD卡不能识别mmc1: error -110 whilst initialising SD card【学习笔记】的更多相关文章
- SD卡报错“error -110 whilst initialising SD card”
目前开发遇到了某些SD卡和TI的SOC芯片的驱动不协调的地方,具体表现为: uboot 阶段初始化mmc dev 1 没有任何串口信息输出,无法读写mmc Kernel阶段报错”SD卡初始化失败 er ...
- 解决树莓派8G的SD卡只能识别3.3G,SD卡扩容
8GB microSD在Windows下使用Win32 Disk Imager下载映像后,在RPi中只能识别出3.3GB.而本身还有很多容量没有释放出来. 使用sudo raspi-config工具可 ...
- 【转】linux设备驱动之MMC SD卡——核心层简单分析
原文网址:http://blog.chinaunix.net/uid-28685940-id-3889878.html /*************************************** ...
- sd 卡驱动--基于高通平台
点击打开链接 内容来自以下博客: http://blog.csdn.net/qianjin0703/article/details/5918041 Linux设备驱动子系统第二弹 - SD卡 (有介绍 ...
- 第36章 SDIO—SD卡读写测试
第36章 SDIO—SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...
- 第36章 SDIO—SD卡读写测试—零死角玩转STM32-F429系列
第36章 SDIO—SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...
- 用QEMU模拟运行uboot从SD卡启动Linux
平台:Qemu + vexpress-a9 u-boot:u-boot-2019.10 Linux:linux-4.14.13 之前介绍过用Qemu模拟运行uboot,然后从网络启动lin ...
- Android SD卡存储
原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_SDcard_store.html 一 概念 SD卡存储空间比较大,当需要存取较大的 ...
- File存对象--android 的File存储到SD卡();
方法1:android File存对象--File存储到SD卡(); 1.保存对象到本地或SD卡需要注意的是,要保存的对象(OAuthV1)一定要实现了Serializable接口.实现了Serial ...
随机推荐
- 介绍一个免费的云开发工具:Cloud Shell
上周和一德国同事吹牛的时候,他说最近业余时间在玩一个东东,叫做Cloud Shell,Google出品.Jerry之前听说过国内的阿里云也提供过类似的解决方案,即在云端提供一个受限制的Linux环境并 ...
- 软工作业 wc-java
项目要求: 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能 -c 返回文件字符数 -w 返回词的数目 -l 返回行数 扩展 ...
- sql server快捷键添加
工具--选项--键盘 sp_table_column_info p_helpindex sp_sql
- es截取指定的字段返回
SearchResponse response = client.prepareSearch(index_name).setTypes("lw_devices") .setFrom ...
- oracle instantclient_12_2安装
下载地址 http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index ...
- 日常bug(1)
今天在写写代码的时候,前端找我,说我写的一个接口有可能有问题.导致前端的数据不能正常显示,我去看了一下,确实不能正常显示.问题的原因是本来前端循环遍历一个json里的数组,但是接下来的数据变成对象了. ...
- js 变量以及函数传参
一.变量: 基本类型是变量对象重新创建一个新值给变量对象空间,虽然是同一个值但是互不影响. 引用类型是也是将一个值重新赋值给新的变量空间,但是这个值是堆中对象的一个指针,新的变量和旧的变量指向是同一个 ...
- AD-logon workstation
默认AD登录到限制为64个 原因 发生此问题的原因是User-Workstations属性的Range-Upper值为1,024个字符.使用Active Directory用户和计算机输入NetBIO ...
- python——使用xlwing库进行Excel操作
Excel是现在比不可少的数据处理软件,python有很多支持Excel操作的库,xlwing就是其中之一. xlwings的安装 xlwings库使用pip安装: 在控制台输入 pip instal ...
- VS2005编译QT4.8.2
为什么要编译? 因为安装安装版的QT4.8.2,vs2005编译报错. 1.下载QT4.8.2,qt-everywhere-opensource-src-4.8.2.zip,下载vs-AddIn1.1 ...