STM32H743内部所有SRAM的使用

STM32H7有64KB的ITCM RAM、128KB的DTCM RAM、D1域512KB的AXI SRAM、D2域128KB SRAM1+128KB SRAM2+32KB SRAM3以及D3域64KB SRAM4和4KB备份SRAM。(具体详情请参考STM32H7x3编程参考手册P96)我们可以自由地分配这些内存。目前,MDK与IAR均支持这种内存使用方式。

  1. MDK管理各个D域SRAM及TCM RAM的方法与步骤:
    在这里插入图片描述
    通常情况下我们都是通过编译器分配内存区:
    但这种操作方法具有局限性,只能使用两个连续的内存区,若要充分利用所有的内存资源,可通过修改后缀为.sct文件,该文件是通过选中on-chip中的IRAM1和IRAM2,编译器自动生成的脚本文件YS-H7Multi.sct。内容如下:
    在这里插入图片描述
    此代码中只定义了两个RAM内存区域:DTCM RAM(0x20000000-0x20020000)与AXI RAM(0x24000000-0x24080000)。现在我们使用其它D域的RAM.
    在这里插入图片描述
    现在我们定义了5块内存区,注意分号“;”在这里是屏蔽的作用。接着,如下图,点击Linker,再把”Use Memory Layout from Target Dialog”这一选项的勾勾去掉,最后加载编辑好的脚本文件YS-H7Multi.sct。
    在这里插入图片描述
    那我们如何使用这个脚本呢?
    在这里插入图片描述
    使用起来还是蛮简单的。验证实验:KEY1~KEY4操控着D1域的AXI RAM、D2域的SRAM1~SRAM3、D3域的SRAM4以及D3域备份RAM。打印出定义在各个内存区变量的地址,是否位于各内存区的地址。
    在这里插入图片描述
    由此得到验证。

  2. IAR管理各个D域SRAM及TCM RAM的方法与步骤:
    IAR相比MDK的设置要简单一些,仅需在IAR的配置文件stm32h743xx_flash.icf中添加如下代码即可, stm32h743xx_flash.icf文件位于如下下图所示:
    在这里插入图片描述
    打开stm32h743xx_flash.icf文件,并添加代码:
    在这里插入图片描述
    用户使用的话如下:
    在这里插入图片描述
    补充:如果用MDK时,想把堆栈放置不同D域的SRAM1中,可以这样:
    在这里插入图片描述
    先在YS-H7Multi.sct设置好堆栈使用哪块区域的内存,

在这里插入图片描述
再在startup_stm32h743xx.s文件设置堆栈大小,务必与第一步的堆栈大小一致。
最后打开YS-H7Multi.map文件核对堆栈起始地址是否一致

在这里插入图片描述

下载例程连接:https://download.csdn.net/download/Jaken5213/15467599

  • 10
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值