vscode + Jlink 一鍵調試stm32 單片機程序
- 安裝交叉編譯工具鏈
- 安裝 x-pack 構建工具
- 安裝 JLink 工具
- gnu-debuger 插件
- 編譯
- 一鍵啟動調試
安裝交叉編譯工具鏈
stm32采用 交叉編譯工具鏈 arm-none-eabi-xxx, 下載之后解壓,壓縮包內部結構如下圖:
目錄下的bin 就是交叉編譯工具鏈的可執行文件地址
將壓縮包拷貝到C盤,并將該交叉編譯工具鏈的路徑添加到環境變量PATH中
在 powershell 中執行 arm-none-eabi-5.4.1-gcc.exe --version 有如下打印則表示安裝正確
安裝 x-pack 構建工具
xPack Windows Build Tools 是一個專為Windows環境設計的軟件包,能用來在 windows 下構建交叉編譯程序。安裝該工具之后,設置環境變量,終端中可以使用make 工具構建代碼。
安裝 JLink 工具
Jlink 工具是一款廣泛用于調試單片機程序的調試工具,官網下載安裝好后,設置環境變量,在終端中可以運行程序。
JLink 有一系列工具,其中 JFlash 可以用于讀寫單片機中的falsh,用于下載執行程序,JLinkGDBServer.exe 和 JlinkDGBServerCL.exe 分別是圖形界面的調試服務端程序和命令行調試服務端程序。其中 JFlash 可以使用命令行下載程序,使用方法為:JFlash.exe -openprjC:\stm32f405zg.jflash -openD:\path\base_app_test.bin,8010000 -auto -startapp -exit -jflashlogdownload
gnu-debuger 插件
gnu-debuger 插件是一款輕量化單片機程序調試插件,其借助 arm-none-eabi-gdb.exe 和 JlinkDGBServerCL.exe兩個工具,實現單片機程序的一鍵下載調試。
一鍵安裝好插件之后,在工作空間中新增一個launch.json 文件,在文件中添加如下的配置:
{// 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": [{"type": "gnu-debugger","request": "launch","name": "GNU debugger","program": "${workspaceFolder}\\path\\run_test.elf","toolchain": "","client": "arm-none-eabi-gdb.exe","server": "JLinkGDBServer","windows": {"server": "JLinkGDBServerCL.exe",},"serverArgs": ["-if", "SWD","-device", "STM32F407IG","-endian", "little","-speed", "1000","-port", "2331","-vd","-ir","-localhostonly", "1","-singlerun","-strict","-timeout", "0"],"serverPort": 2331,"serverHost": "localhost","customVariables": ["port0","port1","port2",],"autoRun": false,"debugOutput": false}]
}
其中 type 指選用的調試器是 gnu-debuger; program 帶調試信息的執行文件;toolchain 是交叉編譯工具鏈的執行文件路徑,因為之前已經將交叉編譯工具鏈的路徑添加到 Path環境變量中了,所以這里填空;client 是指選用的gdb調試器是arm-none-eabi-gdb.exe;server表示選用的gdb server ,這里采用 JLinkGDBServer ;windows 表示Windows系統中采用 JLinkGDBServerCL.exe 命行工具作為server程序;其他剩余參數都是 JLinkGDBServerCL.exe 的執行參數。
編譯
使用 stm32 cube 生成的工程,在vscode 終端直接執行make,便可以根據makefile完成工程的編譯。
一鍵啟動調試
點擊 左上角的 三角形,會下載程序到單片機中,點擊執行會進入斷點。
在終端的下方可以輸入 gdb 的命令,比如 info breaks 可以查看所有的斷點。delete 1 可以刪除第一個斷點。
在左上角輸入 變量查看框內,可以切換變量值的顯示形式,輸入 0x 以16進制顯示變量,輸入 0b 以二進制顯示變量,更多用法如下:
0b = binary
0o = octal
0d = decimal
0x = hexadecimal
0n = natural (back to GDB default output format)