完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
检查下是不是写卡的线程优先级太低了,GD原厂的sdio驱动只能在单上下文的环境里work properly。
一些对时序有要求的操作没有加临界保护,如果接口放在低优先级线程的上下文操作,一但线程被调度器打断,SDIO IP容易卡死 |
|
|
|
我尝试把sdio得硬件初始化等级提高了,也是不行。在sdio得发送驱动函数里, 这个状态值在cmd51发送完之后,sta得值为0x20a400,和#define HW_SDIO_IT_RXACT (0x01U << 13)执行与后为真,导致超时,此时判断始终返回错误。注释掉cm->err = -RT_ERROR后,挂载成功,可以读写sd卡文件。目前尝试二十几次,均正常。现在始终不明白是读寄存器错误还是其他原因。 同样的程序在st下运行,sta返回值是0x400. |
|
|
|
而且从返回的状态值来看,也没看出啥问题来。现在有些懵了。。。 我也尝试把其他线程全部注释,在main函数中只运行了sdio得硬件初始化和文件挂载函数,也是不行。 麻烦抽空帮忙看下,是不是我处理的还是不对。 |
|
|
|
在发送函数这只等待发送完成就可以,可以试试把接收等待去掉。
while (count && (hw_sdio->sta & HW_SDIO_IT_TXACT)) { count--; } |
|
|
|
谢谢了,按你说的这样修改,测试了有一段时间了,目前未出现问题,可以正常使用。
|
|
|
|
经过大家的帮忙,最终定位到drv_sdio.c的发送函数,去掉了接收等待,目前测试正常,在此分享出来,同时也感谢大家的帮忙!
while (count && (hw_sdio->sta & HW_SDIO_IT_TXACT)) { count--; } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2285 浏览 0 评论
2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
18539 浏览 11 评论
2465 浏览 0 评论
IaaS+on+DPU(IoD)+下一代高性能算力底座技术白皮书
3872 浏览 0 评论
飞凌嵌入式-ELFBOARD 常用的USB接口及其不同版本介绍第1期
1292 浏览 0 评论
69495 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-30 17:39 , Processed in 0.553112 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号