硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6313|回复: 21
收起左侧

F4系列标准库库SDIO的FatFS例子修改一个bug,可提升4线SDIO的DMA稳定性

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
发表于 2019-7-18 09:03:54 | 显示全部楼层 |阅读模式
修改后的例子: V6-106a_FatFS文件系统例程(SD卡).rar (6.09 MB, 下载次数: 1609)

diskio.C文件中disk_write函数的单块和多块写入后,等待操作都错误的写成了等待读完成
这两个地方要修改为SD_WaitWriteOperation

QQ截图20190718085902.jpg

连续测试20次2MB文件的读写,全部正确无错误。
2019-07-18_090800.jpg



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
 楼主| 发表于 2019-7-18 09:17:50 | 显示全部楼层
这个问题是此贴坛友帮忙发现的。

SDIO驱动SD卡的写多块的问题
http://www.armbbs.cn/forum.php?m ... 4473&fromuid=58
(出处: 安富莱电子论坛)
回复

使用道具 举报

3

主题

1220

回帖

1229

积分

至尊会员

积分
1229
发表于 2019-7-19 09:31:56 | 显示全部楼层
细微之处,见真情啊!!!
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2020-5-11 15:46:20 | 显示全部楼层
学习坛友的细心 ! 我读了野火家的驱动 , 都没看出这个问题 . 以后要再细心一些.  顶硬汉论坛!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
 楼主| 发表于 2020-5-12 07:28:12 | 显示全部楼层
咸喜喜 发表于 2020-5-11 15:46
学习坛友的细心 ! 我读了野火家的驱动 , 都没看出这个问题 . 以后要再细心一些.  顶硬汉论坛!

我们这个是手抖写错的,你的是咋回事
回复

使用道具 举报

19

主题

150

回帖

207

积分

高级会员

积分
207
发表于 2020-6-24 17:16:56 | 显示全部楼层
标记之。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
 楼主| 发表于 2020-6-24 17:21:52 | 显示全部楼层

最好还是浏览器收藏,然后分类,效果是最好的,然后手机,电脑和pad同步标签,这样以后有问题查找比较方便。
回复

使用道具 举报

19

主题

150

回帖

207

积分

高级会员

积分
207
发表于 2020-6-28 12:20:04 | 显示全部楼层
eric2013 发表于 2020-6-24 17:21
最好还是浏览器收藏,然后分类,效果是最好的,然后手机,电脑和pad同步标签,这样以后有问题查找比较方 ...

好的。我试试这种方法。
回复

使用道具 举报

7

主题

24

回帖

45

积分

新手上路

积分
45
发表于 2020-6-28 19:03:05 | 显示全部楼层
支持硬汉。
然后建议以后的代码都放在git上,你那边有修改了,我们可以直接更新。这样子比较方便。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
 楼主| 发表于 2020-6-29 09:52:27 | 显示全部楼层
tanjing2017 发表于 2020-6-28 19:03
支持硬汉。
然后建议以后的代码都放在git上,你那边有修改了,我们可以直接更新。这样子比较方便。

例子太多,Github太卡了。
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2021-6-21 10:32:17 | 显示全部楼层
eric2013 发表于 2020-6-29 09:52
例子太多,Github太卡了。

可以考虑放到国内的gitee上,这样代码可以由大家一起维护,毕竟git在版本维护方面优势巨大
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2021-6-21 10:42:46 | 显示全部楼层
你们使用的标准库的xxx_sdio_sd.c里还有一个小BUG,SD_WriteBlock和SD_WriteMultiBlocks函数里错误的配置了SDIO_IT_RXOVERR,应该是配置SDIO_FLAG_TXUNDERR, 这个st在后续新版本发现但只发现修复了一半,至今最新的库中仍是错的。。。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
 楼主| 发表于 2021-6-21 11:21:33 | 显示全部楼层
浇了汁鸡 发表于 2021-6-21 10:32
可以考虑放到国内的gitee上,这样代码可以由大家一起维护,毕竟git在版本维护方面优势巨大

谢谢建议,不折腾这些git了。

不方便用户下载。不用git 用户太多了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
 楼主| 发表于 2021-6-21 11:28:50 | 显示全部楼层
浇了汁鸡 发表于 2021-6-21 10:42
你们使用的标准库的xxx_sdio_sd.c里还有一个小BUG,SD_WriteBlock和SD_WriteMultiBlocks函数里错误的配置了 ...

1、标准库版除了你指出的这个,还有别的bug,此贴
继续提升STM32F4的4线SDIO DMA方式的读写稳定性,发布新版案例(2020-06-30)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=98560

2、HAL库版的所有这些bug都修正了,此贴:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2022-8-12 16:40:48 | 显示全部楼层
浇了汁鸡 发表于 2021-6-21 10:42
你们使用的标准库的xxx_sdio_sd.c里还有一个小BUG,SD_WriteBlock和SD_WriteMultiBlocks函数里错误的配置了 ...

为什么说“应该是配置SDIO_FLAG_TXUNDERR”?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
 楼主| 发表于 2022-8-12 17:02:24 | 显示全部楼层
unsv29 发表于 2022-8-12 16:40
为什么说“应该是配置SDIO_FLAG_TXUNDERR”?

Wirte是发送,当然要配置为TXUNDERR了,配置为RXOVERR是有误的。
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2022-8-15 21:57:48 | 显示全部楼层
eric2013 发表于 2022-8-12 17:02
Wirte是发送,当然要配置为TXUNDERR了,配置为RXOVERR是有误的。

谢谢!一般人真注意不到这个。
回复

使用道具 举报

0

主题

26

回帖

26

积分

新手上路

积分
26
发表于 2023-1-6 23:29:51 | 显示全部楼层
HAL库没有这个SD_WaitWriteOperation,是用的读取标志位加tick超时判断,DMA + SDIO 四线模式每秒钟一次性写8K数据可以很稳定吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
 楼主| 发表于 2023-1-7 00:39:21 | 显示全部楼层
miaoguoqiang 发表于 2023-1-6 23:29
HAL库没有这个SD_WaitWriteOperation,是用的读取标志位加tick超时判断,DMA + SDIO 四线模式每秒钟一次性写8 ...

可以,但要注意实时写入问题,注意一点就是随着写入文件越来越大,写一次的时间会不断加上。最好文件大小超过一定值后,再创建个新文件继续写。
回复

使用道具 举报

0

主题

26

回帖

26

积分

新手上路

积分
26
发表于 2023-1-7 12:51:17 | 显示全部楼层
eric2013 发表于 2023-1-7 00:39
可以,但要注意实时写入问题,注意一点就是随着写入文件越来越大,写一次的时间会不断加上。最好文件大小 ...

F446 SDIO+DMA不定时会出现`Hardware I / O driver error`.然后必须重新挂载才能继续写入.感觉中断会影响到数据的写入
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
 楼主| 发表于 2023-1-9 00:08:51 | 显示全部楼层
miaoguoqiang 发表于 2023-1-7 12:51
F446 SDIO+DMA不定时会出现`Hardware I / O driver error`.然后必须重新挂载才能继续写入.感觉中断会影响 ...

如果怀疑中断影响,可以关闭中断其它中断,排查下试试。
回复

使用道具 举报

0

主题

19

回帖

19

积分

新手上路

积分
19
发表于 2023-2-8 11:28:11 | 显示全部楼层
谢谢,学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-20 05:03 , Processed in 0.248699 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表