硬汉嵌入式论坛

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

[SPI/QSPI] 双区Flash速度小于单一Flash两倍

[复制链接]

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2021-11-17 21:06:26 | 显示全部楼层 |阅读模式
本帖最后由 treasafetchbtz9 于 2021-11-17 21:08 编辑

我在两个平台上进行了双区Flash实验,分别是NUCLEO-H743和NUCLEO-L496,为了避免因为走线,信号问题导致性能下降,我做了板子,板子上只有2个同型号(W25Q64)的Flash.

程序基本借鉴官方代码,只是开启了双区Flash并打开MemoryMap模式(如果不打开读取性能更差).
  1. QSPIHandle.Init.DualFlash          = QSPI_DUALFLASH_ENABLE;
复制代码
测试代码:
  1.   time_start = HAL_GetTick();
  2.   
  3.   // 1GB 数据传输
  4.   for(uint32_t i =0;i < (1024 * 512) ;i++){
  5.      memcpy(&rData,(void *)0x90000000,0x800);
  6.   }
  7.   
  8.   time_end = HAL_GetTick();
  9.   time_diff = time_end - time_start;
复制代码


当然,测试时候试过以0x400,0x800,0x1000三种不同大小,但是其实速度差距不大.

NUCLEO-H743下测得: (主频208MHz,QSPI时钟104MHz)

双区Flash复制:96MB/s
单区Flash复制:54MB/s


NUCLEO-L496下测得: (主频80MHz,QSPI时钟80MHz)

双区Flash复制:68MB/s
单区Flash复制:37MB/s


明显不管是54*2>96,还是37*2>68,双区同时使用,都不能发挥翻倍的速度,就算这个是理论速度,但是这个差距也存在不少.
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2021-11-17 21:22:15 | 显示全部楼层
最关键的信息楼主没说,开Cache没。
代码不规范,亲人两行泪!
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2021-11-17 22:20:52 来自手机 | 显示全部楼层
missfox 发表于 2021-11-17 21:22
最关键的信息楼主没说,开Cache没。

54已经是104MHz下的理论速度了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2021-11-18 10:45:42 | 显示全部楼层
方便的话,memcpy容易受到编译器优化登记和是否使用C标准库影响,楼主方便的话,可以做个全面的测试对比。效果更专业,更好些
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2021-11-18 10:47:15 | 显示全部楼层
另外就是这个复制目标区,使用DTCM和AXI SRAM,通用SRAM都看下,这是有点区别的。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 00:49 , Processed in 0.201627 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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