vscode+stlink實現(xiàn)在線調(diào)試

1.引言

嵌入式系統(tǒng)的開發(fā)通常需要使用調(diào)試工具來驗證和調(diào)試代碼铜异。ST-Link是STMicroelectronics提供的一種常用調(diào)試和編程工具,用于與STM32微控制器系列進行通信辅搬。本文將介紹如何在Visual Studio Code(VSCode)中配置并使用ST-Link來調(diào)試嵌入式系統(tǒng)。

2.安裝必要軟件脖旱、工具和插件

2.1.安裝vscode;

沒什么要說的

2.2.安裝cortex-debug插件伞辛;

在VSCode中烂翰,插件是擴展功能的關(guān)鍵。為了與ST-Link一起使用蚤氏,我們需要安裝一個支持ARM嵌入式系統(tǒng)的插件甘耿。打開VSCode,點擊左側(cè)的擴展圖標(biāo)(或使用快捷鍵Ctrl+Shift+X)竿滨,然后在搜索框中輸入“Cortex-Debug”并安裝該插件佳恬。

2.3.安裝MingW64;

安裝完成記得把安裝路勁加入到環(huán)境變量。

C:\mingw64\bin

進入路徑C:\mingw64\bin于游。復(fù)制mingw32-make.exe毁葱,并改名為make.exe

2.4.安裝git;

沒什么說的

2.5.安裝arm-none-eabi-gcc

安裝完成后記得將路徑加入到環(huán)境變量

C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2020-q4-major\bin

2.6.安裝 ST-LINK GDB server

st-util是ST-LINK GDB server。st-util需要通過編譯官方源碼得到贰剥。github上找到源碼倾剿,https://github.com/stlink-org/stlink
通過git bash命令下載源碼。

git clone源碼

下載完成后蚌成,通過下圖所示方式編譯STLINK源碼前痘。


stlink編譯流程

編譯完成后在路徑stlink\build-mingw\bin下找到如下圖所示文件。st-util就是本次需要的GDB Server工具担忧。

stlink toolset

為了便于管理芹缔,可以把目錄bin整體復(fù)制到C盤下。

3.配置launch.json文件

{
    // 使用 IntelliSense 了解相關(guān)屬性瓶盛。 
    // 懸停以查看現(xiàn)有屬性的描述最欠。
    // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Cortex Debug",
            "cwd": "${workspaceFolder}",
            "executable": "./build/tmr2104.elf",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "stutil",
            "serverpath": "C:/Program Files (x86)/STMicroelectronics/bin/st-util.exe",
            "interface": "swd",
            "device": "STM32G431CB",
            "v1": false,
            "runToEntryPoint": "main",
            //.svd可以在keil官網(wǎng)去下載STM32G0xx_DFP
            "svdFile": "G:/SVD/STM32G431xx.svd",
            "showDevDebugOutput": "both"
        }
    ]
}

如果需要在在線調(diào)試期間惩猫,查看MCU寄存器數(shù)據(jù)芝硬,需加入。svd文件轧房。"svdFile": "G:/SVD/STM32G431xx.svd",拌阴。svd文件可以去keil官網(wǎng)下載。

4.用cubemx創(chuàng)建一個makefile工程

創(chuàng)建完成工程后锯厢,用vscode打開皮官。在命令行輸入make指令編譯功能脯倒。如下如所示:


make

5.連接硬件

將ST-Link調(diào)試器連接到你的目標(biāo)STM32開發(fā)板上实辑,并確保硬件連接正確。

6.開始調(diào)試

通過點擊VSCode中的調(diào)試按鈕或使用快捷鍵F5啟動調(diào)試會話藻丢。如果一切設(shè)置正確剪撬,VSCode將連接到ST-Link調(diào)試器并開始執(zhí)行你的代碼。

