在嵌入式低功耗設(shè)計(jì)中,Standby RAM(待機(jī)保持內(nèi)存)是芯片在深度休眠模式下仍能保持?jǐn)?shù)據(jù)的關(guān)鍵硬件資源。但許多開(kāi)發(fā)者苦于不同開(kāi)發(fā)環(huán)境的配置差異,難以高效利用這一特性。
本文將以e2studio(瑞薩)、KEIL MDK(ARM)和IAR EW(IAR Embedded Workbench)三大主流開(kāi)發(fā)環(huán)境為例,手把手教你在瑞薩RA6M4平臺(tái)上實(shí)現(xiàn)“將變量精準(zhǔn)分配至Standby RAM”的終極目標(biāo)。對(duì)于其他內(nèi)置Standby RAM的瑞薩RA系列MCU產(chǎn)品,均可參考本文的配置過(guò)程,并參考硬件手冊(cè)做適當(dāng)修改。本例中,Standby RAM的起始地址為0x28000000,大小為0x400。

01e2studio工程中
(1)在fsp.ld文件中添加以下內(nèi)容,定義Standby RAM這部分區(qū)域:


(2)hal_entry.c中在R_BSP_WarmStart中添加以下內(nèi)容,允許使用Standby RAM并進(jìn)行初始化。

(3)代碼編輯、編譯&調(diào)試,并打開(kāi)Memory窗口進(jìn)行驗(yàn)證。
需要放置到Standby RAM區(qū)域的數(shù)據(jù)需要做特定的聲明。例如:
uint8_t g_standby_ram_variable[512] BSP_PLACE_IN_SECTION(“.standby_ram”) = {0,1,2,3,4,5,6,7,8,9,10};
從下圖中可以看到數(shù)組g_standby_ram_variable[512]的數(shù)據(jù)已經(jīng)放在Standby RAM區(qū)域中。

02KEIL MDK工程中
(1)打開(kāi)KEIL MDK工程,點(diǎn)擊Option for Target

Target標(biāo)簽頁(yè)Read/Write Memory Areas,定義一塊區(qū)域

點(diǎn)擊Linker標(biāo)簽頁(yè),取消鏈接勾選,自定義鏈接腳本,點(diǎn)擊2處編輯

定義一片區(qū)域

(2)定義變量
uint8_t var00[10] __attribute__((section("SAMPLE_NAME_A")));
(3)代碼中添加對(duì)這個(gè)變量的寫(xiě)入

(4)編譯&調(diào)試,進(jìn)行驗(yàn)證
從Memory窗口,可以看到放置在Standby RAM區(qū)域的變量被正常寫(xiě)入

03IAR EW工程中
(1)修改鏈接器配置文件(.icf)
在項(xiàng)目的鏈接器配置文件中定義Standby RAM區(qū)域和段:
define region STANDBY_RAM = mem:[from 0x28000000 to 0x280003FF];
define block STANDBY_BLOCK { section .standby_ram };
place in STANDBY_RAM { block STANDBY_BLOCK };
do not initialize { section .standby_ram};
(2)在代碼中聲明變量
使用__no_init關(guān)鍵字和#pragma location指令將變量分配到指定段:
#pragma location = ".standby_ram"
__no_init uint8_t g_standby_ram_variable[512];
(3)在用戶(hù)代碼中手動(dòng)初始化,并賦值

(4)編譯&調(diào)試,進(jìn)行驗(yàn)證
從Memory窗口,確認(rèn)變量地址和數(shù)值。

通過(guò)上述步驟,我們實(shí)現(xiàn)了三大開(kāi)發(fā)環(huán)境下的Standby RAM變量配置。無(wú)論你使用e2studio、KEIL MDK還是IAR EW,核心邏輯始終一致:
編譯器層:通過(guò)鏈接腳本隔離內(nèi)存區(qū)域
代碼層:結(jié)合復(fù)位類(lèi)型檢測(cè)實(shí)現(xiàn)按需初始化
-
嵌入式
+關(guān)注
關(guān)注
5198文章
20434瀏覽量
333880 -
RAM
+關(guān)注
關(guān)注
8文章
1399瀏覽量
120521 -
瑞薩
+關(guān)注
關(guān)注
37文章
22481瀏覽量
90823 -
開(kāi)發(fā)環(huán)境
+關(guān)注
關(guān)注
1文章
270瀏覽量
17635 -
Standby
+關(guān)注
關(guān)注
0文章
5瀏覽量
7398
發(fā)布評(píng)論請(qǐng)先 登錄
Linux環(huán)境變量配置的6種方法
Linux環(huán)境變量的配置方法
python環(huán)境變量的配置pip
【HiSpark系列】重磅 HarmonyOS官方三大開(kāi)發(fā)套件HiSpark首場(chǎng)開(kāi)箱直播
教你在Win7下配置Android開(kāi)發(fā)環(huán)境
又一國(guó)產(chǎn)AI平臺(tái)重大升級(jí),三大開(kāi)發(fā)套件發(fā)布!
如何在Eclipse開(kāi)發(fā)環(huán)境下配置OpenCV
6種Linux環(huán)境變量的配置方法
如何配置Python環(huán)境變量
pycharm怎么配置python環(huán)境變量
idea要配置java環(huán)境變量嗎
Linux環(huán)境變量配置方法
Linux環(huán)境變量配置方法
進(jìn)迭時(shí)空2025年度十大開(kāi)發(fā)者揭曉
三大開(kāi)發(fā)環(huán)境下的Standby RAM變量配置教程
評(píng)論