痞子衡主導的"學術"專案 《RT-UFL - 一個適用全平臺i.MXRT的超級下載演算法設計》 v1.0 版發布近 4 個月了,部分客戶已經在實際專案開發除錯中用上了這個超級下載演算法,目前反饋還可以,但這個超級下載演算法遠未到成熟狀態,痞子衡正在策劃 v2.0 版本,
- RT-UFL v1.0下載地址: https://github.com/JayHeng/RT-UFL/archive/refs/tags/v1.0.zip
超級下載演算法 RT-UFL v1.0 版本主要針對 Segger J-Link 除錯器,開發測驗也都是在 J-Link Commander 和 J-Flash 軟體下進行的,但其實它也適用各大常用 IDE,今天我們就來聊聊它在 IAR EW for Arm 下的使用:
一、準備測驗環境
首先需要準備好測驗環境,包含必要的軟體和硬體,痞子衡的環境如下:
- 集成開發環境: IAR EW for Arm v8.50.6,點此下載
- 軟體開發包: SDK_2.10.0_EVKB-IMXRT1050(Toolchain需包含IAR),點此下載
- 軟體驅動: J-Link driver v6.86f,點此下載
- 硬體工具: J-Link Plus除錯器
- 硬體開發板: MIMXRT1050-EVKB (Rev.A1)
上述軟體環境里,IAR 版本與 SDK 軟體包版本之間沒有明確依賴關系,但 J-Link 軟體驅動版本與 IAR 版本之間有一些關聯,具體在下面 2.2 節里會提及,
J-Link 軟體驅動不是一定限制在 v6.86f,只是超級下載演算法 v1.0 是在這個版本下詳細測驗的,其他 J-Link 版本也可能適合,具體需要進一步測驗,
二、在IAR EW for Arm下使用步驟
2.1 將超級下載演算法包打進J-Link驅動
第一步其實跟 IAR 無關,因為是基于 J-Link 的超級下載演算法,所以要給 J-Link 軟體驅動先打個更新包,具體參照 《超級下載演算法RT-UFL v1.0發布,附J-Link下安裝教程》 一文,
- Note: IAR 安裝程序中會順便在 \IAR Systems\Embedded Workbench 8.50.6\arm\bin\ 路徑下安裝一個默認的 J-Link 驅動(版本不可控,應該是跟 IAR 版本匹配的),但為了避免不可預見的問題發生,最好自己手動安裝一個明確的 J-Link 驅動版本來使用(痞子衡安裝在了 C:\tools_mcu\SEGGER\JLink_V686f),
2.2 為IAR指定包含超級下載演算法的J-Link驅動
在默認情況下,所有 IAR 工程都統一使用 IAR 安裝目錄下自帶的 J-Link 軟體驅動及其下載演算法(假定 App 工程選項設定里仿真器選擇的是 J-Link,且不用 IAR 下載演算法),但是我們為了超級下載演算法額外安裝了一個指定版本的 J-Link 軟體驅動(v6.86f),因此我們需要指定 IAR 去使用包含超級下載演算法的 J-Link 驅動,這里不是在 App 工程選項里設定,而是需要借助 JLinkDLLUpdater.exe 工具,
在我們額外安裝的包含超級下載演算法的 C:\tools_mcu\SEGGER\JLink_V686f 目錄下,有一個名為 JLinkDLLUpdater.exe 的小工具,雙擊這個工具,便可看到其搜索到了當前 PC 環境下安裝的 IDE 串列,有我們正在使用的 IAR v8.50.6,勾選上 IAR 便能完成 J-Link 驅動的指定,

其實痞子衡當前 PC 上安裝了兩個版本的 IAR,分別是 v8.50.6 和 v9.10.2,不過 J-Link v6.86f 版本下的 JLinkDLLUpdater.exe 僅識別出了 IAR v8.50.6,這意味著,如果你安裝的是 IAR v9.10.2,可能無法去指定使用 額外安裝的 J-Link v6.86f 版本驅動,后來痞子衡安裝了最新的 J-Link v7.56b,它下面的 JLinkDLLUpdater.exe 能將兩個版本的 IAR 都識別出,這就是文章前面提及的 J-Link 驅動版本與 IAR 版本的關聯限制,

2.3 使用IAR打開一個SDK工程
現在我們需要一個 IAR 工程,這里我們直接打開 \SDK_2.10.0_EVKB-IMXRT1050\boards\evkbimxrt1050\demo_apps\led_blinky 工程,注意將工程切換到 flexspi_nor build,即代碼 XIP 執行版本,

2.4 確保板卡處于Flash啟動模式且SDK工程能夠XIP
然后將板卡供上電,確保板卡處于 NOR Flash 啟動模式(Boot Mode 以及 Boot Cfg 要設定正確),然后再檢查一下 IAR 工程里的 Flash 啟動頭是否與板卡上的實際 Flash 型號相匹配,
- Note:要想在 IDE 設定的 Hardware Reset 復位型別下實作在 Flash 除錯,上述條件必須要滿足,但如果改為 Software/Core Reset 型別,則板卡啟動模式以及工程里 Flash 啟動頭并不影響除錯,

