痞子衡嵌入式:不同J-Link版本對於i.MXRT1170連接複位後處理行為有所不同

来源:https://www.cnblogs.com/henjay724/p/18216869
-Advertisement-
Play Games

大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是不同J-Link版本對於i.MXRT1170連接複位後處理行為。 痞子衡之前寫過一篇舊文 《i.MXRT1170上用J-Link連接複位後PC總是停在0x223104的原因》,這篇文章詳細解釋了 RT1170 BootROM 代碼里軟體 ...



  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是不同J-Link版本對於i.MXRT1170連接複位後處理行為

  痞子衡之前寫過一篇舊文 《i.MXRT1170上用J-Link連接複位後PC總是停在0x223104的原因》,這篇文章詳細解釋了 RT1170 BootROM 代碼里軟體實現的 Debug Mailbox 機制對 J-Link 調試體驗的影響,文末還給了結論 J-Link 里只要執行 reset 後 PC 就必定會停在 0x223014,這句話其實不完全準確,因為底層 J-Link 腳本內容可以改變這個行為,這在不同 J-Link 版本的 DLL 處理里就有體現。今天痞子衡要聊得就是這個話題:

一、不同J-Link版本關於RT1170更新

  為了瞭解不同 J-Link 版本對於 RT1170 處理差異,痞子衡從 J-Link 歷史版本記錄 https://www.segger.com/downloads/jlink/ReleaseNotes_JLink.html 里抽取了從 V6.64 - V7.96i 所有關於 RT1170 更新如下,其中 V6.86、V6.94、V6.98c、V7.86 四個版本涉及 Debug 連接處理,但是沒有說明進一步實現細節。

J-Link版本 關於RT1170更新
V6.64 DLL 7.Added (QSPI) flash programming support for NXP iMXRT117x series devices.
V6.72 DLL 2.Added (QSPI) flash programming support for the Cortex-M4 core of NXP iMXRT117x series devices.
V6.80b DLL 1.NXP RT117x QSPI flash programming: Some necessary pins were not correctly configured to connect to the FLEXSPI controller. Fixed.
V6.86 DLL 14.NXP RT117x: Reset did not work for rev B0 silicon. Fixed.
V6.88 DLL 57.Added 4byte address mode QSPI flash programming support NXP iMXRT117x series devices.
V6.94 DLL 3.JTAG chain detection for NXP iMXRT117x series devices, fixed.
V6.98 DLL 7.Added debug and (QSPI) flash programming support for NXP MIMXRT1177xxxA_M4 and MIMXRT1177xxxA_M7.
V6.98c DLL 1.NXP iMXRT117x: Reading PC & SP after reset could return incorrect values. Fixed.
V7.00 DLL 4.Added quad memory mapped read for NXP iMXRT117x series devices with SPIFI-Lib support.
V7.22b DLL 10.NXP i.MXRT117x Cortex-M4 debug: Software breakpoints did not work correctly in case the LMem caches were enabled. Fixed.
V7.50 DLL 28.NXP i.MXRT117x series: Connect sequence to the Cortex-M4 failed under certain circumstances. Fixed.
DLL 42.NXP i.MXRT117x series: Some devices passed by ARM KEIL MDK were not detected correctly. Fixed.
V7.54 DLL 12.NXP iMXRT117x devices: Flashloader did not save and restore all used registers. Fixed.
V7.82d DLL 11.NXP i.MXRT117x: Added flash programming support for FlexSPI 2 flash bank.
V7.84c DLL 11.NXP iMXRT117x: Detecting FlexSPI2 boot config and booting from FlexSPI2 did not work. Fixed.
V7.86 DLL 4.NXP iMXRT117x: Debug connection would fail when debugging both Cortex-M4 and Cortex-M7 cores and performing a reset via Cortex-M7. Fixed.
V7.86e DLL 9.NXP iMXRT117x: FlexSPI Flash programming did not work. Introduced with V7.86. Fixed.
V7.88k DS 5.NXP iMXRT117x FlexSPI support: Under certain circumstances writing less than four bytes could fail. Fixed.
V7.88i DS 6.NXP iMXRT117x FlexSPI1 support: Added support for pin configuration "nCS@AD18_CLK@AD19_D0@AD20_D1@AD21_D2@AD22_D3@AD23"
V7.94d DS 3.NXP iMXRT1170: Flash programming did not work. Introduced with V7.88l. Fixed.

  從 J-Link 版本來看,V6.86 開始正式支持 RT1170 B0 Silicon(恩智浦最終發佈的晶元版本),我們就從 V6.86 版本開始做測試。在測試之前,痞子衡在板載串列 NOR Flash 里燒錄了一個鏈接在 0x30002000 的 XIP App 程式。然後使用 J-Link commander 操作如下:

  上述測試結果表明:當晶元上電/複位能正常啟動鏈接在 0x30002000 的 App 時,J-Link 下用預設 MIMXRT1176XXXA_M7 設備去連晶元複位後,PC 能停在 App 里,因為自帶 DLL 里集成了 jlinkscript 處理,這在 dll 里搜索 "Valid application detected. Setting PC / SP manually." 信息可知。但是如果我們自己添加的 jlinkscript 不包含這樣的處理(比如用超級下載演算法 UFL),那麼 PC 還是停在 0x223104。

  如果我們在板載串列 NOR Flash 里燒錄了一個不是鏈接在 0x30002000 的 App,痞子衡燒錄得是鏈接在 0x3000a000 處的 XIP App(總之保證 Flash 偏移 0x2000 處沒有有效 App 中斷向量表),再來做同樣的測試(在晶元能正常啟動 App 情況下),此時 PC 永遠停在 0x223104,這說明 J-Link DLL 預設集成的 jlinkscript 永遠是從 Flash 0x2000 偏移處取 App 信息去設置 PC、SP

  我們緊接著上面的測試,使用 mem32 命令讀取 0x3000a000 處內容,發現是有效 App 數據,這說明 FlexSPI 外設被正常初始化了,此時手動設置 PC、SP 後可以跳轉到 App 里,這意味著如果我們自定義 jlinkscript 里能夠解析 IVT 去獲取 App 信息,那麼可以做到通用。

