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チカできました!

参考

Rust製組込みOS TockでC言語アプリケーションを動かす