痞子衡嵌入式:超級下載算法RT-UFL v1.0在Keil MDK下的使用



  痞子衡主導的"學術"項目 《RT-UFL - 一個適用全平台i.MXRT的超級下載算法設計》 v1.0 版發布近 4 個月了,部分客戶已經在實際項目開發調試中用上了這個超級下載算法,目前反饋還可以,但這個超級下載算法遠未到成熟狀態,痞子衡正在策划 v2.0 版本。

  超級下載算法 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 算法使用設計不太一樣。

  去除了 Use Target Driver for Flash Programming 選項后還需要在工程選項 UtilitiesProgramming Algorithm 里將 Keil 下載算法去除掉,在這里留空,否則 Keil 還是不會啟用 J-Link 下的算法。

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM