忘却力の年寄はRustに慣れないので過去回ではズルズルとLinux上で練習。しかしマイコン用のプログラムをRustで書くことが目標です。PC上での練習を切り上げてマイコン用のクロス開発へ突入。今回はターゲットRaspberry Pi Picoのクロス開発環境をWindows11上に構築、吉例Lチカまでやってみます。
※『RustにいればRustに従え』関係記事 index はこちら
※ビルドはWindows11機上の cargo / rustc 1.70.0 環境でおこなっています。
※ターゲット機は、冒頭のアイキャッチ画像に示したRP2040マイコン搭載Raspberry Pi Pico機です。
Windows環境上でのRustのクロス環境構築
いままでRustの練習は、WSL2上にインストールしたUbuntu20.04LTS上のrustc 1.64.0 で行っていました。Raspberry Pi Picoをターゲットにするにあたり、直接ハードウエアが見えた方が具合が良いと考え、Windows11上にRustの開発環境を載せることにいたしました。手順は以下のとおりです。
-
- Windows11上でRustを使えるようにする
以下の御本家ホームページよりインストーラをダウンロードして、まずWindows11環境でフツーにRustできるようにインストールを行います。
https://www.rust-lang.org/learn/get-started
上記のページはWindowsからアクセスすればWindows機と自動判別してWindows用のインストーラをレコメンドしてくれるのに言われた通りの
RUSTUP-INIT.EXE
をダウンロードしてインストールしました。いわゆるWindowsのインストーラ風ではなくコマンドプロンプトが開いて キーを押したりしないとならない愛嬌のないインストーラですが特に問題なくインストール完了。とりあえずフツーにRustできることをHello Worldなどやって確かめました。
-
- Raspberry Pi用のHALをgithubからClone
以下のgithubページにRaspberry Pi用のHALやらなにやらが一式準備していただいております。また、必要なツールのインストール方法についてもREADME.mdに書いてあります。
https://github.com/rp-rs/rp-hal/
まず上記のページのREAME.md読んで git cloneから
$ git clone https://github.com/rp-rs/rp-hal.git
とりあえずPico Probeを使わず、PicoをUSB接続すると現れるStorageにUF2ファイルを書き込む方法でよければ、以下のクロスツールとelf形式をuf2形式に変換するプログラムくらいがあればLチカ出来る感じです。すべてrustの内輪のコマンドrustupとcargoで完結しておりますな。
$ rustup self update $ rustup update stable $ rustup target add thumbv6m-none-eabi $ cargo install elf2uf2-rs --locked
elf2uf2-rsをインストールしている様子の冒頭のところが以下に
全部Rustの自前だと。
インストール後、ものは試しで elf2uf2-rs を起動してみた様子が以下に。
当初、ビルド後、このツールを動かしてELFをUF2に手動変換するのかと思ったのですが、そんなことはありません。ツールさえあれば、Cargoが自分で判断して、ファイル形式の変換からFlash Storageへの書き込みまでみな自動でやってくれます。Cargoは何でも知っているのね。。。
Windows上でRaspberry Pi Pico用のサンプルをビルド
git cloneしたHALの中にはExampleも存在しています。ドキュメントをみるとPWM使ったblinkがあり。これをビルドして書き込めれば目標のLチカは動いたということになるでしょう。自前じゃないけど。
$ cargo run --release --example pwm_blink
上記1行にて、cargoがよきに計らってくれ、必要な者どもをそろえてビルドし、出来たオブジェクトをUF2変換してPicoのストレージに書き込むことまでやってくれます。至れり尽くせりじゃのう
オンボードのLEDが点滅しております。吉例Lチカ、OKだね。Rustのコード、まったく見てないけど。