在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

重新分配FlexRAM的方法

li1756686189 ? 來源:嵌入式 MCU ? 2022-12-28 13:55 ? 次閱讀

應用筆記AN12077 解釋了如何通過應用程序啟動代碼中的軟件重新分配FlexRAM。下面將進一步詳細說明進行這些修改的方法。

RT Internal SRAM FlexRAM
RT1010 Up to128KB Up to128KB
RT1015 Up to128KB Up to128KB
RT1020 Up to256KB Up to256KB
RT1050 Up to 512 KB Up to 512 KB
RT1060 Up to 1MB Up to 512 KB
RT1064 Up to 1MB Up to 512 KB

對于RT106x系列,1MB的內部SRAM中只有512 KB可以通過FlexRAM重新分配為DTCM、ITCM和OCRAM。剩余的512 KB來自OCRAM,無法重新分配。對于所有其他RT10xx,可以將整個內部SRAM重新分配為DTCM、ITCM和OCRAM。應用筆記AN12077 第3.1.3.1節解釋了重新分配FlexRAM時的大小限制。值得一提的是,所有RT10xx部件中的ROM引導加載程序都使用OCRAM,因此在重新分配FlexRAM時,應該保留一些OCRAM,這不適用于RT106x,因為將始終擁有512 KB的OCRAM,無法重新分配。

MCUXpresso IDE中的實現

首先,需要將SDK示例導入MCUXpresso IDE工作區。為RT1050-EVKB導入了igpio_led_output示例。如果編譯此項目,將看到RT1050-EVKB上FlexRAM的默認配置如下:

SRAM_DTC:128 KB,SRAM_ITC:128 KB,SRAM_OC:256 KB

現在需要轉到文件startup_mimxrt1052.c中的復位處理程序。重新分配FlexRAM必須在配置FlexRAM之前完成,這就是為什么要在復位處理程序中完成的原因。需要修改以重新分配FlexRAM的寄存器是IOMUX _GPR_GPR16和IOMUX _GPR _GPR17。

Register Address
IOMUXC_GPR_GPR16 0x400AC040
IOMUXC_GPR_GPR17 0x400AC044

需要確定如何重新分配FlexRAM,以查看需要加載到寄存器IOMUXC_GPR_GPR17中的值。如果希望具有以下配置:

SRAM_DTC 256 KB
SRAM_ITC 128 KB
SRAM_OC 128KB

以下對IOMUXC_GPR_GPR17寄存器的解釋:

01c91946-8674-11ed-bfe3-dac502259ad0.png

需要加載到寄存器的值是0xAAAAFF55。其中,前4個存儲塊對應于128KB的SRAM_OC,接下來的4個存儲塊對應于128 KB的SRAM_ITC,最后8個存儲塊是256KB的SRAM-DTC。現在就可以開始在ResetISR處理程序中編寫代碼了。首先要做的是將新值加載到寄存器IOMUXC_GPR_GPR17中。之后,需要配置寄存器IOMUXC_GPR_GPR16,以指定FlexRAM存儲體配置應取自寄存器IOMUX _GPR_GPR 17,而不是熔絲Fuse。然后,如果在FlexRAM的新配置中,SRAM_DTC或SRAM_ITC的大小為0,則需要禁用寄存器IOMUXC_GPR_GPR16中的這些存儲器。代碼如下所示:

void ResetISR(void) {

 // Disable interrupts
 __asm volatile ("cpsid i");

 /* Reallocating the FlexRAM */
 __asm (".syntax unified
"

 "LDR R0, =0x400ac044
"http://Address of register IOMUXC_GPR_GPR17
 "LDR R1, =0xaaaaff55
"http://FlexRAM configuration DTC = 265KB, ITC = 128KB, OC = 128KB
 "STR R1,[R0]
"

 "LDR R0,=0x400ac040
"http://Address of register IOMUXC_GPR_GPR16
 "LDR R1,[R0]
"
 "ORR R1,R1,#4
"http://The 4 corresponds to setting the FLEXRAM_BANK_CFG_SEL bit in register IOMUXC_GPR_GPR16
 "STR R1,[R0]
"

#ifdef FLEXRAM_ITCM_ZERO_SIZE
 "LDR R0,=0x400ac040
"http://Address of register IOMUXC_GPR_GPR16
 "LDR R1,[R0]
"
 "AND R1,R1,#0xfffffffe
"http://Disabling SRAM_ITC in register IOMUXC_GPR_GPR16
 "STR R1,[R0]
"
#endif

#ifdef FLEXRAM_DTCM_ZERO_SIZE
 "LDR R0,=0x400ac040
"http://Address of register IOMUXC_GPR_GPR16
 "LDR R1,[R0]
"
 "AND R1,R1,#0xfffffffd
"http://Disabling SRAM_DTC in register IOMUXC_GPR_GPR16
 "STR R1,[R0]
"
#endif

 ".syntax divided
");

#if defined (__USE_CMSIS)
// If __USE_CMSIS defined, then call CMSIS SystemInit code
 SystemInit();

01e240ba-8674-11ed-bfe3-dac502259ad0.png

如果編譯項目,將看到控制臺上顯示的內存分布仍然是默認配置。這是因為修改了Reset處理程序以重新分配FlexRAM,但沒有修改鏈接器文件以匹配這些新大小。為此,需要轉到項目的屬性。進入屬性后,需要轉到C/C++構建->MCU設置。一旦進入MCU設置,需要修改SRAM內存的大小以匹配新配置。

02039fbc-8674-11ed-bfe3-dac502259ad0.png

在進行這些更改后,如果編譯項目,將看到控制臺中顯示的內存分布與現在新大小相匹配。

022491ea-8674-11ed-bfe3-dac502259ad0.png

需要修改內存保護單元(MPU)以匹配這些新的內存大小。為此,需要轉到文件板中的函數BOARD_ConfigMPU.c。在該函數中,需要找到分別對應于SRAM_ITC、SRAM_DTC和SRAM_OC的區域5、6和7。與寄存器IOMUXC_GPR_GPR14相同,如果內存的新大小不是32、64、128、256或512,則需要選擇下一個更大的數字。配置應如下所示:

/* Region 5 setting: Memory with Normal type, not shareable, outer/inner write back */
 MPU->RBAR = ARM_MPU_RBAR(5, 0x00000000U);
 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_128KB);

 /* Region 6 setting: Memory with Normal type, not shareable, outer/inner write back */
 MPU->RBAR = ARM_MPU_RBAR(6, 0x20000000U);
 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_256KB);

 /* Region 7 setting: Memory with Normal type, not shareable, outer/inner write back */
 MPU->RBAR = ARM_MPU_RBAR(7, 0x20200000U);
 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_128KB);

02484bb2-8674-11ed-bfe3-dac502259ad0.png

最后,需要將堆棧放在DTCM內存的開頭。為此,需要轉到項目的屬性。從那里,必須用C/C++構建和管理Linker腳本。

02720830-8674-11ed-bfe3-dac502259ad0.png

然后,需要在ResetISR函數中再添加兩條匯編指令。我們必須在匯編代碼的開頭添加以下兩條指令:

02c1f408-8674-11ed-bfe3-dac502259ad0.png

這些就是在啟動期間重新分配FlexRAM所需的所有更改。

調試會話: 為了驗證剛才所做的所有修改是否正確,將啟動調試會話。一旦到達main,在運行應用程序之前,將轉到外設視圖查看寄存器IOMUX _GPR_GPR16和IOMUX _GPR _GPR17,并驗證值是否正確。如下圖所示,在寄存器IOMUXC_GPR_GPR16中,將FLEXRAM_BANK_CFG_SEL配置為1,以使用寄存器IOMUX _GPR_GPRS17配置FLEXRAM。

02dd2142-8674-11ed-bfe3-dac502259ad0.png

最后,在寄存器IOMUXC_GPR_GPR17中,我們可以看到對應于新配置的值0xAAAAFF55。

02fe3d8c-8674-11ed-bfe3-dac502259ad0.png

通過熔絲重新分配FlexRAM

