Raspberry Pi Picoをデバッガーで動かす

dhrystoneをNucleoに続いてPicoで動かそうと思いましたが、とりあえずうまく動かなかったので、まずデバッガーを使えるようにしてみます。

対象は前にやった“Hello World”サンプルです。

前回の様に「Getting Started with Raspberry Pi Pico 」をベースにやっていきます。ちなみにこのPDFではRaspberry Pi 4でやっていますが、私は手持ちのRaspberry Pi 2Bでやっています。

                                     

GDB と OpenOCD インストール

まずGDB(GNUデバッガー)をインストールします。

GDB install

次にOpenOCDのインストールですがRaspberry Pi Pico事始め(Lチカ)でpico_setupスクリプトを実行していればOpenOCDはインストールされています。

Visual Studio Codeのインストールと設定

今まで実は(というほどのことでもないですが)、Windows側からSSH接続してやっていましたが、いよいよデバッガーと接続してVisual Studio Code(VSCode)でデバッグというとさすがにSSH接続というわけにはいかない(はず)ので、直接ラズベリーパイにVSCodeをインストールしてデバッグ環境を整えたいと思います。

GUIでなければSSH接続でもできますが、さすがにデバッガーはGUI環境で動かしたいところです。

直接ラズベリーパイ操作といってもモニター、キーボード、マウスを別途用意するのは面倒なのでVNC Viewerを使って相変わらずSSH接続なのですが…

ラズベリーパイにVSCodeをインストールするにはhttps://code.visualstudio.com/downloads/から.deb/ARMを選択してダウンロードしてインストールします。

ついで拡張機能をインストールするため、以下のコードを実行します。

“pico-sdk”にパスを通してから、”code”でVSCodeを起動します。

VSCode

「ファイル」→「フォルダーを開く…」で”home/pi/pico/pico-examples”を指定します。

VSCodeを起動すると拡張機能CMake Toolsがインストールされているので右下にポップアップが現れるので「Yes」を押すとコンパイラーの選択を促されるので”GCC for arm-none-eabi”を選択します。

VSCode select compiler

これを逃しても下部の青いバー上の”No kit Selected”をクリックすれば選択できるようになります。

同じく下部の青いバー上の”all”のままだと”Build”したときに”pico-examples”下の全てのサンプルプログラムをbuildしてしまい時間がかかるので、”hello_serial”を選択しておきます。

下部の青いバー上の”CMake:[Debug]:Ready”の所をクリックして”Debug”、”Release”を選択できます。今回はデバッガーを動かすので”Debug”のままでいいです。

pico-examplesリポジトリーには、OpenOCDを起動してGDBを接続して最後にCMakeがbuildするように構成されているアプリケーションを起動するデバッグ構成の例が含まれています。これを使うとワンクリックでデバッグ開始直前まで構成されるので便利です。

やり方としてはpico-examplesディレクトリー下に/.vscodeディレクトリーを作り、そこにlaunch-raspberrypi-swd.jsonlaunch.jsonとして、settings.jsonをそのままsettings.jsonとしてコピーするだけです。

これでソフトウェアの準備ができました。次はハードウェアの準備です。

SWD(Serial Wire Debug)接続

PicoのSWD端子(USBコネクタの逆サイドの短辺部分の3ピン)とラズベリーパイとを接続します。

Raspberry PiRaspberry Pi Pico
GND(Pin 20)SWD GND
GPIO24(Pin 18)SWDIO
GPIO25(Pin 22)SWCLK
ラズベリーパイ – Raspberry Pi Pico 配線表
Raspberry Pi – Raspberry Pi Pico 配線図
Raspberry Pi & Pico with SWD

デバッグ開始

execute and debug
実行とデバッグ

VSCodeの左側の三角に虫のマーク(実行とデバッグ(Ctrl+Shift+D))をクリックして、左上の「 Pico Debug」 をクリックするとBuild、OpenOCD起動、GDB接続が一連の動作として行われてmain()関数の先頭でbreakで止まっています。

debugger start

後は普通にデバッグできます。

できますが結構重い上に不安定です(重いのはラズベリーパイ2Bのためで4にすればだいぶ改善されるかも知れません)。GUIにこだわる必要がないならターミナルでやった方がいいかも知れません。ターミナルからのやり方はここでは書きませんが「Getting Started with Raspberry Pi Pico 」”Chapter 6. Debegger with SWD”を参照してみてください。

既にGDBとOpenOCDがインストールされていると思うので後は実行するだけです。

終わり

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です