YU2TA7KA's BLOG ~take one step at a time~

派生開発、組み込み開発周りのこと。

【組込みRust】RustでRaspberry Pi PicoをLチカする

はじめに

先日自作キーボードに入門しました。その次として、Raspberry Pi Pico向けにRustでキーボードFWを書きたい思っており、まずはRustでRaspberry Pi PicoをLチカしました。
Raspberry Pi Picoで組込みRust開発(開発環境構築編) - Qiitaにて手順が詳しい情報がありましたので、これを参考に実施しました。

やったこと

クロスビルド環境とツール準備*1

# Raspberry Pi Pico(Cortex M0)向けのターゲット追加
$ rustup target add thumbv6m-none-eabi
# ELFからUF2形式への変換ツール
$ cargo install elf2uf2-rs
# メモリ配置変換ツール
$ cargo install flip-link
# テンプレートからRustのプロジェクトを生成するCargoサブコマンド
$ cargo install cargo-generate

テンプレートのプロジェクト利用

# rp2040のテンプレート取得(main.rsにLチカのプログラム)
$ cargo generate   --git https://github.com/rp-rs/rp2040-project-template   --branch main   --name pico-blink
$ cd pico-blink/
$ cargo build

ランナーの修正

elf2uf2-rsを利用するように修正します。

-runner = "probe-run --chip RP2040"
-# runner = "elf2uf2-rs -d"
+# runner = "probe-run --chip RP2040"
+runner = "elf2uf2-rs -d"

プログラムの書き込み

BOOTSELボタンを押しながらPicoをPCへ接続すると「RPI-RP2」として認識されます。この状態で書き込みを行います。

$ cargo run
    Finished dev [optimized + debuginfo] target(s) in 0.03s
     Running `elf2uf2-rs -d target/thumbv6m-none-eabi/debug/rp2040-project-template`
Found pico uf2 disk /media/yu2ta7ka/RPI-RP2
Transfering program to pico
30.50 KB / 30.50 KB [====================================] 100.00 % 110.87 KB/s

実行結果

0.5秒間隔でLチカします。

確認したこと

Raspberry Pi PicoにはRP2040というマイコンが搭載されています。このマイコン向けのドライバ群が下記になります。このリポジトリの隣に上記のRaspberry Pi Pico向けのテンプレートプロジェクトが用意されています。Raspberry Pi Pico in Rustをする場合、ここらへんを利用すれば良さそうです。
github.com
github.com
github.com

おわりに

便利にドライバも使い方も共有されており、簡単にここまでこれました。ありがとうございます。次はPicoにはんだ付けして、スイッチを認識させていきたいと思います。

*1:前提:Rust環境は構築済み