痞子衡主導的"學術"專案 《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,今天我們就來聊聊它在 Keil MDK 下的使用:
一、準備測驗環境
首先需要準備好測驗環境,包含必要的軟體和硬體,痞子衡的環境如下:
- 集成開發環境: Keil uVision v5.31,點此下載
- 軟體開發包: SDK_2.10.0_EVKB-IMXRT1050(Toolchain需包含Keil),點此下載
- 軟體驅動: J-Link driver v6.86f,點此下載
- 硬體工具: J-Link Plus除錯器
- 硬體開發板: MIMXRT1050-EVKB (Rev.A1)
上述軟體環境里,J-Link 軟體驅動、Keil 版本、SDK 軟體包版本之間沒有明確依賴關系,J-Link 軟體驅動也不是一定限制在 v6.86f,只是超級下載演算法 v1.0 是在這個版本下詳細測驗的,其他 J-Link 版本也可能適合,具體需要進一步測驗,
二、在Keil MDK下使用步驟
2.1 將超級下載演算法包打進J-Link驅動
第一步其實跟 Keil 無關,因為是基于 J-Link 的超級下載演算法,所以要給 J-Link 軟體驅動先打個更新包,具體參照 《超級下載演算法RT-UFL v1.0發布,附J-Link下安裝教程》 一文,
- Note: Keil 安裝程序中會順便在 \Keil_v5\ARM\Segger\ 路徑下安裝一個默認的 J-Link 驅動(版本不可控,應該是跟 Keil 版本匹配的),但為了避免不可預見的問題發生,最好自己手動安裝一個明確的 J-Link 驅動版本來使用(痞子衡安裝在了 C:\tools_mcu\SEGGER\JLink_V686f),
2.2 為Keil指定包含超級下載演算法的J-Link驅動
在默認情況下,所有 Keil 工程都統一使用 Keil 安裝目錄下自帶的 J-Link 軟體驅動(假定 App 工程選項設定里仿真器選擇的是 J-Link),但是我們為了超級下載演算法額外安裝了一個指定版本的 J-Link 軟體驅動(v6.86f),因此我們需要指定 Keil 去使用包含超級下載演算法的 J-Link 驅動,這里不是在 App 工程選項里設定,而是需要借助 JLinkDLLUpdater.exe 工具,
在我們額外安裝的包含超級下載演算法的 C:\tools_mcu\SEGGER\JLink_V686f 目錄下,有一個名為 JLinkDLLUpdater.exe 的小工具,雙擊這個工具,便可看到其搜索到了當前 PC 環境下安裝的 IDE 串列,有我們正在使用的 Keil MDK,勾選上 Keil 便能完成 J-Link 驅動的指定,

2.3 使用Keil打開一個SDK工程
現在我們需要一個 Keil 工程,這里我們直接打開 \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 要設定正確),然后再檢查一下 Keil 工程里的 Flash 啟動頭是否與板卡上的實際 Flash 型號相匹配,
- Note:要想在 IDE 設定的 Hardware Reset 復位型別下實作在 Flash 除錯,上述條件必須要滿足,但如果改為 Software/Core Reset 型別,則板卡啟動模式以及工程里 Flash 啟動頭并不影響除錯,

2.5 在SDK工程設定里使用J-Link下載演算法
Keil 支持非常多種類的硬體仿真器,這里我們首先需要在工程選項 Debug 下的 Use 下拉選單里選擇 J-LINK / J-TRACE Cortex,表明目標板卡上連接的是 J-Link 型硬體仿真器,選定后點擊 Settings 可以識別到當前 J-Link 仿真器序列號(如果仿真器連接上 PC 的話),并且檢查下 dll 版本是不是打了超級下載演算法的 J-Link 驅動版本(v6.86f),

然后就來到了全文中最關鍵的設定了,工程選項 Utilities 下的 Use Target Driver for Flash Programming 選項保持勾選,但是需要將 Update Target before Debugging 這個勾選給去掉(該選項表面意思是僅當鏡像檔案自上一次下載后發生變化才啟動新一次下載,但實測下來還有隱含功能,勾選上則一定會用 Keil 自身下載演算法,不勾選則會使用 J-Link 驅動里的演算法),因為我們要用指定的 J-Link 軟體驅動下的超級下載演算法,
- Note: Keil 安裝目錄 \Keil_v5\ARM\Flash 下(或者 Pack Installer 安裝的 DFP 包目錄下)自帶的 .FLM 格式下載演算法同時適用 CMSIS-DAP 型和 J-Link 型硬體仿真器,因此哪怕連接的是 J-Link 仿真器,也可以有兩種不同型別下載演算法選擇,這點上 Keil 與之前介紹的 MCUXpresso IDE 演算法使用設計不太一樣,

2.6 選擇合適的超級下載演算法進行在線下載除錯
還差最后一步就可以愉快地在 Flash 除錯了,前一步我們在工程選項里設定完之后,再次打開工程選項時會彈出 J-Link device 選擇視窗,這時候是讓你選擇合適的下載演算法,選擇完之后會在工程目錄下(\SDK_2.10.0_EVKB-IMXRT1050\boards\evkbimxrt1050\demo_apps\led_blinky\mdk)生成一個 JLinkSettings.ini 檔案,用文本編輯器打開這個 .ini 檔案,檢查 Override 為 1,然后設定 Device 的值為超級下載演算法代號就可以啦,本次測驗我們需要的是 MIMXRT1050_UFL_L1 演算法,
- Note: 超級下載演算法具體代號詳見 C:\tools_mcu\SEGGER\JLink_V686f\JLinkDevices.xml 檔案,代號后綴 _L0 適用 QSPI 和 Octal Flash,代號后綴 _L1/L2 適用 Hyper Flash,

現在我們將 J-Link 仿真器連接上板卡,點擊 Keil 選單欄 Start/Stop Debug Session 按鈕(藍圈標出的按鈕)進行下載除錯就可以了,注意不能使用 Download 按鈕(紅圈標出的按鈕)去下載,因為 Download 按鈕永遠呼叫的是 Keil 自帶下載演算法,

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

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