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 ...
随机推荐
- 令人兴奋的TOP Server OPC Server v6.5 五大功能(下)
接上文. 2.MQTT客户端驱动程序自动标记生成(ATG) 使用过TOP Server OPC Server的大家可能还记得,在TOP Server OPC Server V6.4版本中,我们为MQT ...
- Git管理修正(取消跟踪、合并commit)
本文总结了最近使用Git时候遇到的两个问题: 1. 当将不必要跟踪的文件加入到仓库后如何处理? 2. 提交了多个功能相同的commit后如何处理? 总结经验 在创建仓库的一开始,就要设置号.gitig ...
- nginx小结
1.nginx下部署网站 网站为:http://10.1.75.177:8000 nginx端口为80 配置如下: user nginx; worker_processes auto; error_l ...
- MySQL Replication--复制延迟02--exec_time测试
复制延迟(Seconds_Behind_Master)测试 测试环境: MySQL 5.7.19 测试主从时间差: 检查主从系统时间差,同时在主库和从库执行SELECT NOW()语句: 主库:-- ...
- C#-将照片存入到SQL SERVER
将存照片的字段设为image类型. using System; using System.Collections.Generic; using System.ComponentModel; using ...
- 基于cmake编译glew
cmake已经成为了C/C++开源项目的主流构建工具.glew也提供了cmake的脚本,但用cmake编译glew容易采坑:glew的github上的代码,无论是master分支还是glew-2.1. ...
- golang之网络开发
TCP Server/Client开发 net包提供network I/O开发接口,包括TCP/IP.UDP.DNS和Unix domain sockets. 常用开发一般仅需要最基础接口或函数: 服 ...
- 如何更改Scratch3.0的LOGO
1.用visual studio code打开文件夹scratch-gui-develop 找到SRC\components\menu-bar 方法1:制作图片更换掉图片scratch-logo.sv ...
- django项目登录中使用图片验证码
应用下创建untils文件夹放置封装图片验证码的函数 创建validCode.py文件定义验证码规则 import random def get_random_color(): return (ran ...
- jmeter-多用户循环执行(存储token)
1.从cvs文件中读取数据 登录接口读取文件: 2.读取token,保存token 在登录接口下添加 设置: 把token保存为全局变量: 设置: 输入${__setProperty(newtoken ...