<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 不復位調試的小技巧

不復位調試的小技巧

作者: 時(shí)間:2024-03-07 來(lái)源:STM32單片機 收藏

01 前言

本文引用地址:http://dyxdggzs.com/article/202403/456110.htm

在產(chǎn)品開(kāi)發(fā)時(shí),經(jīng)常會(huì )碰到在測試過(guò)程中或設備出廠(chǎng)后才發(fā)現程序異常,但當重新對設備仿真調試時(shí)卻復現不出現場(chǎng)的問(wèn)題,或者只能通過(guò)保存的日志信息艱難分析代碼運行到了何處而導致的異常。 

遇到這種場(chǎng)景,也并非無(wú)路可循。原則上只要我們通過(guò)調試時(shí),做到代碼不被重新下載覆蓋, 不被,就可能保留當前程序運行的狀態(tài),讓 Bug 無(wú)處藏身。

02 實(shí)現方法

首先,我們將編譯完成的工程燒錄到 ,保證 中所運行的代碼與要仿真的工程代碼一致,這樣從 MCU 獲取的程序位置才能與調試符號信息一致。 

不同的編譯器可以通過(guò)不同的方法進(jìn)行設置,但其目的和最終能達到的效果是一致的。我們就對常用的 MDK、IAR、STM32CubeIDE 三種不同編譯器分別進(jìn)行設置,使 MCU 在不的狀態(tài)下繼續調試。

03 MDK

1. 新建一個(gè).ini 文件,在文件中寫(xiě)入以下內容:LOAD %L INCREMENTAL,并加載到Initialization File,同時(shí)取消 Load Application at Startup 的選項。

圖片

圖片

這個(gè)腳本的目的是加載編譯生成的.axf 文件到 MDK 中,該文件包含 bin 代碼和調試相關(guān)的各種符號信息,以定位我們的 C 源碼。 

關(guān)于其語(yǔ)法說(shuō)明,可參考 MDK 的 uVision User’s Guide。

圖片

2. 去掉 Reset after Connect 選項

圖片

3. 去掉 Update Target before Debugging

圖片

4. 完成上述配置后,就可以在 MCU 不的情況下,像正常調試一樣加斷點(diǎn)調試了。

04 IAR

使用 IAR 時(shí),無(wú)需額外設置,直接使用其自帶的功能“Attach to Running Target”即可實(shí)現。

圖片

05 STM32CubeIDE

在 STM32CubeIDE 中,配置比較靈活,可以復制一個(gè) Debug 的配置,并在這個(gè)基礎上進(jìn)行修改。

圖片

1. 配置 Debugger->Reset behaviour Type 為 None

圖片

2. 在 Debugger->Misc 中取消 Verify flash download 選項

圖片

3. 在 Startup->Load Image and Symbols 中編輯下載代碼時(shí)的操作方式。并取消Download 選項

圖片

圖片

4. 在 Debug 時(shí),用上述配置好的調試配置,即可同樣實(shí)現不復位的調試

圖片

06 總結

利用上述不復位 MCU 繼續調試的方法,能夠保全現場(chǎng)的運行狀態(tài),重新接上即可對程序進(jìn)行斷點(diǎn)調試、單步執行等操作。對查找 Bug,發(fā)現并定位問(wèn)題點(diǎn),尤其對不易復現的偶發(fā)性故障十分有用。但是當 RDP Level≠0 時(shí),因為已經(jīng)開(kāi)啟了讀保護,所以無(wú)法通過(guò)上述方法調試



關(guān)鍵詞: MCU 復位 仿真器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>