|
大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是利用i.MXRT1xxx系列ROM集成的DCD功能可輕松配置指定外設。9 C- x1 d' e1 t% [: V7 W
關于 i.MXRT1xxx 系列芯片 BootROM 中集成的 DCD 功能這個話題,痞子衡早就想寫了,但是一直沒有動筆,畢竟這個話題比較生澀,單獨講會比較枯燥。最近痞子衡在支持一個 i.MXRT1170 客戶,需要在客戶板卡上跑其應用代碼的壓力測試,但是客戶因為保密的緣故僅提供了應用可執(zhí)行文件,而我們又需要在客戶應用里額外加一些配置代碼做測試,測試過程中會涉及多次斷電上電,如果掛外部調試器去做額外配置又太繁瑣,這時候 DCD 功能就派上用場了。
# e/ X$ b! e2 B ~Note:文中貼圖、代碼主要以 i.MXRT1170 為例,其余 i.MXRT1xxx 系列原理類似。一、DCD是什么及其應用場景DCD 是 Device Configuration Data 縮寫,這是 i.MXRT1xxx 系列芯片 BootROM 里帶的一個附加功能,主要用于 App 啟動前系統(tǒng)外設的用戶定制化配置。我們知道 i.MXRT1xxx 系列芯片上電永遠都是 BootROM 代碼先執(zhí)行,然后由 BootROM 再去加載 App 執(zhí)行。如果希望在 App 執(zhí)行前系統(tǒng)就已經被配置到指定狀態(tài)(即不需要在 App 里去做這方面系統(tǒng)設置),那就需要借助 DCD 功能,你只需要按格式將 DCD 數(shù)據(jù)放到 Boot Device 指定偏移處即可,BootROM 會自動去解析執(zhí)行。# w0 W" ]/ x" P. J9 l9 a( N# R% n
翻看芯片參考手冊 Device Configuration Data (DCD) 章節(jié),你會發(fā)現(xiàn) DCD 數(shù)據(jù)設計特別簡單,它總共支持三類命令:Write data(Tag 是 0xCC)、Check data(Tag 是 0xCF)、NOP(Tag 是 0xC0),這三類命令就是為了讀寫芯片外設寄存器而設計的,我們需要做的就是組合這三類命令完成指定外設模塊寄存器的設置序列。任意打開一個 RT1170 SDK 示例工程,都會包含 dcd.c/h 文件(僅當工程選項預編譯宏里有 XIP_BOOT_HEADER_DCD_ENABLE=1 才會被使能)。 |
|