【Raspberry Pi Pico】新規プロジェクトの作成/VS Codeでビルド

とりあえずサンプルプログラムのビルドと動作確認ができたので、新規プロジェクトを作成して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を新規フォルダに移してビルドします。

  1. サンプルのblink.cを作成したtestフォルダにコピーしてtest.cにリネーム
  2. pico-sdk/external にある pico_sdk_import.cmakeをtestフォルダにコピー
  3. 以下の内容で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つの拡張機能をインストールします。

  1. C/C++ (ms-vscode.cpptools)
    ※これはすでに入ってたっぽい
  2. CMake Tools (ms-vscode.cmake-tools)

インストール後にVS Codeを一旦終了。

4. ビルド

  1. Windowsメニューから「Visual Studio 2019 > Developer Command Prompt for VS2019」を選択。コマンドプロンプトcodeを実行してVS Codeを起動します。(←これ重要。普通にVS Codeを起動すると失敗します)
    ※ 私の環境では export PICO_SDK_PATH=/home/pi/pico/pico-sdk は必要ありませんでした
  2. VS Codeの「ファイル > フォルダーを開く...」でtestフォルダを開きます。
  3. 開いたときかビルドするとき辺りでキットを選択するメニューが現れるので「GCC for arm-none-eabi 10.2.1」を選択。
    ※ウィンドウの一番下に「アクティブなキットがありません」と表示されていれば、これをクリックしても選択メニューが現れます
  4. 「表示メニュー > コマンドパレット... > CMake:ビルド」を選択。
    ※ウィンドウの一番下の「ビルド」をクリックでも同じ
  5. testフォルダ内にbuildフォルダが生成されているので、その中のtest.uf2を例の手順でpico本体にコピー

ソースを編集したら、あとは4、5の繰り返し

所感的な

以上が現状うまくいっている方法ですが、 最初はエラーとか警告が出てビルドできなくて、コマンドラインでビルドしてみたり、 何かの設定をいじったり(何かやったようなぼんやりとした記憶)、 ファイルの内容を書き換えたりしているうちに いつの間にかうまくいくようになっており…

もやもやしたものは残るもののビルドまでVS Code でできるようになったので、あとはUSBケーブルを抜き差しする例の面倒なプログラム更新の手順を簡単にしたいですね。 Chapter 5. の Flash Programming with SWD あたりを試してみようかなと思いつつ力尽きたのです。

コマンドプロンプトからVS Codeを起動するあたりも環境変数あたりをどーにかすればどーにかなるのかなと。

リセットボタンの追加ビルド後のファイルコピーの自動化でだいぶ楽になりました

【Raspberry Pi Pico】ブックマーク的なもの

参考にさせていただいている先人のページをまとめておきます。

開発環境の構築

I2S DAC

もろもろ

総本山

【Raspberry Pi Pico】サンプルプログラムのビルド

Raspberry Pi Picoの開発環境がインストールできたので、サンプルプログラムをビルドして動作確認します。

参考ページ

インストールに引き続き、ほぼ(←これがまちがいのもと)以下のページの通りに進めていきます。 USBのあたりのwarningは下記が助けになりました。

1. サンプルプログラムとSDKのクローン

インストールしたTortoiseGitを使用して、以下の2つのリポジトリ(サンプルプログラムとSDK)をクローンします。

手順は以下の通り。

  1. 適当なフォルダを作成(参考ページにならってDocuments\raspi_pico)
  2. raspi_picoで右クリックして、TortoiseGitのメニューから「Git clone...」を選択
  3. ダイアログのURLに前述のものを入力
  4. 2つをクローンするとraspi_picoにpico-examples、pico-sdkが作成されます

操作が簡単かなと思って右クリックでクローンしましたが、このままだとビルドの際にUSBあたりでwarningが出るのでコマンドラインで以下を実行しておくとよいです。(実行しなくても、とりあえずUSB以外のはビルドできますけど…)

cd pico-sdk
git submodule update --init

※ 何もわかってないくせに自己流で参考ページと違うことをするから面倒なことになるのです…

2. サンプルのビルド

Windowsメニューから「Visual Studio 2019 > Developer Command Prompt for VS2019」を選択してコマンドプロンプトを開きます。 以下のコマンドでSDKへのパスを設定します。

setx PICO_SDK_PATH "****\Documents\raspi_pico\pico-sdk"

設定を有効にするために、一度コマンドプロンプトを閉じて再度開きます。

あとは以下を実行。

cd ****\Documents\raspi_pico\pico-examples
mkdir build
cd build
cmake -G "NMake Makefiles" ..
nmake

ズラズラと進行状況が表示され、相当な時間をかけてすべてのサンプルプログラムのビルドが完了します。

3. サンプルプログラムの書き込み

Raspberry Pi Pico本体のBOOTSELボタンを押しながらPCとUSBで接続すると、USBのストレージとして認識されます。 ここにbuild内の各フォルダにある****.uf2ファイルをドラッグ&ドロップでコピーすると実行されます。

1つ目はLチカでしょってことで、build\blink\blink.uf2 を実行

