STMCU小助手
发布时间:2021-12-27 18:00
|
在使用之前我们要先学**H7的内存分布,之前可能接触过ST的程序员没有发现有内存分布的特性,这可能是在M7系列新加的特性。 TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM 用于指令,DTCM 用于数据,特点是跟内 核速度一样,而片上 RAM 的速度基本都达不到这个速度。 ITCM 和 DTCM 这两个是直连 CPU 的。 TCM 区+ x% n3 J2 w; |* z' H" S TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM 用于运行指令,也就是程序代码,DTCM9 f# I" V& k( p% H! H9 h 用于数据存取,特点是跟内核速度一样,而片上 RAM 的速度基本都达不到这个速度,所以有降频处4 S" N1 g2 i ] \ 理。 速度:400MHz。& [6 t7 W- u1 k; O DTCM 地址:0x2000 0000,大小 128KB。" W% K7 v9 }8 e4 h. j5 Z( B, V7 D ITCM 地址:0x0000 0000,大小 64KB。3 Y6 x r- I! z1 d# f8 {5 ~ AXI SRAM 区' b. h5 p. c& \5 `& q) }% m 位于 D1 域,数据带宽是 64bit,挂在 AXI 总线上。除了 D3 域中的 BDMB 主控不能访问,其它都可3 z3 M* l/ D4 n: _; H- B$ ~5 L 以访问此 RAM 区。+ Y, T/ z" U! i" e: T9 ?" d$ c 速度:200MHz。 地址:0x2400 0000,大小 512KB。- J! P3 p: S5 W/ {/ V: E 用途:用途不限,可以用于用户应用数据存储或者 LCD 显存。/ g8 @6 H, X8 A" R SRAM1,SRAM2 和 SRAM3 区4 Z! Y" p) Y) P- U) N' G- Q SRAM1:地址 0x3000 0000,大小 128KB,用途不限,可用于 D2 域中的 DMA 缓冲,也可以当2 M" y0 S% W5 y, v8 [+ l: } D1 域断电后用于运行程序代码。 SRAM2:地址 0x3002 0000,大小 128KB,用途不限,可用于 D2 域中的 DMA 缓冲,也可以用于' P. i! `. h. q3 g5 u+ V; N) ~ 用户数据存取。 SRAM3:地址 0x3004 0000,大小 32KB,用途不限,主要用于以太网和 USB 的缓冲。 * O" \, w! D" t SRAM4 区5 p: K O( J2 j7 E 位于 D3 域,数据带宽是 32bit,挂在 AHB 总线上,大部分主控都能访这块 SRAM 区。 速度:200MHz。 地址:0x3800 0000,大小 64KB。 用途:用途不限,可以用于 D3 域中的 DMA 缓冲,也可以当 D1 和 D2 域进入 DStandby 待机方式 后,继续保存用户数据。) E% Q9 s0 [& J9 X3 Z2 P0 s Backup SRAM 区; H8 h$ q/ D2 o 备份 RAM 区,位于 D3 域,数据带宽是 32bit,挂在 AHB 总线上,大部分主控都能访问这块 SRAM( b: H9 c% f4 l: n j& { 区。 速度:200MHz。! m* k+ E" m- M4 O" @2 [4 J! t5 k 地址:0x3880 0000,大小 4KB。& t% S& z: R8 O# o7 z# ] 用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat 引脚外接电池)。+ g% c- R2 l/ m# b! W3 ]' P4 M 各块 RAM 的 DMA 问题" [4 p; J: A+ |, H6 q: ?8 } 之前写了一个空闲中断+DMA的例子,在F4的板子稳定运行,可是在H7上跑不通,所以才注意到了内存分布对DMA的影响# m: s \8 R0 j% U+ U) w8 w( X : A( \; W% M$ _5 w DTCM 和 ITCM 不支持 DMA1,DMA2 和 BDMA,仅支持 MDMA。 AXI SRAM,SRAM1,SRAM2,SRAM3 不支持 BDMA,支持 MDMA,DMA1 和 DMA2。5 K6 I; ?' R, g: d SRAM4 支持所有 DMA,即 MDMA,DMA1,DMA2 和 BDMA。* q9 x& i" B4 p! ]& O 4 U# {1 C$ ]& \* J* [ 鉴于 DTCM 是 400MHz 的,而其它的 RAM 都是 200MHz,推荐工程的主 RAM 空间采用 TCM,而 其它需要大 RAM 或者 DMA 的场合,使用剩余 RAM 空间。 本教程配套的例子基本都是采用的这个方案,让 TCM 的性能得到最大发挥。 7 ?. s4 h( P5 ?" ? * v$ i5 N$ S; d8 k7 u, x$ n |
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
【STM32H735G-DK测评】ADC3+TIMER1+DMA 采样模拟信号
【STM32H735DK测评】Ethernet+lwip DHCP获取IP地址
STM32H743基于CubeMx5.0配置手册
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
【福利三:逢7发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
微信公众号
手机版