你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32H5 评测】Part4 STM32H5E5 存储测试

[复制链接]
神经蛙2233 发布时间:2026-11-6 17:12

H5芯片的M33内核主频高达250 MHz,但是内核高速运行时,需要从FLASH中读取代码和数据,以及向SRAM高速读取和写入数据,只有内核周边的外设、存储速率相匹配时,才能够发挥出整体芯片的最大效能。因此,测试存储性能非常重要。

1. 评测目标

本评测包含两部分内容:分别测量 STM32H5E5ZJ 两种内存搬运路径的 DMA 吞吐量,并与 CPU memcpy 基准进行对比:

  1. Flash → SRAM1:DMA 从程序 Flash 读数据,搬到 SRAM1
  2. SRAM1→ SRAM2:DMA 从一个 SRAM bank 读,搬到另一个 SRAM bank

测试过程中,通过调整 GPDMA 通道号、数据端口、Burst长度等参数,探索 GPDMA 吞吐率天花板,并对比不同内存路径的差异。

测试平台:板卡: NUCLEO-H5E5ZJ,MCU: STM32H5E5ZJT6 (Cortex-M33),SYSCLK: 250 MHz,ICache 开启,Flash等待周期5。

2. 测试内容

路径 DMA CPU memcpy Buffer
Flash Bank1 → SRAM1 ✅ 4/16KB 200 次, 32/65KB 50 次 ✅ 4/16KB 200 次, 32/65KB 50 次 4KB / 16KB / 32KB / 65532B
SRAM1 → SRAM2 ✅ 4/16KB 200 次, 32/65KB 50 次 ✅ 4/16KB 200 次, 32/65KB 50 次 4KB / 16KB / 32KB / 65532B

65532 B 是 GPDMA 单次 Block 传输的理论上限(BNDT 16-bit 对齐 data width)。小档位 200 次迭代、大档位 50 次迭代以平衡测量稳定性与耗时。

3. 测试原理

3.1 计时方法

DWT Cycle Counter:Cortex-M33 内核内置的 DWT->CYCCNT 是 32-bit cycle counter,每个 CPU 时钟周期自增 1。精度 = 4 ns @ 250 MHz,远高于 SysTick (1 ms) 适合短耗时测量。具体代码见 §5.1。

CPU 基准:同路径直接调 memcpy(),DWT 计时覆盖整个函数调用。

吞吐量计算公式:MB/s = (bytes × 250 MHz) / cycles / (1024 × 1024)

3.2 DMA 传输

使用 GPDMA1_Channel8,通过 HAL_DMA_Start_IT() 发起一次 Block 传输,在 Transfer Complete 中断回调里置位标志,主循环阻塞等待该标志。DWT 计时覆盖从 Start_IT 到 IRQ 回调的完整链路(含 HAL overhead + 硬件传输 + 中断响应)。

STM32H5 的 GPDMA1 通道不是均匀设计的。Channel 07 硬件上只有 8 bytes (2 words) FIFO,适合 APB/AHB 外设 ↔ SRAM(如 UART、SPI);Channel 811 有 32 bytes (8 words) FIFO,适合高速 AHB 外设、外部 memory ↔ SRAM,其中 Channel 10~11 额外支持 2D 寻址。做 M2M 或 Flash→RAM 搬运直接选 Channel 8+,本测试全程使用 Channel 8。

3.3 内存布局

STM32H5E5ZJ 的内部存储物理上分为多个独立 bank,各自有独立的 AHB 从端口,这直接影响 DMA 吞吐率:

0x08000000  ┌───────────────┐
   ...      │ Flash Bank 1  │  2 MB(程序代码)
0x08200000  ├───────────────┤
   ...      │ Flash Bank 2  │  2 MB
            └───────────────┘
0x20000000  ┌───────────────┐
            │    SRAM 1     │  256 KB
0x20040000  ├───────────────┤
            │    SRAM 2     │  128 KB
0x20060000  ├───────────────┤
            │    SRAM 3     │  384 KB
0x200C0000  ├───────────────┤
            │    SRAM 4     │  384 KB
0x20120000  ├───────────────┤
            │    SRAM 5     │  384 KB
0x20180000  └───────────────┘
               合计 1536 KB(1.5 MB)

关键:SRAM1 和 SRAM2 是两个物理独立的 bank,各自有独立的 AHB 端口。DMA 从 SRAM1 读同时往 SRAM2 写,Source 和 Destination 可以完全并行,不会争抢同一个物理端口。

放一张架构图,比较直观,这张图非常重要
alt text

赞 收藏 评论0 发布时间:2026-11-6 17:12

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版