精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文了解i.MXRTxxx系列片內SRAM分區電源控制

痞子衡嵌入式 ? 來源:痞子衡嵌入式 ? 2023-07-07 09:58 ? 次閱讀

大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是從功耗測試角度了解i.MXRTxxx系列片內SRAM分區電源控制

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

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

一、片內SRAM分區控制

恩智浦 i.MXRT 三位數系列目前主要是 RT500 和 RT600 兩大型號,前者包含 5MB 片內 SRAM,后者包含 4.5MB 片內 SRAM。因為片內 RAM 夠大,所以為其設計的電源控制策略就更精細。

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

- RT500 一共 32 個 SRAM 分區(SRAM0-31):
- RT600 一共 30 個 SRAM 分區(SRAM0-29):
- 不同大小的 SRAM 分區:
  SRAM0-7   :32KB
  SRAM8-11  :64KB
  SRAM12-15 :128KB
  SRAM16-31 :256KB
96685d9c-1bf1-11ee-962d-dac502259ad0.png

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

9686621a-1bf1-11ee-962d-dac502259ad0.png

這些 SRAM 分區除了大小不同之外,有一些還被賦予了特殊用途。比如 SRAM2,3 被 ROM API 征用了,如果應用里需要調用 ROM API,需要釋放 SRAM2,3 使用權。SRAM0 則更特殊,它是唯一的一個軟復位后依舊能保持內容的分區(其它分區復位后默認是Power down狀態,不過上電 BootROM 執行時會將全部分區都打開)。