2.5 在SDK工程設定里使用J-Link下載演算法
IAR 支持非常多種類的硬體仿真器,這里我們首先需要在工程選項 Debugger/ Setup 下的 Driver 下拉選單里選擇 J-Link/J-Trace,表明目標板卡上連接的是 J-Link 型硬體仿真器,

然后就來到了全文中最關鍵的設定了,工程選項 Debugger/ Download 下的 Use flash loader(s) 這個選項默認是勾選的,即代表不管外面連接的是哪種硬體仿真器,統一使用 IAR 目錄下自帶的 .out 下載演算法,但是我們一定要將這個勾選給去掉,因為我們要用指定的 J-Link 軟體驅動下的超級下載演算法,
- Note: IAR 安裝目錄 \IAR Systems\Embedded Workbench 8.50.6\arm\config\flashloader\NXP 下自帶的 .out 格式下載演算法同時適用 CMSIS-DAP 型和 J-Link 型硬體仿真器,因此哪怕連接的是 J-Link 仿真器,也可以有兩種不同型別下載演算法選擇,這點上 IAR 與上一篇介紹的 MCUXpresso IDE 演算法使用設計不太一樣,

2.6 選擇合適的超級下載演算法進行在線下載除錯
還差最后一步就可以愉快地在 Flash 除錯了,我們將 J-Link 仿真器連接上板卡,點擊 IAR 選單欄 Download and Debug 按鈕進行除錯,發現竟然報錯了,似乎有下載程序,但無法單步跑,這其實是可以理解的,因為我們還沒有選擇合適的超級下載演算法,至少在 IAR 工程選項里沒有顯式的去選,

其實 IAR 工程設定里并沒有給我們主動選擇 J-Link 下載演算法的機會,它自己偷偷通過工程選項里的 General Options/Target 下的 Device 設定,根據 MIMXRT1052xxx6B 值到 C:\tools_mcu\SEGGER\JLink_V686f\JLinkDevices.xml 檔案中做了匹配,自動選擇了第一個匹配到的 MIMXRT1050_UFL_L0 演算法,但其實本次測驗我們需要的是 MIMXRT1050_UFL_L1 演算法,
- Note: 超級下載演算法具體代號詳見 C:\tools_mcu\SEGGER\JLink_V686f\JLinkDevices.xml 檔案,代號后綴 _L0 適用 QSPI 和 Octal Flash,代號后綴 _L1/L2 適用 Hyper Flash,

如何解決選擇具體超級下載演算法的問題?當然根據情況動態調整 C:\tools_mcu\SEGGER\JLink_V686f\JLinkDevices.xml 檔案內容是可行的,比如可以將 MIMXRT1050_UFL_L1 演算法 <device> 描述塊移到 MIMXRT1050_UFL_L0 演算法 <device> 描述塊上面,或者保持它們的位置不變,但臨時將 MIMXRT1050_UFL_L0 演算法 <device> 描述塊里 Aliases 運算式里的 MIMXRT1052xxx6B 值去掉,但是這種方法太不友好了,有沒有更便捷的方式?

既然痞子衡這么問了,那肯定是有啦,當在 IAR 里用 J-Link 除錯過一次,無論成功與否,都會在工程目錄下(\SDK_2.10.0_EVKB-IMXRT1050\boards\evkbimxrt1050\demo_apps\led_blinky\iar\settings)生成一個 xxProject_flexspi_nor_debug.jlink 檔案,用文本編輯器打開這個 .jlink 檔案,將 Override 改為 1,然后設定 Device 的值為超級下載演算法代號就可以啦,現在看看你是不是可以正常下載除錯了,
Override = 1
Device="MIMXRT1050_UFL_L1"

歡迎訂閱
文章會同時發布到我的 博客園主頁、CSDN主頁、知乎主頁、微信公眾號 平臺上,
微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦,

最后歡迎關注痞子衡個人微信公眾號【痞子衡嵌入式】,一個專注嵌入式技術的公眾號,跟著痞子衡一起玩轉嵌入式,
衡杰(痞子衡),目前就職于恩智浦MCU系統部門,擔任嵌入式系統應用工程師,
專欄內所有文章的轉載請注明出處:http://www.cnblogs.com/henjay724/
與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]
可以關注痞子衡的Github主頁 https://github.com/JayHeng,有很多好玩的嵌入式專案,
關于專欄文章有任何疑問請直接在博客下面留言,痞子衡會及時回復免費(劃重點)答疑,
痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/333211.html
標籤:嵌入式
上一篇:vue-資料參考另一個資料
