RustにいればRustに従え(16) rp2040-project-template

Joseph Halfmoon

前回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いたしました。こんな感じ。一撃っす。

gitClone

 

    • 見る前にビルドしてみた。当然の?エラー

「とりあえず」cargo run してみます。颯爽と走り始めます。

cargoRun

プロジェクト・テンプレート内のsrcフォルダに存在するmain.rsには前回のPWMを使ったLチカと異なり、ソフトでON/OFFする「昔風の」Lチカコードが書き込まれてました。それのビルドは成功した感じですが、末尾にいたって以下のエラーとなりました。書き込み失敗!ProbeError

今回、PicoProbe使わずPicoはストレージとして接続して書き込みをするつもりだったのですが、テンプレートのデフォルトは probe-run になってました。そのせいね。

    • probe方式からUF2方式へ変更

probe-run方式から、ストレージへのUF2書き込み方式への変更は、.cargo フォルダの中にしまわれているconfig.tomlの以下の黄色マーカー部分を書き換えれば良いようです。以下のprobe-runをコメントアウトして、elf2uf2-rsをアクティブにします。runner

 

    • おっとBOOTボタン押しておかないと

これで書き込み出来ると思ったらまさかのエラー再び。

ErrorAgain

そうでした。Picoをストレージとして認識させるためにはBOOTボタンを押したまま電源投入(OR RESET)することが必要です。再接続すればOK。

オンボードLEDから外付けLEDに1行だけ変更

さて、今回もサンプルコードそのままでは申し訳ないので、main.rsの中1行だけ変更しました。オンボードのLEDをLチカするように書かれていたのを、GPIO15番(一番端っこの端子)に変更しました。勿論、GPIO15に外付けLED(と電流制限抵抗)を接続しておきます。

pinChanged

 

ついでにプロジェクト名も変更

ついでといっては何ですが、Cargo.tomlのnameフィールドは、テンプレートのままになっているので、自前のお名前に変更しておきます。やっぱCargo.toml、いろいろ沢山書いてあるわな。とても自分じゃ書けそうにないデス。以下はその先頭部分。cargoToml

 

ビルドして動作確認

さて、再び cargo run。今度はエラーなく、elf2uf2-rsが走り、ビルドしたオブジェクトコードがPicoに書き込まれたみたいです。

cargoRunOK

「いつものソフトループの」Lチカ、動いてますな。

RPblink2

まあ、テンプレートをコピペすれば、自前で行けそうな気がしてきた。ホントか?

RustにいればRustに従え(15) Rustによる ラズパイ Picoで吉例Lチカ へ戻る