RP2040ボード(Raspberry Pi Picoなど)をRaspberry Pi Debug Probe(デバッグプローブ)を使ってVSCodeのArduino拡張機能でCMSIS-DAPでデバッグするためのセットアップ手順と簡単な使い方を紹介したいと思います。
本記事はMacのArduino for Visual Studio Codeを対象にしたデバッグ方法を記載しています。
MacのArduino IDEでのデバッグ方法は次の記事を参考にしてください
Windowsの場合は次の記事を参考にしてください。
参考URL:
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拡張機能をインストールします。
Raspberry Pi Pico/RP2040ボード(Arduino-Pico)のopenocdの準備
Raspberry Pi Pico/RP2040ボード(Arduino-Pico)がボードマネージャーからインストールしてある前提で進めます。
Raspberry Pi Pico/RP2040ボード(Arduino-Pico)のtoolsディレクトリにあるopenocdを動作確認したところ使えなかっため/usr/local/bin/openocd
が使用されるように変更していきます。
ターミナルからコマンドで設定します。
Raspberry Pi Pico/RP2040ボード(Arduino-Pico)のopenocdのディレクトリに移動
cd ~/Library/Arduino15/packages/rp2040/tools/pqt-openocd/1.5.0-b-c7bab52/bin/
元のopenocdのバックアップをとります。
mv openocd openocd_org
※ここではopenocd_orgというファイル名でバックアップしています。
/usr/local/bin/openocd
のシンボリックリンクを貼ります。
ln -s /usr/local/bin/openocd openocd
配線について
デバッガー(Dコネクタ CMSIS-DAP
)とRP2040ボードはSWD(Serial Wire Debug)
で接続します。
Raspberry Pi Picoの例
Raspberry Pi Picoをデバッグ対象とする場合の配線
Raspberry Pi Pico Hの例
Raspberry Pi Pico HはSWDがコネクタなので接続しやすくデバッグに向いていますね。
Raspberry Pi Pico WHの例
Raspberry Pi Pico H同様SWDがコネクタなのでコネクタ-コネクタケーブルで接続します。
Raspberry Pi Pico Wの例
SWDにピンをつけずにスルーホール用テストワイヤー(TP-200)で配線してみました。
SWDにピンをつけると邪魔くさくなることもあるかと思いますので、代替案として参考にしてみてください。
TP-200(秋月電子)
テストワイヤーにオレンジがなかったので代わりに白ワイヤーを使っています。
Seeed Studio XIAO RP2040の例
拡張ボードを使うとSWDでデバッグできます。
配線は画像を参考にしてください。
デバッグの設定について
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ボード(例: Raspberry Pi Pico)にはデバッガーを通じてスケッチを書き込みます。
Upload Methodは「Picoprobe (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
デバッグの開始
ウインドウ左端の「デバッグ」アイコンをクリックし「デバッグの開始」アイコンをクリックします。(画像参照)
デバッガーの操作
行番号の左をクリックするとブレークポイントを設定できます。
デバッガーは画像赤枠のツールバーで操作できます。
アイコンは左から次のような機能があります。
デバイスリセット | デバイスをリセットする |
継続 | 次のブレークポイントまでスケッチを実行する ブレークポイントが設定されていない場合は停止/再開 |
ステップオーバー | 選択された命令だけ実行しプログラムを停止する |
ステップイン | 命令が関数を呼び出している場合、関数内部の命令をワンステップごとに実行する |
ステップアウト | 呼び出し元の命令まで実行する |
再起動 | リセットしてスケッチの最初から実行する |
停止 | デバッグを停止する |
デバッグの動きが悪い場合
デバッグが開始されないなどデバッグがうまく動かない場合、デバッガーとデバッグ対象のRP2040ボードの電源を再投入してデバッグを開始してみてください。
関連記事
当ブログのマイコン記事です。ぜひご覧ください。
コメント