STMCU小助手
发布时间:2021-12-22 13:22
|
25.1 初学者重要提示 TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于指令,DTCM用于数据,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度。2 ?: x8 n# ~* s% K 特别注意本章25.5小节里面各块RAM的DMA操作问题。 ( S; R: {# i! _7 t0 |" g" s 25.2 各块RAM在总线中的位置7 v- b& p) F3 Z b6 G* S$ } 这个知识点在前面章节做过介绍,本章再次梳理下这个知识点。
这个图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。 1、 ITCM和DTCM7 |* p! C) Z8 R 4 [- j- @# U( s0 J 这两个是直连CPU的。* ]) r( T0 _* F$ Z# k* C5 U; } ( f% |, j% C2 z* O" ^- ~" a& } 2、 D1 Domain D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。! s7 S% g0 I' P/ a1 \% P 6个从接口端ASIB1到ASIB6; ~, k3 R9 i, b' J 外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。7 @; _/ ^/ ~1 [5 ?1 ~ r" j1 w) \5 _. E! x0 m 7个主接口端AMIB1到AMIB7 外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。- D, O: ~, {7 K' Q7 _ 3、 D2 Domain ! T1 @, R" r4 E; _7 P D2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。 10个从接口( C7 o' J7 g6 |5 ?* r$ V5 C 外接的主控是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 Domain2 M4 y+ X4 F7 E( `; ^ * P3 {% A1 s& j$ W: f D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。 ' A1 y& R7 j$ E% u 3个从接口 外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。5 r- j( O: }: u) _: ]# C 3 I2 `# ^( {7 W6 e6 L5 T/ g2 x" B 2个主接口3 p4 \. ~* G8 T; x# O- H: R 外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线2 [' l ^5 z; p 25.3 各块RAM特性9 Z1 b s1 f7 ~/ C4 q; a p! } 各块RAM的特性对比如下,特别注意他们支持的最大速度和容量大小。/ g: c, z3 C! d+ {# x TCM区+ J" e5 z9 L4 T TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。 : Z4 V8 s! {; @' ^7 m2 A9 G' U 速度:400MHz。 DTCM地址:0x2000 0000,大小128KB。 6 Q3 j. u7 b& C' ^) P9 Y8 y( M9 [ ITCM地址:0x0000 0000,大小64KB。 AXI SRAM区 位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。 速度:200MHz。 地址:0x2400 0000,大小512KB。# W/ W0 d* ^5 G! \ + A% z" h% e2 S; e 用途:用途不限,可以用于用户应用数据存储或者LCD显存。 SRAM1,SRAM2和SRAM3区 位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。 3 c6 e6 ?5 h; ^1 H4 i 速度:200MHz。 SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。4 V& |5 w* Z# O, f+ t . j9 s% z# m$ I/ l% ` SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。 SRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。 w" s: r* Q/ g4 h# X/ ]: o + I D! w" W: K0 i, H6 v& u0 L0 o9 n SRAM4区 位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。9 [1 {9 p. @$ T( [9 q ! l, t9 X' ]# s1 f5 ~ 速度:200MHz。 地址:0x3800 0000,大小64KB。# S& V7 X. d [& B9 s 用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。5 {# j: b' C9 w+ g! p0 i1 v 7 ~" }; V; T. r: v6 E Backup SRAM区/ j. G& |3 C+ R o4 C. B 备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。# a' [1 G3 [# C# J * K8 E" r. R$ w& x- i6 p* X( i# | 速度:200MHz。, C+ _9 o$ \* d( ~' y$ m; L 地址:0x3880 0000,大小4KB。 用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。 25.4 各块RAM的时钟问题' X$ A+ ^0 m! X' G% k 正常情况下,系统上电后,CPU要访问的外设是需要使能对应的时钟位,但是下面这几个,CPU上电即可访问,而且芯片没有对应的寄存器使能位。 " S. [% q. l1 d( P/ u5 w$ z1 e
也就是说AXI SRAM,SRAM4,ITCM和DTCM可以在上电后直接使用。而SRAM1,SRAM2,SRAM3是需要使能的,但是实际测试发现,不使能也可以正常使用。不过,建议用到时候开启下时钟,防止意想不到的问题发生。1 E5 O6 Q: q! w- o1 b4 U. { 1 P5 O! x# Y- K* v3 W. U2 [ 对于V7板子配套的例子,在bsp.c文件的函数SystemClock_Config末尾做了个条件编译,大家可以根据需要来开启这三个时钟:$ Q [1 u, a6 I) u
25.5 各块RAM的DMA问题% P( h' b3 U/ \4 b 了解这个问题之前,要先看下面的Bus Master总线主控端和Bus Slave设备端的控制互联: ) d3 g Z. Y- S4 m5 N; z! ]
加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。 访问通路(每个小方块里面的字符)* X. E, a. Q; i$ O, N) ` 任何有数字的表示有访问通路。 5 x4 M# G4 T! t 短横杠“-”表示不可访问。 有灰色阴影的表示有实用价值的访问通路。 ! z( G& X' P- _+ {, W! r) K 表格中具体数值所代表的含义' v% q/ z0 ]$ t& a: p- J D=direct, 0 I8 i6 O( i. O5 \, B0 O) C1 \ 1=via AXI bus matrix, 2=via AHB bus matrix in D2, 3=via AHB bus matrix in D3, Z- Z+ g/ ]* [ 4=via AHB/APB bridge in D1, , m3 V9 Y7 S/ C 5=via AHB/APB bridge in D2, 3 i K x6 y5 S( R" `1 F; h 6=via AHB/APB bridge in D3, 8 ?9 t8 ?& Q* K2 y! _. U+ |/ K 7=via AHBS bus of Cortex-M7,+ c7 U9 F% n5 ~4 F1 S5 _& r# G 多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。; R q! U2 Y# }( g/ y 总线访问类型 普通字体表示32位总线。 , g; k0 k/ f% h' R 斜体表示32位总线主机端/ 64位总线从机端。 粗体表示64位总线。0 u" e0 Q! C! J5 ~ 通过这个总线互联图,要了解到下面三个重要知识点:! t# M2 T+ c2 X* V # a6 F1 L' b1 x DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。1 `7 ?. U4 A4 D! K _+ Q4 X AXI SRAM,SRAM1,SRAM2,SRAM3不支持BDMA,支持MDMA,DMA1和DMA2。7 Q8 ~' s' [: [ SRAM4支持所有DMA,即MDMA,DMA1,DMA2和BDMA。 25.6 实际工程推荐的RAM分配方案 鉴于DTCM是400MHz的,而其它的RAM都是200MHz,推荐工程的主RAM空间采用TCM,而其它需要大RAM或者DMA的场合,使用剩余RAM空间。 " N' e) _; }- s) o+ C, k 本教程配套的例子基本都是采用的这个方案,让TCM的性能得到最大发挥。6 K" E6 }5 t: }+ d; G8 r- P * o+ p- c% S% z7 L/ J+ C7 L 25.7 总结 本章节就为大家讲解这么多,通过本章节主要是为后面三个章节的学习做铺垫。 - }, q; K! M$ s+ u8 _ # | ^& x) h. k 8 I- t, c `7 W |
【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实现温度、湿度、气压数据读取
【福利三:逢7发帖赢大礼】成功利用STM32H743VI片内SRAM12和DTCM空间(完全胜利)
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
【福利三:逢7发帖赢大礼】使用惠勤致远STM32H743VI开发板+ST7796并口彩屏移植LVGL9.5并分享一些额外内容
【 逢7发帖赢大礼】7、TouchGFX中实现云彩流动效果
微信公众号
手机版