Rust製組込みOSのTockを触ってみる①
はじめに
諸事情によりまとまった時間を取るのが難しいので、入門系やります。
今回は、Rust製のRTOSであるTockを触ってみます。 githubのTock organizationはこちらです。
Getting started
Getting startedを参考に、何か動かしてみます。
Requirements
- nightly Rust (開発グループは
nightly-2019-04-11
を使用) - make
- tockloader
Rustとmakeはインストールされているので、tockloaderをインストールします。
pip3 install --upgrade tockloader --user
ttyUSBを管理者権限なしで使えるようにします。
grep -q dialout <(groups $(whoami)) || sudo usermod -a -G dialout $(whoami)
Compile kernel
git clone https://github.com/tock/tock.git cd tock/
kernelをビルドする前に、まずボードを選びます。 手元にnRF52840-DKがあるので、それにします。
kernelをビルドして、ボードに書き込みます。
cd boards/nordic/nrf52840dk/ make flash
JLinkで何やら書き込んでいるようです。
Finished release [optimized + debuginfo] target(s) in 2.36s text data bss dec hex filename 71676 1940 260204 333820 517fc target/thumbv7em-none-eabi/release/nrf52840dk tockloader flash --address 0x00000 --jlink --board nrf52dk target/thumbv7em-none-eabi/release/nrf52840dk.bin Flashing binar(y|ies) to board... Using known arch and jtag-device for known board nrf52dk Finished in 5.365 seconds
build example application
C言語のユーザーアプリケーションを実行してみましょう。
git clone https://github.com/tock/libtock-c.git cd libtock-c/ cd examples/blink/ make DIR ../../libtock/build/cortex-m0 CC ../../libtock/internal/alarm_internal.c /bin/sh: 1: arm-none-eabi-gcc: not found ../../TockLibrary.mk:149: recipe for target '../../libtock/build/cortex-m0/alarm_internal.o' failed make: *** [../../libtock/build/cortex-m0/alarm_internal.o] Error 127
む?C言語のアプリケーション実行には、GCCが必要みたいです。 (そういえばPC新しくしてからインストールしてなかったな)
sudo apt install gcc-arm-none-eabi
改めて、今度はビルドが通ります。
make
アプリケーションを書き込みます。
tockloader install --jlink --board nrf52dk
無事、Lチカできました!