你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)

[复制链接]
donatello1996 发布时间:2026-7-16 00:26
       查阅ST官方资料可以得出,STM32H743VI是有1024KB的RAM空间的,但其实这空间并不连续,被划分成了若干区域:
16.JPG


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


速度:400MHz。


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


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


AXI SRAM区
位于D1域,数据带宽是64bit,挂在A**线上。除了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。


而KEIL程序平常默认启用的RAM分区为DTCM的192KB和AXI SRAM区的512KB,剩余的ITCM不用于数据读写,SRAM1,SRAM2和SRAM3区默认上电不会启用,SRAM4区更是一般只用在低功耗数据存储,在KEIL魔术棒配置中其实也可以看出来:
17.JPG


想要启用SRAM1,SRAM2和SRAM3区,网上给的方法一般是重写sct分区文件并让工程链接:
18.JPG
LR_IROM1 0x08000000 0x00200000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00200000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  
  ; RW data - 128KB DTCM
  RW_IRAM1 0x20000000 0x00020000  {  
   .ANY (+RW +ZI)
  }
  
  ; RW data - 512KB AXI SRAM
  RW_IRAM2 0x24000000 0x00080000  {  
   *(.RAM_D1)
  }
  
  ; RW data - 128KB SRAM1(0x30000000) + 128KB SRAM2(0x3002 0000) + 32KB SRAM3(0x30040000)
  RW_IRAM3 0x30000000 0x0004b000  {  
   *(.RAM_D2)
  }
  
  ; RW data - 64KB SRAM4(0x38000000)
  RW_IRAM4 0x38000000 0x0004b000  {  
   *(.RAM_D3)
  }
}


在KEIL魔术棒配置中需要把默认分配首选项关掉,这样才可以链接外部sct文件:
19.JPG

链接成功后,以LVGL缓存buf_1_1数组为例进行分配,首先将buf_1_1数组地址强行分配至.RAM_D1区即AXI SRAM区(0x24000000地址),并使用%p打印buf_1_1数组地址:
20.JPG 21.JPG 22.JPG
25.jpg


可以看出,buf_1_1数组地址强行分配至AXI SRAM区没有任何问题,LVGL程序正常运行。然后是分配到.RAM_D2即SRAM123区:
23.JPG 24.JPG


从串口打印上看,buf_1_1数组地址强行分配至SRAM123区(0x30000000区)也是成功的,但是数组作用失效,LVGL程序已经跑不起来了:
26.jpg


在main函数中启用SRAM123的时钟,没有效果:
27.JPG

在启用.s文件中添加AHB时钟树的SRAM123时钟标志位,也是不行:
28.JPG

总结:编写并链接外部sct文件确实可以启用STM32H743VI的DTCM的192KB和AXI SRAM区的512KB共计704KB,但是仍然有288KB的空间没法得到利用,这个问题只能后面再研究了。

收藏 评论0 发布时间:2026-7-16 00:26

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版