無知から始めるRaspberry Pi Pico with C/C++ (Windows)
2:Pico Setup for Windows

このセクションでは、WindowsにPicoのプログラムがC/C++で作成できる環境を作成する方法を見ていきます。

C/C++言語を使ったPicoプログラムはLinuxやmacOS、Windowsで作成できるのですが、その開発環境作りは、Raspberry Pi OS -> Linux -> macOS -> Windows の順で難度が増すようです。

ちなみにRaspberry Pi OSは、Raspberry Pi 4や3などのいわゆるシングルボードコンピュータで動作するOSで、Linuxの一種です。イギリスにRaspberry Pi 4などのコンピュータを開発しているラズベリーパイ財団という団体があり、Raspberry Pi Picoもラズベリーパイ財団が開発した製品の1つです。

最もやっかいなWindowsでの環境作りは「Pico Setup for Windows」という名前のGitHubプロジェクトで公開されている設定アプリを使うと、自動的に一切を完了させてくれます。以下は、「Pico Setup for Windows」プロジェクトページに書かれている説明文の翻訳です。

Pico Setup for Windowsが設定できると、Visual Studio CodeでC/C++によるPicoプログラムの開発環境を手に入れることができます。ただし、いかにも簡単そうに書かれていますが、道を1つそれると元に戻るのはなかなかやっかいです。

なお、Pico Setup for Windowsをインストールする前に、「Git for Windows」をインストールしてGitHubのメンバー登録を済ませておいた方が(おそらく)よいと思います。

Pico Setup for Windows

ツールのインストール

最新リリースをダウンロードして実行します(pico-setup-windows-x64-standalone.exeがダウンロードされる)。

Visual Studio Codeの起動

[スタート]メニューで、Raspberry Pi Pico SDK フォルダにある[Pico – Visual Studio Code]ショートカットを探します。ショートカットは必要な環境変数を設定し、Visual Studio Code を起動します。

サンプルを開く

[スタート]メニューのショートカットを使って、初めてVisual Studio Codeを起動すると、pico-examples リポジトリが開きます。
後からサンプルリポジトリを再度開くには、C:\ProgramData\Raspberry Pi\Pico SDK \pico-examples にインストールされているコピーを開きます。

サンプルのビルド

Visual Studio Codeは、pico-examplesプロジェクトが初めて開かれたとき、それを構成するかどうかを聞いてくるので、[YES]をクリックして続行します(見逃した場合は、右下の[ベル]アイコン(通知)を探してください)。すると、キットの選択が求められるので、[Pico ARM GCC – Pico SDK Toolchain with GCC arm-none-eabi]項目を選択します。[Pico ARM GCC]項目がない場合は、SDKが自動でコンパイラを検出する[Unspecified]を選択します。

1つのサンプルをビルドするには、サイドバーの[CMake] ボタンをクリックします。すると、サンプルプロジェクトのツリービューが表示されるので、ビルドしたいプロジェクトを展開し、ターゲット名の右にある小さなビルド アイコンをクリックして、そのプロジェクトをビルドします。

全部のプロジェクトをビルドするには、[CMake Project Outline]ビューの上部にある[Build All Projects]ボタンをクリックします。

サンプルのデバッグ

pico-examplesリポジトリには、Visual Studio Codeでのデバッグ用に構成された .vscode\*.json ファイルが付属しています。これらのファイルを自分のプロジェクトにコピーすることもできます。

サンプルのデバッグを始めるには、サイドバーの [実行とデバッグ]ボタンをクリックします。[Pico Debug] 起動構成がすでに選択されているはずです。デバッグを開始するには、デバッグウィンドウ上部にある小さな “再生”アイコンをクリックするか、F5 キーを押します。

デバッグを初めて開始すると、ターゲットの選択が求められます。後で起動ターゲットを変更したい場合は、ターゲットの名前が表示されたステータスバーボタンで変更できます。

Picoprobeが構成され、ターゲットデバイスへの接続が終わっていると仮定した場合、選択したターゲットがビルド、アップロードされ、スタートします。デバッガーインターフェイスが読み込まれ、main()エントリポイントで、コードの実行が一時停止されます。

この時点で、通常のデバッグツールを使って、ステップ実行やブレークポイントの設定、メモリの検査などを行うことができます。

