從i.MX RT1160/ RT1170 B0以及后續的RT1180開始,BootROM引入了XMCD新功能,其用途與傳統DCD功能(之前文章介紹過)類似。DCD可以實現對芯片指定外設的配置,常常用于配置SEMC去初始化 SDRAM。但DCD僅支持寄存器操作,因此用戶需要從寄存器角度去理解去配置,這種方式較為復雜且對用戶來說不夠友好,對于具有復雜時序配置要求的外設來說更加難以使用。
基于此,BootROM推出了XMCD,以一種對用戶更友好更直觀的方式對 SDRAM/HyperRAM等外設進行配置。
不過大家可能并不熟悉該功能或者還沒真正的去使用過,今天就以RT1170上的XMCD為例帶大家一探究竟。
1. 何為XMCD
XMCD全稱ExternalMemory Configuration Data,是i.MX RT11xx系列芯片BootROM中的新功能,與DCD類似,用于應用程序啟動前對系統外設進行特定配置。XMCD數據塊位于IVT頭偏移0x40的位置,由XMCD頭和外設特定配置塊組成。 XMCD支持配置的設備類型及相應的配置塊如下所示:
-
HyperRAM/APMemory (FlexSPI接口) – FlexSPI RAM 配置塊
-
SDRAM (SEMC接口) – SEMC SDRAM 配置塊
XMCD頭的定義如圖1所示:
圖1 XMCD頭
其中,[19:16]和[15:11]域僅對FlexSPI接口的外設有效,當選擇SEMC接口時,這些區域被忽略,設為0即可。[11:0]域用于設置XMCD數據塊的總大小,等于XMCD頭大小+配置塊大小。
下面分別介紹兩種外設配置塊:
1.1 FlexSPI RAM配置塊
FlexSPI RAM 配置塊用于配置連接到FlexSPI接口的HyperRAM或者APMemoryPSRAM外設。提供了簡化版和完整版兩種配置方式供用戶選擇。其中,簡化版配置可以滿足大部分HyperRAM 或 APMemory 外設的典型應用。如圖2所示,用戶僅需要簡單配置設備類型,頻率,PINMUX等參數即可成功初始化外設。
圖 2 簡化版配置
當然,如果用戶需要啟用一些高級功能,XMCD還提供了完整的512字節FlexSPI RAM配置塊以支持靈活的配置。具體的配置內容詳見RT1170 Reference Manual的10.8.2.2章節。
1.2 SEMC SDRAM配置塊SEMC SDRAM配置塊用于配置連接到SEMC接口的SDRAM設備。與FlexSPI類似,也提供了簡化版和完整版兩種配置方式供用戶選擇。
XMCD提供了68字節數據結構用于SDRAM配置,圖3展示了數據結構的前10字節內容。當選擇簡化配置時(即圖中config_option設為0x00),僅需要配置該數據結構的前9個字節,即時鐘頻率,設備大小和port大小,不過該配置僅適用于連接到CS0的SDRAM外設且SDRAM相關參數是固定的,若外設連接到其他CS或當前參數無法成功初始化SDRAM,則需要使用完整配置。
若選擇完整配置(即圖中config_option設為0xFF),則需要配置整個68字節。完整數據結構詳見Reference Manual第10.8.3.1章節。
圖3 SDRAM配置數據結構(前10字節)
2. 如何使用XMCD
2.1 SDK的使用
RT1170 SDK從 2.12.0開始,就已經加入了XMCD功能且boot的時候默認使用XMCD初始化SDRAM,并采用簡化版配置。
任意打開一個示例工程,都會包含xmcd.c/h文件,當工程選項預編譯宏里有XIP_BOOT_HEADER_XMCD_ENABLE=1時被使能。
圖4工程文件中的XMCD
不過SDK里面僅實現了使用XMCD簡化配置初始化SDRAM,對于FlexSPI外設的初始化或者完整配置需要用戶參考現有XMCD代碼,結合前面介紹的SEMC/FlexSPI配置塊的定義進行具體配置。
2.2 使用MCUBootUtility工具
NXP-MCUBootUtility是一款功能強大的一站式安全加密啟動工具,其v5.3.2版本可以支持XMCD功能進行FlexSPI和SEMC外設的配置。
下載地址:https://github.com/JayHeng/NXP-MCUBootUtility/releases/tag/v5.3.2
該工具的XMCD配置界面如圖5所示:
圖5XMCD配置界面
該工具目前只有簡化配置支持界面直接配置,完整配置需要用戶生成相應的XMCD bin文件(該文件由XMC頭與外設配置塊組成)然后導入。
選擇Use XMCD option即可進行外設的簡化配置,如圖6所示,選擇SEMC或FlexSPI接口,然后在下方對應區域填入所需參數即可。
圖6
XMCD簡化配置
配置完XMCD后,用戶需要再準備一份應用程序,該應用程序鏈接到對應外設地址中,且不用帶boot header,然后導入工具,執行All-In-One Action 操作就可以成功生成可啟動文件并下載到板卡中去執行。
圖7是讀回來的可啟動文件,可以看到在IVT頭偏移0x40的位置便是相應的XMCD數據。
圖7 可啟動文件中的XMCD數據
3. 參考資料
1. i.MXRT1170 Processor Reference Manual
2. 痞子衡嵌入式:MCUBootUtility v5.3發布,利用XMCD輕松使能外部RAM
END
更多恩智浦AI-IoT市場和產品信息,邀您同時關注“NXP客棧”微信公眾號
? ? ?NXP客棧
恩智浦致力于打造安全的連接和基礎設施解決方案,為智慧生活保駕護航。
長按二維碼,關注我們
恩智浦MCU加油站
這是由恩智浦官方運營的公眾號,著重為您推薦恩智浦MCU的產品信息、開發技巧、教程文檔、培訓課程等內容。
長按二維碼,關注我們
原文標題:XMCD – i.MX RT11xx系列簡單易用的特定外設配置功能
文章出處:【微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。
-
mcu
+關注
關注
146文章
17178瀏覽量
351672 -
恩智浦
+關注
關注
14文章
5864瀏覽量
107727
原文標題:XMCD – i.MX RT11xx系列簡單易用的特定外設配置功能
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論