前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【STM32H7教程】第25章 STM32H7的TCM,SRAM等五块内存基础知识

【STM32H7教程】第25章 STM32H7的TCM,SRAM等五块内存基础知识

作者头像
Simon223
发布于 2019-06-15 07:09:50
发布于 2019-06-15 07:09:50
2.7K00
代码可运行
举报
运行总次数:0
代码可运行

完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980

第25章       STM32H7的TCM,SRAM等五块内存基础知识

本章教程为大家介绍STM32H7带的ITCM,DTCM,AXI SRAM,SRAM1,SRAM2,SRAM3,SRAM4和备份SRAM的基础知识。

25.1 初学者重要提示

25.2 各块RAM在总线中的位置

25.3 各块RAM的特性

25.4 各块RAM的时钟问题

25.5 各块RAM的DMA问题

25.6 实际工程推荐的RAM分配方案

25.7 总结

25.1 初学者重要提示

  1.   TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于指令,DTCM用于数据,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度。
  2.   特别注意本章25.5小节里面各块RAM的DMA操作问题。

25.2 各块RAM在总线中的位置

这个知识点在前面章节做过介绍,本章再次梳理下这个知识点。

这个图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。

1、  ITCM和DTCM

这两个是直连CPU的。

2、  D1 Domain

D1域中的各个外设是挂在64位AXI总线组成6*7的矩阵上。

  •   6个从接口端ASIB1到ASIB6

外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。

  •   7个主接口端AMIB1到AMIB7

外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由AXI总线分支出来的,然后再由AHB3分支出APB3总线。

3、  D2 Domain

D2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。

  •   10个从接口

外接的主控是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

D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。

  •  3个从接口

外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。

  •  2个主接口

外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线

25.3 各块RAM特性

各块RAM的特性对比如下,特别注意他们支持的最大速度和容量大小。

  •   TCM区

TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。

速度:400MHz。

DTCM地址:0x2000 0000,大小128KB。

ITCM地址:0x0000 0000,大小64KB。

  •   AXI SRAM区

位于D1域,数据带宽是64bit,挂在AXI总线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。

速度:200MHz。

地址:0x2400 0000,大小512KB。

用途:用途不限,可以用于用户应用数据存储或者LCD显存。

  •   SRAM1,SRAM2和SRAM3区

位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。

速度:200MHz。

SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。

SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。

SRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。

  •   SRAM4区

位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。

速度:200MHz。

地址:0x3800 0000,大小64KB。

用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。

  •   Backup SRAM区

备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。

速度:200MHz。

地址:0x3880 0000,大小4KB。

用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。

25.4 各块RAM的时钟问题

正常情况下,系统上电后,CPU要访问的外设是需要使能对应的时钟位,但是下面这几个,CPU上电即可访问,而且芯片没有对应的寄存器使能位。

也就是说AXI SRAM,SRAM4,ITCM和DTCM可以在上电后直接使用。而SRAM1,SRAM2,SRAM3是需要使能的,但是实际测试发现,不使能也可以正常使用。不过,建议用到时候开启下时钟,防止意想不到的问题发生。

对于V7板子配套的例子,在bsp.c文件的函数SystemClock_Config末尾做了个条件编译,大家可以根据需要来开启这三个时钟:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#if 0
    __HAL_RCC_D2SRAM1_CLK_ENABLE();
    __HAL_RCC_D2SRAM2_CLK_ENABLE();
    __HAL_RCC_D2SRAM3_CLK_ENABLE();
#endif

25.5 各块RAM的DMA问题

了解这个问题之前,要先看下面的Bus Master总线主控端和Bus Slave设备端的控制互联:

  • 加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。
  •   访问通路(每个小方块里面的字符)

    任何有数字的表示有访问通路。

    短横杠“-”表示不可访问。

    有灰色阴影的表示有实用价值的访问通路。

  •   表格中具体数值所代表的含义

    D=direct,

    1=via AXI bus matrix,

    2=via AHB bus matrix in D2,

    3=via AHB bus matrix in D3,

    4=via AHB/APB bridge in D1,

    5=via AHB/APB bridge in D2,

    6=via AHB/APB bridge in D3,

    7=via AHBS bus of Cortex-M7,

    多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。

  •   总线访问类型

普通字体表示32位总线。

斜体表示32位总线主机端/ 64位总线从机端。

