0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

i.MX RT的FlexRAM配置問(wèn)題

jf_pJlTbmA9 ? 來(lái)源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2023-10-24 15:46 ? 次閱讀

本文以i.MXRT1050為例來(lái)做說(shuō)明,其它i.MX RT10xx系列在FlexRAM的使用上是一樣的,只是容量大小有差別。

一、文檔說(shuō)明

i.MX RT1050一共有512KB內(nèi)部FlexRAM,默認(rèn)的情況是128KB ITCM,128KB DTCM,256KB的OCRAM。在實(shí)際的使用中,有些客戶需要重新分配各個(gè)存儲(chǔ)區(qū)的大小,來(lái)均衡自己應(yīng)用所需要的ITCM, DTCM以及OCRAM容量。

通過(guò)官方應(yīng)用筆記Using the i.MX RT FlexRAM,我們可以知道一些關(guān)于FlexRAM的知識(shí)以及配置的限制等。

重新配置FlexRAM的分區(qū)情況,主要可以通過(guò)FUSE或者IOMUXC_GPR_GPR17寄存器去配置,具體關(guān)系如下:

wKgZomUDy8uAPi-MAAEt8rBZ-JU755.png

如果修改fuse,那么以后就難以重新修改,因?yàn)閒use的位只能從0到1,不能從1到0,所以,在實(shí)際的調(diào)試過(guò)程中,可以通過(guò)修改內(nèi)部寄存器方式臨時(shí)修改FlexRAM的分區(qū)配置。

最近發(fā)現(xiàn)有部分網(wǎng)友在使用寄存器重新分區(qū)FlexRAM的過(guò)程中,出現(xiàn)了各種各樣的問(wèn)題,比如不能debug,debug問(wèn)題解決之后,又出現(xiàn)debug可以運(yùn)行,但是下載進(jìn)去,重新復(fù)位代碼不能起來(lái)的問(wèn)題。

本篇文章針對(duì)需要配置FlexRAM功能的網(wǎng)友,總結(jié)了在MCUXPresso IDE下具體的重新配置i.MX RT1050 FlexRAM ITCM、DTCM以及OCRAM大小的步驟, 其他i.MX RT芯片系列方法也是類(lèi)似,只是具體的寄存器分區(qū)大小,按照實(shí)際的芯片寄存器去配置。

二、FlexRAM配置分析

i.MXRT1050 默認(rèn)的FlexRAM配置為:128KB ITCM、128KB DTCM和256KB的OCRAM。那么如果需要配置FlexRAM為:128KB ITCM、256KB DTCM和128KB的OCRAM,應(yīng)該怎么做呢?

從上面的表格,我們可以看出,可以將IOMUXC_GPR_GPR17配置為下表的黃色行數(shù)據(jù):

wKgaomUDy82AafRLAAEuNKeQwqg165.png

IOMUXC_GPR_GPR17寄存器中每2位表示一個(gè)Bank,定義如下:

00b—bank is not used.

01b—bank is configured for OCRAM.

10b—bank is configured for DTCM.

11b—bank is configured for ITCM.

i.MX RT1050共有512KB FlexRAM, 做16等分,則每個(gè)bank 為512KB/16=32KB。

所以需要128KB ITCM, 256KB DTCM, 128KB的OCRAM時(shí),分配如下:

ITCM:4個(gè)bank,共4個(gè)11b

DTCM: 8個(gè)bank, 共8個(gè)10b

OCRAM: 4個(gè)bank, 共4個(gè)01b

FlexRAM分區(qū)地址關(guān)系如下:

wKgaomUDy86AS0CJAABrk8iVT-k081.png 相關(guān)的寄存器配置如下: IOMUXC_GPR->GPR17 = 0x5AAFFAA5; IOMUXC_GPR->GPR16 |= 0x7; IOMUXC_GPR->GPR14 = (9<<20) | (8<<16);

三、MCUXPresso IDE的配置步驟

下面在MIMXRT1050-EVKB開(kāi)發(fā)板上以SDK 的led_blinky MCUXpresso工程為例,給出具體操作步驟。

首先下載最新的SDK并且在MCUXpresso IDE中導(dǎo)入led_blinky工程。

修改MCU Settings的memory配置

wKgZomUDy8-AEjzKAAFY1VXzlgU166.png

將DTCM, ITCM, OCRAM改為實(shí)際需要的大小后,點(diǎn)擊apply。

在startup文件里的Reset代碼部分添加FlexRAM的代碼:

FLEXRAM->TCM_CTRL = 4;

IOMUXC_GPR->GPR17 = 0x5AAFFAA5;

IOMUXC_GPR->GPR16 |= 0x7;

IOMUXC_GPR->GPR14 = (9<<20) | (8<<16) ;

