大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是MCUXpresso IDE下SDK工程在Build配置上與IAR,MDK差異。
恩智浦 SW 團隊每個季度都會公佈 SDK、Tool 官網下載量,其中 MCUXpresso IDE 下載量一直穩步上升,這個恩智浦自家 IDE 其實在歐美和臺灣地區是非常受歡迎的,在中國普及率稍微低一點,主要是國內的嵌入式開發者還是更熟悉 IAR/MDK 這兩個經典的 IDE。人嘛,都不願意輕易離開自己的舒適區。
今天痞子衡要介紹的是 MCUXpresso IDE 聯合官方 SDK 軟體包的示例工程 build 配置管理機制,及其與 IAR、MDK 示例工程的對比差異。
一、準備開發環境
首先需要準備好環境,包含必要的軟體,痞子衡的環境如下:
二、回顧IAR/MDK上工程Build
首先給大家普及一下工程 build 的概念,我們知道嵌入式工程裡輸入型檔案除了程式碼原始檔之外,還包含工程配置檔案以及連結檔案(可以看痞子衡寫的 《嵌入式開發檔案系列》)。一套程式碼原始檔就是一個具體的應用工程,但是這套程式碼原始檔可以搭配多個不同的工程配置檔案和連結檔案,因此在 IDE 裡每個具體的工程配置檔案和連結檔案組合都是一個 build。
我們以 SDK\boards\evkmimxrt1170\demo_apps\hello_world\cm7 這個最基礎的例程為例來具體介紹。先來看 IAR 工程 hello_world_demo_cm7.eww,這個 workspace 下包含了 6 * 2 個 build。如果把 xx_debug 和 xx_release 算成一種的話,那實際就是 6 種不同的 build:
1. debug/release build 對應連結檔案 MIMXRT1176xxxxx_cm7_ram.icf, ro 段連結在 ITCM 起始地址,rw 段連結在 DTCM 裡
2. flexspi_nor_debug/release build 對應連結檔案 MIMXRT1176xxxxx_cm7_flexspi_nor.icf, ro 段連結在 Flash 起始地址,rw 段連結在 DTCM 裡
3. sdram_debug/release build 對應連結檔案 MIMXRT1176xxxxx_cm7_sdram.icf, ro 段連結在 ITCM 起始地址,rw 段連結在 SDRAM 裡
4. flexspi_nor_sdram_debug/release build 對應連結檔案 MIMXRT1176xxxxx_cm7_flexspi_nor_sdram.icf, ro 段連結在 Flash 起始地址,rw 段連結在 SDRAM 裡
5. sdram_txt_debug/release build 對應連結檔案 MIMXRT1176xxxxx_cm7_sdram_txt.icf, ro 段連結在 SDRAM 起始地址,rw 段連結在 OCRAM 裡
6. ram_0x1400_debug/release build 對應連結檔案 MIMXRT1176xxxxx_cm7_ram_0x1400.icf, ro 段連結在 ITCM 偏移 0x1400 地址,rw 段連結在 DTCM 裡
在實際開發時,可以輕鬆切換不同 build 做除錯,每個 build 對應的工程設定也可以按需調整(預編譯巨集,優化選項等)。此外,在選單欄 Project / Edit Configurations 裡也可以增刪 build。
再來看 MDK 工程 hello_world_demo_cm7.uvprojx,這個 workspace 下同樣包含了 6 * 2 個 build,跟 IAR 下體驗是完全一致的。此外,在選單欄 Project / Manage / Project Items 裡也可以增刪 build。
三、MCUXpresso IDE上工程Build
現在來到了我們的主角 MCUXpresso IDE 工程,SDK 包裡預設沒有放其工程檔案,需要按照 《MCUXpresso IDE下SDK工程匯入與workspace管理機制》 一文步驟匯入生成。
工程匯入成功後,會在 \MCUXpressoIDE_11.4.0_6224\workspace\evkmimxrt1170_hello_world_demo_cm7 下看到 .project 工程檔案,在這個 workspace 下預設僅包含了 2 個 build(Debug/Release),這裡的體驗就跟 IAR/MDK 下不一致了。雖然我們在選單欄 Project / Build Configurations / Manage 裡也可以增刪 build。
預設 MCUXpresso IDE 工程僅兩個 build 主要跟其連結檔案管理機制有關,在 IAR/MDK 下不同 build 的連結檔案都是事先準備好的,而 MCUXpresso IDE 下是可以自動實時生成符合要求的連結檔案的(下圖 Manage linker script 選項預設是勾選的,即可根據 IDE 設定生成連結檔案 \MCUXpressoIDE_11.4.0_6224\workspace\evkmimxrt1170_hello_world_demo_cm7\Debug\evkmimxrt1170_hello_world_demo_cm7_Debug_memory.ld)。
基於這種連結檔案管理機制,我們確實沒有必要建立多個 build,切換 build 實際上就是更改連結檔案設定即可(這裡假定工程其他設定不需要更改)。當然如果你有一些定製化的連結檔案,也可以去掉 Manage linker script 選項的勾選,在路徑裡指向事先準備好的 .ld 檔案也行。關於 IDE 裡這部分連結設計,痞子衡後面會再寫文章深入介紹。
至此,MCUXpresso IDE下SDK工程在Build配置上與IAR,MDK差異痞子衡便介紹完畢了,掌聲在哪裡~~~
歡迎訂閱
文章會同時釋出到我的 部落格園主頁、CSDN主頁、知乎主頁、微信公眾號 平臺上。
微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。