上述操作是如何通過在復位處理程序中編寫一些代碼來通過軟件重新分配FlexRAM。此過程工作正常,使用此方法測試可以配置不同大小RAM,但一旦找到應用程序的正確配置,建議通過熔絲配置這些新大小,而不是使用寄存器IOMUX _GPR_GPR17。在代碼中重新配置FlexRAM有很多危險區域。這幾乎都歸結為這樣一個事實:寫入RAM的任何代碼/數據/堆棧信息都可能在重新分配期間改變位置。這就是為什么一旦找到正確的配置,就應該通過熔絲進行應用。如果使用Fuse來配置FlexRAM,那么就不必擔心代碼和數據的移動,因為Fuse 設置被應用為硬件默認設置。記住,一旦燒了熔絲,就沒有退路了!這就是為什么首先通過軟件方法嘗試配置很重要。燒完熔絲后,無需修改復位處理程序,只需修改MPU以更改我們之前看到的區域大小和項目的MCU設置,以匹配通過熔絲配置的新內存大小。

負責FlexRAM配置的熔絲為Default_FlexRAM_Part,此熔絲的地址為0x6D0[15:13]。可以在參考手冊的Fusemap一章中找到有關此保險絲和不同配置的更多信息。要燒熔絲,建議使用blhost或MCUBootUtility。兩個工具的下載鏈接如下:

https://www.nxp.com/webapp/sps/download/license.jsp?colCode=blhost_2.6.2&appType=file1&location=null&DOWNLOAD_ID=null

https://github.com/JayHeng/NXP-MCUBootUtility

ResetISR.c參考代碼:

0315dfaa-8674-11ed-bfe3-dac502259ad0.png

審核編輯:湯梓紅

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

    關注

    31

    文章

    5363

    瀏覽量

    121177
  • sram
    +關注

    關注

    6

    文章

    768

    瀏覽量

    114888
  • mcuxpresso
    +關注

    關注

    1

    文章

    41

    瀏覽量

    4236

原文標題:重新分配 FlexRAM

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

