在使用之前我们要先学**H7的内存分布,之前可能接触过ST的程序员没有发现有内存分布的特性,这可能是在M7系列新加的特性。( F1 k/ B5 h0 E& L) |) |! ?. R _/ R * ^9 {. ~. P8 B8 [ TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM 用于指令,DTCM 用于数据,特点是跟内4 b7 p2 Z( t$ P# s2 l9 k# K 核速度一样,而片上 RAM 的速度基本都达不到这个速度。6 d. C. g% x' U+ g; E. u3 k ITCM 和 DTCM& z) B2 b) d O7 }- g 这两个是直连 CPU 的。8 x& g: t2 m8 v8 x7 M6 ]9 F5 p4 j # S, ~( v) l* W1 }$ t- t ]- a+ s TCM 区 TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM 用于运行指令,也就是程序代码,DTCM 用于数据存取,特点是跟内核速度一样,而片上 RAM 的速度基本都达不到这个速度,所以有降频处 理。 速度:400MHz。 DTCM 地址:0x2000 0000,大小 128KB。 ITCM 地址:0x0000 0000,大小 64KB。 % O- [! ~( r$ }. o9 d6 l. [ AXI SRAM 区 位于 D1 域,数据带宽是 64bit,挂在 AXI 总线上。除了 D3 域中的 BDMB 主控不能访问,其它都可 以访问此 RAM 区。. s8 O* m4 s& x7 F& H! A8 k 速度:200MHz。 地址:0x2400 0000,大小 512KB。 用途:用途不限,可以用于用户应用数据存储或者 LCD 显存。# E6 u5 K- D/ X$ B1 {0 b3 d SRAM1,SRAM2 和 SRAM3 区8 A* A5 g! b( a& m SRAM1:地址 0x3000 0000,大小 128KB,用途不限,可用于 D2 域中的 DMA 缓冲,也可以当" ]& ~# X' Y" x( I D1 域断电后用于运行程序代码。 SRAM2:地址 0x3002 0000,大小 128KB,用途不限,可用于 D2 域中的 DMA 缓冲,也可以用于 用户数据存取。- G* c# N# _9 c; K0 h SRAM3:地址 0x3004 0000,大小 32KB,用途不限,主要用于以太网和 USB 的缓冲。8 c2 }- j/ _6 Q" b! H SRAM4 区5 v+ N- J$ h6 m% u+ c 位于 D3 域,数据带宽是 32bit,挂在 AHB 总线上,大部分主控都能访这块 SRAM 区。 速度:200MHz。+ c+ v1 b: ]$ p4 F: l 地址:0x3800 0000,大小 64KB。 用途:用途不限,可以用于 D3 域中的 DMA 缓冲,也可以当 D1 和 D2 域进入 DStandby 待机方式 U) r7 I' i6 g3 r" U6 m* K 后,继续保存用户数据。& V" x S3 {, H2 { Backup SRAM 区' |, @& A6 J4 p' w+ g% \ 备份 RAM 区,位于 D3 域,数据带宽是 32bit,挂在 AHB 总线上,大部分主控都能访问这块 SRAM# U8 M1 s. e: ?0 j3 q 区。 速度:200MHz。) _+ T2 `. g/ B& E( d+ p! }6 K 地址:0x3880 0000,大小 4KB。- b# o) G3 l4 @6 w 用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat 引脚外接电池)。 ! Z/ m; P& Y; R+ f0 S 各块 RAM 的 DMA 问题9 X }) I; q/ l& W- c. h3 w- N 之前写了一个空闲中断+DMA的例子,在F4的板子稳定运行,可是在H7上跑不通,所以才注意到了内存分布对DMA的影响 DTCM 和 ITCM 不支持 DMA1,DMA2 和 BDMA,仅支持 MDMA。4 j9 N7 C3 f8 C. q AXI SRAM,SRAM1,SRAM2,SRAM3 不支持 BDMA,支持 MDMA,DMA1 和 DMA2。 SRAM4 支持所有 DMA,即 MDMA,DMA1,DMA2 和 BDMA。 鉴于 DTCM 是 400MHz 的,而其它的 RAM 都是 200MHz,推荐工程的主 RAM 空间采用 TCM,而+ ^6 q( J/ v+ P, y 其它需要大 RAM 或者 DMA 的场合,使用剩余 RAM 空间。+ o3 E/ _- q5 h* `- c. D( H 本教程配套的例子基本都是采用的这个方案,让 TCM 的性能得到最大发挥。 ( z) c! a' @: p/ C! T( A |
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
【Wio Lite AI视觉开发套件】+cube.ai与食物识别
【STM32H7S78-DK】汽车仪表系统
【STM32H7S78-DK】基于 rtthread 适配 lcd 驱动移植 lvgl
【STM32H7S78-DK评测】TouchGFX (QR Code)二维码生成器
【STM32H7S78-DK】rtthread 增加 psram 内存管理
【STM32H7S78-DK】开箱与rtthread工程初体验
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
【STM32H7S78-DK评测】-4 LTDC&DMA2D 基本测试
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题