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

发布者:zhihua最新更新时间:2024-11-18 来源: elecfans 手机看文章 扫描二维码
随时随地手机看文章

如下图所示,GD32F4系列内部SRAM分为通用SRAM空间和TCMSRAM空间,其中通用SRAM为从0x20000000开始的空间,TCMSRAM为从0x10000000开始的64KB空间。大家一般使用的均为通用SRAM空间,这部分SRAM使用的时候没有限制,作为堆栈、变量、DMA使用等都可以,但TCMSRAM一般不使用,有的时候可能会被大家遗忘,如果大家碰到SRAM资源不足的时候,可以看看是否有TCMSRAM没有用到,如果没有用到,可以参考下本视频将TCMSRAM使用起来,你将会多出64KB的SRAM空间。

wKgaomXZSWuAZpbRAAE6iG-0-qs337.png

wKgZomXZSXGADoFcAANbmjPz-sY557.png


而TCMSRAM如何使用呢?TCMSRAM为紧耦合SRAM,该SRAM仅可被M4内核访问,因而该TCMSRAM空间不能被外设比如DMA访问,TCMSRAM与处理器内核直连,具有更快的访问速度和更低的访问延迟,可以用于加速关键任务的执行,提高系统的实时性能和响应速度。

使用TCMSRAM可以使用分散加载的方式,将需要放置到TCMSRAM中的变量手动加载到TCMSRAM中,具体有以下两种方法:

直接通过 __attribute__加载到TCMSRAM中,如下所示。

uint32_t TX_Data[5] __attribute__((at(0x10000000)))={0};

通过修改SCT文件,并将变量分散加载到对应的段中,如下所示。

代码中的操作如下: 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) } }


引用地址:GD32F4的TCMSRAM(紧耦合SRAM)该如何使用?

上一篇:基于GD32L235系列MCU的土壤湿度检测带磁力翻转式显示方案
下一篇:最后一页

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved