WindowsからのPicoデバッグ
Raspberry Pi Picoを本格的に使うにはGUIでのデバッグ環境が欲しいところです。
しかし手元にあるRaspberry Pi 2Bではマシンパワーが足りず、SSH経由でWindowsからCUIで行うのは中々面倒です。
そこでWindows10からGUIのPicoデバッガーを使えるようにしたいと思います。
基本的に「Getting started with Raspberry Pi Pico.pdf」をベースにしています。あと以下のサイトも参考にしています。
概略
やることの概略は
ツールをインストールしてpico用C/C++ビルドができるようにする。
・pico-sdk入手、pico-examples入手とビルド
MSYS2をまずインストールしてMSYS経由でOpenOCDをインストール・実行してpicoと接続・デバッグができるようにする。
デバッガー用のpicoをもう1つ用意してpicoprobeをインストールしてデバッガーにする。
PC、Picoprobe、Picoを配線します。配線確認を兼ねてビルドしたblink.elfをSWD経由で書き込みます。
・VSCodeインストール、環境を整えてpicoデバッガー完成
VSCodeをインストールして必要な拡張機能もインストールしてpicoデバッグ設定をしてVSCode上でpicoデバッグができるようにします。
ツールインストール
WindowsでC/C++をbuildできるようにするためにツールをダウンロード・インストールしていきます。
gcc-arm-none-eabi-10.3-2021.07-win32.exeをダウンロード・インストールします。32bit版ですが64bitbit Windowsでもこれを使います。
インストール最後に「Add path to enviroment variable」にチェックを入れてPathを通します。
cmake-3.21.1-windows-x86_64.msiをダウンロード・インストールします。
cmakeのバージョン3.21.1ではこの後のpico-examplesのbuildで下記のようにエラーする場合があります。
ですので以前のバージョン(cmake-3.20.6-windows-x86_64.msiなど)にダウングレードする必要があります。
そしてインストール時にcmakeにPATHが通るようにオプションを選択します。
・Build Tools for Visual Studio 2019
下の方の「Visual Studio 2019 のツール」を開き、「Build Tools for Visual Studio 2019」をダウンロード・インストールします。
インストールするのは「C++ build tools」だけです。
このSDKでは、pioasmとelf2uf2のツールをローカルにビルドする必要があるため、「Windows 10 SDK」のフルパッケージをインストールする必要があります。インストールされたアイテムのリストからこれを削除すると、Raspberry Pi Picoのバイナリをビルドできなくなります。
・Python 3.9
インストールの際には’for all users’を選び、インストーラーに従ってPython 3.9をシステムのPATHに追加します。またPythonのインストールの最後にプロンプトが表示されたらMAX_PATHの長さ制限を無効にしてます。
・Git
Gitをインストールする際には、デフォルトのエディターをvimから変更する必要があります。
また特別な理由がない限り、Gitをインストールする際には「Checkout as is, commit as-is」にチェックを入れて「Use Windows’s default console window」と「Enable experimental support for pseudo consoles」を選択しなければなりません。
pico-sdk入手、pico-examples 入手とビルド
とりあえず「pico_work」フォルダーを作りそこに以下のコマンドでpico-sdkとpico-examplesを入手します。
クローンだけならただのコマンドプロンプトでもできますがこのあとのビルドを成功させるためには先にインストールした”Build Tools for Visual Studio 2019“からコマンド入力する必要があります。
インストールした”Build Tools for Visual Studio 2019″は”Visual Studio 2019″→”Developer Command Prompt for VS 2019″から起動することできます。
pico-sdkとpico-examplesをCloneします。
1 2 3 4 5 |
C:\Users\xxx\pico_work> git clone -b master https://github.com/raspberrypi/pico-sdk.git C:\Users\xxx\pico_work> cd pico-sdk C:\Users\xxx\pico_work\pico-sdk> git submodule update --init C:\Users\xxx\pico_work\pico-sdk> cd .. C:\Users\xxx\pico_work> git clone -b master https://github.com/raspberrypi/pico-examples.git |
pico-sdkへのPathを通します。
1 |
C:\Users\xxx\pico_work> setx PICO_SDK_PATH "..\..\pico-sdk" |
“pico-examples”に移動してビルドします。
1 2 3 4 5 |
C:\Users\xxx\pico_work> cd pico-examples C:\Users\xxx\pico_work\pico-examples> mkdir build C:\Users\xxx\pico_work\pico-examples> cd build C:\Users\xxx\pico_work\pico-examples\build> cmake -G "NMake Makefiles" .. C:\Users\xxx\pico_work\pico-examples\build> nmake |
ビルドはexampleプロジェクト全て行うので結構時間がかかります(10分~)。
MSYS2インストール→OpenOCDインストール・実行
デバッガーを使用するためにOpenOCDをインストールします。
WindowsでOpenOCDをインストールするためにMSYS2というものを使用します。
“msys2.org“からインストーラーをダウンロードしてインストールします。
インストールしたMSYS2を起動します(“MSYS2 64bit” →”MSYS2 MinGW 64 bit”)。
”pacman -Syu”と入力してパッケージを更新します。
MSYS2が途中で終了したら再度起動して”pacman -Su”と入力して更新を終わらせます。
以下のコマンドで依存関係をインストールします。
1 |
pacman -S mingw-w64-x86_64-toolchain git make libtool pkg-config autoconf automake texinfo mingw-w64-x86_64-libusb |
以下のコマンドでOpenOCDをインストールします。
1 2 3 4 5 |
$ git clone https://github.com/raspberrypi/openocd.git --branch picoprobe --depth=1 $ cd openocd $ ./bootstrap $ ./configure --enable-picoprobe --disable-werror $ make -j4 |
OpenOCDを起動してみます。構成オプションをつけていないのでエラーしますがインストールされていることが確認できます。
picoprobeインストール
Windows10からデバッグを行うにはデバッガーとしてもう1台 Picoが必要になります。
そのPicoにpicoprobeをインストールします。
the getting started page からPicoセクションを選択して”Utilities”までスクロールダウンして”Debugging using another Raspberry Pi Pico”の下のDownload UF2 fileをダウンロードします。
picoprobe用のpicoの「BOOTSEL」ボタンを押しながらPCとUSB接続するとストレージとして認識されるのでそこにダウンロードした”picoprobe.uf2″をドロップすればpicoprobeがインストールされます。
Windowsの場合、さらにこのPicoprobeのドライバーをインストールする必要があります。
これにはZadigを使います。
Zadigをダウンロード・インストールして、picoprobe用のpicoとPCをUSBでつないだ後、起動します。
Picoprobe(Interface 2)を選択してDriverをlibusb-win32を選択して「Install Driver」でドライバーをインストールします。