粗体表示64位总线。

通过这个总线互联图,要了解到下面三个重要知识点:

  1.   DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。
  2.   AXI SRAM,SRAM1,SRAM2,SRAM3不支持BDMA,支持MDMA,DMA1和DMA2。
  3.   SRAM4支持所有DMA,即MDMA,DMA1,DMA2和BDMA。

25.6 实际工程推荐的RAM分配方案

鉴于DTCM是400MHz的,而其它的RAM都是200MHz,推荐工程的主RAM空间采用TCM,而其它需要大RAM或者DMA的场合,使用剩余RAM空间。

本教程配套的例子基本都是采用的这个方案,让TCM的性能得到最大发挥。

25.7 总结

本章节就为大家讲解这么多,通过本章节主要是为后面三个章节的学习做铺垫。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【STM32H7教程】第3章 STM32H7整体把控
学习一款新的芯片,需要优先了解一下它的整体功能设计。需要的资料主要是来自官网和数据手册,比如我们V7开发板使用的STM32H743XIH6,直接在官方地址:链接(这是超链接)就可以看到对此芯片所做的介绍,页面中有一个如下的框图,对于了解STM32H7整体设计非常方便。
Simon223
2019/04/18
2.2K0
【STM32H7教程】第3章   STM32H7整体把控
【STM32F407开发板用户手册】第3章 STM32F407整体把控
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255 第3章   STM32F407整体把控 3.1   初学者重要提示   学
Simon223
2020/06/04
1.5K0
【STM32F429开发板用户手册】第3章 STM32F429整体把控
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255 第3章   STM32F429整体把控 3.1   初学者重要提示   学
Simon223
2020/06/04
1.2K0
【STM32H7教程】第62章 STM32H7的MDMA,DMA2D和通用DMA性能比较
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第62章       STM32H7的MDMA,DMA2D和通用DMA
Simon223
2020/03/02
1.6K0
【STM32H7教程】第27章 STM32H7的TCM,SRAM等五块内存的动态内存分配实现
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第27章       STM32H7的TCM,SRAM等五块内
Simon223
2019/07/11
1.2K0
【STM32H7教程】第27章       STM32H7的TCM,SRAM等五块内存的动态内存分配实现
【STM32H7教程】第26章 STM32H7的TCM,SRAM等五块内存的超方便使用方式
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第26章       STM32H7的TCM,SRAM等五块
Simon223
2019/07/10
1.8K0
【STM32H7教程】第26章       STM32H7的TCM,SRAM等五块内存的超方便使用方式
【STM32H7教程】第60章 STM32H7的DAC应用之定时器触发实现DMA方式双通道波形
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第60章       STM32H7的DAC应用之定时器触发实现DMA
Simon223
2020/02/25
1.7K0
【STM32H7教程】第41章 STM32H7的BDMA应用之控制任意IO做PWM和脉冲数控制
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第41章       STM32H7的BDMA应用之控制任意IO做PW
Simon223
2020/01/13
1.2K0
【STM32H7教程】第41章  STM32H7的BDMA应用之控制任意IO做PWM和脉冲数控制
【STM32H7教程】第40章 STM32H7的BDMA基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第40章       STM32H7的BDMA基础知识和HAL库API
Simon223
2020/01/13
1.2K0
【STM32H7教程】第40章  STM32H7的BDMA基础知识和HAL库API
【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习
1、本教程重在BSP驱动包设计方法和HAL库的框架学习,并将HAL库里面的各种弯弯绕捋顺,从而方便我们的程序设计。
Simon223
2019/08/01
1.8K0
【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习
【STM32H7教程】第45章 STM32H7的ADC应用之定时器触发配合DMA双缓冲
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第45章       STM32H7的ADC应用之定时器触发配合DMA
Simon223
2020/02/13
1.9K0
【STM32H7教程】第47章 STM32H7的FMC总线基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第47章       STM32H7的FMC总线基础知识和HAL库AP
Simon223
2020/02/14
3K0
【STM32H7教程】第28章 STM32H7时间关键代码在ITCM执行的超简单方法
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第28章 STM32H7时间关键代码在ITCM执行的
Simon223
2019/07/12
1.8K0
【STM32H7教程】第28章       STM32H7时间关键代码在ITCM执行的超简单方法
【STM32H7教程】第43章 STM32H7的DMA应用之双缓冲控制任意IO和脉冲数控制
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第43章       STM32H7的DMA应用之双缓冲控制任意IO和
Simon223
2020/01/13
1.9K0
【STM32H7教程】第43章   STM32H7的DMA应用之双缓冲控制任意IO和脉冲数控制
【STM32H7教程】第42章 STM32H7的DMA基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第42章       STM32H7的DMA基础知识和HAL库API
Simon223
2020/01/13
2.5K0
【STM32H7教程】第42章  STM32H7的DMA基础知识和HAL库API
【STM32H7教程】第61章 STM32H7的MDMA基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第61章       STM32H7的MDMA基础知识和HAL库API
Simon223
2020/03/02
2.5K0
【STM32H7教程】第75章 STM32H7的SPI总线应用之驱动DAC8501(双路输出,16bit分辨率,0-5V)
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第75章       STM32H7的SPI总线应用之驱动DAC850
Simon223
2020/05/09
1.7K0
【STM32H7教程】第75章    STM32H7的SPI总线应用之驱动DAC8501(双路输出,16bit分辨率,0-5V)
【STM32H7教程】第74章 STM32H7的SPI总线应用之驱动DAC8563(双通道,16bit分辨率,正负10V)
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第74章       STM32H7的SPI总线应用之驱动DAC856
Simon223
2020/04/10
2K0
【STM32H7教程】第74章  STM32H7的SPI总线应用之驱动DAC8563(双通道,16bit分辨率,正负10V)
【STM32H7教程】第73章 STM32H7的SPI总线应用之驱动W25QXX(支持查询,中断和DMA)
本章节为大家讲解标准SPI接线方式驱动W25QXX,实现了查询,中断和DMA三种方式。
Simon223
2020/03/20
2.8K0
【STM32H7教程】第94章 STM32H7的SPI总线应用之双机通信(DMA方式)
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第94章       STM32H7的SPI总线应用之双机通信(DMA
Simon223
2022/05/10
2K0
【STM32H7教程】第94章    STM32H7的SPI总线应用之双机通信(DMA方式)
推荐阅读
【STM32H7教程】第3章 STM32H7整体把控
2.2K0
【STM32F407开发板用户手册】第3章 STM32F407整体把控
1.5K0
【STM32F429开发板用户手册】第3章 STM32F429整体把控
1.2K0
【STM32H7教程】第62章 STM32H7的MDMA,DMA2D和通用DMA性能比较
1.6K0
【STM32H7教程】第27章 STM32H7的TCM,SRAM等五块内存的动态内存分配实现
1.2K0
【STM32H7教程】第26章 STM32H7的TCM,SRAM等五块内存的超方便使用方式
1.8K0
【STM32H7教程】第60章 STM32H7的DAC应用之定时器触发实现DMA方式双通道波形
1.7K0
【STM32H7教程】第41章 STM32H7的BDMA应用之控制任意IO做PWM和脉冲数控制
1.2K0
【STM32H7教程】第40章 STM32H7的BDMA基础知识和HAL库API
1.2K0
【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习
1.8K0
【STM32H7教程】第45章 STM32H7的ADC应用之定时器触发配合DMA双缓冲
1.9K0
【STM32H7教程】第47章 STM32H7的FMC总线基础知识和HAL库API
3K0
【STM32H7教程】第28章 STM32H7时间关键代码在ITCM执行的超简单方法
1.8K0
【STM32H7教程】第43章 STM32H7的DMA应用之双缓冲控制任意IO和脉冲数控制
1.9K0
【STM32H7教程】第42章 STM32H7的DMA基础知识和HAL库API
2.5K0
【STM32H7教程】第61章 STM32H7的MDMA基础知识和HAL库API
2.5K0
【STM32H7教程】第75章 STM32H7的SPI总线应用之驱动DAC8501(双路输出,16bit分辨率,0-5V)
1.7K0
【STM32H7教程】第74章 STM32H7的SPI总线应用之驱动DAC8563(双通道,16bit分辨率,正负10V)
2K0
【STM32H7教程】第73章 STM32H7的SPI总线应用之驱动W25QXX(支持查询,中断和DMA)
2.8K0
【STM32H7教程】第94章 STM32H7的SPI总线应用之双机通信(DMA方式)
2K0
相关推荐
【STM32H7教程】第3章 STM32H7整体把控
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验