加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、片內(nèi)SRAM分區(qū)控制
    • 二、功耗測(cè)量方法
    • 三、功耗測(cè)量結(jié)果
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

竟有如此精細(xì)化片內(nèi)SRAM電源控制的MCU?

2023/07/07
2727
閱讀需 12 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是從功耗測(cè)試角度了解i.MXRTxxx系列片內(nèi)SRAM分區(qū)電源控制。

我們知道配合 MCU 一起工作的存儲(chǔ)器包含 ROM(Flash) 和 RAM 兩類,前者主要放 RO 代碼和數(shù)據(jù),后者放 RW 數(shù)據(jù)。MCU 可以沒有片內(nèi) ROM,但是一般都會(huì)包含片內(nèi) RAM,這個(gè)片內(nèi) RAM 功耗是 MCU 整體功耗的重要組成部分。

恩智浦 i.MXRT 四位數(shù)系列片內(nèi) RAM 主要由 FlexRAM 和 OCRAM 組成,痞子衡寫過一篇文章 《FlexRAM模塊詳解》,里面介紹了 FlexRAM 的電源控制策略。雖然 FlexRAM 也是由多個(gè) Bank 組成,但是其無法做到任意開關(guān)每個(gè) Bank,其受既定的組合策略控制(跟隨系統(tǒng) Low Power 模式),而 OCRAM 則直接是整體開關(guān)。就這方面設(shè)計(jì)而言,i.MXRT 三位數(shù)系列片內(nèi) SRAM 電源控制則靈活得多,今天痞子衡就重點(diǎn)聊聊這個(gè)話題:

一、片內(nèi)SRAM分區(qū)控制

恩智浦 i.MXRT 三位數(shù)系列目前主要是 RT500 和 RT600 兩大型號(hào),前者包含 5MB 片內(nèi) SRAM,后者包含 4.5MB 片內(nèi) SRAM。因?yàn)槠瑑?nèi) RAM 夠大,所以為其設(shè)計(jì)的電源控制策略就更精細(xì)。

下圖是 RT500 上 AXI-to-RAM 架構(gòu)圖,從圖里我們知道 5MB SRAM 一共被分成了 32 塊(注意不是等分,有 32KB/64KB/128KB/256KB 四種不同大?。?/p>

- RT500 一共 32 個(gè) SRAM 分區(qū)(SRAM0-31):
- RT600 一共 30 個(gè) SRAM 分區(qū)(SRAM0-29):
- 不同大小的 SRAM 分區(qū):
  SRAM0-7   :32KB
  SRAM8-11  :64KB
  SRAM12-15 :128KB
  SRAM16-31 :256KB

因?yàn)?RT500/600 都是基于 ARM Cortex-M33,所以片內(nèi) SRAM 在系統(tǒng)地址映射里有 Secure 和 Non-Secure 兩個(gè)不同起始地址,再加上可以通過 Code 和 Data 兩個(gè)不同總線去訪問,所以應(yīng)用里可以通過如下 4 個(gè)不同起始地址來訪問到這同一塊物理 SRAM。

這些 SRAM 分區(qū)除了大小不同之外,有一些還被賦予了特殊用途。比如 SRAM2,3 被 ROM API 征用了,如果應(yīng)用里需要調(diào)用 ROM API,需要釋放 SRAM2,3 使用權(quán)。SRAM0 則更特殊,它是唯一的一個(gè)軟復(fù)位后依舊能保持內(nèi)容的分區(qū)(其它分區(qū)復(fù)位后默認(rèn)是Power down狀態(tài),不過上電 BootROM 執(zhí)行時(shí)會(huì)將全部分區(qū)都打開)。

-(適用RT500/600)The SRAM2,3   region [0x10000-0x1BFFF] is reserved for ROM code. 
-(適用RT500/600)The SRAM0,3   region [0x0-0xFFFF], [0x1C000-0x1FFFF] are reserved for app-specific use cases. 
-(適用RT500/600)The SRAM4-11  region [0x20000-0x7FFFF] is reserved for Non-cached shared memory between M33 and DSP. 
-(適用RT500)    The SRAM12-21 region [0x80000-0x27FFFF] is reserved for DSP code and data.

全部 SRAM 分區(qū)的電源開關(guān)在 SYSCTL0->PDRUNCFG2,3寄存器中,其中 PDRUNCFG2 控制的是 SRAM 各分區(qū)存儲(chǔ)介質(zhì)的電,PDRUNCFG3 控制的是 SRAM 各分區(qū)外圍支持電路(線性驅(qū)動(dòng)器、感測(cè)放大器)的電。如果我們想在保持 SRAM 中內(nèi)容的情況下省電,可以僅操作 PDRUNCFG3 去關(guān)閉外圍。

二、功耗測(cè)量方法

功耗測(cè)量最簡單的辦法就是找一個(gè)萬用表,調(diào)節(jié)到電流測(cè)量模式,將其串到 VDDCORE 信號(hào)上,MIMXRT595-EVK (Rev.D3) 板卡特地設(shè)計(jì)了 JS25 接頭,方便測(cè)量電流。

板子上電,應(yīng)用程序加載執(zhí)行后,便可以實(shí)時(shí)觀測(cè)到運(yùn)行時(shí)電流。不過電流測(cè)量有幾個(gè)注意事項(xiàng):

