プログラミング言語RustをXIAOで動かす(v2)
2020/10/5:
初版
Rust XIAO v2
Rust XIAO v2
概要
プログラミング言語Rustを以下のXIAOで動かす(v2)。
前の記事をubuntu_20.04に対応して改版した。
なお、ホストPCとしてはubuntu_20.04を想定している。
関連ツールのインストール
(0)udev設定
以下を実行する:
curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/master/scripts/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
sudo udevadm control --reload-rules
sudo usermod -a -G dialout $USER
sudo usermod -a -G plugdev $USER
(1)bossac(書き込み)ツールのインストール
以下で必要なツールをインスールする:
sudo apt-get update
sudo apt-get install bossa
sudo apt-get install bossa-cli
bossaでGUIツール、bossacでCLIツールが起動する。
参照:https://www.shumatech.com/web/products/bossa
(2)rustツールのインストール
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
#入力を促すので、「1」を入力する
source $HOME/.cargo/env
(3)Cコンパイラのインストール
binを作成するのに、これに含まれるツールを使用するのでインストールする
sudo apt-get install gcc-arm-none-eabi
(4)picocom(通信ソフト)のインストール
sudo apt-get install picocom
(5)rust関連ツールのインストール
# for samd11, samd21:
rustup target add thumbv6m-none-eabi
# for samd51, same54:
rustup target add thumbv7em-none-eabihf
# uf2conv etc install
rustup component add llvm-tools-preview
cargo install uf2conv cargo-binutils
blinkを実行する
# download
git clone https://github.com/atsamd-rs/atsamd.git
cd atsamd/boards/xiao_m0
# build
cargo build --example blink
# conv elf to bin
arm-none-eabi-objcopy -O binary target/thumbv6m-none-eabi/debug/examples/blink firmware.bin
# bootloader-modeにする(resetを2度押す)
# flash
bossac -p /dev/ttyACM0 -i -e -w -v -R -o 0x2000 firmware.bin
実行結果として、オンボードの3つのLEDが点滅する。 (グリーンのLEDは通電表示のLEDなので点滅せずに光っている)
出力例:
$ bossac -p /dev/ttyACM0 -i -e -w -v -R -o 0x2000 firmware.bin
Device : ATSAMD21x18
Version : v1.1 [Arduino:XYZ] Nov 27 2019 16:35:59
Address : 0x0
Pages : 4096
Page Size : 64 bytes
Total Size : 256KB
Planes : 1
Lock Regions : 16
Locked : none
Security : false
BOD : true
BOR : true
Erase flash
Done in 0.834 seconds
Write 13260 bytes to flash (208 pages)
[==============================] 100% (208/208 pages)
Done in 0.087 seconds
Verify 13260 bytes of flash
[==============================] 100% (208/208 pages)
Verify successful
Done in 0.080 seconds
usb_serial
# download
git clone https://github.com/atsamd-rs/atsamd.git
cd atsamd/boards/xiao_m0
# build
cargo build --example usb_serial --features="usb"
# conv elf to bin
arm-none-eabi-objcopy -O binary target/thumbv6m-none-eabi/debug/examples/usb_serial firmware.bin
# bootloader-modeにする(resetを2度押す)
# flash
bossac -p /dev/ttyACM0 -i -e -w -v -R -o 0x2000 firmware.bin
書き込みが終了すると、USBシリアルのエコープログラムが動作する。
「picocom /dev/ttyACM0 -b115200」で通信プログラムを起動して
キー入力すると、入力したキーが表示される。キーの入力に応じて、
オンボードの青いLEDが点滅する。
参照情報
atsamd & atsame support for Rust
Running bossac on the command line
STM32 Nucleo Board STM32F103RB
The Embedded Rust Book
The Embedded Rust Book - Semihosting
以上