大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是JLink 7.62最佳化了手動增加新MCU型號支援方法。
JLink 工具可以說是搞微控制器開發的必備神器,JLink 包括一個硬體模擬器(分不同用途的 EDU/BASE/PLUS/WIFI/ULTRA+/PRO)和 PC 機上的驅動軟體(從有跡可循的 2006 年 V3.00 到如今的 V7.96,更新相當頻繁)。除了硬體穩定備受好評之外,其驅動軟體提供的功能非常豐富更是俘獲了大批開發者芳心。痞子衡今天介紹的主題就是手動在 JLink 驅動裡新增新 MCU 型號的方法:
- Note: JLink 驅動釋出記錄 https://www.segger.com/downloads/jlink/ReleaseNotes_JLink.html
一、回顧舊方法
當我們本地安裝好了一個 JLink 驅動版本後,如果想要支援新的 MCU 型號(不在該版本支援列表裡),通常有兩種方法:一、安裝一個支援該 MCU 型號的更新版本 JLink 驅動;二、從 MCU 廠商官網找到該 MCU 的 JLink Patch 包,然後匯入到當前版本 JLink 驅動路徑下。如果再進一步,我們是希望更新驅動裡已有 MCU 型號的下載演算法支援,那就必須藉助方法二。
痞子衡這裡指的舊方法即是方法二,在當前 JLink 驅動裡打 Patch 的方式,關於這個方式,痞子衡寫過的如下三篇文章均有涉及。簡單來說就是將 Patch 包裡的檔案以確定的目錄結構匯入到本地已安裝好的某個確定版本的驅動路徑 \SEGGER\JLink_Vxxx\ 下。
《輕鬆設計更新Segger J-Link Flash下載演算法檔案》
《序列NOR Flash下載演算法(J-Link工具篇)》
《超級下載演算法RT-UFL v1.0釋出,附J-Link下安裝教程》
如果你一直是使用舊方法來新增 MCU 型號支援 / 更改已有 MCU 的下載演算法,你會發現其實這種打 Patch 的方式有一些痛點的:比如電腦上安裝了多個版本的 JLink 驅動,那就需要為每個驅動都打一遍 Patch。當我們的 Patch 累計得越來越多時,每次安裝一個新 JLink 驅動,打 Patch 工作量會越來越大。
二、迎接新方法
為了解決舊方法的痛點,從 JLink V7.62 開始,其切換到了一種新的打 Patch 方式,我們可以在 V7.62 的 Release Note 裡關於 DLL 的第 34 條更新裡找到說明:
順著那條說明,我們找到 https://wiki.segger.com/J-Link_Device_Support_Kit 裡詳細說明,新方法將 Patch 包裡的檔案換到了一個與具體版本 JLink 驅動安裝目錄無關的統一路徑,以後只要在這個統一路徑下打上 Patch,那麼當前安裝的所有 JLink 驅動均可以直接使用這個 Patch,省去了重複勞動。
這裡關於最重要的 .xml 檔案,名字可以不用再像舊方法那樣必須是 JLinkDevices.xml,可以是自定義名字的 *.xml 檔案,而且這個檔案位置也不用固定,最深支援 4 級目錄,JLink DLL 會遞迴搜尋找到最合適的 xml 檔案來認定 Patch。
三、實踐新方法
知道了新方法,我們現在來實踐一下,選一個 V7.62 以上的 JLink 版本,痞子衡本地安裝了 V7.88e,就以這個版本為例。主要做如下三個實驗:
3.1 V7.62以上是否相容打Patch舊方法
首先是看 V7.62 版本以上是否還能繼續支援之前的打 Patch 方式,我們找到 V7.88e 安裝目錄,發現該目錄下已經沒有 Devices 資料夾以及 JLinkDevices.xml 檔案,我們嘗試將 《超級下載演算法RT-UFL》 Patch 打進去試試看。
痞子衡在 RT1170 開發板上親測 JFlash 下載板載 flash 有效,說明 JLink DLL 還是能夠從這個舊路徑找到 Patch 的。
3.2 新方法是否Patch檔案可自由放
現在將 《超級下載演算法RT-UFL》 Patch 打到統一路徑下 <USER>\AppData\Roaming\SEGGER\JLinkDevices\,Patch 檔案結構保持不變,JFlash 實測還是有效。
現在改變 《超級下載演算法RT-UFL》 Patch 檔案結構,按第 2 小節推薦的方式,將 Patch 包裡的 Devices\NXP\ 資料夾放到 <USER>\AppData\Roaming\SEGGER\JLinkDevices\NXP\ 下,並且將 JLinkDevices.xml 檔案重新命名為 iMXRT_UFL.xml 後直接放到 <USER>\AppData\Roaming\SEGGER\JLinkDevices\NXP\iMXRT_UFL\ 下,這裡需要注意相應更改 xml 檔案裡的 JLinkScriptFile、Loader 路徑(對應檔案相對 xml 檔案的路徑),這樣仍然有效。
3.3 新舊方法Patch同時存在時,哪一個生效
如果我們把 Patch 以新舊兩種方式全部打入同一個 JLink 驅動,JLink DLL 到底會選用哪一個 Patch 呢?痞子衡實測結果如下:
舊方式 Patch | 新方式 Patch | JLink DLL 實際使用的 Patch |
---|---|---|
存在且完好 | 存在且完好 | 新方式 Patch |
存在但有缺陷 | 存在且完好 | 新方式 Patch |
存在且完好 | 存在但有缺陷 比如 xml 裡的檔案路徑不對 |
嘗試新方式無效後轉用舊方式 Patch |
存在但有缺陷 比如下載演算法不適配 |
存在但有缺陷 比如 xml 裡的檔案路徑不對 |
按序嘗試新、舊方式 Patch 無效後報錯 |
至此,JLink 7.62最佳化了手動增加新MCU型號支援方法痞子衡便介紹完畢了,掌聲在哪裡~~~
歡迎訂閱
文章會同時釋出到我的 部落格園主頁、CSDN主頁、知乎主頁、微信公眾號 平臺上。
微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。