狠狠做深爱婷婷久久一区,欧美日韩国内,久久麻豆精品传媒,久久久一区一区二区,色鬼伦理片,99视频精品久久,久久精品国产久久久久久,久久久伦理电影一区二,磁力天堂河北彩花

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 不復(fù)位調(diào)試的小技巧

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

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

01 前言

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

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

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

02 實(shí)現(xiàn)方法

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

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

03 MDK

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

圖片

圖片

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

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

圖片

2. 去掉 Reset after Connect 選項(xiàng)

圖片

3. 去掉 Update Target before Debugging

圖片

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

04 IAR

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

圖片

05 STM32CubeIDE

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

圖片

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

圖片

2. 在 Debugger->Misc 中取消 Verify flash download 選項(xiàng)

圖片

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

圖片

圖片

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

圖片

06 總結(jié)

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



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

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉
克拉玛依市| 马龙县| 岑巩县| 广德县| 汉中市| 廊坊市| 宣威市| 会泽县| 德清县| 和静县| 黄平县| 溧水县| 沾益县| 华宁县| 黔东| 镇宁| 永修县| 绍兴市| 大关县| 德格县| 封丘县| 故城县| 平阴县| 双桥区| 大埔区| 新兴县| 江川县| 习水县| 克拉玛依市| 江达县| 子洲县| 息烽县| 岳阳县| 湛江市| 吉安市| 汶川县| 奈曼旗| 武定县| 金堂县| 永济市| 唐山市|