在我們?nèi)粘i_發(fā)中,都傾向于直接把應(yīng)用代碼下載到 SRAM/SDRAM 里調(diào)試(視應(yīng)用代碼大?。?yàn)榇a下載到 RAM 比較快,也無需過多的擦寫 flash,那當(dāng)調(diào)試完成,又該如何把應(yīng)用代碼下載到 flash 里啟動呢?本文提供了一篇指導(dǎo),教大家如何把 RT1170跑在 SDRAM 的代碼下載到外部 flash 并通過 None XIP 模式從 flash 啟動。
本文是基于 NXP RT1170 SDK 2.15 的 HelloWorld demo, 官方 MIMXRT1170-EVK開發(fā)板,生成 ARMGCC SDRAM 工程,偏移 APP image entry,使用工具生成 image,然后下載到外部 flash 中。具體步驟如下:
1.App image 的生成
1.1 下載 RT1170 SDK 2.15 并解壓到本地
1.2 參考 Getting Started 文檔建立 ARMGCC 編譯環(huán)境
1.3 修改相應(yīng)的 LD 文件中 image 的起始地址,這里為了保證 IVT 等 image 頭部數(shù)據(jù)的空間,偏移了 0x2000 字節(jié),但不是固定的,客戶可根據(jù)自己需要微調(diào)。
1.4 進(jìn)入對應(yīng)項(xiàng)目的 armgcc 目錄,運(yùn)行 build_sdram_debug.bat 文件
2. 獲取 XMCD 文件
因?yàn)?SDRAM debug 下載代碼的時候,是由 IDE 工具執(zhí)行相應(yīng)的腳本來初始化設(shè)備的 SDRAM接口,因此當(dāng)把 image 下載到 flash 啟動時,需要配置 XMCD 文件,由 BootROM 來完成這一部分的初始化工作。這里使用了一點(diǎn)小技巧,是用了 SPT 工具直接從 flexspi_nor_sdram 的image 中提取了 XMCD 信息。
記住這個路徑,待會會用到。
3.使用 MCUBootUtility 完成 image 的下載
3.1 配置 boot mode 為 serial download,通過 USB 連接 RT1170EVK。
3.2 加載 XMCD 文件,就是從前面那個路徑導(dǎo)入
3.3 加載 elf 文件并生成完整的 image
3.4 下載 image 到 RT1170EVK
4. 從 flash 啟動
配置 boot mode 為 internal boot 后,上電啟動。
小伙伴們,你們學(xué)會了嗎