久しぶりにWSL2上でOpenOCDとgdbを使いstm32のデバッグをしようとおもったのですが、openocd for windowsは動作するもののarm-none-eabi-gdb.exeがwsl上のファイルを認識してくれませんでした。以前は特に何もしなくても認識していたはずなんですが、理由はよくわかっていません。とはいえ、WSL2+VSCODEの環境でdebugをしたいので、少し手間がかかるのですが、表題の通りできたので備忘録として本稿を挙げてみることにしました。
wsl2とvscodeはすでにインストールされている前提ですが、開発関連ツールをインストールしておくこと以外、特に注意することはありません。
次にvscode拡張機能ですが、cortex-debugとC/C++拡張機能をインストールします。これも特に注意することはありません。
つづいてソースディレクトリに移動し、code + エンターとするとvscodeが起動します。コンパイルなどのtasks.jsonはターゲットによりことなるので、本稿では割愛します。
つぎはlaunch.jsonです。今回の場合例として以下のようにしました。
最後にデバッグを開始します。vscodeでF5または"Run" -> "Start Debugging"でデバッグを開始できます。接続できると例えば以下のようにデバッグができます。 arm-none-eabi-gdb.exeがwslパスを認識してくれればいいのですが、次善策としては有効かなとは思います。今回は以上です。それでは。
wsl2とvscodeはすでにインストールされている前提ですが、開発関連ツールをインストールしておくこと以外、特に注意することはありません。
次にvscode拡張機能ですが、cortex-debugとC/C++拡張機能をインストールします。これも特に注意することはありません。
つづいてソースディレクトリに移動し、code + エンターとするとvscodeが起動します。コンパイルなどのtasks.jsonはターゲットによりことなるので、本稿では割愛します。
つぎはlaunch.jsonです。今回の場合例として以下のようにしました。
{ "version": "0.2.0", "configurations": [ { "name": "Cortex Debug", "cwd": "${workspaceRoot}", "executable": "${workspaceRoot}/bluepill-dual-cdc.elf", "request": "launch", "type": "cortex-debug", "servertype": "external", "gdbTarget": "192.168.0.250:3333", "gdbPath": "gdb-multiarch", } ] }gdbTargetのIPアドレスはWindowsのIPアドレスですので、環境にあわせて変更してください。つぎにopenocd.exeを起動します。例として以下のようにします。
openocd.exe -f interface/stlink.cfg -f target/stm32f1x.cfg -c "bindto 0.0.0.0"wsl上で起動してもwindows terminalで起動してもどちらでも構いませんが bindto 0.0.0.0とすることでlocalhost接続を含めリモート接続をすべて許可するようにします。
最後にデバッグを開始します。vscodeでF5または"Run" -> "Start Debugging"でデバッグを開始できます。接続できると例えば以下のようにデバッグができます。 arm-none-eabi-gdb.exeがwslパスを認識してくれればいいのですが、次善策としては有効かなとは思います。今回は以上です。それでは。
コメント
コメントを投稿