🦀

[Rust] ルネサス R7FA4M1AB で Hello, World!

2023/07/09に公開

なんと あの Arduino に日本のメーカーのマイコンを載せた新作が出たというので、
これは試してみるしかありません。

以下 速さ優先でざっくりとした説明となります。

ハードウェアについては、イチロヲさんの記事を参考にして下さい。

https://zenn.dev/ichirowo/articles/3e8b90c1749ff9

probe-rs にターゲットを追加します

まず マイコンに対応する CMSIS-Pack をダウンロードしておきます。
現在の配布ファイルの名前は Renesas.RA_DFP.4.5.0.pack です。
https://www.keil.arm.com/packs/ra_dfp-renesas/devices/

probe-rs を clone します。
probe-run が使っているバージョンにします。
git clone https://github.com/probe-rs/probe-rs -b v0.18.0 probe-rs-0.18.0

CMSIS-Pack を yaml に変換します。
cd probe-rs-0.18.0/target-gen
ダウンロードしておいたファイルを指定します。
cargo run --release pack ../../../Downloads/CMSIS-Pack/Renesas.RA_DFP.4.5.0.pack tmp
必要なのは、 RA4M1シリーズだけなのでそれだけコピーします。たぶん全部でも構いません。
cp tmp/RA4M1_Series.yaml ../probe-rs/targets

ディレクトリを戻ります。
cd ../..

probe-run をビルドします

git clone https://github.com/knurling-rs/probe-run
cd probe-run

Cargo.toml の末尾に以下を付け加えます。

[patch.crates-io]
probe-rs = { path = "../probe-rs-0.18.0/probe-rs" }

ビルドしてインストールします。
cargo install --path .
※ ~/.cargo/bin/probe-run.exe にインストールされます。

ディレクトリを戻ります。
cd ..

Hello, World します

準備として CMSIS-DAP 仕様のものなど probe-rs と互換性のあるデバッグアダプターを用意し、
UNO R4 と接続しておく必要があります。
5V のターゲットに対応したデバッグアダプターである必要があります。
コネクタを挿す向きに注意して下さい。ランドが四角(■)になっているのが1-pinです。

git clone https://github.com/elfmimi/rust-rtt-sample
cd rust-rtt-sample/rust-rtt
cargo run --release

出来ました! ページ先頭の画像を参照のこと

まとめ

このサンプルは ARM のコアの種類およびアドレス空間でのメモリ配置に依存しているだけで、
R7FA4M1 のペリフェラルには一切関知していません。
実際 Microchip(Atmel) ATSAME70N21 用に作ってあったものを元にアドレスを変更しただけで動いたのですぐに用意できたというところです。
そういうわけで Rust 界隈では組込み開発であっても Lチカよりも先に Hello, World をするというのが潮流となっていると言えると思います。
Arduino UNO R4 Minima は、出荷時に既にLチカのプログラムが書き込まれてしまっていますしね。

早いところ probe-run に取り込まれると良いですが... 誰かやっておいて!

ブートローダーを消してしまって困ったという人は、イチロヲさんの記事を参考にして下さい。

https://zenn.dev/ichirowo/articles/6aa1614e102bce

Discussion