raspberry-pi-pico2 について
Raspberry Pi Pico 2(RP2350)と Raspberry Pi Debug Probe を使った開発のリファレンススキルです。組み込み開発者向けに、SDK のビルド設定、書き込み、デバッグの手順をまとめています。
主な機能
- 01RP2350 のハードウェアとボード情報
- 02SDK と CMake のビルド設定
- 03SWD と UART の配線ガイド
- 04OpenOCD と GDB のデバッグ手順
- 05ビルドとハードウェアの注意点
活用シーン
- 01Pico 2 のボードとビルドターゲットの選択
- 02Debug Probe の接続設定
- 03RP2350 ファームウェアの書き込みとデバッグ
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sammcj/ agentic-coding --skill raspberry-pi-pico2インストール後、Claude Code で/raspberry-pi-pico2を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/debug-probe.mdpico2-hardware.mdsdk-toolchain.md詳細
Raspberry Pi Pico 2 と Debug Probe
このスキルでは、Raspberry Pi Pico 2(RP2350)ボードと Raspberry Pi Debug Probe を使用した開発について説明します。ハードウェア仕様、SDK のセットアップ、ビルド設定、デバッグワークフロー、よくある注意点を取り上げます。
参考ファイル
技術的な詳細については、次のファイルを参照してください。現在の作業に関連するファイルのみを読んでください。
references/pico2-hardware.md- RP2350 の仕様、RP2040 と RP2350 の比較、ピン配置、ワイヤレス版、セキュリティ機能、チップの種類references/debug-probe.md- Debug Probe のハードウェア、配線図、OpenOCD のセットアップ、GDB のワークフロー、UART シリアル、RTT、VS Code との連携、レスキューモード、トラブルシューティングreferences/sdk-toolchain.md- pico-sdk のセットアップ、CMake の設定、ARM と RISC-V のビルド、picotool のコマンド、MicroPython/CircuitPython、プロジェクト構成
クイックリファレンス
ボードの選択(CMake)
| ボード | CMake フラグ | プラットフォーム |
|---|---|---|
| Pico 1 | -DPICO_BOARD=pico(デフォルト) | rp2040 |
| Pico 1 W | -DPICO_BOARD=pico_w | rp2040 |
| Pico 2 | -DPICO_BOARD=pico2 | rp2350-arm-s |
| Pico 2 W | -DPICO_BOARD=pico2_w | rp2350-arm-s |
| Pico 2 RISC-V | -DPICO_BOARD=pico2 -DPICO_PLATFORM=rp2350-riscv | rp2350-riscv |
Debug Probe の配線(SWD)
| Debug Probe の「D」ピン | ワイヤーの色 | Pico 2 の SWD パッド |
|---|---|---|
| SC | オレンジ | SWCLK |
| GND | 黒 | GND |
| SD | 黄 | SWDIO |
Debug Probe の配線(UART)
| Debug Probe の「U」ピン | ワイヤーの色 | Pico 2 のピン | GPIO |
|---|---|---|---|
| TX | オレンジ | ピン 2 | GP1(RX) |
| RX | 黄 | ピン 1 | GP0(TX) |
| GND | 黒 | ピン 3 | GND |
交差接続に注意してください。プローブの TX を Pico の RX に、プローブの RX を Pico の TX に接続します。
OpenOCD のターゲット設定
| ターゲット | 設定ファイル |
|---|---|
| Pico 1(RP2040) | target/rp2040.cfg |
| Pico 2(RP2350) | target/rp2350.cfg |
| Pico 2 RISC-V | -c "set USE_CORE { rv0 rv1 }" を指定した target/rp2350.cfg |
| レスキュー(RP2350) | -c "set RESCUE 1" を指定した target/rp2350.cfg |
一般的なデバッグセッション
# Terminal 1: OpenOCD
openocd -f interface/cmsis-dap.cfg -f target/rp2350.cfg -c "adapter speed 5000"
# Terminal 2: GDB
arm-none-eabi-gdb my_app.elf
(gdb) target remote localhost:3333
(gdb) monitor reset init
(gdb) load
(gdb) break main
(gdb) continue
SWD 経由での書き込み
openocd -f interface/cmsis-dap.cfg -f target/rp2350.cfg \
-c "adapter speed 5000" \
-c "program my_app.elf verify reset exit"
SWD で書き込む場合は、.uf2 ではなく .elf ファイルを使用してください。
注意点
よくある間違いや、分かりにくい動作をまとめています。よく注意してください。
-
SDK のデフォルトは Pico 1 です。 RP2350 をターゲットにするには、
-DPICO_BOARD=pico2を明示的に渡す必要があります。指定を忘れると RP2040 向けにビルドされ、バイナリは Pico 2 では動作しません。 -
Raspberry Pi のフォーク版 OpenOCD を使用してください。 上流版の OpenOCD(0.12.0)は、RP2350 を完全にはサポートしていません。ブランチ
rpi-commonを指定してhttps://github.com/raspberrypi/openocd.gitをクローンしてください。 -
ターゲット設定が間違っていると接続に失敗します。 Pico 2 で
rp2040.cfgを使用すると、エラーが表示されずに失敗します。ターゲット設定は必ずチップに合わせてください。 -
SWD では .elf、BOOTSEL では .uf2 を使用します。 これらは異なる書き込み方法で使う、別々の形式です。OpenOCD/SWD 経由で .uf2 を書き込もうとしないでください。
-
適切なデバッグにはデバッグビルドが必要です。 cmake には必ず
-DCMAKE_BUILD_TYPE=Debugを渡してください。Release ビルドでは変数の状態が最適化で削除され、コードの順序も入れ替わるため、ブレークポイントが不安定になります。 -
RISC-V モードには FPU がありません。 ハードウェア浮動小数点ユニットを利用できるのは Cortex-M33 のみです。RISC-V モードではソフトウェア浮動小数点を使用するため、浮動小数点を多用するコードでは大幅に遅くなります。
-
RISC-V にはクリーンなビルドディレクトリが必要です。 ARM と RISC-V を切り替える場合は、ビルドディレクトリを削除して cmake を再実行してください。ビルドディレクトリをそのままにした切り替えはできません。
-
RISC-V のデバッグには事前選択が必要です。 RP2350 はデフォルトで Cortex-M33 を起動します。RISC-V をデバッグするには、
picotool reboot -u -c riscvを実行してから、OpenOCD でset USE_CORE { rv0 rv1 }を使用してください。 -
Debug Probe はターゲットに給電しません。 Pico 2 には、独自の USB または VSYS 経由で給電する必要があります。SWD コネクターから給電することはできません。
-
ワイヤレスモデルでは LED ピンが異なります。 ワイヤレス非対応の Pico 2 では、オンボード LED に GP25 を使用します。Pico 2 W では、CYW43439 ワイヤレスチップ経由で WL_GPIO0 を使用します。コードでは条件分岐が必要です。
-
Git サブモジュールが必要です。 pico-sdk で tinyusb、cyw43-driver、lwip、btstack、mbedtls を取得するには、
git submodule update --initが必要です。サブモジュールがないと、原因の分かりにくいビルドエラーが発生します。 -
OTP は元に戻せません。 OTP ビットへの書き込みは恒久的です。セキュアブートの設定を誤ると(ブートキーを設定せず、PICOBOOT を無効にした状態で
SECURE_BOOT_ENABLEを設定すると)、デバイスが恒久的に使用不能になります。 -
ワイヤレス SPI のピン共有。 Pico 2 W では、ワイヤレスチップとの SPI 通信中、VSYS の ADC 読み取りと CYW43439 の IRQ チェックがブロックされます。
-
最初に GND を接続してください。 Pico 2 に別の電源から給電する場合、信号線を接続する前に、ターゲットと Debug Probe の GND を接続してください。電位差によってプローブが損傷するおそれがあります。
-
macOS:OpenOCD には hidapi と libusb が必要です。
brew install hidapi libusbでインストールしてください。OpenOCD がプローブを検出できない場合は、別のプロセス(VS Code、別の OpenOCD インスタンスなど)が USB デバイスを使用していないか確認してください。 -
複数のデバッグプローブ。 CMSIS-DAP デバイスを複数接続している場合は、OpenOCD の設定で
adapter serial <serial_number>を指定してください。