STMCU小助手
发布时间:2021-12-22 13:22
|
25.1 初学者重要提示( A! A9 z% j5 ?" |3 S8 M' _ TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于指令,DTCM用于数据,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度。* Y( o K6 J# G" }; _ 特别注意本章25.5小节里面各块RAM的DMA操作问题。 6 Y# Q" p5 c5 @7 ` 25.2 各块RAM在总线中的位置* c; r- X. J$ R7 R 这个知识点在前面章节做过介绍,本章再次梳理下这个知识点。/ G- Q$ K5 M) @( F
这个图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。; }% @9 F m7 y' J7 J# D5 l 1、 ITCM和DTCM 这两个是直连CPU的。, X. ?* b: N+ p1 T( e* F- Z 2、 D1 Domain% \1 h: T/ j" H3 b7 ~# P; h . Z+ W, K+ \& ?- Q4 Q: o. \, ? D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。 6个从接口端ASIB1到ASIB67 _8 k' d8 a7 ] 外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。" Y5 a- T |4 h: ?8 Y% z $ u; F$ g' m, ?$ r" W) ] 7个主接口端AMIB1到AMIB7 外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。: t* g* `7 K+ J9 t& d 3、 D2 Domain4 ~& i0 M7 c/ v1 m, q/ t0 \ 7 ]- v: p( n* N5 K D2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。; B' |( ^ X% A0 {3 g4 f4 M ; }$ l4 y" G! h4 R9 T4 W" v 10个从接口/ m/ _/ c/ Y4 `# v& `6 z5 g 外接的主控是D1-to-D2 AHB 总线,AHBP总线,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。% G" d) `3 z# s9 V0 q3 }( q2 p 9个主接口 外接的从设备是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB1,APB2,D2-to-D1 AHB总线和D2-to-D3 AHB总线。 % g0 V& _4 T% o# S) E w 4、 D3 Domain , y- B X4 U' R! E6 }; _: B/ c) t D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。+ b3 C+ \, |1 q & ?* z( j/ R4 L# |9 J( | P) K8 R 3个从接口7 }0 }6 k& c8 e& q4 d 外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。 {' V0 b; v w. t( f& X3 _ 2个主接口 外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线 s- G1 @) I+ P6 h+ e ' F" X! R9 }1 S: b. @8 o 25.3 各块RAM特性 各块RAM的特性对比如下,特别注意他们支持的最大速度和容量大小。 ' `8 M, i3 Q. ]7 d H& n# ^& U TCM区- z! c. q3 K$ j0 [( x: a TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。- |: Q1 {; c8 w7 t% m3 W" | 速度:400MHz。 DTCM地址:0x2000 0000,大小128KB。 . I% x/ s, ]' ~0 {1 Q6 b" n. F6 x ITCM地址:0x0000 0000,大小64KB。2 ^9 d5 q; r( i# Z1 G/ Z7 o & J, e0 F8 [9 T/ {6 C AXI SRAM区# H2 `+ d1 w7 [" V( A" V( V 位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。 速度:200MHz。& Y; y. I. c0 N* h# ]. B 地址:0x2400 0000,大小512KB。 2 {2 [7 T3 j7 D; T 用途:用途不限,可以用于用户应用数据存储或者LCD显存。! b. j% X4 q5 p; A# n% P SRAM1,SRAM2和SRAM3区4 S" J1 s/ @# }! i3 ~ 位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。8 T! z! U+ a; i+ m. W- h1 H 速度:200MHz。 3 Z5 _# g( u1 y Q, v9 @ SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。 % F) L2 u1 W0 [. V" k' ?) Z3 B$ j SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。0 V/ G0 ]' ?2 {( k + u& v* u6 |. R2 c, R SRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。 SRAM4区; x" s( \( a$ i0 k/ y; l 位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。 速度:200MHz。* h7 f s& x" k: a . y f' Q0 `: D+ [+ V0 [* f2 } 地址:0x3800 0000,大小64KB。. w7 H+ R$ C9 C% D) ~* Y% j, g- q 用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。! T9 E* _# [+ p# E B Backup SRAM区 备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。 速度:200MHz。/ l: }7 e$ O4 U; G' y 地址:0x3880 0000,大小4KB。 用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。( c8 Y$ @+ v/ s9 ^! k( d( T - G; Z# }3 f& r6 H$ S 25.4 各块RAM的时钟问题 正常情况下,系统上电后,CPU要访问的外设是需要使能对应的时钟位,但是下面这几个,CPU上电即可访问,而且芯片没有对应的寄存器使能位。 1 D: p, \' y+ s& q0 g2 A! D2 G
也就是说AXI SRAM,SRAM4,ITCM和DTCM可以在上电后直接使用。而SRAM1,SRAM2,SRAM3是需要使能的,但是实际测试发现,不使能也可以正常使用。不过,建议用到时候开启下时钟,防止意想不到的问题发生。 8 o- f+ F7 w0 B 对于V7板子配套的例子,在bsp.c文件的函数SystemClock_Config末尾做了个条件编译,大家可以根据需要来开启这三个时钟: * N( w8 e" m+ M+ m
25.5 各块RAM的DMA问题9 i3 x/ ^2 w" D) a 了解这个问题之前,要先看下面的Bus Master总线主控端和Bus Slave设备端的控制互联: 8 i6 X- f, c4 t$ L
加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。4 H% c" V1 Y/ ?; k$ v: w 访问通路(每个小方块里面的字符)! |, D3 V! j- A9 |- u4 h 任何有数字的表示有访问通路。 5 r0 R" u7 M; O- _' j! t 短横杠“-”表示不可访问。2 Q; d8 C1 X% B9 s 有灰色阴影的表示有实用价值的访问通路。7 l6 E3 K Y( F# M- L/ {) ? 表格中具体数值所代表的含义7 }8 D" _% Q/ \; S m+ n! d1 q D=direct, 1=via AXI bus matrix,5 V/ a1 S% T) n8 s7 ]! m1 ] 9 |" y# t: N. \ 2=via AHB bus matrix in D2, $ I8 a4 j/ g0 S2 {, `" e 3=via AHB bus matrix in D3, 4=via AHB/APB bridge in D1, 0 B' m! D6 _2 g9 A" F" s 5=via AHB/APB bridge in D2, 4 g v3 I8 }. {( w) ^% @% U" g 6=via AHB/APB bridge in D3, 7=via AHBS bus of Cortex-M7,- `' f1 I' [. n- w* R' b( Q 多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。 总线访问类型 普通字体表示32位总线。& z" ?! o. O4 j& ?% Y. p 斜体表示32位总线主机端/ 64位总线从机端。 粗体表示64位总线。 通过这个总线互联图,要了解到下面三个重要知识点:3 Y3 ^4 @0 Z T2 n" x, K7 F DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。& e1 I4 X, {* m! t/ f, ?& J AXI SRAM,SRAM1,SRAM2,SRAM3不支持BDMA,支持MDMA,DMA1和DMA2。 SRAM4支持所有DMA,即MDMA,DMA1,DMA2和BDMA。+ A$ T) f) G& W7 b& S 6 ?. O j, T4 E1 T' V, a* N 25.6 实际工程推荐的RAM分配方案2 f) h2 c/ l+ V; h, l, f! T 鉴于DTCM是400MHz的,而其它的RAM都是200MHz,推荐工程的主RAM空间采用TCM,而其它需要大RAM或者DMA的场合,使用剩余RAM空间。 本教程配套的例子基本都是采用的这个方案,让TCM的性能得到最大发挥。1 P- t* ]3 L8 Z# @& f, M3 D 25.7 总结 本章节就为大家讲解这么多,通过本章节主要是为后面三个章节的学习做铺垫。 ( N& s- M0 d% H! [3 w' E( ? a & u$ D% p2 c( Z- P' v% S 7 f6 s6 y4 A1 `. Y |
【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中实现云彩流动效果
微信公众号
手机版