這里介紹了 RTT 常見的幾個 bsp 的調試方法,其他的都是類似的形式,照著寫即可
前置條件
軟件環境
vscode
vscode Cortex Debug 插件
選擇性下載的軟件
gdb-multiarch
gcc-arm-none-eabi
pyocd
openocd
launch.json 配置文件
這里先貼一下配置文件,給那些只需要配置文件的小伙伴準備的
{
"version": "0.2.0",
"configurations": [
{
"name": "qemu-vexpress-a9",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/bsp/qemu-vexpress-a9/rtthread.elf",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceRoot}/bsp/qemu-vexpress-a9",
"environment": [],
"externalConsole": true,
"miDebuggerServerAddress": "localhost:1234",
"serverLaunchTimeout": 2000,
"targetArchitecture": "ARM",
"MIMode": "gdb",
"miDebuggerPath": "gdb-multiarch",
"setupCommands": [
{
"text": "set backtrace limit 16"
}
],
"customLaunchSetupCommands": [],
"launchCompleteCommand": "exec-run",
},
{
"name": "qemu-virt64-riscv",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/bsp/qemu-virt64-riscv/rtthread.elf",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceRoot}/bsp/qemu-virt64-riscv",
"environment": [],
"externalConsole": true,
"miDebuggerServerAddress": "localhost:1234",
"serverLaunchTimeout": 2000,
"targetArchitecture": "ARM",
"MIMode": "gdb",
"miDebuggerPath": "gdb-multiarch",
"setupCommands": [
{
"text": "set backtrace limit 16"
}
],
"customLaunchSetupCommands": [],
"launchCompleteCommand": "exec-run",
},
{
"name": "qemu-virt64-aarch64",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/bsp/qemu-virt64-aarch64/rtthread.elf",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceRoot}/bsp/qemu-virt64-aarch64",
"environment": [],
"externalConsole": true,
"miDebuggerServerAddress": "localhost:1234",
"serverLaunchTimeout": 2000,
"targetArchitecture": "ARM",
"MIMode": "gdb",
"miDebuggerPath": "gdb-multiarch",
"setupCommands": [
{
"text": "set backtrace limit 16"
}
],
"customLaunchSetupCommands": [],
"launchCompleteCommand": "exec-run",
},
{
"name": "rt-spark-pyocd",
"cwd": "/opt/rt-thread/tools/pyocd/bin/",
"executable": "${workspaceRoot}/bsp/stm32/stm32f407-rt-spark/rt-thread.elf",
"request": "launch",
"type": "cortex-debug",
"runToEntryPoint": "main",
"targetId": "STM32F407ZG",
"servertype": "pyocd",
"serverpath": "/opt/rt-thread/tools/pyocd/bin/pyocd",
"armToolchainPath": "/opt/rt-thread/tools/gnu_gcc/gcc-arm-none-eabi/bin/",
"gdbPath": "/opt/rt-thread/tools/gnu_gcc/gcc-arm-none-eabi/bin/arm-none-eabi-gdb",
},
{
"name": "rt-spark-openocd",
"executable": "${workspaceRoot}/bsp/stm32/stm32f407-rt-spark/rt-thread.elf",
"request": "launch",
"type": "cortex-debug",
"runToEntryPoint": "main",
"targetId": "STM32F407ZG",
"servertype": "openocd",
"configFiles": [
"interface/stlink-v2.cfg",
"target/stm32f4x.cfg"
],
"armToolchainPath": "/opt/rt-thread/tools/gnu_gcc/gcc-arm-none-eabi/bin/",
"gdbPath": "/opt/rt-thread/tools/gnu_gcc/gcc-arm-none-eabi/bin/arm-none-eabi-gdb",
},
{
"name": "hmi-board-pyocd",
"cwd": "/opt/pyocd/bin/",
"executable": "${workspaceRoot}/bsp/renesas/ra6m3-hmi-board/rtthread.elf",
"request": "launch",
"type": "cortex-debug",
"runToEntryPoint": "main",
"targetId": "R7FA6M3AH",
"servertype": "pyocd",
"serverpath": "/opt/pyocd/bin/pyocd",
"armToolchainPath": "/opt/rt-thread/tools/gnu_gcc/gcc-arm-none-eabi/bin/",
"gdbPath": "/opt/rt-thread/tools/gnu_gcc/gcc-arm-none-eabi/bin/arm-none-eabi-gdb",
}
]
}
launch.json 配置文件注意事項
這里是以 rt-thread 源碼為路徑的,如果不對應的話請修改 launch.json 文件中的 executable 值 ,其中 ${workspaceRoot} 表示的是 vscode 工程的路徑
除了 qemu 相關外,其他的 name 值都是使用的開發版名稱加調試類型(這里沒特殊要求,個人習慣而已,方便調試開發板時選擇特定的工程及調試工具)
調試 qemu 時記得安裝 gdb-multiarch 工具(archlinux 推薦使用 aur 工具輸入 yay -S gdb-multiarch),如果安裝了之后還有以下錯誤,miDebuggerPath 值請使用全路徑
使用 openocd 調試時請安裝 openocd 工具(archlinux 推薦使用 aur 工具輸入 yay -S openocd)
使用 pyocd 調試時請安裝 pyocd 工具(archlinux 推薦使用 aur 工具輸入 yay -S rt-pyocd-git)(目前無法一條命令配置成功,并且有自己更改的部分,非 archlinux 用戶不建議使用,硬要使用也可以下面有具體教程)
使用 gcc-arm-none-eabi 調試時請安裝 gcc-arm-none-eabi 工具(archlinux 推薦使用 aur 工具輸入 yay -S rt-gcc-arm-none-eabi)非 archlinux 用戶請修改 armToolchainPath 和 gdbPath 到 gcc-arm-none-eabi 對應路徑,archlinux 用戶不用修改路徑即可正常使用
pyocd 安裝
Windows
安裝之后請修改 launch.json 中的 cwd 和 serverpath 值
linux
git clone https://github.com/RT-Thread-Studio/sdk-debugger-pyocd.git
python -m venv /opt/pyocd
/opt/pyocd/bin/pip install pyocd
cp -r sdk-debugger-pyocd/packs /opt/pyocd/bin
rm -rf sdk-debugger-pyocd
cd /opt/pyocd/bin/packs && python ./update_yaml.py
cd -
其中 launch.json 中的 cwd 值表示當前的運行路徑,把這個設置到 /opt/pyocd/bin 是為了讓 pyocd 找到 pack 包
調試
先在這里選擇您所需要的調試
實體硬件需要連接開發板,qemu 需要運行 bsp 路徑下的 qemu debug/dbg
按下 F5 即可開始調試
-
gcc編譯器
+關注
關注
0文章
78瀏覽量
3428 -
RTThread
+關注
關注
8文章
132瀏覽量
41003 -
gdb調試器
+關注
關注
0文章
10瀏覽量
1111 -
vscode
+關注
關注
1文章
157瀏覽量
7859
發布評論請先 登錄
相關推薦
stm32cubeMX+vscode開發編譯調試
用VSCode開發AT32單片機
MD-2000系列調制解調器使用和調試說明書
使用 VSCode 遠程 圖形化 GDB 調試 嵌入式linux
![使用 <b class='flag-5'>VSCode</b> 遠程 圖形化 GDB <b class='flag-5'>調試</b> 嵌入式linux](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
stm32cubeMX+vscode開發編譯調試stm32程序
![stm32cubeMX+<b class='flag-5'>vscode</b>開發編譯<b class='flag-5'>調試</b>stm32程序](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32全系列調試接口匯總
![STM32<b class='flag-5'>全系列調試</b>接口匯總](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
在VSCode中使用QEMU調試FreeRTOS
SH7125系列調試MCU板HS7125EDB01H、HS7125EDB02H、HS7124EDB01H用戶手冊
![SH7125<b class='flag-5'>系列調試</b>MCU板HS7125EDB01H、HS7125EDB02H、HS7124EDB01H用戶手冊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
SH7125系列調試MCU板 HS7125EDB01H HS7125EDB02H HS7124EDB01H 用戶手冊
![SH7125<b class='flag-5'>系列調試</b>MCU板 HS7125EDB01H HS7125EDB02H HS7124EDB01H 用戶手冊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用VSCode調試嵌入式程序:如何切換gdb server
![使用<b class='flag-5'>VSCode</b><b class='flag-5'>調試</b>嵌入式程序:如何切換gdb server](https://file1.elecfans.com/web2/M00/E4/0C/wKgaomY8PSOARA4RAAARtKGAtmg936.png)
評論