三、不同J-Link版本對於RT1170連接複位處理

  由於 V6.86 版本對於連接複位處理已經一定程度上滿足實際需求,因此對比後續更高 J-Link 版本意義不太重要了,不過這裡有一個差異不得不提。正常來說,在晶元上電/複位能正常啟動鏈接在 0x30002000 的 App 情況下,reset 命令執行完後,PC 應該 halt 在 BootROM 里,需要繼續使用 go 命令才能跳轉進入 App,這在 V6.86 上確實如此。然後在 V7.94f 版本上測試來看,reset 之後,PC 已經 halt 在 App 里了。

  至此,不同J-Link版本對於i.MXRT1170連接複位後處理行為痞子衡便介紹完畢了,掌聲在哪裡~~~

歡迎訂閱

文章會同時發佈到我的 博客園主頁CSDN主頁知乎主頁微信公眾號 平臺上。

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

  最後歡迎關註痞子衡個人微信公眾號【痞子衡嵌入式】,一個專註嵌入式技術的公眾號,跟著痞子衡一起玩轉嵌入式。

痞子衡嵌入式-微信二維碼 痞子衡嵌入式-微信收款二維碼 痞子衡嵌入式-支付寶收款二維碼

  衡傑(痞子衡),目前就職於某全球頂級半導體原廠MCU系統部門,擔任高級嵌入式系統應用工程師。

  專欄內所有文章的轉載請註明出處:http://www.cnblogs.com/henjay724/

  與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]

  可以關註痞子衡的Github主頁 https://github.com/JayHeng,有很多好玩的嵌入式項目。

  關於專欄文章有任何疑問請直接在博客下麵留言,痞子衡會及時回覆免費(劃重點)答疑。

  痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Java JUC&多線程 基礎完整版 目錄Java JUC&多線程 基礎完整版1、 多線程的第一種啟動方式之繼承Thread類2、多線程的第二種啟動方式之實現Runnable介面3、多線程的第三種實現方式之實現Callable介面4、多線的常用成員方法5、線程的優先順序6、守護線程7、線程的讓出8、線 ...
  • 本文介紹基於Python語言,遍歷文件夾並從中找到文件名稱符合我們需求的多個.txt格式文本文件,並從上述每一個文本文件中,找到我們需要的指定數據,最後得到所有文本文件中我們需要的數據的合集的方法~ ...
  • 作為後端工程師,多數情況都是給別人提供介面,寫的好不好使你得重視起來。 最近我手頭一些活,需要和外部公司對接,我們需要提供一個介面文檔,這樣可以節省雙方時間、也可以防止後續扯皮。這是就要考驗我的介面是否規範化。 1. 介面名稱清晰、明確 顧名思義,介面是做什麼的,是否準確、清晰?讓使用這一眼就能知道 ...
  • SpringBoot筆記 SpringBoot文檔 官網: https://spring.io/projects/spring-boot 學習文檔: https://docs.spring.io/spring-boot/docs/current/reference/html/ 線上API: http ...
  • 一、背景說明 1.1 效果演示 用python開發的爬蟲採集軟體,可自動抓取抖音評論數據,並且含二級評論! 為什麼有了源碼還開發界面軟體呢?方便不懂編程代碼的小白用戶使用,無需安裝python、無需懂代碼,雙擊打開即用! 軟體界面截圖: 爬取結果截圖: 以上。 1.2 演示視頻 軟體運行演示視頻:見 ...
  • @DateTimeFormat 和 @JsonFormat 是 Spring 和 Jackson 中用於處理日期時間格式的註解,它們有不同的作用: @DateTimeFormat @DateTimeFormat 是 Spring 框架提供的註解,用於指定字元串如何轉換為日期時間類型,以及如何格式化日 ...
  • OpenAPI 規範是用於描述 HTTP API 的標準。該標準允許開發人員定義 API 的形狀,這些 API 可以插入到客戶端生成器、伺服器生成器、測試工具、文檔等中。儘管該標準具有普遍性和普遍性,但 ASP.NET Core 在框架內預設不提供對 OpenAPI 的支持。 當前 ASP.NET ...
  • 不廢話,直接代碼 private Stack<Action> actionStack = new Stack<Action>(); private void SetCellValues() { var worksheet = Globals.ThisAddIn.Application.ActiveS ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...