Raspberry Pi Pico의 WSL + OpenOCD 디버깅에 VSCode 사용
계속됩니다. Raspberry Pi Pico(이하 Pico)를 WSL 명령행에서 gdb를 사용하여 디버깅할 수 있게 되었으므로, 이번에는 이것을 Visual Studio Code에서 사용할 수 있도록 합니다.
실은 현시점에서는 아직 불완전한 점이 있어, 사전에 브레이크 포인트를 두고 거기에 멈출 수는 있는 한편, 실행중의 프로그램을 정지시킬 수가 없습니다 (명령행에서 gdb를 사용할 때는 보통 Ctrl+C로 멈추는데…).
하지만 VSCode의 GUI에서 디버깅을 할 수 있다면 편리한 것은 확실하기 때문에 불완전하지만 정보로 공개하고 싶습니다.
(실행 환경의 WSL은 WSL2를 전제로 하고 있습니다. WSL1의 경우는 Windows측의 IP 주소를 지정하고 있는 개소를 삭제하는 등 하면 움직인다고 생각합니다)
실행 전 준비
gdb-pico
라는 파일 이름으로 경로가 지정된 위치에 놓습니다.(여기에서 쓴 것에서 조금만 바뀝니다)
gdb-pico
#!/bin/sh
killall -q gdb-multiarch
gdb-multiarch -ex "target remote `tail -1 /etc/resolv.conf|awk '{print $2}'`:3333" $*
.vscode
라는 폴더를 만들고 다음 파일launch.json
을 놓습니다.launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb)",
"type": "cppdbg",
"request": "launch",
"targetArchitecture": "arm",
"program": "${workspaceFolder}/build/${relativeFileDirname}/${fileBasenameNoExtension}.elf",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"MIMode": "gdb",
"miDebuggerPath": "${env:HOME}/bin/gdb-pico",
"launchCompleteCommand": "exec-continue",
"setupCommands": [
{
"text": "load ${workspaceFolder}/build/${relativeFileDirname}/${fileBasenameNoExtension}.elf"
}
]
}
]
}
VSCode에서 디버깅
openocd.exe -f interface/picoprobe.cfg -f target/rp2040.cfg -c 'bindto 0.0.0.0'
main()
첫 번째 행의 행 번호 왼쪽을 클릭하고 중단 점을 놓습니다 (빨간색으로 표시). F5
또는 実行(R)
- デバッグの開始
에서 gdb가 실행되고 미리 실행중인 openocd에 연결하고 중단 점에 멈추고 디버깅을 시작합니다. 続行(F5)
하면 멈출 수 없게 되어 버리는 것만 주의가 필요합니다만, 그 외 통상의 디버그 조작은 보통으로 할 수 있습니다.gdb-pico
스크립트에 넣은 killall로 삭제되도록 하고 있습니다 합니다. (덤) cmake / make 등을하는 tasks.json
Getting Started에서는 VSCode를 사용할 때는 CMake Tools 확장을 사용하도록 쓰고 있습니다.
소스 코드를 열고 tasks.json
또는 .vscode
- Ctrl+Shift+B
에서 다음을 수행할 수 있습니다.
ターミナル
스크립트를 준비하고 경로를 통과해야합니다.tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "make",
"type": "shell",
"command": "make -j4",
"options": {
"cwd": "${workspaceFolder}/build/${relativeFileDirname}"
},
"presentation": {
"revealProblems": "onProblem"
},
"problemMatcher": [
"$gcc"
],
"group": "build"
},
{
"label": "make (verbose)",
"type": "shell",
"command": "make VERBOSE=1",
"options": {
"cwd": "${workspaceFolder}/build/${relativeFileDirname}"
},
"presentation": {
"revealProblems": "onProblem"
},
"problemMatcher": [
"$gcc"
],
"group": "build"
},
{
"label": "clean",
"type": "shell",
"command": "make clean",
"options": {
"cwd": "${workspaceFolder}/build/${relativeFileDirname}"
},
"problemMatcher": [],
"group": "build"
},
{
"label": "install",
"type": "shell",
"command": "pico-install",
"args": [
"*.uf2"
],
"options": {
"cwd": "${workspaceFolder}/build/${relativeFileDirname}"
},
"problemMatcher": [],
"group": "build"
},
{
"label": "distclean",
"type": "shell",
"command": "rm -rf ${workspaceFolder}/build",
"problemMatcher": [],
"group": "build"
},
{
"label": "cmake",
"type": "shell",
"command": "mkdir build; (cd build; cmake .. -DCMAKE_BUILD_TYPE=${input:buildType} -DPICO_DEFAULT_BINARY_TYPE=${input:binaryType})",
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [],
"group": "build"
},
],
"inputs": [
{
"type": "pickString",
"id": "buildType",
"description": "Build Type",
"options": [
"Release",
"Debug"
],
"default": "Debug"
},
{
"type": "pickString",
"id": "binaryType",
"description": "Binary Type",
"options": [
"default",
"no_flash",
"copy_to_ram",
"blocked_ram"
],
"default": "default"
}
]
}
Reference
이 문제에 관하여(Raspberry Pi Pico의 WSL + OpenOCD 디버깅에 VSCode 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yunkya2/items/37c7cd2129f1600e0675텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)