痞子衡嵌入式:MCUXpresso IDE下使用J-Link下載演算法在Flash除錯注意事項(i.MXRT500為例)

痞子衡發表於2020-07-30

  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是MCUXpresso IDE下使用J-Link下載演算法在Flash除錯注意事項

  痞子衡前段時間寫過一篇小文《為i.MXRT設計更新Segger J-Link Flash下載演算法檔案》,介紹了痞子衡在github上的開源i.MXRT下載演算法專案,這個專案收集了幾乎所有i.MXRT型號的J-Link flash下載演算法源工程,基於這個源工程可以很輕鬆修改生成不同flash的演算法檔案用於各大IDE以及J-Flash。今天痞子衡就來介紹一下如何使用新生成的flash演算法檔案配合J-Link偵錯程式在MCUXpresso IDE下XIP除錯(基於i.MXRT500)。

1、準備測試環境

  首先需要準備好測試環境,包含必要的軟體和硬體,痞子衡的環境如下:

  • 整合開發環境: MCUXpresso IDE v11.2.0_4120,點此下載
  • 軟體開發包: SDK_2.8.0_EVK-MIMXRT595_PRC(Toolchain需包含MCUXpresso IDE),點此下載
  • 軟體驅動: J-Link driver v6.72b,點此下載
  • 硬體工具: J-Link Plus偵錯程式
  • 硬體開發板: MIMXRT595-EVK (Rev.C1)

  其中整合開發環境和軟體開發包需要有如下版本對應關係,因為MCUXpresso IDE是恩智浦基於GCC和Eclipse而設計的免費IDE,而且主要是為恩智浦MCU設計的,所以跟恩智浦MCU SDK包有一定的捆綁關係。

2、新生成flash演算法

  我們測試的板卡是MIMXRT595-EVK (Rev.C1),這個板卡預設是在FlexSPI0上連線的八線Flash(MX25UM51345),J-Link驅動裡如果支援i.MXRT500的話預設flash演算法也是這個八線flash,為了測試新生成的flash演算法,我們將板卡rework一下,FlexSPI0連線到四線Flash(IS25WP064)。

  我們現在需要為這個四線Flash(IS25WP064)做一個新flash演算法,開啟痞子衡的github開源專案如下源工程,確保工程新增的is25wp064相關的原始檔,然後編譯生成新的MIMXRT5XX_FLEXSPI.FLM(即flash演算法檔案)。

  有了新flash演算法檔案,將其放到 \SEGGER\JLink_V672b\Devices\NXP\iMXRT5xx 路徑下,為了跟預設flash演算法區分開來,可以將其重新命名為MIMXRT5XX_FLEXSPI_IS25WP064.FLM,順便更新JLinkDevices.xml檔案。

  將板卡供電,連上Jlink偵錯程式,使用JlinkCommander的loadbin命令試一下新flash演算法是否有效,在確保新flash演算法沒問題時再進入IDE除錯。

3、進入MCUXpresso IDE除錯

3.1 匯入SDK及開啟示例工程

  開啟MCUXpresso IDE,預設Installed SDKs介面框裡沒有RT500,我們直接將下載好的SDK_2.8.0_EVK-MIMXRT595_PRC.zip包拖到Installed SDKs介面框中即可。

  這時候Installed SDKs介面框裡可以看到RT500,選中它然後繼續操作來匯入example,我們就選demo_apps下的hello_world例程,編譯這個工程確保沒問題。

  在安裝MCUXpresso IDE時會同時安裝一個預設Jlink驅動(一般路徑在C:\Program Files (x86)\SEGGER\JLink),這個驅動版本不一定新,MCUXpresso會預設呼叫這個驅動,但很多時候我們都是手動安裝新Jlink驅動來使用的(痞子衡裝在了C:\tools_mcu\SEGGER\JLink_V672b),前面我們新生成的flash演算法也是放在手動安裝的Jlink驅動目錄下的,因此我們需要在MCUXpresso裡重設J-Link Server路徑,指向手動安裝的Jlink驅動。

3.3 藉助J-Link線上除錯

  看起來一切就緒了,讓我們開始在flash除錯吧,點選Debug按鈕,會看到MCUXpresso彈出了偵錯程式型別選擇,並且識別到了我們連線的J-Link,點選OK確認。

  這時候可以看到MCUXpresso呼叫了J-Link驅動完成了程式碼燒寫(這時候去讀flash,裡面的內容是燒錄正確的),但是介面並沒有停在main函式裡,並且沒法單步除錯,這是為什麼?

3.4 滿足MCUXpresso除錯流程

  然後痞子衡去諮詢了MCUXpresso IDE研發團隊,得知它預設的除錯流程跟一般的通用IDE(Keil,IAR)不太一樣,一般的IDE可以直接引導App啟動來除錯,但MCUXpresso IDE不主動引導App,而是復位後讓App自然啟動,然後嘗試Attach上去接管除錯,所以根據這個流程,我們需要做兩點必要的改動:

  1. 更新flash_config頭(將hyper flash配置改為QSPI Flash配置),需要與板卡連線的flash相匹配
  2. 設定ISP模式為從Flash啟動,保證reset之後ROM能引導App從Flash正常啟動

  改動完之後,我們終於可以愉快地單步除錯了。

  至此,MCUXpresso IDE下使用J-Link下載演算法在Flash除錯注意事項痞子衡便介紹完畢了,掌聲在哪裡~~~

歡迎訂閱

文章會同時釋出到我的 部落格園主頁CSDN主頁知乎主頁微信公眾號 平臺上。

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

相關文章