トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2021-5-4

Rust/Wio Terminal


基礎から学ぶ組み込みRustで,RustとWio Terminalに入門.

環境設定

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
rustup target add thumbv7em-none-eabihf
sudo apt install git minicom libusb-1.0-0-dev libsdl2-dev libssl-dev
cargo install cargo-generate
cargo install hf2-cli
cargo install cargo-hf2
echo 'ATTRS{idVendor}=="2886", ENV{ID_MM_DEVICE_IGNORE}="1"' | sudo tee /etc/udev/rules.d/99-seeed-boards.rules
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2886", MODE="0666"' | sudo tee -a /etc/udev/rules.d/99-seeed-boards.rules
echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="2886", MODE="0666"' | sudo tee -a /etc/udev/rules.d/99-seeed-boards.rules
sudo udevadm control --reload-rules

ブートローダーモード

2回,素早くリセットする.ユーザLED(青い方)がゆっくり点滅する.

Lチカ

cargo generate --git https://github.com/tomoyuki-nakabayashi/wio-blink-template.git

で,src/main.rsを編集する.

   loop {
       // TODO: ここにLチカのコードを書く
       delay.delay_ms(1_000u16);
       user_led.toggle();
   }

ちなみに,vscodeのrust-analyzerが,

can't find crate for `test`
can't find craterustc(E0463)

とかってエラーを出してたのだけど,.vscode/settings.jsonを用意して

{
    "rust-analyzer.checkOnSave.allTargets": false,
    "rust-analyzer.checkOnSave.extraArgs": [
        "--target",
        "thumbv7em-none-eabihf"
    ]
}

と書いたらエラーがでなくなった.
(cf. https://github.com/rust-analyzer/rust-analyzer/issues/3801)

wio_terminalクレートとatsamd-halクレートを使う

cargo generate --git https://github.com/tomoyuki-nakabayashi/wio-examples-template.git