VSCode+arm-none-eabi+openocd+msys實(shí)現(xiàn)STM32在線調(diào)試

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。就可以選擇舊版本安裝蒙畴。


image.png

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)用修改独泞。

image.png

安裝完成后,會(huì)在C:\MinGW\msys\1.0\bin看到安裝這些文件苔埋。主要看有沒有rm懦砂,mkdir這些。

5组橄、配置環(huán)境變量

打開“高級(jí)系統(tǒng)設(shè)置”--“環(huán)境變量”荞膘,找到用戶變量里的“path”,“編輯”玉工,分別添加上面安裝的三個(gè)工具的路徑羽资。


image.png

6、添加VSCode調(diào)試配置文件

切換到調(diào)試窗口瓮栗,添加launch.json配置文件削罩。


image.png

選擇C++(GDB/LLDB)


image.png

選擇arm-none-eabi-gcc.exe build and debug active file
image.png

自動(dòng)創(chuàng)建了一個(gè)launch.json文件,有一些默認(rèn)的配置


image.png

修改部分參數(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 -- 回車宝与。


image.png

image.png

image.png

自動(dòng)創(chuàng)建一個(gè)task.json文件焚廊。


image.png

修改配置文件
{
    // 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目錄,里面有配置文件可以選擇习劫。


image.png

到此咆瘟,所有工作都完成了。
注意诽里,需要先運(yùn)行啟動(dòng)openocd的任務(wù)袒餐,然后切換到調(diào)試窗口,點(diǎn)擊運(yùn)行即可自動(dòng)編譯谤狡,然后燒寫灸眼,然后運(yùn)行到斷點(diǎn)。


image.png
到此實(shí)現(xiàn)VSCode+arm-none-eabi+openocd+msys的在線STM32調(diào)試.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末墓懂,一起剝皮案震驚了整個(gè)濱河市幢炸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拒贱,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佛嬉,死亡現(xiàn)場(chǎng)離奇詭異逻澳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)暖呕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門斜做,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人湾揽,你說我怎么就攤上這事瓤逼。” “怎么了库物?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵霸旗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我戚揭,道長(zhǎng)诱告,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任民晒,我火速辦了婚禮精居,結(jié)果婚禮上锄禽,老公的妹妹穿的比我還像新娘。我一直安慰自己靴姿,他們只是感情好沃但,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著佛吓,像睡著了一般宵晚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辈毯,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天坝疼,我揣著相機(jī)與錄音,去河邊找鬼谆沃。 笑死钝凶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的唁影。 我是一名探鬼主播耕陷,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼据沈!你這毒婦竟也來(lái)了哟沫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤锌介,失蹤者是張志新(化名)和其女友劉穎嗜诀,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孔祸,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隆敢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了崔慧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拂蝎。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖惶室,靈堂內(nèi)的尸體忽然破棺而出温自,到底是詐尸還是另有隱情,我是刑警寧澤皇钞,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布悼泌,位于F島的核電站,受9級(jí)特大地震影響夹界,放射性物質(zhì)發(fā)生泄漏券躁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望也拜。 院中可真熱鬧以舒,春花似錦、人聲如沸慢哈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)卵贱。三九已至滥沫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間键俱,已是汗流浹背兰绣。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留编振,地道東北人缀辩。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像踪央,于是被迫代替她去往敵國(guó)和親臀玄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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