
25.1 初学者重要提示 TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于指令,DTCM用于数据,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度。! I0 O* @1 X( V 特别注意本章25.5小节里面各块RAM的DMA操作问题。 ^$ h5 y2 h [( t; z ) b/ ^" O' u" i 25.2 各块RAM在总线中的位置 这个知识点在前面章节做过介绍,本章再次梳理下这个知识点。 9 C: r5 T3 A: U& m ![]() 这个图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。8 p! _% V$ k% S/ a; }& L5 B 1、 ITCM和DTCM 这两个是直连CPU的。' v' A4 d- O% K1 U 2、 D1 Domain2 j, \- T! S, P9 ]' X % D6 Y; e% V ]6 w/ T+ O) i D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。; }& V0 x0 V8 H: w 2 ?, r# j* T# b9 x. q; e& ?- e$ ]9 y% r 6个从接口端ASIB1到ASIB6; H0 t, d+ t+ X. X; n4 B9 T 外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。 5 \& E7 J2 q! i9 R, ~( ~" V/ g 7个主接口端AMIB1到AMIB7 外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。0 g- }! `1 W9 X. @4 g. s$ k 6 W4 [" [+ r( q2 m& P 3、 D2 Domain ; X9 }# }$ U% O3 J* w8 J D2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。 10个从接口0 c, b. A( Z& _2 w K6 F 外接的主控是D1-to-D2 AHB 总线,AHBP总线,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。 9个主接口 外接的从设备是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB1,APB2,D2-to-D1 AHB总线和D2-to-D3 AHB总线。 4、 D3 Domain % d! y: D' I( w& j% p4 g4 A D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。* C9 N* l- ~7 g ! m U9 Z9 J0 R* A& M4 W$ L6 C 3个从接口6 i; z! K6 V$ H3 r% x- V6 I 外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。$ B4 N" w3 Y) e" y ] 2个主接口 外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线9 ^- {1 n% W$ u& f 25.3 各块RAM特性% X3 ~( m$ i# {& V3 N 各块RAM的特性对比如下,特别注意他们支持的最大速度和容量大小。 TCM区' n$ \9 u# c: ?* C/ M" v( ?$ W TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。9 s. E; d# \$ V3 y: i$ C9 P 速度:400MHz。 DTCM地址:0x2000 0000,大小128KB。 , P4 c" L% |3 R4 B# T& ` ITCM地址:0x0000 0000,大小64KB。 AXI SRAM区 位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。 $ M& }( I8 h, g' k 速度:200MHz。 地址:0x2400 0000,大小512KB。7 \. [9 \- v1 d3 h# f 用途:用途不限,可以用于用户应用数据存储或者LCD显存。# m% y5 H9 C- T, ?3 {3 O. z 0 ^9 \2 v' V/ }3 Q L SRAM1,SRAM2和SRAM3区 位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。: n& z) t P; z5 o. W. `$ V! f/ E 速度:200MHz。7 H) v+ }# A: X1 y. t 9 `' I/ ?9 _: p4 K5 ]/ d. L SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。 SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。2 p. C6 h, \2 }$ g! E7 K$ ^ SRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。 SRAM4区 位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。! v6 J$ D8 \- ~% M- p, f 速度:200MHz。 % a3 W" a. L$ C' e 地址:0x3800 0000,大小64KB。 " m2 _ u- _1 E! f, C4 O& W 用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。! W& F- [! a8 X% e+ ?1 U1 ^ Backup SRAM区" k* o K. Z. o3 _ I7 W8 c6 I 备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。 速度:200MHz。& k$ x4 V1 l$ N$ c 地址:0x3880 0000,大小4KB。 用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。+ C C+ w6 h* W * Q) v3 k' L; B7 \) f: ?- Y 25.4 各块RAM的时钟问题/ F) b$ y3 ~; E1 [- ` o5 T! T 正常情况下,系统上电后,CPU要访问的外设是需要使能对应的时钟位,但是下面这几个,CPU上电即可访问,而且芯片没有对应的寄存器使能位。& J" v& {, `/ P/ W3 { ![]() 也就是说AXI SRAM,SRAM4,ITCM和DTCM可以在上电后直接使用。而SRAM1,SRAM2,SRAM3是需要使能的,但是实际测试发现,不使能也可以正常使用。不过,建议用到时候开启下时钟,防止意想不到的问题发生。 + _7 l+ u8 v) d5 P) F G( e7 x5 t 对于V7板子配套的例子,在bsp.c文件的函数SystemClock_Config末尾做了个条件编译,大家可以根据需要来开启这三个时钟:: |$ q( {" {2 G/ g. L& S1 l4 d0 [ 8 k( r$ D' {3 H
25.5 各块RAM的DMA问题 了解这个问题之前,要先看下面的Bus Master总线主控端和Bus Slave设备端的控制互联:8 f; x) s* Y& X& f0 p6 W0 ? ![]() 加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。2 ]1 \4 M# d7 O5 A5 c 访问通路(每个小方块里面的字符)- k+ G# ]$ a) A! j! \ 任何有数字的表示有访问通路。/ f0 n6 R9 E2 k; D' P6 l5 K" V: a * ~: u+ N4 j) Q 短横杠“-”表示不可访问。 有灰色阴影的表示有实用价值的访问通路。2 s' y+ r, R f( b! S/ a " k& A' C7 c4 i: I$ L& o5 A' X 表格中具体数值所代表的含义 D=direct,* p- U6 j: t4 p7 b9 B1 Z0 v+ D 1=via AXI bus matrix,, N6 O1 k/ W" T! _! K; l 2=via AHB bus matrix in D2," l- D+ x! w5 C, ]+ `# ^/ v 3=via AHB bus matrix in D3, 4=via AHB/APB bridge in D1, 4 T0 R% v! @- r' M 5=via AHB/APB bridge in D2, 6 R+ x/ T/ R9 e s" L 6=via AHB/APB bridge in D3, ! n9 ?1 T% d( l; e& g' F# U 7=via AHBS bus of Cortex-M7,! j: k8 O y& M9 Q# J# m+ Y, h 多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。 总线访问类型& Q8 C7 u2 M8 [5 B 普通字体表示32位总线。5 H* i5 J/ d, c9 M) E % @: t7 H3 e) O: D+ u! N% B( F4 M 斜体表示32位总线主机端/ 64位总线从机端。 0 g; e/ ] C4 O1 D$ Z' S 粗体表示64位总线。+ u, ~( Y# w5 U) T) s T9 b) X" s5 } 通过这个总线互联图,要了解到下面三个重要知识点:: ~2 F; S$ Y- U/ C3 R& f8 X ! @ x+ R4 F) Y6 X* Z8 ^. M DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。8 A9 \# r8 e, J, i AXI SRAM,SRAM1,SRAM2,SRAM3不支持BDMA,支持MDMA,DMA1和DMA2。, w) S( ]" | Z8 D( u9 s! k SRAM4支持所有DMA,即MDMA,DMA1,DMA2和BDMA。 $ K) x! i( K3 u# ]0 Z" J 25.6 实际工程推荐的RAM分配方案' A8 N h1 u3 C; H1 l 鉴于DTCM是400MHz的,而其它的RAM都是200MHz,推荐工程的主RAM空间采用TCM,而其它需要大RAM或者DMA的场合,使用剩余RAM空间。% T- Y5 G* m$ r* z4 d/ S( H: ^ 本教程配套的例子基本都是采用的这个方案,让TCM的性能得到最大发挥。 25.7 总结5 u+ x5 r5 C$ J 本章节就为大家讲解这么多,通过本章节主要是为后面三个章节的学习做铺垫。 ! a* Z0 _5 ?+ O9 }& | | |
STM32H7的TCM,SRAM等五块内存基础知识
STM32H7的TCM,SRAM等五块内存基础知识
简单了解一下STM32H7的BDMA
有奖预约 | STM32H7R7基于RT-Thread RTOS的智能终端GUI解决方案
【STM32H745I-DISCO】基于TouchGFX的工业控制器界面设计
STM32H745I-DISCO串口打印
【STM32H745I-DISCO】TouchGFX探索——3、触屏滑屏操作与中文显示
TouchGFX软件下载及使用
【STM32H745I-DISCO】TouchGFX探索——2、照葫芦画瓢
STM32H745I-DISCO硬件信号为空,M4、M7对于硬件信号的优先性判断