「2:Pico Setup for Windows」で問題なくインストールに成功したら、Pico SDKに含まれているサンプルプログラムが実行できるようになります。しかし、通常の開発プロセス通りに、プログラムのコードを書いてそれをテストし、修正してまたテストするという作業を行うには、プログラムをUF2ファイル形式でなく、ELFファイル形式で書き出す必要があります。
Pico SDKにはこのためのPicoprobeと呼ばれる方法が導入されていて、Picoprobeを使用すると、プログラムをELFファイル形式で作成し、わざわざPicoの[BOOTCEL]ボタンの世話にならなくても、ELFファイルをPicoに書き込むことができます。これは、手数がかなり簡略化されるということで、VSCodeの画面でデバッグ操作が行えるということでもあります。
Debug Probeを使ったデバッグ
Debug Probeという名前で専用の製品が販売されていて、これを購入して利用するのが最も確実です。下図の左がDebug Probeで、右がプログラムを実行するPicoです。
配線は下の表のように行います。
Debug Probe | Pico |
---|---|
オレンジ | GP1 |
黒 | GND |
黄 | GP0 |
Dコネクタ | JSTコネクタ |
PicoのJSTコネクタというのはPico Hについているコネクタで、無印Picoにはついていません。無印Picoでこの接続を行うには、下図の3つの穴(SWCLK、GND、SWDIO)にヘッダピンを挿してはんだ付けします。
Debug Probeには下図に示す接続線が付属しているので、用途によって使い分けができます。
Picoをもう1つ使ったデバッグ
Debug Probeという専門の既製品の代わりにPicoを使うこともできます。下図では左がPicoprobeです。このPicoには専用のpicoprobe.uf2をインストールする必要があります。Raspberry Pi Pico ドキュメントページSoftware Utilitiesからダウンロードできます。
PicoをPicoprobeに変えるには、Picoの[BOOTCEL]ボタンを押しだ状態でUSBケーブルをPCに接続し、自動的に開かれるUSBデバイスモードのPicoに、ダウンロードしたpicoprobe.uf2をドラッグ&ドロップします。
配線は下図のように行います。左がPicoprobeで、右がプログラムを実行するPicoです。PicoprobeからPicoに給電する形です。
Picoprobe | Pico |
---|---|
GP2 | SWCLK |
GP3 | SWDIO |
GP4 | GP1 |
GP5 | GP0 |
VSYS | VSYS |
GND | GND |
DEBUGのGND – GND |
操作の手順(blinkサンプル)
pico-examplesに含まれているblinkサンプルを例に、VSCodeでの操作手順を見ていきます。なお以降では、「2:Pico Setup for Windows」で述べている「Pico Setup for Windows」の設定が終わり、PicoprobeとPicoを配線していることを前提としています。
- VSCodeの起動
- blinkサンプルを開く
- コードの修正
- 実行環境の設定確認
- [アクティビティバー]の[管理]->[設定]をクリック、[設定の検索]にCMakeと入力して、画面をスクロールダウン、[Cmake:Configure Environment]の設定で、項目がPICO_SDK_PATH、値が..\..\pico-sdk になっていることを確認します
- さらにスクロールダウンし、[Cmake:Generator]にNMake Makefilesが設定されていることを確認します。
- またVSCode下部の[ステータスバー]の表示を確認します。
- blink.cのビルド
- blink.cの実行とデバッグ
VSCodeは、[スタート]メニュー->[Raspberry Pi Pico SDK <バージョン>] -> [Pico – Visual Studio Code]から、C/C++のPico専用のVSCodeを起動します。
VSCodeの[ファイル]メニューから[フォルダーを開く]を選び、pico-examplesフォルダ(C:\Users\<ユーザー名>\OneDrive\Documents\Pico-v1.5.0\pico-examples)を開きます。[アクティビティバー](左端の縦にボタンが並んでいるところ)の一番上にある[エクスプローラー]をクリックします。[エクスプローラー]では、フォルダを行き来してそこ含まれるファイルを右のエディタ部で開くことができます。[エクスプローラー]で[PICO-EXAMPLES]内の[blink]フォルダをクリックし、中に含まれるblink.cをクリックして右のエディタ部に表示します。
エディタ部では、コードを修正することができます。たとえば、sleep_ms(250)の250を2500に変えると、LEDの点滅時間を変えることができます。
while (true) {
gpio_put(LED_PIN, 1);
sleep_ms(2500);
gpio_put(LED_PIN, 0);
sleep_ms(2500);
}
それぞれ、表示部分のクリックで設定が変更できます。(1)は通常Debugで、(2)はPico ARM GCCで、変える必要はありませんが、(3)の起動ターゲットは起動したいプロジェクトごとに変える必要があります。
修正したファイルはビルドします。ビルドするには、[アクティビティバー]の[CMake]ボタンをクリックし、[blink]の左にある矢印をクリックして展開し、blink.elfの[build]ボタンをクリックします。
[アクティビティバー]の[実行とデバッグ]ボタンをクリックし、上部に表示される緑色の再生ボタンをクリックします。
すると実行の処理が始まり、少し時間がかかって、main()関数の実行前でプログラムが停まります。
プログラムを進めるには[続行]ボタンをクリックします。するとmain()関数が実行されるので、点滅時間が長くなるよう変更した場合には、PicoのLEDの点滅のテンポがゆっくりになります。
[ステータスバー]がオレンジ色になっている状態では、下記のボタンでデバッグ機能が利用できます。
操作の手順(hello serialサンプル)
hello_worldのserialサンプルを使用すると、picoプログラムのprintf()出力を、Picoprobeのシリアル通信を通して、VSCodeの[ターミナル]に表示することができます。手順は前のblinkサンプルと同じです。
- [エクスプローラー]でhello_serial.cを開き、printf()を修正する。
- [Cmake]でhello_serial.elfをビルドする。
- 起動ターゲットをhello_serialに変更する。
- [実行とデバッグ]をクリックし、再生ボタンをクリックする。
- [ステータスバー]がオレンジ色になる。[続行]ボタンをクリックすると、プログラムがスタートする。
- エディタ部下のターミナルで[シリアルモニター]を表示し、[ポート]で適切なポート番号を指定する。[監視の開始]ボタンをクリックすると、printf()に記述した文字列が表示される。
while (true) {
printf("Hello,September \n");
sleep_ms(1000);
}