
25.1 初学者重要提示) c* o3 H. ^. [: n: Z: D9 S2 b* X1 U% U TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于指令,DTCM用于数据,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度。 特别注意本章25.5小节里面各块RAM的DMA操作问题。. T: S5 D0 ?+ d' E ; U4 c9 h4 W ]( z! i1 M1 g 25.2 各块RAM在总线中的位置 这个知识点在前面章节做过介绍,本章再次梳理下这个知识点。# M& I& x* ^6 ?/ G: A \ e ![]() ' z6 J* c2 H/ i6 u 这个图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。+ X( d1 `5 m0 z( J5 { : {6 T! n0 ^* d 1、 ITCM和DTCM9 I) L ^1 k- r* `- q% A# V& |0 T 这两个是直连CPU的。 2、 D1 Domain1 x Z8 v) }: C2 d1 |3 S; A D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。 C$ K d1 n7 } 6个从接口端ASIB1到ASIB6 外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。- |, T a: r5 F+ X3 { , h( s! k* @" {" a% c) o" q( h 7个主接口端AMIB1到AMIB7 外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。 3、 D2 Domain4 A' [' k* C3 v5 _# \9 B # E+ [9 u& r5 P7 [ D2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。 " q9 t# }% Z; D3 _ 10个从接口 外接的主控是D1-to-D2 AHB 总线,AHBP总线,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。 0 w9 i0 g* a1 L" ^6 z) k) e) i 9个主接口 外接的从设备是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB1,APB2,D2-to-D1 AHB总线和D2-to-D3 AHB总线。 4、 D3 Domain# `3 Z4 V" X2 n: V/ j4 u' Y1 w) [ D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。 ; c" z3 @# h5 a! c6 W# }6 s5 q 3个从接口6 Y6 i, V- |! h% Q5 U 外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。 2个主接口7 V& M9 a3 i7 e: c. S 外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线 3 B) B! h- l: m4 O 25.3 各块RAM特性 各块RAM的特性对比如下,特别注意他们支持的最大速度和容量大小。 ) \; S! R9 q# Y! U% I# [ M TCM区+ |& Q) k# I4 ]" E1 k5 u9 G+ f TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。 速度:400MHz。9 I. R0 I3 \% Z X # x/ s h; B! u1 i- X7 K DTCM地址:0x2000 0000,大小128KB。 ITCM地址:0x0000 0000,大小64KB。 AXI SRAM区 位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。 速度:200MHz。. G/ o, @1 O+ ^2 m6 K7 a , ]$ [ a; a. W" z; w4 k 地址:0x2400 0000,大小512KB。' J$ O3 T' @/ T2 u " g: [5 T/ G/ A 用途:用途不限,可以用于用户应用数据存储或者LCD显存。" y( D, P% I4 W8 G* n3 b SRAM1,SRAM2和SRAM3区2 j( s; w9 J" Y/ H2 H: ~ 位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。% C$ x4 F$ N, g9 _6 d 速度:200MHz。! @/ K9 f& ?1 S- B' u t * F9 h+ [4 z$ i. t& }! ^ SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。! j0 `0 o6 P% \ SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。 2 _0 Z" a* Q4 t! \ SRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。+ b- r1 x/ Q- W2 D, S+ B1 ?, l7 Y" b" D! J SRAM4区 位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。 速度:200MHz。2 o% y u! r7 g8 S4 b; @; L 地址:0x3800 0000,大小64KB。5 G- ]* E5 _0 a4 `7 Z 用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。9 {, [8 u8 Q7 ~8 B ( j' B( E2 `7 h$ D$ [- x Backup SRAM区 备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。. C+ i8 W4 W& D5 C9 { / D, O. q/ ~; S6 c. d: F 速度:200MHz。 地址:0x3880 0000,大小4KB。6 W+ ^+ k! O5 x! y2 [. U 用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。 2 b8 P0 E( b% q1 D# _- e 25.4 各块RAM的时钟问题 正常情况下,系统上电后,CPU要访问的外设是需要使能对应的时钟位,但是下面这几个,CPU上电即可访问,而且芯片没有对应的寄存器使能位。1 v {" s& |9 P% g . l( ]4 G1 U. d. z( _: v) I" N ![]() ; L4 K6 E9 ^1 G- W6 \- h& f- ^. U 也就是说AXI SRAM,SRAM4,ITCM和DTCM可以在上电后直接使用。而SRAM1,SRAM2,SRAM3是需要使能的,但是实际测试发现,不使能也可以正常使用。不过,建议用到时候开启下时钟,防止意想不到的问题发生。 : b" g; B) K6 N; o6 m: T 对于V7板子配套的例子,在bsp.c文件的函数SystemClock_Config末尾做了个条件编译,大家可以根据需要来开启这三个时钟:" P2 y* ?, c- T7 S8 r9 K
25.5 各块RAM的DMA问题( I; ~2 h8 U ?5 v5 l 了解这个问题之前,要先看下面的Bus Master总线主控端和Bus Slave设备端的控制互联:3 \6 H3 D6 g* X% n# a8 A 5 {5 q- V/ a$ }& n& k. o# U3 e ![]() 加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。* o1 a( b* a5 i8 a 访问通路(每个小方块里面的字符) 任何有数字的表示有访问通路。 % F# e. o- F. T6 p! Q( [* ^& S" C 短横杠“-”表示不可访问。 , ]/ P' h$ s0 T: r 有灰色阴影的表示有实用价值的访问通路。 9 ~5 i" ~* ?! Z+ t' y. b6 `" e 表格中具体数值所代表的含义; p$ t* _4 j6 c. R2 }2 Z D=direct, ! w( D. q$ p$ g' F2 y 1=via AXI bus matrix,4 C3 p8 Q( K+ F# }, z 2=via AHB bus matrix in D2,: o6 R3 s! e f/ U% u/ c7 I$ H ( p, |0 y6 v: d8 m5 I 3=via AHB bus matrix in D3, & r$ L. P+ k4 z- E3 s 4=via AHB/APB bridge in D1,* ^8 z( k; q+ E3 g8 t+ H+ `9 K - Y0 p8 p& l1 C3 M6 F 5=via AHB/APB bridge in D2, 6=via AHB/APB bridge in D3,$ }1 g& t( i2 m' D6 s4 x) z 7=via AHBS bus of Cortex-M7,' E' P8 O2 P' o T* g 5 ]7 z* C% H" Y- _# P2 U! R 多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。 总线访问类型0 o$ I* s5 b. L; T, q6 f 普通字体表示32位总线。 斜体表示32位总线主机端/ 64位总线从机端。 ; P. }9 ^" t$ g j( k) A 粗体表示64位总线。 ; _( b+ P9 G7 m" X5 C& X. B- _; S 通过这个总线互联图,要了解到下面三个重要知识点:' S( z1 v( t) o# M( V5 P DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。 AXI SRAM,SRAM1,SRAM2,SRAM3不支持BDMA,支持MDMA,DMA1和DMA2。: k2 C G; ?; b SRAM4支持所有DMA,即MDMA,DMA1,DMA2和BDMA。5 ^, i+ {* T2 k4 B& w4 X8 E8 @ 25.6 实际工程推荐的RAM分配方案8 K9 w) h2 H8 b- L( ~# A 鉴于DTCM是400MHz的,而其它的RAM都是200MHz,推荐工程的主RAM空间采用TCM,而其它需要大RAM或者DMA的场合,使用剩余RAM空间。 本教程配套的例子基本都是采用的这个方案,让TCM的性能得到最大发挥。; a, h5 e( I" H- b6 O5 f 3 V8 w+ R( K6 o" C- y, W7 L 25.7 总结 本章节就为大家讲解这么多,通过本章节主要是为后面三个章节的学习做铺垫。$ x9 x. O+ @1 @. _! `1 B & B- p8 q4 y. ?4 b |
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对于硬件信号的优先性判断