VSCode是一個(gè)非常好用的工具收擦,首先免費(fèi),個(gè)人和商用都免費(fèi)谍倦。這就解決了很多問題塞赂,因?yàn)楝F(xiàn)在國(guó)內(nèi)對(duì)版權(quán)越來(lái)越重視了。所以告別那些破解的keil等工具吧昼蛀,涉及版權(quán)問題不說宴猾,還有可能有病毒,木馬等風(fēng)險(xiǎn)叼旋。
現(xiàn)在來(lái)總結(jié)一下VSCode如何實(shí)現(xiàn)在線調(diào)試STM32代碼的方法仇哆。先總結(jié)Windows平臺(tái),后面再來(lái)總結(jié)Mac OS平臺(tái)夫植。
1讹剔、安裝VSCode
這個(gè)不用說了
2、安裝windows-arm-none-eabi擴(kuò)展
這是一個(gè)交叉編譯工具鏈详民,使用這個(gè)工具將代碼編譯成可以在STM32上運(yùn)行的文件延欠。
直接在VSCode的Extension窗口中,搜索windows-arm-none-eabi沈跨,安裝由捎,截至我目前的情況是,需要安裝0.1.2版本饿凛,0.1.6版本編譯在最后copy的時(shí)候會(huì)出錯(cuò)狞玛。
方法是软驰,先安裝搜索到的版本,安裝完成后为居,點(diǎn)設(shè)置按鈕碌宴,選擇 Install Another Version。就可以選擇舊版本安裝蒙畴。
3贰镣、安裝openocd
https://gnutoolchains.com/arm-eabi/openocd/ 下載最新版本,解壓備用膳凝。
4碑隆、安裝msys
msys是為了提供shell運(yùn)行環(huán)境,避免Makefile不能執(zhí)行蹬音。
msys是MinGW的一部分上煤,先下載MinGW安裝器,安裝完成后運(yùn)行著淆。選擇MSYS劫狠,然后選擇右邊最上面的msys-base-bin,選中后會(huì)自動(dòng)選中其他一系列的package永部,然后應(yīng)用修改独泞。
安裝完成后,會(huì)在C:\MinGW\msys\1.0\bin看到安裝這些文件苔埋。主要看有沒有rm懦砂,mkdir這些。
5组橄、配置環(huán)境變量
打開“高級(jí)系統(tǒng)設(shè)置”--“環(huán)境變量”荞膘,找到用戶變量里的“path”,“編輯”玉工,分別添加上面安裝的三個(gè)工具的路徑羽资。
6、添加VSCode調(diào)試配置文件
切換到調(diào)試窗口瓮栗,添加launch.json配置文件削罩。
選擇C++(GDB/LLDB)
選擇arm-none-eabi-gcc.exe build and debug active file
自動(dòng)創(chuàng)建了一個(gè)launch.json文件,有一些默認(rèn)的配置
修改部分參數(shù)
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "可以改成自己的項(xiàng)目名",
"cwd": "${workspaceRoot}",
"request": "launch",
"type": "cppdbg",
"program": "${workspaceRoot}/build/xxx.elf", // 改成自己的項(xiàng)目生成的elf文件路徑
"stopAtEntry": false,
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\Users\\xxx\\.vscode\\extensions\\metalcode-eu.windows-arm-none-eabi-0.1.2\\bin\\arm-none-eabi-gdb.exe", // 改成arm-none-eabi-gdb.exe的路徑
"targetArchitecture": "arm", // 目標(biāo)架構(gòu)费奸,改成arm
"preLaunchTask": "build", // 啟動(dòng)調(diào)試之前要執(zhí)行的任務(wù)弥激,這里配置的編譯任務(wù),每次調(diào)試之前執(zhí)行一次編譯
"setupCommands": [ // 進(jìn)入GDB以后愿阐,自動(dòng)執(zhí)行的一些命令
{
"description": "連接GDB Server",
"text": "target remote localhost:3333",
"ignoreFailures": false
},
{
"description": "選擇調(diào)試文件(.elf)到gdb",
"text": "file D:/xxx/build/xxx.elf",
"ignoreFailures": false
},
{
"description": "Halt",
"text": "mon halt",
"ignoreFailures": false
},
{
"description": "Reset MCU",
"text": "mon reset init",
"ignoreFailures": false
},
{
"description": "下載代碼到MCU",
"text": "load",
"ignoreFailures": false
}
]
}
]
}
到這里微服,launch.json就配置完成了,下面配置task缨历。task主要有2個(gè)以蕴,一個(gè)編譯糙麦,一個(gè)是啟動(dòng)openocd。
Ctrl+Shift+P丛肮,打開VSCode的命令行赡磅,輸入configure task,選擇Tasks:Configure Task -- 回車 -- Create task.json file form template -- 回車 -- Others -- 回車宝与。
自動(dòng)創(chuàng)建一個(gè)task.json文件焚廊。
修改配置文件
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "make",
},
{
"label": "run openocd",
"type": "shell",
"command": "openocd -f interface/stlink.cfg -f target/stm32f1x.cfg" // 這里注意選擇和你板子相匹配的配置文件
}
]
}
可以在openocd目錄下的share->openocd->scripts下找到interface和target目錄,里面有配置文件可以選擇习劫。
到此咆瘟,所有工作都完成了。
注意诽里,需要先運(yùn)行啟動(dòng)openocd的任務(wù)袒餐,然后切換到調(diào)試窗口,點(diǎn)擊運(yùn)行即可自動(dòng)編譯谤狡,然后燒寫灸眼,然后運(yùn)行到斷點(diǎn)。