收藏 人收藏

    評論

    相關推薦

    xilinx,ddrmig文件中管腳分配

    使用xilinx spartan6,在工程中使用原語生成DDR控制器mig文件,DDR數據管腳定義發生改變,需要重新分配管腳,求告知,這個管腳分配要怎么弄
    發表于 07-19 09:54

    6678工程如何分配存儲器地址范圍

    各位好! ??????? 之前使用ccs3.3創建2812的工程時,一般直接在TCF文件中手動的去重新分配存儲器的地址范圍,然后生成的cmd文件中也可以看到具體分配的結果。 ??????? 目前
    發表于 06-25 06:54

    無法修改許可證以允許重新分配產品

    嗨,我正在嘗試為獨立計算機重新分配vivado許可證文件。當我進入許可網站時,修改按鈕顯示為灰色。我已經使用激活后來的html鏈接導航到網站,并通過標準的Web訪問進入。請告訴我如何從舊的獨立機器
    發表于 12-13 10:49

    Linux的磁盤空間重新分配方法

    在使用CentOS6.3版本linux系統的時候,發現根目錄(/)的空間不是很充足,而其他目錄空間有很大的空閑,所以本文主要是針對現在已有的空間進行調整。首先,先來查看一下系統的空間分配情況:
    發表于 07-22 08:44

    使用i.MX RT的FlexRAM的教程

    使用i.MX RT的FlexRAM
    發表于 12-12 07:36

    如何在實時邊緣yocto項目中為監獄牢房重新分配資源?

    我想在實時邊緣 yocto 項目中為監獄牢房重新分配資源(can1)。我使用修改后的文件 fsl-ok1028a-rdb-jailhouse.dtb、inmate-ls1028a-rdb.dtb
    發表于 03-28 08:26

    S32K314在CS自動控制的情況下,可以在運行程序時重新分配CS引腳嗎?

    我正在使用 S32K314,在我的項目中我正在使用 QuadSPI。在我的 spi 閃存中,有兩個芯片選擇用于兩個不同的內存組。我猜在示例項目中,CS 引腳由驅動程序代碼控制。但我想將兩個引腳分配為 CS 并手動控制。我該怎么做? 在 CS 自動控制的情況下,我可以在運行程序時
    發表于 04-26 07:36

    如何為MIMXRT1062重新分配FlexRAM

    我正在研究 MIMXRT1062。 SRAM_DTC 溢出“SRAM_DTC”。我嘗試將 SRAM_DTC 加倍到 256KB 并相應地減少 SRAM_OC(如下)。之后,調試器停止工作。 我已經嘗試過這種方式 - 鏈接 1. 如何為 MIMXRT1062 重新分配 Flex
    發表于 05-29 06:17

    stm32f4的堆棧怎么分配

    使用一些大型的庫文件,要重新分配堆或者棧,那要怎么分配大小,總不可能一點點改變吧
    發表于 09-21 06:39

    電荷重新分配DAC,電荷重新分配DAC原理是什么?

    電荷重新分配DAC,電荷重新分配DAC原理是什么? DAC的發展經歷了從電子管、晶體管到集成電路的發展過程,早期的DAC采用電子管組裝而成。進入五
    發表于 03-24 13:38 ?1.1w次閱讀

    沃達豐及其競爭對手正在向政府施壓要求重新分配無線頻譜

    WISPA NZ主席邁克·史密斯(Mike Smith)在一份聲明中表示,“沃達豐及其競爭對手正在向政府施加巨大壓力,要求他們重新分配無線頻譜,以便他們能夠更經濟地運營5G”,但指出一些頻譜已經被大約30家地區性無線互聯網服務提供商使用,他們共同為數以萬計的農村客戶提供服務。
    發表于 08-06 10:55 ?799次閱讀

    澳大利亞政府計劃在2021年初對26GHz頻段的頻譜進行重新分配

    在澳大利亞通信和媒體管理局(ACMA)根據行業反饋制定了頻譜計劃后,通信、網絡安全和藝術部長保羅·弗萊徹(Paul Fletcher)發布了一份針對26GHz頻段頻譜的重新分配聲明。
    發表于 10-27 09:29 ?777次閱讀

    FCC將重新分配大部分5.9GHz頻段,為了非授權頻譜技術和C-V2X

    據外媒報道,當地時間12月12日,美國聯邦通信委員會(FCC)一致投票通過了一項提案,該提案將重新分配5.9GHz頻段的大部分頻譜,并將這些頻譜專用于非授權頻譜技術和C-V2X技術。
    的頭像 發表于 12-13 15:48 ?3570次閱讀

    i.MX RT的FlexRAM配置問題

    i.MX RT的FlexRAM配置問題
    的頭像 發表于 10-24 15:46 ?865次閱讀
    i.MX RT的<b class='flag-5'>FlexRAM</b>配置問題

    重新分配pod節點

    1、軟件包下載 去github上下載較新的Kubernetes軟件包https://github.com/ ? ? ? ? ? 2、升級說明 升級包括master節點升級和node節點的升級,本章升級至v1.15.12; Master節點的服務包括:apiserver、controller-manager、kube-scheduler; Node節點的服務包括:kubelet和kube-proxy; 由于apiserver被nginx代理,所以在升級的時候需要操作操作nginx注釋升級節點,避免帶來無法訪問的情況; 我們的master節點和node都是在同一個集群服務器上,所以一起進行操作; 3、確定節點升級順序 查看節
    的頭像 發表于 01-02 09:17 ?130次閱讀
    <b class='flag-5'>重新分配</b>pod節點
    主站蜘蛛池模板: 色婷婷九月| 久久久久久久久久久9精品视频 | 亚洲免费成人在线 | 日本不卡视频在线播放 | 九九热re | 天堂网www | 色吧久久 | 钻石午夜影院 | 男人天堂网在线视频 | 免费看污视频软件 | 色第一页 | 欧美刺激午夜性久久久久久久 | bt天堂电影| 亚洲深夜在线 | 午夜在线观看免费 | 免费精品一区二区三区在线观看 | 97伊人网| 天天爽天天色 | 一级片高清 | 中文字幕导航 | 久久精品视频国产 | 双性受粗大撑开白浊 | 四虎影视在线影院在线观看 | 日本不卡免费一区 | 夜夜狠狠| 国内视频一区 | 伊人久久大香线蕉综合亚洲 | 男人不识本网站上遍色站也枉然 | 天天插夜夜 | 在线观看永久免费 | 特黄特色视频 | 激情综合色综合久久综合 | 特级毛片aaaa级毛片免费 | 精品伊人久久香线蕉 | 高h乱肉辣文辣书阁 | 一级毛片aaaaaa视频免费看 | 国产美女精品久久久久久久免费 | 永久手机看片福利盒子 | 欧美日本俄罗斯一级毛片 | 色播影院性播免费看 | 三级黄色一级视频 |