とりあえずサンプルプログラムのビルドと動作確認ができたので、新規プロジェクトを作成してVS Code(今回インストールしたVisual Studio Community 2019ではなく、既ににインストールしたあったもの)でビルドする方法を探りました。 途中何度かエラーがでて同じことをやり直している(つもりの)内にいつの間にかうまくいくようになったので、手順に抜けがある可能性が高いですが、きょう一日の作業の記念にメモしておきます。
基本的な手順は Getting started with Raspberry Pi Pico の Chapter 7. Using Visual Studio Code と Chapter 8. Creating your own Project の通りです。
1. プロジェクトフォルダの作成
適当なところにプロジェクトフォルダを作ります。今回は、pico-sdkとpico-examplesと同じところにProjectフォルダを作成して、その中に新規プロジェクト用にtestフォルダを作成しました。
2. 必要なファイル
今回はサンプルプログラムのblinkを新規フォルダに移してビルドします。
- サンプルのblink.cを作成したtestフォルダにコピーしてtest.cにリネーム
- pico-sdk/external にある pico_sdk_import.cmakeをtestフォルダにコピー
- 以下の内容でCMakeLists.txtをtestフォルダに作成
cmake_minimum_required(VERSION 3.13) include(pico_sdk_import.cmake) project(test_project C CXX ASM) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) pico_sdk_init() add_executable(test test.c ) pico_add_extra_outputs(test) # Pull in our pico_stdlib which pulls in commonly used features target_link_libraries(test pico_stdlib)
ファイルの構成は以下のようになります。
raspi_pico ├─ Project │ └─ test │ ├─ CMakeLists.txt │ ├─ pico_sdk_import.cmake │ └─ test.c ├─ pico-examples └─ pico-sdk
3. VS Codeの拡張機能のインストール
VS Codeを起動して2つの拡張機能をインストールします。
インストール後にVS Codeを一旦終了。
4. ビルド
- Windowsメニューから「Visual Studio 2019 > Developer Command Prompt for VS2019」を選択。コマンドプロンプトで
code
を実行してVS Codeを起動します。(←これ重要。普通にVS Codeを起動すると失敗します)
※ 私の環境では export PICO_SDK_PATH=/home/pi/pico/pico-sdk は必要ありませんでした - VS Codeの「ファイル > フォルダーを開く...」でtestフォルダを開きます。
- 開いたときかビルドするとき辺りでキットを選択するメニューが現れるので「GCC for arm-none-eabi 10.2.1」を選択。
※ウィンドウの一番下に「アクティブなキットがありません」と表示されていれば、これをクリックしても選択メニューが現れます - 「表示メニュー > コマンドパレット... > CMake:ビルド」を選択。
※ウィンドウの一番下の「ビルド」をクリックでも同じ - testフォルダ内にbuildフォルダが生成されているので、その中のtest.uf2を例の手順でpico本体にコピー
ソースを編集したら、あとは4、5の繰り返し
所感的な
以上が現状うまくいっている方法ですが、 最初はエラーとか警告が出てビルドできなくて、コマンドラインでビルドしてみたり、 何かの設定をいじったり(何かやったようなぼんやりとした記憶)、 ファイルの内容を書き換えたりしているうちに いつの間にかうまくいくようになっており…
もやもやしたものは残るもののビルドまでVS Code でできるようになったので、あとはUSBケーブルを抜き差しする例の面倒なプログラム更新の手順を簡単にしたいですね。 Chapter 5. の Flash Programming with SWD あたりを試してみようかなと思いつつ力尽きたのです。
コマンドプロンプトからVS Codeを起動するあたりも環境変数あたりをどーにかすればどーにかなるのかなと。
※ リセットボタンの追加とビルド後のファイルコピーの自動化でだいぶ楽になりました