Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SD卡_TF卡
SDIO总线
SDMMC驱动
sd卡热插拔时初始化失败的bug
发布于 2022-05-13 01:14:20 浏览:747
订阅该版
在测试SD卡反复热插拔时出现SD卡无法顺利初始化的情况,初始化程序挂起并进入idle,输出日志如下: ``` \ | / - RT - Thread Operating System / | \ 4.1.0 build May 13 2022 00:40:03 2006 - 2022 Copyright by RT-Thread team I/I2C main: I2C bus [i2c1] registered ADC1_3 init success! msh />I/SDIO mmcsd_detect: SD card capacity 3872256 KB. I/SDIO mmcsd_detect: switching card to high speed failed! found part[0], begin: 4194304, size: 3.705GB dfs mount sd0 success SD card eject! SD card insert! SD card eject! I/SDIO mmcsd_detect: SD card capacity 3872256 KB. SD card insert! SD card eject! ``` 通过在RT1061上debug不断查找问题,发现在sd.c文件中mmcsd_send_app_op_cond函数卡死,通过将mmcsd_send_app_cmd命令尝试次数改为1000可以解决热插拔卡时可能由于电源不稳定造成的初始化失败,修改后的代码为: ```c rt_err_t mmcsd_send_app_op_cond(struct rt_mmcsd_host *host, rt_uint32_t ocr, rt_uint32_t *rocr) { struct rt_mmcsd_cmd cmd; rt_uint32_t i; rt_err_t err = RT_EOK; rt_memset(&cmd, 0, sizeof(struct rt_mmcsd_cmd)); cmd.cmd_code = SD_APP_OP_COND; if (controller_is_spi(host)) cmd.arg = ocr & (1 << 30); /* SPI only defines one bit */ else cmd.arg = ocr; cmd.flags = RESP_SPI_R1 | RESP_R3 | CMD_BCR; for (i = 1000; i; i--) //改为1000,防止重新插卡时失败 { err = mmcsd_send_app_cmd(host, RT_NULL, &cmd, 3); if (err) break; /* if we're just probing, do a single pass */ if (ocr == 0) break; /* otherwise wait until reset completes */ if (controller_is_spi(host)) { if (!(cmd.resp[0] & R1_SPI_IDLE)) break; } else { if (cmd.resp[0] & CARD_BUSY) break; } err = -RT_ETIMEOUT; mmcsd_delay_ms(10); //delay 10ms } if (rocr && !controller_is_spi(host)) *rocr = cmd.resp[0]; return err; } ``` 里面的i由初始值100改为1000,修改后的输出: ``` \ | / - RT - Thread Operating System / | \ 4.1.0 build May 13 2022 00:40:03 2006 - 2022 Copyright by RT-Thread team I/I2C main: I2C bus [i2c1] registered ADC1_3 init success! msh />I/SDIO mmcsd_detect: SD card capacity 3872256 KB. I/SDIO mmcsd_detect: switching card to high speed failed! found part[0], begin: 4194304, size: 3.705GB dfs mount sd0 success SD card eject! SD card insert! I/SDIO mmcsd_detect: SD card capacity 3872256 KB. I/SDIO mmcsd_detect: switching card to high speed failed! found part[0], begin: 4194304, size: 3.705GB SD card eject! SD card insert! I/SDIO mmcsd_detect: SD card capacity 3872256 KB. I/SDIO mmcsd_detect: switching card to high speed failed! found part[0], begin: 4194304, size: 3.705GB SD card eject! ``` 经反复测试,SD卡初始化不再出现失败情况
查看更多
2
个回答
默认排序
按发布时间排序
andychen
2022-05-13
这家伙很懒,什么也没写!
欢迎PR,PR支持群:https://club.rt-thread.org/ask/article/e19f1f0f77fbd119.html
FLBF_5496
2022-05-14
这家伙很懒,什么也没写!
Why not wait a debounce-time in your mmc host porting driver?
撰写答案
登录
注册新账号
关注者
1
被浏览
747
关于作者
Zad张
这家伙很懒,什么也没写!
提问
5
回答
2
被采纳
0
关注TA
发私信
相关问题
1
代码分享,stm32f407的sdio驱动。
2
求个在STM32F103 RTT上使用SDIO接口的例子
3
是否能增加一个 SDIO AP61xx 的驱动呢
4
sdio和fsmc驱动lcd冲突
5
发现了sdio_unregister_driver里的一个bug
6
用sdio框架驱动过w8801(wifi模块)的坛友请进(已解决)
7
关于rt-thread系统sdio驱动框架使用
8
问题请教,关于在rt-thread中调试RT1052中调试sdio wifi模块
9
【文件系统学习】+海中陆地+RT-Thread文件系统学习挂载SDIO...
10
sdio驱动是怎么使用的?也没有文档和例程啊
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
16
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
6
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部