大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是MCUXpresso IDE下線上聯合調試i.MXRT1170雙核工程的三種方法。 兩年前痞子衡寫過一篇《i.MXRT1170下線上聯合調試雙核工程的三種方法(IAR篇)》,那篇文章詳細介紹了 IAR 下調試 RT1170 雙核工程的幾 ...
大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是MCUXpresso IDE下線上聯合調試i.MXRT1170雙核工程的三種方法。
兩年前痞子衡寫過一篇《i.MXRT1170下線上聯合調試雙核工程的三種方法(IAR篇)》,那篇文章詳細介紹了 IAR 下調試 RT1170 雙核工程的幾種方法。現如今,免費的 MCUXpresso IDE 用戶越來越多,而且說實話,MCUXpresso IDE 也確實功能越來越完善,日常嵌入式開發的幾乎所有需求都能夠滿足。今天痞子衡就繼續給大家介紹 MCUXpresso IDE 下雙核工程聯調的三種方法:
一、測試準備
按 《i.MXRT1170下線上聯合調試雙核工程的三種方法(IAR篇)》 一文里第一節的測試準備,痞子衡這次的環境如下:
二、在MCUXpresso IDE下調試
2.1 通用辦法:雙核工程無關聯,調試器分別載入
第一種方法依舊是單純藉助外部調試器來做載入,主核工程和從核工程之間無任何依賴關係(一般情況下主核是 XIP 工程,從核是 Non-XIP 工程)。我們選擇 SDK 包里如下兩個 hello_world 普通工程來做測試(SDK 包里並沒有現成的 MCUXpresso IDE 工程文件,需要自己導出,詳情參考 《MCUXpresso IDE下SDK工程導入與workspace管理機制》 一文):
主核常式導出源路徑:\SDK_2_16_000_MIMXRT1170-EVKB\boards\evkbmimxrt1170\demo_apps\hello_world\cm7
從核常式導出源路徑:\SDK_2_16_000_MIMXRT1170-EVKB\boards\evkbmimxrt1170\demo_apps\hello_world\cm4
上次測試 IAR 工具鏈時,SDK 版本還是 2.11,如今已經演化到了 2.16,現在配套腳本設計得更完善了,主核工程和從核工程下載先後順序無限制。痞子衡使用了板載 DAP-Link 調試器分別調試雙核工程,過程非常絲滑。這主要得益於如下兩個 .scp 腳本文件(完成主從核連接與激活工作):
有小伙伴可能會疑惑,這兩個 .scp 文件到底是放在哪裡的?因為在 MCUXpresso IDE 安裝目錄下以及導出的 hello world 工程目錄下都找不到它們的身影,其實它們就藏在安裝 MCUXpresso IDE 時自動同步安裝的 LinkServer 驅動裡面(\LinkServer_1.6.114\binaries\Scripts),這些腳本是共用的,如果你想修改為專用腳本,可以拷貝到工程目錄下,然後啟用下圖裡的 Custom Path。
2.2 專用方法:雙核工程有關聯,IDE多核組件鏈接,主核載入從核
第二種方法需要藉助主核代碼來給從核做載入,此時主核工程和從核工程之間有互相鏈接關係(依舊為主核 XIP 工程,從核 Non-XIP 工程),這裡需要藉助 MCUXpresso IDE 軟體里自帶的多核組件。我們首先從 SDK 里導出 hello world 多核常式:
主核常式導出源路徑:\SDK_2_16_000_MIMXRT1170-EVKB\boards\evkmimxrt1170\multicore_examples\hello_world\cm7
從核常式導出源路徑:\SDK_2_16_000_MIMXRT1170-EVKB\boards\evkmimxrt1170\multicore_examples\hello_world\cm4
可以分別打開主核和從核常式的工程選項,找到 Multicore 設置,可以看到從核配置為 M4SLAVE,主核勾選了 M4SLAVE 工程對應的 axf 文件路徑,此為兩個工程的鏈接關係:
至於從核代碼載入過程,可以打開主核工程的鏈接文件,相比一般獨立工程鏈接文件,其多了對從核工程編譯出來的二進位數據(包含text和data)的鏈接處理,拷貝動作是在主核工程 startup_mimxrt1176_cm7.c 文件 ResetISR() 函數中的 data bss 段初始化過程中一起完成的,激活從核動作則是 main 函數里 MCMGR_StartCore() 函數實現的。
2.3 通用方法:雙核工程無關聯,主核激活從核
目前 v2.16 SDK 包里相比之前增加瞭如下兩個 hello_world_secondary_core_boot 多核常式,以往的多核常式,從核均是 Non-XIP 工程,而這個新增常式里從核工程也是 XIP 常式:
主核常式導出源路徑:\SDK_2_16_000_MIMXRT1170-EVKB\boards\evkmimxrt1170\demo_apps\hello_world_secondary_core_boot\cm7
從核常式導出源路徑:\SDK_2_16_000_MIMXRT1170-EVKB\boards\evkmimxrt1170\demo_apps\hello_world_secondary_core_boot\cm4
因為主從核工程均是 XIP 工程,在調試時需要先將從核工程下載進 Flash,然後再下載主核工程進 Flash 並且沿用主核工程里的 XIP 頭做啟動配置。因為代碼載入是調試器完成的,所以兩個工程間並無直接關聯,不過因為最終還是需要主核執行代碼去完成從核激活工作,因此從核程式存放地址(CORE1_BOOT_ADDRESS)是需要 hardcode 在主核代碼里的。
至此,MCUXpresso IDE下線上聯合調試i.MXRT1170雙核工程的三種方法痞子衡便介紹完畢了,掌聲在哪裡~~~
歡迎訂閱
文章會同時發佈到我的 博客園主頁、CSDN主頁、知乎主頁、微信公眾號 平臺上。
微信搜索"痞子衡嵌入式"或者掃描下麵二維碼,就可以在手機上第一時間看了哦。
最後歡迎關註痞子衡個人微信公眾號【痞子衡嵌入式】,一個專註嵌入式技術的公眾號,跟著痞子衡一起玩轉嵌入式。
衡傑(痞子衡),目前就職於某全球頂級半導體原廠MCU系統部門,擔任高級嵌入式系統應用工程師。
專欄內所有文章的轉載請註明出處:http://www.cnblogs.com/henjay724/
與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]
可以關註痞子衡的Github主頁 https://github.com/JayHeng,有很多好玩的嵌入式項目。
關於專欄文章有任何疑問請直接在博客下麵留言,痞子衡會及時回覆免費(劃重點)答疑。
痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。