完善资料让更多小伙伴认识你,还能领取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--; } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
753 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2714 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1368 浏览 0 评论
1955 浏览 0 评论
1523 浏览 0 评论
75000 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 14:08 , Processed in 1.054640 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号