|
大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是利用i.MXRT1xxx系列ROM集成的DCD功能可輕松配置指定外設(shè)。
0 u9 g8 V) R7 u: T% K. o _# x關(guān)于 i.MXRT1xxx 系列芯片 BootROM 中集成的 DCD 功能這個(gè)話題,痞子衡早就想寫了,但是一直沒有動(dòng)筆,畢竟這個(gè)話題比較生澀,單獨(dú)講會(huì)比較枯燥。最近痞子衡在支持一個(gè) i.MXRT1170 客戶,需要在客戶板卡上跑其應(yīng)用代碼的壓力測(cè)試,但是客戶因?yàn)楸C艿木壒蕛H提供了應(yīng)用可執(zhí)行文件,而我們又需要在客戶應(yīng)用里額外加一些配置代碼做測(cè)試,測(cè)試過程中會(huì)涉及多次斷電上電,如果掛外部調(diào)試器去做額外配置又太繁瑣,這時(shí)候 DCD 功能就派上用場(chǎng)了。! u2 ]8 `4 X) N0 B6 |! \+ E
Note:文中貼圖、代碼主要以 i.MXRT1170 為例,其余 i.MXRT1xxx 系列原理類似。一、DCD是什么及其應(yīng)用場(chǎng)景DCD 是 Device Configuration Data 縮寫,這是 i.MXRT1xxx 系列芯片 BootROM 里帶的一個(gè)附加功能,主要用于 App 啟動(dòng)前系統(tǒng)外設(shè)的用戶定制化配置。我們知道 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í)行。
4 U7 f; u$ Z, J- j2 N( W翻看芯片參考手冊(cè) Device Configuration Data (DCD) 章節(jié),你會(huì)發(fā)現(xiàn) DCD 數(shù)據(jù)設(shè)計(jì)特別簡(jiǎn)單,它總共支持三類命令:Write data(Tag 是 0xCC)、Check data(Tag 是 0xCF)、NOP(Tag 是 0xC0),這三類命令就是為了讀寫芯片外設(shè)寄存器而設(shè)計(jì)的,我們需要做的就是組合這三類命令完成指定外設(shè)模塊寄存器的設(shè)置序列。任意打開一個(gè) RT1170 SDK 示例工程,都會(huì)包含 dcd.c/h 文件(僅當(dāng)工程選項(xiàng)預(yù)編譯宏里有 XIP_BOOT_HEADER_DCD_ENABLE=1 才會(huì)被使能)。 |
|