從i.MX RT1160/ RT1170 B0以及后續(xù)的RT1180開始,BootROM引入了XMCD新功能,其用途與傳統(tǒng)DCD功能(之前文章介紹過)類似。DCD可以實(shí)現(xiàn)對(duì)芯片指定外設(shè)的配置,常常用于配置SEMC去初始化 SDRAM。但DCD僅支持寄存器操作,因此用戶需要從寄存器角度去理解去配置,這種方式較為復(fù)雜且對(duì)用戶來說不夠友好,對(duì)于具有復(fù)雜時(shí)序配置要求的外設(shè)來說更加難以使用。
基于此,BootROM推出了XMCD,以一種對(duì)用戶更友好更直觀的方式對(duì) SDRAM/HyperRAM等外設(shè)進(jìn)行配置。
不過大家可能并不熟悉該功能或者還沒真正的去使用過,今天就以RT1170上的XMCD為例帶大家一探究竟。
1. 何為XMCD
XMCD全稱ExternalMemory Configuration Data,是i.MX RT11xx系列芯片BootROM中的新功能,與DCD類似,用于應(yīng)用程序啟動(dòng)前對(duì)系統(tǒng)外設(shè)進(jìn)行特定配置。XMCD數(shù)據(jù)塊位于IVT頭偏移0x40的位置,由XMCD頭和外設(shè)特定配置塊組成。 XMCD支持配置的設(shè)備類型及相應(yīng)的配置塊如下所示:
HyperRAM/APMemory (FlexSPI接口) – FlexSPI RAM 配置塊
SDRAM (SEMC接口) – SEMC SDRAM 配置塊
XMCD頭的定義如圖1所示:
圖1 XMCD頭
其中,[19:16]和[15:11]域僅對(duì)FlexSPI接口的外設(shè)有效,當(dāng)選擇SEMC接口時(shí),這些區(qū)域被忽略,設(shè)為0即可。[11:0]域用于設(shè)置XMCD數(shù)據(jù)塊的總大小,等于XMCD頭大小+配置塊大小。
下面分別介紹兩種外設(shè)配置塊:
1.1 FlexSPI RAM配置塊
FlexSPI RAM 配置塊用于配置連接到FlexSPI接口的HyperRAM或者APMemoryPSRAM外設(shè)。提供了簡(jiǎn)化版和完整版兩種配置方式供用戶選擇。
其中,簡(jiǎn)化版配置可以滿足大部分HyperRAM 或 APMemory 外設(shè)的典型應(yīng)用。如圖2所示,用戶僅需要簡(jiǎn)單配置設(shè)備類型,頻率,PINMUX等參數(shù)即可成功初始化外設(shè)。
圖 2 簡(jiǎn)化版配置
當(dāng)然,如果用戶需要啟用一些高級(jí)功能,XMCD還提供了完整的512字節(jié)FlexSPI RAM配置塊以支持靈活的配置。具體的配置內(nèi)容詳見RT1170 Reference Manual的10.8.2.2章節(jié)。
1.2 SEMC SDRAM配置塊SEMC SDRAM配置塊用于配置連接到SEMC接口的SDRAM設(shè)備。與FlexSPI類似,也提供了簡(jiǎn)化版和完整版兩種配置方式供用戶選擇。
XMCD提供了68字節(jié)數(shù)據(jù)結(jié)構(gòu)用于SDRAM配置,圖3展示了數(shù)據(jù)結(jié)構(gòu)的前10字節(jié)內(nèi)容。當(dāng)選擇簡(jiǎn)化配置時(shí)(即圖中config_option設(shè)為0x00),僅需要配置該數(shù)據(jù)結(jié)構(gòu)的前9個(gè)字節(jié),即時(shí)鐘頻率,設(shè)備大小和port大小,不過該配置僅適用于連接到CS0的SDRAM外設(shè)且SDRAM相關(guān)參數(shù)是固定的,若外設(shè)連接到其他CS或當(dāng)前參數(shù)無法成功初始化SDRAM,則需要使用完整配置。
若選擇完整配置(即圖中config_option設(shè)為0xFF),則需要配置整個(gè)68字節(jié)。完整數(shù)據(jù)結(jié)構(gòu)詳見Reference Manual第10.8.3.1章節(jié)。
圖3 SDRAM配置數(shù)據(jù)結(jié)構(gòu)(前10字節(jié))
2. 如何使用XMCD
2.1 SDK的使用
RT1170 SDK從 2.12.0開始,就已經(jīng)加入了XMCD功能且boot的時(shí)候默認(rèn)使用XMCD初始化SDRAM,并采用簡(jiǎn)化版配置。
任意打開一個(gè)示例工程,都會(huì)包含xmcd.c/h文件,當(dāng)工程選項(xiàng)預(yù)編譯宏里有XIP_BOOT_HEADER_XMCD_ENABLE=1時(shí)被使能。
圖4工程文件中的XMCD
不過SDK里面僅實(shí)現(xiàn)了使用XMCD簡(jiǎn)化配置初始化SDRAM,對(duì)于FlexSPI外設(shè)的初始化或者完整配置需要用戶參考現(xiàn)有XMCD代碼,結(jié)合前面介紹的SEMC/FlexSPI配置塊的定義進(jìn)行具體配置。
2.2 使用MCUBootUtility工具
NXP-MCUBootUtility是一款功能強(qiáng)大的一站式安全加密啟動(dòng)工具,其v5.3.2版本可以支持XMCD功能進(jìn)行FlexSPI和SEMC外設(shè)的配置。
下載地址:https://github.com/JayHeng/NXP-MCUBootUtility/releases/tag/v5.3.2
該工具的XMCD配置界面如圖5所示:
圖5XMCD配置界面
該工具目前只有簡(jiǎn)化配置支持界面直接配置,完整配置需要用戶生成相應(yīng)的XMCD bin文件(該文件由XMC頭與外設(shè)配置塊組成)然后導(dǎo)入。
選擇Use XMCD option即可進(jìn)行外設(shè)的簡(jiǎn)化配置,如圖6所示,選擇SEMC或FlexSPI接口,然后在下方對(duì)應(yīng)區(qū)域填入所需參數(shù)即可。
圖6
XMCD簡(jiǎn)化配置
配置完XMCD后,用戶需要再準(zhǔn)備一份應(yīng)用程序,該應(yīng)用程序鏈接到對(duì)應(yīng)外設(shè)地址中,且不用帶boot header,然后導(dǎo)入工具,執(zhí)行All-In-One Action 操作就可以成功生成可啟動(dòng)文件并下載到板卡中去執(zhí)行。
圖7是讀回來的可啟動(dòng)文件,可以看到在IVT頭偏移0x40的位置便是相應(yīng)的XMCD數(shù)據(jù)。
圖7 可啟動(dòng)文件中的XMCD數(shù)據(jù)
-
mcu
+關(guān)注
關(guān)注
146文章
17824瀏覽量
360175 -
寄存器
+關(guān)注
關(guān)注
31文章
5421瀏覽量
123286 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3322瀏覽量
58703
原文標(biāo)題:MCU上簡(jiǎn)單易用的特定外設(shè)配置功能 - XMCD
文章出處:【微信號(hào):pzh_mcu,微信公眾號(hào):痞子衡嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
在嵌入式系統(tǒng)中,主控MCU集成多種片上外設(shè)設(shè)計(jì)

EFM32系列32位MCU的GPIO配置
如何使用MCU進(jìn)行簡(jiǎn)單的功能增強(qiáng)?
STM32CubeMX配置MCU外設(shè)的過程是怎樣的
MCU模塊的功能有哪些
采用高性能MCU且支持BLE功能的IoT節(jié)點(diǎn)參考設(shè)計(jì)
恩智浦推“簡(jiǎn)單易用”型USB微控制器 提供眾多增強(qiáng)功能
你知道MCU還可以簡(jiǎn)單的功能增強(qiáng)嗎_如何增強(qiáng)?
基于標(biāo)準(zhǔn)的MCU內(nèi)核和外設(shè)適用于特定的應(yīng)用

單片機(jī)的控制外設(shè)是什么?和控制外設(shè)的使用資料說明

如何使用MCU進(jìn)行簡(jiǎn)單的功能增強(qiáng)
通過RT-Thread Studio配置N32L406片上外設(shè)DAC的功能

XMCD – i.MX RT11xx系列簡(jiǎn)單易用的特定外設(shè)配置功能

車規(guī)MCU功能安全外設(shè)驅(qū)動(dòng)

評(píng)論