背景
RustとはC言語のようにビルドして実行ファイルを作って動かすプログラミング言語です。3年前に同様の内容の記事を書きましたが、AVR-RustがRust本家に取り込まれたことにより手順が変わりました。
備忘録を兼ねて、新しい手順と関連する資料のリンクを共有します。
使ったもの
UbuntuにRustをインストールしたPC
UbuntuにRustをインストールしておきます。各ソフトウェアのバージョンはこちらです。
Ubuntu: 20.04
Cargo: 1.45.1 (f242df6ed 2020-07-22)
記事を書いている時点では、依存ライブラリをWindowsにインストールする手順は明記されていないため、Windowsを利用する場合は、WindowsストアからUbuntuをインストールして、Windows上のUbuntuで手順を実施するのが良いと思います。
ATmega328Pが載っているArduino
Arduino UnoとNanoに対してLチカプログラムを書き込んでみます。AVR-Rustの関連資料
資料のURLはこちらです。https://book.avr-rust.com/
上記資料のコンパイラのや関連ライブラリのインストール手順、サンプルコードのビルド手順、書き込み手順をこの記事では参考にしています。
コンパイラと関連ライブラリをインストール
コンパイラのインストール手順に従い、必要なパッケージをインストールします。rustup component add rust-src --toolchain nightly
Ubuntu向けの関連ライブラリをインストール手順に従い、ライブラリをインストールします。
sudo apt install binutils gcc-avr avr-libc avrdude
Lチカプログラムをビルド
サンプルコードのビルド手順に従い公開されているLチカのサンプルプログラムをビルドします。ダウンロードしてフォルダの中に入ります。
git clone https://github.com/avr-rust/blink.git
cd blink
ATmega328P向けにビルドします。
記事を書いている時点では、avr-rustのコンパイルはnightlyモードで行う必要があったので、cargoコマンドの後に +nightly を付けてnightlyモードでビルドしました。
cargo +nightly build -Z build-std=core --target avr-atmega328p.json --release
プログラムを書き込む
書き込み手順に従ってプログラムを書き込みます。Unoの場合は/dev/ttyACM0にマウントされたので、下記のコマンドでアップロードできました。
avrdude -patmega328p -carduino -P/dev/ttyACM0 -b115200 -D -Uflash:w:target/avr-atmega328p/release/blink.elf:e
静止画では分からない、Lチカの様子をご覧ください。
Nanoの場合は/dev/ttyUSB0にマウントされ、ブートローダーの設定で書き込み速度が57600bpsになっているため、下記のコマンドでアップロードできました。
avrdude -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:target/avr-atmega328p/release/blink.elf:e
静止画では分からないLチカの様子を再びご覧ください。
まとめ
Rustで書かれたArduinoのLチカプログラムをビルドして、UnoとNanoに書き込めました。3年前に取り組んだ時はAVR-Rustのビルドが必要でしたが、それがRust本家に取り込まれたことにより、cargoで必要な環境を整えられるようになりました。
0 件のコメント :
コメントを投稿