打印

GD32F4的TCMSRAM(紧耦合SRAM)该如何使用?

[复制链接]
793|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如下图所示,GD32F4系列内部SRAM分为通用SRAM空间和TCMSRAM空间,其中通用SRAM为从0x20000000开始的空间,TCMSRAM为从0x10000000开始的64KB空间。大家一般使用的均为通用SRAM空间,这部分SRAM使用的时候没有限制,作为堆栈、变量、DMA使用等都可以,但TCMSRAM一般不使用,有的时候可能会被大家遗忘,如果大家碰到SRAM资源不足的时候,可以看看是否有TCMSRAM没有用到,如果没有用到,可以参考下本视频将TCMSRAM使用起来,你将会多出64KBSRAM空间。

TCMSRAM如何使用呢?TCMSRAM为紧耦合SRAM,该SRAM仅可被M4内核访问,因而该TCMSRAM空间不能被外设比如DMA访问,TCMSRAM与处理器内核直连,具有更快的访问速度和更低的访问延迟,可以用于加速关键任务的执行,提高系统的实时性能和响应速度。
使用TCMSRAM可以使用分散加载的方式,将需要放置到TCMSRAM中的变量手动加载到TCMSRAM中,具体有以下两种方法:
1. 直接通过 __attribute__加载到TCMSRAM中,如下所示。
C
uint32_t TX_Data[5] __attribute__((at(0x10000000)))={0};
2. 通过修改SCT文件,并将变量分散加载到对应的段中,如下所示。
C
代码中的操作如下:
uint32_t TX_Data[5] __attribute__((section(".bss.RAM_Array")))={0};
SCT文件中的配置如下:
LR_IROM1 0x08000000 0x00300000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00300000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20000000 0x00020000  {  ; RW data
   .ANY (+RW +ZI)
  }
  RW_IRAM2 0x10000000 0x00010000  {
  main.o(.bss.RAM_Array)
  }
}
具体软件代码可参考以下demo:
https://juwokeji.feishu.cn/wiki/EYhWwRzy7iBlqIkjyixchHn9nDg?fromScene=spaceOverview#doxcnx77nHfz9logALLzZG4jkKd
以上即为本期讲解,如有问题或建议,欢迎评论区讨论。
本教程由GD32 MCU方案商聚沃科技原创发布,了解更多GD32 MCU教程,关注聚沃科技官网,GD32MCU技术交流群:859440462

使用特权

评论回复
沙发
qn7a12| | 2024-8-31 11:12 | 只看该作者
每种类型的SRAM有其特定的用途和配置要求。

使用特权

评论回复
板凳
tpgf| | 2024-9-3 10:45 | 只看该作者
GD32F4的TCMSRAM(紧耦合SRAM)是一种特殊类型的片上存储器,仅可被Cortex-M4内核直接访问,不能被其他外设如DMA访问

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

190

帖子

6

粉丝