[2023-11-26T03:18:40.572Z] SERVER CONSOLE DEBUG: onBackendConnect: gdb-server session connected. You can switch to "DEBUG CONSOLE" to see GDB interactions.
"C:/Program Files (x86)/STMicroelectronics/bin/st-util.exe" -p 50000 --no-reset
st-util 1.7.0-338-g509d60e
2023-11-26T11:18:40 INFO common.c: STM32G43x_G44x: 32 KiB SRAM, 128 KiB flash in at least 2 KiB pages.
2023-11-26T11:18:40 INFO gdb-server.c: Listening at *:50000...
2023-11-26T11:18:42 INFO common.c: STM32G43x_G44x: 32 KiB SRAM, 128 KiB flash in at least 2 KiB pages.
2023-11-26T11:18:42 INFO gdb-server.c: Found 6 hw breakpoint registers
2023-11-26T11:18:42 INFO gdb-server.c: GDB connected.
2023-11-26T11:18:42 INFO gdb-server.c: Found 6 hw breakpoint registers
2023-11-26T11:18:42 INFO common.c: STM32G43x_G44x: 32 KiB SRAM, 128 KiB flash in at least 2 KiB pages.
2023-11-26T11:18:42 INFO gdb-server.c: flash_erase: block 08000000 -> 7800
2023-11-26T11:18:42 INFO gdb-server.c: flash_erase: page 08000000
2023-11-26T11:18:42 INFO gdb-server.c: flash_erase: page 08000800
2023-11-26T11:18:42 INFO gdb-server.c: flash_erase: page 08001000
2023-11-26T11:18:42 INFO gdb-server.c: flash_erase: page 08001800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08002000
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08002800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08003000
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08003800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08004000
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08004800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08005000
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08005800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08006000
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08006800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08007000
2023-11-26T11:18:43 INFO flash_loader.c: Starting Flash write for WB/G0/G4/L5/U5/H5/C0
2023-11-26T11:18:43 INFO gdb-server.c: flash_do: block 08000000 -> 7800
2023-11-26T11:18:43 INFO gdb-server.c: flash_do: page 08000000
  1/1   pages written
2023-11-26T11:18:43 INFO gdb-server.c: flash_do: page 08000800
  1/1   pages written
2023-11-26T11:18:43 INFO gdb-server.c: flash_do: page 08001000
  1/1   pages written
2023-11-26T11:18:44 INFO gdb-server.c: flash_do: page 08001800
  1/1   pages written
2023-11-26T11:18:44 INFO gdb-server.c: flash_do: page 08002000
  1/1   pages written
2023-11-26T11:18:44 INFO gdb-server.c: flash_do: page 08002800
  1/1   pages written
2023-11-26T11:18:44 INFO gdb-server.c: flash_do: page 08003000
  1/1   pages written
2023-11-26T11:18:45 INFO gdb-server.c: flash_do: page 08003800
  1/1   pages written
2023-11-26T11:18:45 INFO gdb-server.c: flash_do: page 08004000
  1/1   pages written
2023-11-26T11:18:45 INFO gdb-server.c: flash_do: page 08004800
  1/1   pages written
2023-11-26T11:18:45 INFO gdb-server.c: flash_do: page 08005000
  1/1   pages written
2023-11-26T11:18:45 INFO gdb-server.c: flash_do: page 08005800
  1/1   pages written
2023-11-26T11:18:46 INFO gdb-server.c: flash_do: page 08006000
  1/1   pages written
2023-11-26T11:18:46 INFO gdb-server.c: flash_do: page 08006800
  1/1   pages written
2023-11-26T11:18:46 INFO gdb-server.c: flash_do: page 08007000
  1/1   pages written
2023-11-26T11:18:46 INFO gdb-server.c: Found 6 hw breakpoint registers

7.結(jié)論

通過這些步驟悠反,你現(xiàn)在應(yīng)該能夠在VSCode中成功配置并使用ST-Link調(diào)試你的嵌入式系統(tǒng)残黑。這種集成式的開發(fā)環(huán)境可以提高開發(fā)效率馍佑,并幫助你更輕松地診斷和修復(fù)代碼中的問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梨水,一起剝皮案震驚了整個濱河市拭荤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疫诽,老刑警劉巖舅世,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奇徒,居然都是意外死亡雏亚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門摩钙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罢低,“玉大人,你說我怎么就攤上這事胖笛⊥郑” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵匀钧,是天一觀的道長翎碑。 經(jīng)常有香客問我,道長之斯,這世上最難降的妖魔是什么日杈? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮佑刷,結(jié)果婚禮上莉擒,老公的妹妹穿的比我還像新娘。我一直安慰自己瘫絮,他們只是感情好涨冀,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著麦萤,像睡著了一般鹿鳖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上壮莹,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天翅帜,我揣著相機與錄音,去河邊找鬼命满。 笑死涝滴,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播歼疮,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼杂抽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了韩脏?” 一聲冷哼從身側(cè)響起缩麸,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赡矢,沒想到半個月后匙睹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡济竹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年痕檬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片送浊。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡梦谜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出袭景,到底是詐尸還是另有隱情唁桩,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布耸棒,位于F島的核電站荒澡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏与殃。R本人自食惡果不足惜单山,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望幅疼。 院中可真熱鬧米奸,春花似錦、人聲如沸爽篷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逐工。三九已至铡溪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泪喊,已是汗流浹背棕硫。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窘俺,地道東北人饲帅。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像瘤泪,于是被迫代替她去往敵國和親灶泵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容