如下圖所示,GD32F4系列內(nèi)部SRAM分為通用SRAM空間和TCMSRAM空間,其中通用SRAM為從0x20000000開(kāi)始的空間,TCMSRAM為從0x10000000開(kāi)始的64KB空間。大家一般使用的均為通用SRAM空間,這部分SRAM使用的時(shí)候沒(méi)有限制,作為堆棧、變量、DMA使用等都可以,但TCMSRAM一般不使用,有的時(shí)候可能會(huì)被大家遺忘,如果大家碰到SRAM資源不足的時(shí)候,可以看看是否有TCMSRAM沒(méi)有用到,如果沒(méi)有用到,可以參考下本視頻將TCMSRAM使用起來(lái),你將會(huì)多出64KB的SRAM空間。


而TCMSRAM如何使用呢?TCMSRAM為緊耦合SRAM,該SRAM僅可被M4內(nèi)核訪問(wèn),因而該TCMSRAM空間不能被外設(shè)比如DMA訪問(wèn),TCMSRAM與處理器內(nèi)核直連,具有更快的訪問(wèn)速度和更低的訪問(wèn)延遲,可以用于加速關(guān)鍵任務(wù)的執(zhí)行,提高系統(tǒng)的實(shí)時(shí)性能和響應(yīng)速度。
使用TCMSRAM可以使用分散加載的方式,將需要放置到TCMSRAM中的變量手動(dòng)加載到TCMSRAM中,具體有以下兩種方法:
直接通過(guò) __attribute__加載到TCMSRAM中,如下所示。
uint32_t TX_Data[5] __attribute__((at(0x10000000)))={0};
通過(guò)修改SCT文件,并將變量分散加載到對(duì)應(yīng)的段中,如下所示。
代碼中的操作如下: 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) } }
。
-
單片機(jī)
+關(guān)注
關(guān)注
6063文章
44925瀏覽量
647003 -
sram
+關(guān)注
關(guān)注
6文章
782瀏覽量
115673 -
GD32
+關(guān)注
關(guān)注
7文章
418瀏覽量
25161
發(fā)布評(píng)論請(qǐng)先 登錄

GD32F4的TCMSRAM(緊耦合SRAM)該如何使用?#GD32 #單片機(jī) #嵌入式開(kāi)發(fā)
GD32F4系列芯片移植RTOS Demo工程 GD32F407移植FreeRTOS GD32F407移植RT-Thread
使用Nios II緊耦合存儲(chǔ)器教程
GD32F4xx系列固件庫(kù)
關(guān)于GD32F330/350系列超值型Cortex?-M4 MCU的性能分析和應(yīng)用

從零開(kāi)始創(chuàng)建GD32F4系列單片機(jī)工程模板&移植涂鴉MCU-SDK

全新GD32F4產(chǎn)品系列緊貼市場(chǎng)高端需求
芯片GD32與以太網(wǎng)芯片的坑

【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植到 GD32F4xx 系

評(píng)論