• 資料介紹
    • 前言
    • 實現(xiàn)方法
    • MDK
    • IAR
    • STM32CubeIDE
    • 總結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1325 調(diào)試小技巧之不復(fù)位調(diào)試

03/24 09:44
466
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1325 調(diào)試小技巧之不復(fù)位調(diào)試

598.23 KB

前言

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

遇到這種場景,也并非無路可循。原則上只要我們通過仿真器調(diào)試時,做到代碼不被重新下載覆蓋,MCU 不被復(fù)位,就可能保留當(dāng)前程序運行的狀態(tài),讓 Bug 無處藏身。

實現(xiàn)方法

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

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

MDK

IAR

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

STM32CubeIDE

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

總結(jié)

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

資料預(yù)覽

相關(guān)推薦