硬汉嵌入式论坛

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

[SPI/QSPI] 有什么办法提高QSPI内存映射模式下(spi-flash)的程序的运行速度吗

[复制链接]

3

主题

2

回帖

11

积分

新手上路

积分
11
发表于 2024-12-2 15:14:04 | 显示全部楼层 |阅读模式
H7 QSPI内存映射模式程序的执行速度不如在片内flash上执行的速度快,除了提高时钟频率还有什么办法吗,使用MDMA可以吗
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-12-2 16:56:14 | 显示全部楼层
我也想问 执行同样的FFT算法,片内至少比片外的快一半,执行的次数多一半
回复

使用道具 举报

11

主题

705

回帖

738

积分

金牌会员

积分
738
发表于 2024-12-3 09:13:09 | 显示全部楼层
现在几线?8线是不是快一些?
回复

使用道具 举报

17

主题

233

回帖

284

积分

高级会员

积分
284
发表于 2024-12-3 09:15:32 | 显示全部楼层
本帖最后由 yunqi 于 2024-12-4 10:23 编辑
轩乞小儿 发表于 2024-12-2 16:56
我也想问 执行同样的FFT算法,片内至少比片外的快一半,执行的次数多一半
由于外部闪存延迟和较长的指令/数据路径
除非增加IO线路。
一旦IO线给足,这方面更多是取决于内部总线宽度和总线时钟。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-12-3 11:02:31 | 显示全部楼层
Cache加速开了没
回复

使用道具 举报

17

主题

233

回帖

284

积分

高级会员

积分
284
发表于 2024-12-3 13:38:06 | 显示全部楼层
本帖最后由 yunqi 于 2024-12-4 10:29 编辑

请教下,手册有提到XIP的芯片支持Catch吗?
=================
看起来catch大的,分数高
1.png
回复

使用道具 举报

5

主题

272

回帖

287

积分

高级会员

积分
287
发表于 2024-12-3 15:18:40 | 显示全部楼层
H7 XIP 性能影响最大的就是cache了,i-cache d-cache都打开,然后在mpu里配置flash那一段地址为wright back,具体可以看硬汉大佬的v7教程
如果还不够的话,可能得把关键代码加载到ram里运行,这部分涉及到分散加载文件对于stm32来说可能比较麻烦,具体可参考i.mx rt1052的相关工程代码
然后有个东西叫程序的局部性原理可以了解下,针对H7这种带cache的单片机有一定的效果

除了上面的以外,还有一些代码层面的通用优化技巧:
1. 优化等级开到最高
2. 优化循环,比如:
  • 多层for循环改成单层while
  • 手动展开循环次数少的循环体
  • 循环体内有多个if分支的,把最有可能满足的分支或者满足次数最多的那个分支写在最前面
  • 把重复的操作或者重复的计算尽量全部移到循环外,比如在循环外把一些重复使用的值提前算出来,而不是每次进循环都重新算一遍

3. 优化外设访问逻辑,单片机的外设寄存器访问速度比内核速度慢很多,如果某个时刻多次读写同一个寄存器,那总运行时间肯定会被拖慢,所以如果条件允许,尽量合并寄存器操作,减少重复读写次数,或者用dma



回复

使用道具 举报

692

主题

3576

回帖

5677

积分

论坛元老

积分
5677
发表于 2024-12-3 16:24:48 | 显示全部楼层
本帖最后由 hpdell 于 2024-12-3 16:27 编辑
DX3906 发表于 2024-12-3 15:18
H7 XIP 性能影响最大的就是cache了,i-cache d-cache都打开,然后在mpu里配置flash那一段地址为wright back ...

貌似 xip 内存映射使用不了 dma 吧 ?

4bit 的 qspi ,估计再怎么优化速度也不会提升太多吧 ? 毕竟这个玩意 受限的条件太多了

如果使用的是 guix ,那可以吧资源文件以 bin 的形式加载到 外部 sdram 里面运行,速度贼快

至于 emwin, lvgl 就只能 那个啥了 ...
回复

使用道具 举报

5

主题

272

回帖

287

积分

高级会员

积分
287
发表于 2024-12-3 18:00:00 | 显示全部楼层
hpdell 发表于 2024-12-3 16:24
貌似 xip 内存映射使用不了 dma 吧 ?

4bit 的 qspi ,估计再怎么优化速度也不会提升太多吧 ? 毕竟这 ...

xip只是flash自己那一段地址用不了,其他地址不影响的
st官方有个文档里有写,在开了cache之后xip代码和内部flash代码的coremark分数相差不多,只是说因为cache容量有限,随着程序规模越来越大,内核需要加载的指令和数据越来越多,xip代码性能会稍微下降些,然后通过优化代码,减少指令和数据的规模和复杂度,综合起来还是比较可观的了
性能优化其实是个综合性的工作,很多环节都能扣一点性能出来,积少成多
回复

使用道具 举报

5

主题

272

回帖

287

积分

高级会员

积分
287
发表于 2024-12-3 18:01:22 | 显示全部楼层
hpdell 发表于 2024-12-3 16:24
貌似 xip 内存映射使用不了 dma 吧 ?

4bit 的 qspi ,估计再怎么优化速度也不会提升太多吧 ? 毕竟这 ...

官方文档找到了:在STM32F7x0超值系列和STM32H750超值系列MCU上执行外部存储器代码https://www.st.com/resource/zh/a ... icroelectronics.pdf
回复

使用道具 举报

692

主题

3576

回帖

5677

积分

论坛元老

积分
5677
发表于 2024-12-4 08:53:14 | 显示全部楼层
本帖最后由 hpdell 于 2024-12-4 09:16 编辑
DX3906 发表于 2024-12-3 18:01
官方文档找到了:在STM32F7x0超值系列和STM32H750超值系列MCU上执行外部存储器代码https://www.st.com/re ...



貌似看 ...\STM32Cube_FW_H7_V1.11.2\Projects\STM32H743I-EVAL\Applications\ExtMem_CodeExecution\ExtMem_Boot\MDK-ARM   这个里面的 qspi 工作在内存映射模式 ,时钟频率工作配置在 100MHz , 这么牛鼻 ,
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-12-5 08:39:47 | 显示全部楼层
hpdell 发表于 2024-12-4 08:53
貌似看 ...\STM32Cube_FW_H7_V1.11.2\Projects\STM32H743I-EVAL\Applications\ExtMem_Cod ...

一直都是100M,区别的是内部Flash是64位总线,QSPI只有4位总线
回复

使用道具 举报

692

主题

3576

回帖

5677

积分

论坛元老

积分
5677
发表于 2024-12-5 08:45:46 | 显示全部楼层
eric2013 发表于 2024-12-5 08:39
一直都是100M,区别的是内部Flash是64位总线,QSPI只有4位总线

刚刚重新看了一下,貌似发现他使用的 mt25ql 系列的 qspi 没有使用 ddr 模式,

貌似 mt25ql 系列的 ddr 模式最高是 90MHz
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 04:14 , Processed in 0.049640 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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