PR

RP2040/RP2350のArduino開発でデバッグプローブを使おう【Mac編】【Arduino for VSCode使用】

Raspberry Pi/電子工作
スポンサーリンク


RP2040ボード(例:Raspberry Pi Pico)をRaspberry Pi Debug Probe(デバッグプローブ)を使って、VSCodeのArduino拡張機能でデバッグを行う方法をご紹介します。

本記事はMacのArduino for Visual Studio Codeを対象にしたデバッグ方法を記載しています。

Raspberry Pi Pico/RP2040ボード(Arduino-Pico) バージョン3.7.0以降のご使用を対象としています。

Arduino for Visual Studio Codeの画面例

Arduino IDEでのデバッグ方法は以下の記事を参考にしてください

参考URL:

Just a moment...

Raspberry Pi Debug Probe(以降、デバッガー)とRaspberry Pi Pico(RP2040ボード)

スポンサーリンク

デバッグ環境の準備

openocdのインストール Mac編

本記事ではMacのRP2040用openocdはソースからビルドしてインストールすることとします。

openocdのビルド&インストールはターミナルから実行します。
XcodeとHomebrewがインストール済みである前提とします。

Xcodeが未インストールの場合はAppStoreからインストールしてください。

Homebrewのインストールは以下の記事をご参照ください。

ユーザディレクトリ配下にpicoディレクトリがある前提ですすめます。
存在しない場合は以下のコマンドで作成してください。

cd ~/
mkdir pico && cd pico

依存関係のインストール

brew install libtool automake libusb wget pkg-config gcc texinfo

ビルドコマンド

git clone https://github.com/raspberrypi/openocd.git
cd openocd
./bootstrap
./configure --disable-werror
make -j4

openocdのインストール

sudo make install

openocd/usr/local/bin配下にインストールされます。

参考URL:

https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf

VSCode拡張機能インストール

VSCodeに拡張機能Arduino for Visual Studio CodeとCortex-Debugをインストールします。

Arduino for Visual Studio Codeのインストールについては次の記事を参照してください。

Cortex-Debug拡張機能をインストールします。

配線について

以下の記事に配線例を掲載していますので参照してください。

デバッグの設定について

Arduinoファイル出力先の設定

スケッチフォルダ配下/.vscode/arduino.jsonに次の設定を追加してください。

    "output": "./build"

launch.json (デバッグ用設定ファイル)

launch.jsonはデバッグ用の設定ファイルです。
スケッチフォルダ配下/.vscodeに「launch.json」というファイルを作成します。

以下はlanch.jsonのテンプレートになります。

{
  // IntelliSense を使用して利用可能な属性を学べます。
  // 既存の属性の説明をホバーして表示します。
  // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Arduino CMSIS-DAP",
      "cwd": "${workspaceRoot}",
      "executable": "./build/スケッチ名.elf",
      "request": "launch",
      "type": "cortex-debug",
      "serverpath": "/usr/local/bin/openocd",
      "servertype": "openocd",
      "showDevDebugOutput": "none",
      "configFiles": [
        "interface/cmsis-dap.cfg",
        "target/rp2040.cfg"
      ],
      "openOCDLaunchCommands": [
        "transport select swd",
        "adapter speed 5000"
      ],
    }
  ]
}

executable(10行目)のスケッチ名は実際のスケッチ名(例: Blink.ino)に置き換えてください。

RP2350(例: Raspberry Pi Pico 2)の場合、18行目を以下に置き換えてください。

        "target/rp2350.cfg"

スケッチ書き込みについて

デバッグ対象のRP2040/RP2350ボード(例: Raspberry Pi Pico)にはデバッガーを通じてスケッチを書き込みます。

ボードはデバッグ対象のボードを選択します。例えばRaspberry Pi Pico 2がデバッグ対象のボードならRaspberry Pi Pico 2を選択します。

Upload Methodは「Picoprobe/Debugprobe (CMSIS-DAP)」を選択します。
ポートはデバッガーの接続ポート(/dev/tty.*)を選択します。

書き込み先のRP2040ボードも給電のためUSBに接続しておきます。
※USBでの通信はしません。

書き込みに成功すると「出力」タブに画像のような内容が表示されます。

デバッグについて

デバッグ用コードの埋め込み (オプション)

デバッグが正常に開始しない場合はsetup関数の直後にdelayを挟むよう次のようなデバッグコードを入れるとよいかと思います。

#define __DEBUG__

void setup() {
#ifdef __DEBUG__
  delay(1000);
#endif

この例ではdelayの時間(setup開始までのインターバル)を1000msとしています。
デバッグが正常に開始しない場合は長めに設定してみてください。

デバッグコードを無効にするには#define __DEBUG__をコメントアウトします。

// #define __DEBUG__

void setup() {
#ifdef __DEBUG__
  delay(1000);
#endif

デバッグの開始

ウインドウ左端の「デバッグ」アイコンをクリックし「デバッグの開始」アイコンをクリックします。(画像参照)

デバッガーの操作

行番号の左をクリックするとブレークポイントを設定できます。

デバッガーは画像赤枠のツールバーで操作できます。
アイコンは左から次のような機能があります。

デバイスリセットデバイスをリセットする
継続次のブレークポイントまでスケッチを実行する
ブレークポイントが設定されていない場合は停止/再開
ステップオーバー選択された命令だけ実行しプログラムを停止する
ステップイン命令が関数を呼び出している場合、関数内部の命令をワンステップごとに実行する
ステップアウト呼び出し元の命令まで実行する
再起動リセットしてスケッチの最初から実行する
停止デバッグを停止する

デバッグの動きが悪い場合

エラーが発生してデバッグが開始されないなどデバッグがうまく動かない場合、デバッグプローブとデバッグ対象のボードの電源を再投入してデバッグを開始してみてください。

関連記事

当ブログのマイコン記事です。ぜひご覧ください。

コメント

タイトルとURLをコピーしました