|
大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是利用i.MXRT1xxx系列ROM集成的DCD功能可輕松配置指定外設(shè)。
) L0 k) Z* |2 _7 C關(guān)于 i.MXRT1xxx 系列芯片 BootROM 中集成的 DCD 功能這個(gè)話(huà)題,痞子衡早就想寫(xiě)了,但是一直沒(méi)有動(dòng)筆,畢竟這個(gè)話(huà)題比較生澀,單獨(dú)講會(huì)比較枯燥。最近痞子衡在支持一個(gè) i.MXRT1170 客戶(hù),需要在客戶(hù)板卡上跑其應(yīng)用代碼的壓力測(cè)試,但是客戶(hù)因?yàn)楸C艿木壒蕛H提供了應(yīng)用可執(zhí)行文件,而我們又需要在客戶(hù)應(yīng)用里額外加一些配置代碼做測(cè)試,測(cè)試過(guò)程中會(huì)涉及多次斷電上電,如果掛外部調(diào)試器去做額外配置又太繁瑣,這時(shí)候 DCD 功能就派上用場(chǎng)了。! `, E! P3 M u: P) A' j: T
Note:文中貼圖、代碼主要以 i.MXRT1170 為例,其余 i.MXRT1xxx 系列原理類(lèi)似。一、DCD是什么及其應(yīng)用場(chǎng)景DCD 是 Device Configuration Data 縮寫(xiě),這是 i.MXRT1xxx 系列芯片 BootROM 里帶的一個(gè)附加功能,主要用于 App 啟動(dòng)前系統(tǒng)外設(shè)的用戶(hù)定制化配置。我們知道 i.MXRT1xxx 系列芯片上電永遠(yuǎn)都是 BootROM 代碼先執(zhí)行,然后由 BootROM 再去加載 App 執(zhí)行。如果希望在 App 執(zhí)行前系統(tǒng)就已經(jīng)被配置到指定狀態(tài)(即不需要在 App 里去做這方面系統(tǒng)設(shè)置),那就需要借助 DCD 功能,你只需要按格式將 DCD 數(shù)據(jù)放到 Boot Device 指定偏移處即可,BootROM 會(huì)自動(dòng)去解析執(zhí)行。5 S' @; L. Q5 _' z& z; R
翻看芯片參考手冊(cè) Device Configuration Data (DCD) 章節(jié),你會(huì)發(fā)現(xiàn) DCD 數(shù)據(jù)設(shè)計(jì)特別簡(jiǎn)單,它總共支持三類(lèi)命令:Write data(Tag 是 0xCC)、Check data(Tag 是 0xCF)、NOP(Tag 是 0xC0),這三類(lèi)命令就是為了讀寫(xiě)芯片外設(shè)寄存器而設(shè)計(jì)的,我們需要做的就是組合這三類(lèi)命令完成指定外設(shè)模塊寄存器的設(shè)置序列。任意打開(kāi)一個(gè) RT1170 SDK 示例工程,都會(huì)包含 dcd.c/h 文件(僅當(dāng)工程選項(xiàng)預(yù)編譯宏里有 XIP_BOOT_HEADER_DCD_ENABLE=1 才會(huì)被使能)。 |
|