在嵌入式低功耗設(shè)計中,Standby RAM(待機(jī)保持內(nèi)存)是芯片在深度休眠模式下仍能保持?jǐn)?shù)據(jù)的關(guān)鍵硬件資源。但許多開發(fā)者苦于不同開發(fā)環(huán)境的配置差異,難以高效利用這一特性。
本文將以e2studio(瑞薩)、KEIL MDK(ARM)和IAR EW(IAR Embedded Workbench)三大主流開發(fā)環(huán)境為例,手把手教你在瑞薩RA6M4平臺上實(shí)現(xiàn)“將變量精準(zhǔn)分配至Standby RAM”的終極目標(biāo)。對于其他內(nèi)置Standby RAM的瑞薩RA系列MCU產(chǎn)品,均可參考本文的配置過程,并參考硬件手冊做適當(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)試,并打開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)打開KEIL MDK工程,點(diǎn)擊Option for Target
Target標(biāo)簽頁Read/Write Memory Areas,定義一塊區(qū)域
點(diǎn)擊Linker標(biāo)簽頁,取消鏈接勾選,自定義鏈接腳本,點(diǎn)擊2處編輯
定義一片區(qū)域
(2)定義變量
uint8_t var00[10] __attribute__((section("SAMPLE_NAME_A")));
(3)代碼中添加對這個變量的寫入
(4)編譯&調(diào)試,進(jìn)行驗(yàn)證
從Memory窗口,可以看到放置在Standby RAM區(qū)域的變量被正常寫入
03IAR EW工程中
(1)修改鏈接器配置文件(.icf)
在項目的鏈接器配置文件中定義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)在用戶代碼中手動初始化,并賦值
(4)編譯&調(diào)試,進(jìn)行驗(yàn)證
從Memory窗口,確認(rèn)變量地址和數(shù)值。
通過上述步驟,我們實(shí)現(xiàn)了三大開發(fā)環(huán)境下的Standby RAM變量配置。無論你使用e2studio、KEIL MDK還是IAR EW,核心邏輯始終一致:
編譯器層:通過鏈接腳本隔離內(nèi)存區(qū)域
代碼層:結(jié)合復(fù)位類型檢測實(shí)現(xiàn)按需初始化
-
嵌入式
+關(guān)注
關(guān)注
5147文章
19627瀏覽量
316719 -
RAM
+關(guān)注
關(guān)注
8文章
1392瀏覽量
117256 -
瑞薩
+關(guān)注
關(guān)注
36文章
22378瀏覽量
87966 -
開發(fā)環(huán)境
+關(guān)注
關(guān)注
1文章
242瀏覽量
17101 -
Standby
+關(guān)注
關(guān)注
0文章
5瀏覽量
7186
原文標(biāo)題:如何在三大開發(fā)環(huán)境下將變量“釘”在Standby RAM中?
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Linux環(huán)境變量配置的6種方法
Linux環(huán)境變量的配置方法
python環(huán)境變量的配置pip
【HiSpark系列】重磅 HarmonyOS官方三大開發(fā)套件HiSpark首場開箱直播
教你在Win7下配置Android開發(fā)環(huán)境

又一國產(chǎn)AI平臺重大升級,三大開發(fā)套件發(fā)布!
瑞芯微電子正式面向全球AI開發(fā)者發(fā)布三大開發(fā)套件 提升開發(fā)便利性
如何在Eclipse開發(fā)環(huán)境下配置OpenCV

評論