1. 不要掛載調(diào)試器在線運(yùn)行時(shí)測(cè)量電流,會(huì)導(dǎo)致結(jié)果偏大。
2. 應(yīng)用程序里如果有涉及模塊電源開關(guān)代碼,不要使能編譯器優(yōu)化等級(jí),防止代碼優(yōu)化影響結(jié)果(電源開關(guān)有順序要求)。
3. 如果是 CPU 高頻運(yùn)算相關(guān)代碼,不同編譯器下會(huì)導(dǎo)致結(jié)果不同,因?yàn)榇a密度可能有差異。
4. 即使是單純 while (1) 執(zhí)行(可以在前面按需要加多個(gè) NOP() 改變 while(1) 指令地址),指令地址不同也可能導(dǎo)致結(jié)果不同。

三、功耗測(cè)量結(jié)果

最后痞子衡在 MIMXRT595-EVK (Rev.D3) 板上借助 SDK_2_13_1_EVK-MIMXRT595boardsevkmimxrt595demo_appshello_worldiar 模板例程(debug Build,需要修改 main 函數(shù)以及相應(yīng)修改鏈接文件),來測(cè)試代碼在不同 SRAM 分區(qū)下執(zhí)行的電流情況:

void?sram_power_cfg(void)
{
????PRINTF("CPU?Frequency?%dn",?CLOCK_GetFreq(kCLOCK_CoreSysClk));
????PRINTF("Main?Clock?%dn",?CLOCK_GetFreq(kCLOCK_BusClk));
????//?控制?SRAM?分區(qū)電源
????SYSCTL0->PDRUNCFG2_SET?=?0xFFFFFFFC;
????SYSCTL0->PDRUNCFG3_SET?=?0xFFFFFFFC;
????PRINTF("PDRUNCFG?0x%x,?0x%x,?0x%x,?0x%xn",?SYSCTL0->PDRUNCFG0,?SYSCTL0->PDRUNCFG1,?SYSCTL0->PDRUNCFG2,?SYSCTL0->PDRUNCFG3);
}

int?main(void)
{
????BOARD_InitPins();
????BOARD_BootClockRUN();
????BOARD_InitDebugConsole();
????sram_power_cfg();
????//?增減?nop?指令數(shù)量來控制?while(1)?指令地址
????asm("nop");
????//asm("nop");
????//asm("nop");
????//asm("nop");
????while?(1)
????{
????}
}

最終測(cè)試結(jié)果如下,不同大小的 SRAM 分區(qū)功耗是有差異的,并且即使 SRAM 分區(qū)大小相同,功耗也可能有差異。此外 while(1) 指令地址不同導(dǎo)致的運(yùn)行功耗差異也不?。?/p>

RO section in SRAMx
RW section in SRAM0
SYSCTL0->PDRUNCFG2,3值 NOP數(shù)控制
while(1)指令地址
VDDCORE電流
1 0xFFFFFFFC 0xbe50/0xbe52/0xbe58/oxbe5a 29.39 - 30.52mA
1 0xFFFFFFFC 0xbe54/0xbe56/0xbe5c/oxbe5e 32.55 - 33.86mA
8 0xFFFFFEFE 0x43e50/0x43e52/0x43e58/ox43e5a ~30.4mA
8 0xFFFFFEFE 0x43e54/0x43e56/0x43e5c/ox43e5e ~34.3mA
12 0xFFFFEFFE 0x83e50/0x83e52/0x83e58/ox83e5a ~31.97mA
12 0xFFFFEFFE 0x83e54/0x83e56/0x83e5c/ox83e5e ~37.03mA
16 0xFFFEFFFE 0x103e50/0x103e52/0x103e58/ox103e5a ~31.45mA
16 0xFFFEFFFE 0x103e54/0x103e56/0x103e5c/ox103e5e ~34.7mA
30 0xBFFFFFFE 0x483e50/0x483e52/0x483e58/ox483e5a ~34.66mA
30 0xBFFFFFFE 0x483e54/0x483e56/0x483e5c/ox483e5e ~42.2mA

至此,從功耗測(cè)試角度了解i.MXRTxxx系列片內(nèi)SRAM分區(qū)電源控制痞子衡便介紹完畢了,掌聲在哪里~~~

 

 

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
SME2470-021 1 Honeywell Microelectronics & Precision Sensors Photo Transistor Detector, Surface Mount, 3.81 X 2.54 X 2.10 MM, CERAMIC PACKAGE-SME2470
$7.64 查看
SY89831UMG 1 Microchip Technology Inc 89831 SERIES, LOW SKEW CLOCK DRIVER, 4 TRUE OUTPUT(S), 0 INVERTED OUTPUT(S), QCC16
$8.59 查看
CPC1510GSTR 1 IXYS Corporation Transistor Output SSR, 1-Channel, 3750V Isolation, SURFACE MOUNT PACKAGE-6
$2.3 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

碩士畢業(yè)于蘇州大學(xué)電子信息學(xué)院,目前就職于恩智浦(NXP)半導(dǎo)體MCU系統(tǒng)部門,擔(dān)任嵌入式系統(tǒng)應(yīng)用工程師。痞子衡會(huì)定期分享嵌入式相關(guān)文章