準(zhǔn)備IDE的調(diào)試腳本.scp文件

RT1050_connect_128Kocram_128Kitcm_256Kdtcm.scp 內(nèi)容為:

100REM===============================
110REMRT1050_connect.scp
120REM
130REMCopyright2019NXP
140REMAllrightsreserved.
150REM===============================
160print"RT1050ConnectScript"
170REMprobelist
180p%=probefirstfound
190remprobeopenbyindexp%
200wireswdconnectp%
210selectprobecorep%0
220cminitapdpthis
230cmhaltthis
235goto320
240remtrapinbootrom
250cmwatchsetthis00x400F8004RW
260cmresetvectorcatchclearthis
270print"Resettingandtrapping"
280cmsysresetreqthis
290print"Backfromreset"
300cmresetvectorcatchsetthis
310cmwatchclearthis0
320print"DisablingMPU"
330s%=Peek32this0xE000ED94
340s%=s% 0xFFFFFFFE
350Poke32this0xE000ED94s%
360REM======ConfigureFlexRAM======
370print"ConfigureFlexRAMfor128KBOCRAM,128KBI-TCM,256KBD-TCM"
380REMTCMCTRLPoke0x400B0000-toforceRAMclockingandsetwaitstates=b100
390Poke32this0x400B00000x4
400REMIOMUXC_GPR170x400AC044-thissetsbitfieldallocationofFlexRAM32KBbankstoOC256KBb01,I128KBb11,D128KBb10
410Poke32this0x400AC0440x5AAFFAA5
420REMIOMUXC_GPR160x400AC040-thissetsenablesforIandDTCMandthesourceoftheTCMconfig=0x200007
430Poke32this0x400AC0400x200007
440print"Finished"
450REM===============================
460end

將這個(gè)超長(zhǎng)文件名的文件,RT1050_connect_128Kocram_128Kitcm_256Kdtcm.scp拷貝到IDE安裝目錄下:

C:nxpMCUXpressoIDE_11.1.0_3209idebinariesScripts

拷貝完之后,在debug configuration界面的script connect 中添加這個(gè)腳本文件:

wKgZomUDy9GAG8bHAALqKFOMhg8935.png

修改stack的起始位置

將STACK的位置由end改為start,這樣可以解決燒錄之后,重新上電不運(yùn)行的問(wèn)題。

wKgaomUDy9OAWPRMAAF72f3nZN8735.png

下面就可以編譯代碼,并且運(yùn)行,測(cè)試結(jié)果如下:

wKgZomUDy9WAUg51AATmqGEqn4M728.png

可以發(fā)現(xiàn),寄存器的FlexRAM情況確實(shí)是需要的配置情況,燒錄之后,退出debug重新上電,可以發(fā)現(xiàn)led還是可以閃爍,說(shuō)明功能已經(jīng)正常工作。

本文最初發(fā)表在“恩智浦中文社區(qū)”,可以在原帖那里下載到代碼。

來(lái)源:恩智浦MCU加油站

