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 ...
随机推荐
- WPF中的RecognizesAccessKey问题
Groupbox,CheckBox的模板中默认设置RecognizesAccessKey位True.从而导致下划线没法显示. 只能重写绑定. <CheckBox IsChecked=" ...
- 【问题】如何在Linux与Windows间共享文件
实验环境 Linux LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS L ...
- MySQL/MariaDB数据库的索引工作原理和优化
MySQL/MariaDB数据库的索引工作原理和优化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际工作中索引这个技术是影响服务器性能一个非常重要的指标,因此我们得花时间去了 ...
- vs调试的时候无法命中断点
visual studio 调试的时候如果没有命中断点,可能是启动的时候就出错了. 在文件Global.asax中, protected void Application_Error(object s ...
- 利用SQL直接生成模型实体类
在网上找来一个别人写好的,生成实体类的SQL代码 declare @TableName sysname = 'lkxxb' declare @Result varchar(max) = 'public ...
- P1525 关押罪犯[扩展域并查集]
题目来源:洛谷 题目描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1−N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整 ...
- 与你一起学习MS Project——理论篇:项目管理与Project
Hi,你好!我是大黄蜂,非常高兴借此机会与你一起学习微软Project的相关知识和技能.这一次的分享主要是结合本人在实际使用Project 2013过程中的一些方法技巧,其中有一些材料则来源于互联网, ...
- Xms Xmx PermSize MaxPermSize的含义
参数的含义 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M -vmargs 说明后面是VM的参数,所以后面的其实都是JV ...
- modbus-poll和modbus-slave工具的学习使用——modbus协议功能码1的解析
一.数据解析 上一文介绍了modbus工具的基本使用情况,但是还没用说明modbus中的协议的具体意义, 1.左边是slave,id=1,说明地址是1,f=01说明是功能码01,功能码是一个字节,说明 ...
- Codeforces 1251D Salary Changing
D. Salary Changing 大意: 有n个变量, 每个变量有一个取值区间, 要求给这n个变量赋值, 使得n个变量的和不超过S且中位数尽量大(n一定为奇数) 二分答案, 中位数大于等于mid就 ...