痞子衡嵌入式:MCUXpresso IDE下SDK工程在Build配置上與IAR,MDK差異


  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是MCUXpresso IDE下SDK工程在Build配置上與IAR,MDK差異

  恩智浦 SW 團隊每個季度都會公布 SDK、Tool 官網下載量,其中 MCUXpresso IDE 下載量一直穩步上升,這個恩智浦自家 IDE 其實在歐美和台灣地區是非常受歡迎的,在中國普及率稍微低一點,主要是國內的嵌入式開發者還是更熟悉 IAR/MDK 這兩個經典的 IDE。人嘛,都不願意輕易離開自己的舒適區。

  今天痞子衡要介紹的是 MCUXpresso IDE 聯合官方 SDK 軟件包的示例工程 build 配置管理機制,及其與 IAR、MDK 示例工程的對比差異。

一、準備開發環境

  首先需要準備好環境,包含必要的軟件,痞子衡的環境如下:

  • 集成開發環境: MCUXpresso IDE_11.4.0_6224,點此下載
  • 軟件開發包: SDK_2.10.0_EVK-MIMXRT1170(Toolchain需包含MCUXpresso IDE),點此下載

二、回顧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主頁知乎主頁微信公眾號 平台上。

微信搜索”痞子衡嵌入式“或者掃描下面二維碼,就可以在手機上第一時間看了哦。