一、 使用工具
cortex-debug 插件
1.png
PyOcd 燒錄器
可以通過 pip install pyocd 來安裝
二、 pyocd 配置
首先要找到其芯片對應的包。其網(wǎng)上找。我這里使用的是 stm32f103ve ,其包是Keil.STM32F1xx_DFP.2.4.0.pack。
另外在項目中加入 pyocd 的配置文件 pyocd.yaml。其內(nèi)容為,
pack: - ChipPackage/Keil.STM32F1xx_DFP.2.4.0.pack
即包的路徑。
我以 stm32cubemx 生的項目結(jié)構(gòu)為例,
1.png
其中 pyocd 的下載命令為,
> pyocd load -t stm32f103ve ./build/test.elf
三、 vscode 的 launch.json 配置
首先創(chuàng)建調(diào)試的配置文件 launch.json
1.png
選擇 C/C++(LLVM/GDB)的調(diào)試方式,然后就生成相應的配置文件。
接下來,點擊右正角的按鈕
image.png
選擇 Cortex Debug: PyOcd
插件就會幫我們生成默認的配置信息。
image.png
其中 executable 代表你的可執(zhí)行文件路徑
其他的含義:
cwd 工作目錄
executable 執(zhí)行文件
name 在存在多個調(diào)試方案時里,用以區(qū)別
request 我也不太清楚
type 不懂
runToEntryPoint 進行程序后第一個停止的位置選擇在main入口
showDevDebugOutput 不懂
servertype 可能表示插件會調(diào)用什么下載方案吧
但是只有這些信息還不行,還要告訴你交叉編譯的對方平臺是什么。
image.png
另外還要注意的是,在C/C++中若要進行調(diào)試,必須在每個編譯命令中加入 -g。在stm32cubemx的makefile文件中,其有一個 Debug 對數(shù),是作為調(diào)試開關。
debug開關
判斷過程
四、 注意事項
若你寫好配置文件后,運行調(diào)試,出現(xiàn)以下兩種問題的其中一種
點擊調(diào)試后,terminal 里報錯
image.png
或者在調(diào)試的時候,vscode進入的不是源文件。
image.png
產(chǎn)生這種情況的,主要是你的路徑中包含有中文。
第1種情況是在 Cortex-debug 插件在 v1.6 的版本上會出現(xiàn)。你可以選擇把其轉(zhuǎn)換為 v1.4。但是,這里調(diào)試的話,就會出現(xiàn)第二種情況。
因此,最佳解決方法是Cortex-debug可以保持在 v1.6 上,但是 項目路徑改為不包中文。
五、 我理解下的調(diào)試
我之所以想要進行這次調(diào)試實驗,除了在應用中調(diào)試是很重要,還有的是我想知道c++在arm-none-eabi-g++下是編譯成什么代碼,從而從它的編譯匯編來理解其語言的本質(zhì)。
當源文件被編譯后,就會產(chǎn)生匯編,轉(zhuǎn)成機器代碼。而調(diào)試的關鍵是明白源代碼哪部分轉(zhuǎn)成什么樣的匯編,因此就需要在編譯過程mark下一些調(diào)試信息,就是命令參數(shù)-g的作用。
而作為嵌入式下的編程,雖然和PC上編程有點不同,但本質(zhì)也是一樣的。也是通過一個調(diào)試進程和執(zhí)行中的軟件進行交互。舉個例子說,一個正在運行的軟件,若沒有調(diào)試的任務給到它,那么它就按照原來的順序來執(zhí)行,但若調(diào)試進程發(fā)出了調(diào)試請求后,其就會停下手上的工作,等待進程發(fā)出的命令,從而進行下一步動作。
我們從cortex-debug插件也能看得出來,
image.png
其使用pyocd,而pyocd也調(diào)用了gdbserver命令。
image.png
軟件的核心是gdbserver。
另外一定要用好 vscode 的窗口顯示和GDB的相關命令
image.png
image.png
其中,若你想查看當前行的匯編是怎樣的,或者當前的內(nèi)存是怎樣的。就要在 DEBUG CONSOLE 里輸入相應的gdb命令。
上一篇:STM32讀取HMC5883L的偏航角數(shù)據(jù)
下一篇:STM32 Complier Warning or errors
推薦閱讀最新更新時間:2025-05-25 01:47




設計資源 培訓 開發(fā)板 精華推薦
- ADP166CB-EVALZ,ADP166 LFCSP LDO 線性穩(wěn)壓器評估板
- LT1024 的典型應用 - 雙通道、匹配皮安、微伏輸入、低噪聲運算放大器
- 使用 Analog Devices 的 LTC5800IWR-IPRB 的參考設計
- ESP32C3墨水屏擺件
- 語音報警
- 使用 Analog Devices 的 LTC1258CMS8-4.1 的參考設計
- MD1822DB1,基于 MD1822 + TC7920 的演示板:三級高速 100V 2.0A 脈沖發(fā)生器
- OM40003: LPCXpresso54018開發(fā)板
- REF193 精密微功耗、低壓差電壓基準的典型應用
- TAR5S43 點穩(wěn)壓器(低壓差穩(wěn)壓器)的典型應用
- 華為余承東:鴻蒙智能駕駛領先行業(yè),2026年實現(xiàn)L4自動駕駛
- 深圳發(fā)布全國首個全域開放自動駕駛技術指引
- 接近L4級 無人駕駛特斯拉Model Y上路測試
- 緊急自動靠邊停車系統(tǒng)AEP是如何工作的?
- 整合智能戰(zhàn)線,奇瑞智能化轉(zhuǎn)型走向輔助駕駛和座艙的大一統(tǒng)
- 香港科技大學開發(fā)出新型F3T傳感器 為機器人觸覺感知帶來突破
- 研究人員開發(fā)鋰沉積行為調(diào)控策略 提高全固態(tài)電池的性能和循環(huán)壽命
- 億緯鋰能瞄準2026,布局全固態(tài)電池生產(chǎn)工藝突破
- 人形機器人產(chǎn)業(yè)標準互認計劃啟動;地瓜機器人完成1億美元的A輪融資
- 中國廠商主導全球新能源汽車電池市場,寧德時代穩(wěn)居首位