硬汉嵌入式论坛

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

[SPI/QSPI] 基于STM32H7驱动QSPI Flash的FatFS文件系统 + QSPI Flash虚拟U盘实现,读速度24.6MB/S(2019-03-28)

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2019-3-8 02:11:11 | 显示全部楼层 |阅读模式
大家一般都有这方面的例子需求,所以就专门整了一个:
V7-032_QSP Flash的FatFS文件系统 QSPI Flash虚拟U盘(带文件系统,读每秒24.6MB).rar (5.15MB)


image.png


读速度基本达到了裸机时的一半,非常不错:
STM32H7驱动QSPI Flash的4线DMA模式,读速度48MB/S左右
http://www.armbbs.cn/forum.ph ... id=91616&fromuid=58






回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2019-3-8 02:14:21 | 显示全部楼层
电脑端也格式化了一下,没有问题:

QQ截图20190308021238.jpg
回复

使用道具 举报

2

主题

569

回帖

575

积分

金牌会员

积分
575
发表于 2019-3-8 07:33:34 | 显示全部楼层
SPI Flash对于频繁读写的应用场景,fatfs磨损均衡始终是个问题…
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2019-3-8 08:56:23 来自手机 | 显示全部楼层
本帖最后由 byccc 于 2019-3-8 10:42 编辑

秀儿,你好,我的背景图片可以存里面了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2019-3-8 09:29:43 | 显示全部楼层
leiyitan 发表于 2019-3-8 07:33
SPI Flash对于频繁读写的应用场景,fatfs磨损均衡始终是个问题…

没事,这种NOR型的Flash,擦写均衡和掉电保护,后面还有RL-FlashFS和LittleFS这类嵌入式文件系统坐镇,缺点是不支持Windows系统端模拟U盘,使用FatFS的方案正好弥补此问题,使用这里的QSPI,适合用于高速读取的场合、像存储矢量字库,背景图片之类的,而且更新时用U盘非常方便。

而NAND的型的坏块管理,ECC校验等,继续上RL-FlashFS,而且支持Windows系统端模拟U盘。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2019-3-8 09:30:06 | 显示全部楼层
byccc 发表于 2019-3-8 08:56
秀儿,你好,我的背景图片可以村里面了

还有矢量字库
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2019-3-8 10:25:22 | 显示全部楼层
leiyitan 发表于 2019-3-8 07:33
SPI Flash对于频繁读写的应用场景,fatfs磨损均衡始终是个问题…

可以利用fat32的特点,即扇区总是循环增长,全部轮询一遍才会回到起点,以及借鉴Windows删除文件并不真实删除只是改名的办法,我估计这么做以后,基本上不太会出现你说的问题了
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2019-3-8 10:32:33 | 显示全部楼层
myxiaonia 发表于 2019-3-8 10:25
可以利用fat32的特点,即扇区总是循环增长,全部轮询一遍才会回到起点,以及借鉴Windows删除文件并不真实 ...

对,这样可以使用的时候先全部写入,写满了再删除进行下一轮。

不过关键是那个fat表区,修改比较频繁,对于频繁更新的,可以将数据先往BKSRAM里面存,存入一批了更新到QSPI Flash,一定程度还起到掉电保护作用。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2019-3-8 11:33:51 | 显示全部楼层
byccc 发表于 2019-3-8 10:32
对,这样可以使用的时候先全部写入,写满了再删除进行下一轮。

不过关键是那个fat表区,修改比较频繁 ...

是的,fsinfo修改很频繁,就是记录空闲块链表的数据结构,这个是不是可以用flash模拟eeprom的办法来保存呢
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2019-3-8 12:08:49 | 显示全部楼层
myxiaonia 发表于 2019-3-8 11:33
是的,fsinfo修改很频繁,就是记录空闲块链表的数据结构,这个是不是可以用flash模拟eeprom的办法来保存 ...

个人认为这个方式不安全,特别是内部flash模拟EEPROM。RAM做缓存好点。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

610

主题

3052

回帖

4902

积分

至尊会员

积分
4902
发表于 2019-3-8 17:28:46 | 显示全部楼层
eric2013 发表于 2019-3-8 02:14
电脑端也格式化了一下,没有问题:

这么牛逼呀,速度这么快
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2019-3-9 01:48:52 | 显示全部楼层
hpdell 发表于 2019-3-8 17:28
这么牛逼呀,速度这么快

比一线的SPI Flash爽很多。
回复

使用道具 举报

610

主题

3052

回帖

4902

积分

至尊会员

积分
4902
发表于 2019-3-9 12:52:13 | 显示全部楼层
eric2013 发表于 2019-3-9 01:48
比一线的SPI Flash爽很多。

真有这个速度的话,那确实是非常爽的了

比一些慢速的 sd 卡还快不少
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2019-3-9 12:53:09 | 显示全部楼层
hpdell 发表于 2019-3-9 12:52
真有这个速度的话,那确实是非常爽的了

比一些慢速的 sd 卡还快不少

是的,SD卡,我们一般的速度也就3-5MB/S,这个速度远高于它
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2019-3-28 11:03:49 | 显示全部楼层
例程已经发布。
回复

使用道具 举报

0

主题

9

回帖

9

积分

新手上路

积分
9
发表于 2019-5-20 17:52:37 | 显示全部楼层
先收藏,后面学习FATFS使用。
回复

使用道具 举报

5

主题

201

回帖

216

积分

高级会员

积分
216
发表于 2019-5-28 10:34:09 | 显示全部楼层
这个速度是相当快啊
回复

使用道具 举报

610

主题

3052

回帖

4902

积分

至尊会员

积分
4902
发表于 2019-5-28 12:08:29 | 显示全部楼层
honami520 发表于 2019-5-28 10:34
这个速度是相当快啊

以后还是尽量使用 qspi ,像 nand falsh , sd 卡类的,尽量少用,
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2019-5-28 13:58:02 | 显示全部楼层
hpdell 发表于 2019-5-28 12:08
以后还是尽量使用 qspi ,像 nand falsh , sd 卡类的,尽量少用,

加载个图片,字库之类的比较嗨
回复

使用道具 举报

610

主题

3052

回帖

4902

积分

至尊会员

积分
4902
发表于 2019-5-28 14:01:22 | 显示全部楼层
eric2013 发表于 2019-5-28 13:58
加载个图片,字库之类的比较嗨

是的
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2019-7-1 11:22:35 | 显示全部楼层
这个的写速度有没有办法再提升下,感觉已经是极限了
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2019-7-2 00:01:50 | 显示全部楼层
byccc 发表于 2019-7-1 11:22
这个的写速度有没有办法再提升下,感觉已经是极限了

QSPI Flash的写速度的确有些慢。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2019-9-30 14:48:16 | 显示全部楼层
如果在OS里面使用,请加大任务栈


QQ图片20190930144835.png
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2020-6-3 17:02:27 | 显示全部楼层
这个程序好大啊,编译后200多K,如果有更精简的就更好了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
 楼主| 发表于 2020-6-4 08:57:27 | 显示全部楼层
jerly 发表于 2020-6-3 17:02
这个程序好大啊,编译后200多K,如果有更精简的就更好了

这个是到了文件系统和USB协议栈了。
回复

使用道具 举报

4

主题

18

回帖

30

积分

新手上路

积分
30
发表于 2020-9-9 17:32:11 | 显示全部楼层
mark一下,这个BUG也坑了我两天,感谢硬汉哥出手相救
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 06:51 , Processed in 0.425621 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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