STM32CubeIDEのプロジェクトをvscode+J-Linkでデバッグする

vscode

こちらの記事でvscodeでビルドできるようになったので今回はデバッグできるように環境を作ります。

STM32CubeIDE付属のgccツールチェインと、JLinkGDBServerCLを使用しますのでインストールされていることが前提です。

先日合宿でcortex-debugという拡張機能を教えてもらったので使ってみました。

手順

vscodeの拡張機能cortex-debugをインストールします。

ワークスペース設定(JSON)を開きます

settings.jsonを開いたら以下をコピペします。

{
  "cortex-debug.liveWatchRefreshRate": 300,
  "cortex-debug.armToolchainPath": "C:/ST/STM32CubeIDE_1.12.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.200.202301161003/tools/bin",
  "cortex-debug.JLinkGDBServerPath": "C:/Program Files (x86)/SEGGER/JLink/JLinkGDBServerCL.exe",
  "cortex-debug.stm32cubeprogrammer": "C:/ST/STM32CubeIDE_1.12.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.0.600.202301161003/tools/bin/STM32_Programmer_CLI.exe",
}

それぞれのパスを環境に合わせて修正してください。

次にlaunch.jsonを作成します。

{
  "version": "0.2.0",
  "configurations": [
    {
    "type": "cortex-debug",
    "request": "launch",
    "name": "Debug J-Link",
    "cwd": "${workspaceRoot}",
    "executable": "${workspaceRoot}/Debug/MM2023.elf",
    "serverpath": "C:/Program Files (x86)/SEGGER/JLink/JLinkGDBServerCL.exe", 
    "servertype": "jlink",
    "device": "STM32G4A1KE",
    "interface": "swd",
    "runToEntryPoint": "MX_FREERTOS_Init",
    }
  ]
}

9行目”executable” ここにデバッグするelfファイルを指定します。環境に合わせて修正してください。

10行目”serverpath”JLinkGDBServerCLのパスを指定します。環境に合わせて修正してください。

12行目”device”ターゲットマイコンの型番を入力します。↓確認方法

STM32CubeIDEでデバッグした時にConsoleに表示される型番です。

13行目”interface” 接続方法です。

14行目”runToEntryPoint” 自動でブレークする関数名です。”main”ならmain()関数の先頭でブレークします。

設定は以上です。

F5キーを押すとデバッグが開始されます。

あとがき

軽量でサクサクうごいて気持ちがいいですね!

レジスタのビットまで見れないのがすこし使いにくいですが、見たいときはSTM32CubeIDEを使うなど使い分けしようかなと思います。

メモリ見れたりします。変数名でアドレス解決してくれないのでアドレス打ち込む必要がありますが…

コメント