以上で、サンプルプログラムのビルドと動作確認がドーニカコーニカ完了。なんと分かっていないことが多いことか…
次は新規プロジェクトの作成とVS Codeでのビルドの2本立てです

【Raspberry Pi Pico】開発環境の構築(C++/Windows10)

Raspberry Pi Picoを手に入れたのでWindows10に開発環境を構築します。 Pythonは(も)全く分からないので、C++用ということで下記ページを参考(ほぼトレースです)に作業を進めていきます。 rikoubou.hatenablog.com ※ 5番目の「Python3.7系のインストール」はしなくてもよさそう(今のところ)

1. GNU Arm Embedded Toolchain のインストール

下記からダウンロード&インストール 。 developer.arm.com (gcc-arm-none-eabi-10-2020-q4-major-win32.exe)

完了画面でPATHを追加するためのチェックボックスがあるので、これをチェック。

2. CMake のインストール

途中、PATHを追加するためのチェックボックスがあるので、これをチェックしてインストール。 cmake.org (cmake-3.21-windows-x86_64.msi)

3. Visual Studio community 2019 のインストール

下記からダウンロードしてインストーラを起動。 項目の選択画面になるので「C++によるデスクトップ開発」にのみチェックをいれてインストール。 visualstudio.microsoft.com (Visual Studio community 2019 バージョン 16.8)

4. TortoiseGit のインストール

下記からダウンロード&インストール。 tortoisegit.org (TortoiseGit 2.12.0 - 64-bit) ※別途、GIT本体もインストールしたような気がする…

以上で(概ね)インストール完了。 サンプルプログラムのビルドと動作確認に続きます。

【stm32f103】st-linkによるbootloaderの書き込み

bluepill(stm32f103)へのブートローダの書き込みかたを毎度忘れてるのでメモしておきます。

Documents\Arduino\hardware\Arduino_STM32-master\tools\win\stlink あたりにある st-link_cli.exe を使用。 ST-LINKを接続して、コマンドラインから以下を実行。

st-link_cli -c SWD -P generic_boot20_pc13.bin 0x8000000 -Rst -Run

※ BOOT0、BOOT1のジャンパーはいじる必要なかったと思う

【kicad】オートルーターの使い方

次にkicadを使うときのために忘れないようメモしておくシリーズ。

作業の流れ

よく分からないなりに電源・グランドあたりを多少気を使って配線を終えたら、自動配線ツールの"freerouting"を使って残りを配線します(してもらいます)。大まかな流れは以下の通りです。

  1. kicadでSpecctra DSNファイルをエクスポート
  2. freeroutingで Specctra DSNファイル をオープン
  3. freeroutingで自動配線
  4. freeroutingで Specctra Session File をエクスポート
  5. kicadで Specctra Session File をインポート

kicad から freerouting へは 「Specctra DSNファイル 」、freerouting から kicad へは「Specctra Session File」という用にファイルを介して情報の受け渡し。

1. kicadでSpecctra DSNファイルをエクスポート

ツールバーのオレンジの四角のアイコンを選択します。

f:id:washiyamagiken:20210320223717p:plain

ダイアログが表示されるので「現在のボードを”Specctra DSN”ファイルへエクスポート」を選択してファイルを保存します。

f:id:washiyamagiken:20210320223923p:plain

2. freeroutingで Specctra DSNファイル をオープン

freeroutingを起動すると奥ゆかしいダイアログが開かれるので、保存したSpecctra DSNファイル をオープンします。

f:id:washiyamagiken:20210320224503p:plain

3. freeroutingで自動配線

ツールバーの[Autorouter]を選んで自動配線開始。

f:id:washiyamagiken:20210320224629p:plain

ガチャガチャと配線が進んで、すべての配線が完了すると、そっとステータスバーに「Postroute completed」と表示されます。奥ゆかしい…

f:id:washiyamagiken:20210320224646p:plain

※ 配線できない場合には、kicadに戻って未配線になった付近の電源・グランドをちょこちょこっと工夫したり根本的にレイアウトを見直したりしてからリトライ

4. freeroutingで Specctra Session File をエクスポート

Fileメニューの「Export Specctra Session File」でファイル保存

f:id:washiyamagiken:20210320225114p:plain

5. kicadで Specctra Session File をインポート

エクスポートの時と同じダイアログの「スペクトラ セッション ファイル(*.ses)のバックインポート」で Specctra Session File をインポートするとfreeroutingの配線結果が反映されます。

f:id:washiyamagiken:20210320223923p:plain

【kicad】ガーバーデータ作成

2年ぶり2回目のkicad。久しぶりに基板を発注しました。 案の定すっかり忘れていたので次の時のために記録しておきます。

pcbnewの[ファイルメニュー]>[プロット] f:id:washiyamagiken:20210322183302p:plain

開いたところからの変更は[Protelの拡張子を使用]にチェックを入れた程度。 [製造ファイル出力]で作成したら次はドリルファイル

f:id:washiyamagiken:20210320153633p:plain

こちらも[PTHとNPTH穴データを一つのファイルにマージ]にチェックしたぐらい。 [ドリルファイルの作成]でファイル作成