PicoprobeへのSWDとUARTの配線

Picoprobeの配線は、「Getting started」ドキュメントの付録A「Picoprobeの使用」の「Picoprobeの配線」で説明されています。

Picoprobeとして使用されるRaspberry Pi Picoボードは、Picoprobeリリースで最新の picoprobe.uf2ビルドでフラッシュする必要があります。SDKインストーラに含まれるOpenOCDビルドは、PicoprobeのCMSIS-DAPバージョンのみをサポートします。

VSCodeでシリアルモニターを開く

SDK インストーラは、Visual Studio CodeにSerial Monitor拡張機能を追加します。 Picoprobe にはUSBシリアルブリッジも含まれています。前述したように、ターゲットのTXとRXピンをPicoprobeに配線していると仮定すると、下部パネルの [シリアルモニター]タブに [COMn – USBシリアルデバイス (COMn)] を選択するオプションがあるはずです。

ボーレートはほとんどの場合、デフォルトの 115200 に設定すべきです。[監視の開始]をクリックして、シリアル ポートを開きます。

コマンドラインの使用

コマンドラインツールを使ってプロジェクトをビルド、デバッグするには、[スタート]メニューの[Pico – Developer Command Prompt]か[Pico – Developer PowerShell]を使ってターミナルウィンドウを開きます。

OpenOCDとgdbの起動

openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000"

 

コマンドラインからgdbを実行したい場合は、次のように呼び出します。

arm-none-eabi-gdb

 

たとえば、hello_serialサンプルをロードしてデバッグするには、次のようにします(上記のように OpenOCDが実行済みだと仮定して)。

cd ${env:PICO_EXAMPLES_PATH}\build\hello_world\serial\
arm-none-eabi-gdb hello_serial.elf # hello_serial.elf is built at SDK install time by pico-setup.cmd

 

そしてgdbの中で、

(gdb) target remote localhost:3333
(gdb) load
(gdb) monitor reset init
(gdb) continue

 

新しいプロジェクトの作成

以下はPowerShell用のコマンドです。コマンドプロンプトを使用する場合は、少し変える必要があります。

  1. SDKからcmakeをプロジェクトディレクトリにコピーします。
  2. copy ${env:PICO_SDK_PATH}\external\pico_sdk_import.cmake .
  3. SDKのサンプルからVS Codeの構成ファイルをプロジェクトディレクトリにをコピーします。
  4. copy ${env:PICO_EXAMPLES_PATH}\.vscode .
  5. CMakeLists.txtを次のように設定します。
  6. cmake_minimum_required(VERSION 3.13)
    
    # initialize the SDK based on PICO_SDK_PATH
    # note: this must happen before project()
    include(pico_sdk_import.cmake)
    
    project(my_project)
    
    # initialize the Raspberry Pi Pico SDK
    pico_sdk_init()
    
    # rest of your project
    
  7. コードを記述します(詳細はpico-examplesやRaspberry Pi Pico C/C++ SDK ドキュメントを参照してください)。

    最も簡単なのは、1つのソースファイルです(例: hello_world.c)。
  8. #include 
    #include "pico/stdlib.h"
    
    int main() {
        setup_default_uart();
        printf("Hello, world!\n");
        return 0;
    }
    

    CMakeLists.txt に以下を追加します。

    add_executable(hello_world
        hello_world.c
    )
    
    # Add pico_stdlib library which aggregates commonly used features
    target_link_libraries(hello_world pico_stdlib)
    
    # create map/bin/hex/uf2 file in addition to ELF.
    pico_add_extra_outputs(hello_world)
    

    この例では、stdout にデフォルトのUARTを使用していることに注目してください。デフォルトの USB を使用する場合は、hello-usbサンプルを参照してください。

  9. [スタート]メニューの[Pico – Visual Studio Code]ショートカットからVS Codeを起動し、新しいプロジェクトフォルダを開きます。
  10. VS CodeのコマンドパレットからCMake: Configureコマンドを実行して、プロジェクトを構成します。
  11. 前述したように、プロジェクトをビルドしてデバッグします。

アンインストール

Windows設定の[アプリと機能]を開き、[Raspberry Pi Pico SDK <バージョン>] を選択し、[アンインストール] ボタンをクリックして指示にしたがいます。

コメントを残す

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

CAPTCHA