前回、rp-halのお陰でrust言語で書かれたサンプルソースをビルドし、Raspberry Pi Picoに書き込んで動作確認ができました。しかしHALのサンプルプロジェクトをHALの環境内でビルドしただけです。自前のプロジェクトを作りたいのだけれどどうしたら良いの?なんかメンドクさそうだし。そんなことはお見通し。
※『RustにいればRustに従え』関係記事 index はこちら
※ビルドはWindows11機上の cargo / rustc 1.70.0 環境でおこなっています。
※ターゲット機はRP2040マイコン搭載Raspberry Pi Picoです。
プロジェクト・テンプレート
前回、HALの環境内では「cargoは何でも知っている」のでコマンド一発でサンプルプロジェクトをビルドして書き込みできました。しかしcargo.toml以下の設定が済んでいればこそです。
自前のプロジェクトを作りたいのだけれどどうしたら良いの?と困って探したらありました。rp2040-project template というものです。rustの中の人々はみんなお見通しだな。このプロジェクトをクローンしてテキトーに書き換えたら「良い塩梅」で自前のプロジェクトの出来上がりっと。コピペはお楽。
rp-rs / rp2040-project-template
手順が以下に。
-
- プロジェクトテンプレートをgit clone
まずは上記からプロジェクトテンプレートをgit cloneいたしました。こんな感じ。一撃っす。
-
- 見る前にビルドしてみた。当然の?エラー
「とりあえず」cargo run してみます。颯爽と走り始めます。
プロジェクト・テンプレート内のsrcフォルダに存在するmain.rsには前回のPWMを使ったLチカと異なり、ソフトでON/OFFする「昔風の」Lチカコードが書き込まれてました。それのビルドは成功した感じですが、末尾にいたって以下のエラーとなりました。書き込み失敗!
今回、PicoProbe使わずPicoはストレージとして接続して書き込みをするつもりだったのですが、テンプレートのデフォルトは probe-run になってました。そのせいね。
-
- probe方式からUF2方式へ変更
probe-run方式から、ストレージへのUF2書き込み方式への変更は、.cargo フォルダの中にしまわれているconfig.tomlの以下の黄色マーカー部分を書き換えれば良いようです。以下のprobe-runをコメントアウトして、elf2uf2-rsをアクティブにします。
-
- おっとBOOTボタン押しておかないと
これで書き込み出来ると思ったらまさかのエラー再び。
そうでした。Picoをストレージとして認識させるためにはBOOTボタンを押したまま電源投入(OR RESET)することが必要です。再接続すればOK。
オンボードLEDから外付けLEDに1行だけ変更
さて、今回もサンプルコードそのままでは申し訳ないので、main.rsの中1行だけ変更しました。オンボードのLEDをLチカするように書かれていたのを、GPIO15番(一番端っこの端子)に変更しました。勿論、GPIO15に外付けLED(と電流制限抵抗)を接続しておきます。
ついでにプロジェクト名も変更
ついでといっては何ですが、Cargo.tomlのnameフィールドは、テンプレートのままになっているので、自前のお名前に変更しておきます。やっぱCargo.toml、いろいろ沢山書いてあるわな。とても自分じゃ書けそうにないデス。以下はその先頭部分。
ビルドして動作確認
さて、再び cargo run。今度はエラーなく、elf2uf2-rsが走り、ビルドしたオブジェクトコードがPicoに書き込まれたみたいです。
「いつものソフトループの」Lチカ、動いてますな。
まあ、テンプレートをコピペすれば、自前で行けそうな気がしてきた。ホントか?