免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119192
  • i.MX
    +關(guān)注

    關(guān)注

    1

    文章

    44

    瀏覽量

    35484
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    i.Mx RT平臺(tái)內(nèi)存建議

    哪些超總線存儲(chǔ)器被推薦用于NXP的I.MX RT平臺(tái)。CyPress的超閃存/HyrRAM MCP設(shè)備與NXP的I.MX RT系列兼容嗎?應(yīng)用筆記和用戶體驗(yàn)將不勝感激。 以上來(lái)自于百
    發(fā)表于 09-05 14:33

    i.MX RT1020到i.MX RT1010的遷移手冊(cè)

    i.MX RT1020到i.MX RT1010的遷移指南
    發(fā)表于 12-12 06:25

    使用i.MX RTFlexRAM的教程

    使用i.MX RTFlexRAM
    發(fā)表于 12-12 07:36

    i.MX RT1060到i.MX RT1064的遷移手冊(cè)

    i.MX RT1060到i.MX RT1064的遷移指南
    發(fā)表于 12-12 07:21

    01:i.MX RT系列產(chǎn)品的介紹與演示

    i.MX RT產(chǎn)品是今年市場(chǎng)上最受歡迎的跨界MCU產(chǎn)品。本講座將對(duì)i.MX RT系列做一個(gè)簡(jiǎn)要的介紹,包括主要特性和主要外設(shè)。然后會(huì)分享能夠加快用戶設(shè)計(jì)進(jìn)度的各種攻略。作為無(wú)閃存的MC
    的頭像 發(fā)表于 01-23 07:21 ?2905次閱讀
    01:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>系列產(chǎn)品的介紹與演示

    01:i.MX RT的市場(chǎng)應(yīng)用和參考解決方案

    i.MX RT產(chǎn)品是今年市場(chǎng)上最受歡迎的跨界MCU產(chǎn)品。i.MX RT定位為一款MCU產(chǎn)品,它可以重復(fù)利用傳統(tǒng)的Arm MCU生態(tài)系統(tǒng)。除此之外,本次講座還將簡(jiǎn)要介紹
    的頭像 發(fā)表于 01-21 07:13 ?3234次閱讀
    01:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的市場(chǎng)應(yīng)用和參考解決方案

    02:i.MX RT系列產(chǎn)品的介紹與演示

    i.MX RT產(chǎn)品是今年市場(chǎng)上最受歡迎的跨界MCU產(chǎn)品。本講座將對(duì)i.MX RT系列做一個(gè)簡(jiǎn)要的介紹,包括主要特性和主要外設(shè)。然后會(huì)分享能夠加快用戶設(shè)計(jì)進(jìn)度的各種攻略。作為無(wú)閃存的MC
    的頭像 發(fā)表于 01-21 07:04 ?2183次閱讀
    02:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>系列產(chǎn)品的介紹與演示

    恩智浦i.MX RT1170開(kāi)創(chuàng)GHz MCU時(shí)代

    自2017年上市以來(lái),i.MX RT系列取得了優(yōu)秀的市場(chǎng)表現(xiàn)。i.MX RT1170跨界MCU是恩智浦i.MX
    的頭像 發(fā)表于 03-22 11:14 ?3321次閱讀

    恩智浦i.MX RT1170在將該系列帶上了更高的層面

    自2017年上市以來(lái),i.MX RT系列取得了優(yōu)秀的市場(chǎng)表現(xiàn)。i.MX RT1170跨界MCU是恩智浦i.MX
    的頭像 發(fā)表于 05-18 11:15 ?3625次閱讀

    i.MX RT開(kāi)發(fā)筆記-08 | i.MX RT1062嵌套中斷向量控制器NVIC(按鍵中斷檢測(cè))

    系列文章目錄i.MX RT開(kāi)發(fā)筆記-01 | 初識(shí) i.MX RT1062 跨界MCUi.MX RT
    發(fā)表于 12-01 13:51 ?2次下載
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>開(kāi)發(fā)筆記-08 | <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1062嵌套中斷向量控制器NVIC(按鍵中斷檢測(cè))

    RT-Thread & NXP 發(fā)布 i.MX RT 系列 BSP 新框架

    前言i.MX RT 是 NXP 推出的跨界處理器系列。該系列下又包括 i.MX RT1020、i.MX
    發(fā)表于 12-07 13:06 ?2次下載
    <b class='flag-5'>RT</b>-Thread & NXP 發(fā)布 <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b> 系列 BSP 新框架

    i.MX RT超低功耗模式捉蟲(chóng)記

    SNVS模式是i.MX RT10XX和i.MX RT11XX系列MCU中功耗最低的狀態(tài),其標(biāo)志性特點(diǎn)是除SNVS電源域保持供電,其余的電源域均處于斷電狀態(tài)。
    發(fā)表于 02-08 15:14 ?0次下載
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>超低功耗模式捉蟲(chóng)記

    適用于i.MX RT500和i.MX RT600 MCU的Xtensa音頻框架介紹

    在眾多的恩智浦i.MX RT跨界處理器當(dāng)中,您可能會(huì)發(fā)現(xiàn)有些系列除了Arm內(nèi)核之外還結(jié)合了高性能的DSP,利用集成DSP的技術(shù)優(yōu)勢(shì),可提供高性能音頻數(shù)字信號(hào)處理能力,并包含特定算法操作,可實(shí)現(xiàn)完全
    的頭像 發(fā)表于 11-10 09:39 ?2382次閱讀

    RT-Thread文檔_野火 I.MX RT1052上手指南

    RT-Thread文檔_野火 I.MX RT1052 上手指南
    發(fā)表于 02-22 18:25 ?2次下載
    <b class='flag-5'>RT</b>-Thread文檔_野火 <b class='flag-5'>I.MX</b> <b class='flag-5'>RT</b>1052上手指南

    理解i.MX RT中FlexSPI外設(shè)lookupTable里配置訪問(wèn)行列混合尋址Memory的參數(shù)值

    理解i.MX RT中FlexSPI外設(shè)lookupTable里配置訪問(wèn)行列混合尋址Memory的參數(shù)值
    的頭像 發(fā)表于 10-30 17:23 ?408次閱讀
    理解<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>中FlexSPI外設(shè)lookupTable里<b class='flag-5'>配置</b>訪問(wèn)行列混合尋址Memory的參數(shù)值