-(適用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 分區的電源開關在 SYSCTL0->PDRUNCFG2,3寄存器中,其中 PDRUNCFG2 控制的是 SRAM 各分區存儲介質的電,PDRUNCFG3 控制的是 SRAM 各分區外圍支持電路(線性驅動器、感測放大器)的電。如果我們想在保持 SRAM 中內容的情況下省電,可以僅操作 PDRUNCFG3 去關閉外圍。

96a4dd12-1bf1-11ee-962d-dac502259ad0.png

二、功耗測量方法

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

96cec730-1bf1-11ee-962d-dac502259ad0.png

板子上電,應用程序加載執行后,便可以實時觀測到運行時電流。不過電流測量有幾個注意事項:

1. 不要掛載調試器在線運行時測量電流,會導致結果偏大。
2. 應用程序里如果有涉及模塊電源開關代碼,不要使能編譯器優化等級,防止代碼優化影響結果(電源開關有順序要求)。
3. 如果是 CPU 高頻運算相關代碼,不同編譯器下會導致結果不同,因為代碼密度可能有差異。
4. 即使是單純 while (1) 執行(可以在前面按需要加多個 NOP() 改變 while(1) 指令地址),指令地址不同也可能導致結果不同。
96d9287e-1bf1-11ee-962d-dac502259ad0.jpg

三、功耗測量結果

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

voidsram_power_cfg(void)
{
PRINTF("CPUFrequency%d
",CLOCK_GetFreq(kCLOCK_CoreSysClk));
PRINTF("MainClock%d
",CLOCK_GetFreq(kCLOCK_BusClk));
//控制SRAM分區電源
SYSCTL0->PDRUNCFG2_SET=0xFFFFFFFC;
SYSCTL0->PDRUNCFG3_SET=0xFFFFFFFC;
PRINTF("PDRUNCFG0x%x,0x%x,0x%x,0x%x
",SYSCTL0->PDRUNCFG0,SYSCTL0->PDRUNCFG1,SYSCTL0->PDRUNCFG2,SYSCTL0->PDRUNCFG3);
}

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

最終測試結果如下,不同大小的 SRAM 分區功耗是有差異的,并且即使 SRAM 分區大小相同,功耗也可能有差異。此外 while(1) 指令地址不同導致的運行功耗差異也不小:

RO section in SRAMx
RW section in SRAM0
SYSCTL0->PDRUNCFG2,3值 NOP數控
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

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16984

    瀏覽量

    350293
  • 存儲器
    +關注

    關注

    38

    文章

    7452

    瀏覽量

    163598
  • 恩智浦
    +關注

    關注

    14

    文章

    5825

    瀏覽量

    106674
  • sram
    +關注

    關注

    6

    文章

    763

    瀏覽量

    114631
  • 電源控制
    +關注

    關注

    2

    文章

    135

    瀏覽量

    26589

原文標題:竟有如此精細化片內SRAM電源控制的MCU?

文章出處:【微信號:pzh_mcu,微信公眾號:痞子衡嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    68HC08系列單片機FLASH的在線寫入方法

    FLASH主要是用來保存用戶程序的,為避免在程序運行時往FLASH中寫入數據所導致的單片機復位,因此采用了調用芯片內部監控ROM中自帶的FLASH操作子程序的方法。該方法適用于所有68HC08系列片內含FLASH芯片的單片
    發表于 03-02 14:07

    Linux下處理器SRAM配置有什么優點?

    本文以MP3解碼器為例,介紹了種在嵌入式Linux系統下配置使用處理器SRAM的應用方案,有效提高了代碼的解碼效率,降低了執行功耗。該方案不論在性能還是成本上都得到了很大改善。
    發表于 09-24 07:09

    Linux下使用SRAM有什么優點?

    本文以MP3解碼器為例,介紹了種在嵌入式Linux系統下配置使用處理器SRAM的應用方案,有效提高了代碼的解碼效率,降低了執行功耗。該方案不論在性能還是成本上都得到了很大改善。
    發表于 03-05 07:01

    i.MX RTxxx系列MCU的OTP介紹

      大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦i.MX RTxxx系列MCU的OTP。  在i.MXRTxxx啟動系列第二篇文章 Boot配置(ISP Pi
    發表于 12-16 07:49

    i.MXRTxxx系列ROM中靈活的串行NOR Flash啟動硬復位引腳選擇

    今天痞子衡給大家介紹的是i.MXRTxxx系列ROM中靈活的串行NOR Flash啟動硬復位引腳選擇。  關于 i.MXRT 系列 BootROM 中串行 NOR Flash 啟動流程
    發表于 12-21 06:34

    如何在PS中調用Zynq內部的XADC模塊進行溫度和電源電壓測量

    本文將介紹如何在PS中調用Zynq內部的XADC模塊進行溫度和電源電壓測量。先了解XADC的相關知識,再通過實例體會XADC的用法,學習XADC API函數的使用。XADC介紹XA
    發表于 12-27 06:18

    請教高手ARM不能和SRAM通信的原因

    做了款基于arm處理器的SOC芯片,流回來后測試發現,ARM能正常和SRAM和ROM通信,卻不能和
    發表于 06-10 15:50

    請教下大神在8051單片機RAM該如何分區呢?

    請教下大神在8051單片機RAM該如何分區呢?
    發表于 05-09 16:05

    HPM6000系列控制器的上各類SRAM使用指南

    HPM6000系列控制SRAM使用指南
    發表于 06-01 06:19

    請問AVR對SRAM的訪問需要多久?

    AVR對SRAM的訪問需要多久?
    發表于 10-24 07:49

    Linux下ColdFireSRAM的應用程序優化設計

    Linux下ColdFireSRAM的應用程序優化設計  本文以MP3解碼器為例,介紹了種在嵌入式Linux系統下配置使用處理器
    發表于 02-05 09:11 ?606次閱讀
    Linux下ColdFire<b class='flag-5'>片</b><b class='flag-5'>內</b><b class='flag-5'>SRAM</b>的應用程序優化設計

    闡述恩智浦新代的i.MXRT500

    自 2018 年 i.MXRTxxx 系列首款芯片 i.MXRT600(主打智能語音市場)問世以來,近兩年時間這個系列直沒有再出新品,這其
    發表于 08-06 18:08 ?4349次閱讀
    闡述恩智浦新<b class='flag-5'>一</b>代的<b class='flag-5'>i</b>.MXRT500

    i.MXRT系列的ROM API設計

    .MXRT1xxx 全系列的 ROM API 及其 FlexSPI NOR 驅動設計都講清楚了,其實 i.MXRTxxx 系列的 ROM API 設計跟 i.MXRT1xxx
    的頭像 發表于 10-30 10:52 ?556次閱讀

    i.MXRTxxx系列i.MXRT11xx系列雙程序啟動細節差異

    大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是i.MXRT500/600上串行NOR Flash雙程序可交替啟動設計。
    的頭像 發表于 05-06 12:44 ?2182次閱讀

    應用分享| HPM6000系列片SRAM揭秘

    本期開發筆記由費神編寫主要會為大家介紹HPM6000系列的各類SRAM并結合SeggerEmbeddedStudio的linker文件介紹,提供了如何使用這些SRAM的建議,趕快來
    的頭像 發表于 09-19 11:02 ?1801次閱讀
    應用分享| HPM6000<b class='flag-5'>系列片</b>上<b class='flag-5'>SRAM</b>揭秘