10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

300打鍵以内でEV3RTをビルドする

Last updated at Posted at 2016-11-09

前口上

ETロボコンでも使われている EV3RT ですが,TOPPERS プロジェクト(というか OSS)の製品にありがちなことに,開発環境の構築が面倒です。
やりたいことは EV3RT のアプリケーションの開発のはず。
環境の構築なんてしたくありませんよね? 楽をしましょう。

環境

Docker を使います。最近は Linux だけでなく Mac や Windows でも動くので,障壁は下がっていると思います。使えるようになっておけば,他の分野でも使えますし。

Docker を使うと,環境を完全に同一にできます。人数の多いチームでの開発をしたことのある方は,これが大きなメリットだと感じて頂けるかと思います。
継続ビルドも行いやすくなります。

今回はホストとして Linux (CoreOS) を使います。他のOSやディストリビューションでも概ね一緒だと思いますが,適宜読み替えてください。
Docker イメージを DockerHub から引っ張ってきますし,ソースコードは GitHub から clone してきますので,インターネット接続も要ります。

手順

Docker コンテナに入ってからの作業は,Get Startedの後半と一緒なのですが,とりあえず,一通り記しておきます。

Docker コンテナへ入る

まずは Docker コンテナを引っ張ってきて,その中に入ります。

$ mkdir projects
$ cd projects
$ docker run --rm -it -v ${PWD}:/projects pizzafactory/che-stack-ev3rt /bin/bash

-v オプションで,カレントディレクトリをコンテナ内にマウントしています。
これが無いと,ビルドが終わったあと,コンテナ内のビルド成果物を取り出すのが難しくなります。

たぶん,初回だけ,こんな感じでダウンロードが走ります。

Unable to find image 'pizzafactory/che-stack-ev3rt:latest' locally
latest: Pulling from pizzafactory/che-stack-ev3rt
6bbedd9b76a4: Already exists
fc19d60a83f1: Already exists
de413bb911fd: Already exists
2879a7ad3144: Already exists
668604fde02e: Already exists
778c49b1024a: Pull complete
c04e85362e33: Pull complete
c75bea60126b: Pull complete
0dd26cf7d467: Pull complete
d0fa3f3dd7d6: Pull complete
9d103e0e382b: Pull complete
Digest: sha256:65b2f6305ce2780677d21da5cc157b01517583ba84b2691bfa1a71e6cfb8d92d
Status: Downloaded newer image for pizzafactory/che-stack-ev3rt:latest

しばらくするとプロンプトが出ます。

root@8b2e1b815cd8:/projects#

root ユーザになりますが,今回の起動方法では,コンテナからホストに出て悪さをすることは不可能です。安心して操作してください。
以下,プロンプトを「#」で表記します。

ソースツリーの取得

GitHub からソースツリーを取得します。

# git clone https://github.com/ev3rt-git/ev3rt-hrp2
# cd ev3rt-hrp2
# git submodule init
# git submodule update

clone の際にパスワードを聞かれたときには URL を間違えています。確認してください。

カーネルコンフィギュレータの作成

# cd cfg
# make

Boost を使った比較的サイズの大きなツールなので,ビルドにそこそこの時間がかかります。
コーヒーサーバに行って帰ってくるくらいはできるかも。

uImage のビルド

$ cd ../base-workspace
$ make app=loader

こちらは,さほど時間はかかりません。大きかったら EV3 に入りませんし。

helloev3 のビルド

$ cd ../sdk/workspace
$ make app=helloev3

こちらはさらに時間がかからずに終わります。hello world 相当ですから。

Docker コンテナから脱出

Ctrl+D を押すなり exit コマンドを実行するなりして,コンテナから出ます。

# exit

成果物の回収

ホスト環境に戻ってきました。
先ほどカレントディレクトリをマウントしておきましたので,カレントディレクトリにコンテナ内の作業内容が残っています。

ev3rt-hrp2/base-workspace/uImage はファイル名の通り uImage で,{カレントディレクトリ}/ev3-rt-hrp2/sdk/workspace/app は先ほどビルドした helloev3 です。

このあとの作業は,Mindstorms EV3 に慣れていらっしゃる読者の方がお詳しいでしょう。

打鍵数は?

コンテナからの脱出で Ctrl-D を使った場合の打鍵数は 299。ギリギリで 300打鍵以内に収まりました。入力補完が効きますので,実際の打鍵数はもう少しすくなくなるはずです。

余談

もう一回ビルドしたいときは?

docker に --rm オプションが付いているので,コンテナから抜けるとコンテナインスタンスは消えます。
もう一度ビルドしたいときは,最初のビルドを行ったディレクトリへ移動して,再度 docker を実行してください。

$ cd projects
$ docker run --rm -it -v ${PWD}:/projects pizzafactory/che-stack-ev3rt /bin/bash

コンテナインスタンスは消えますが,イメージは残っていますので,再実行時は瞬時にコンテナ内に入れます。

どうでもいいいこと

書き上げてから,この記事 ET ロボコン Advent Calendar で公開したらモテモテだったのでは? という気がした。
でも貯めこむと忘れるので,投稿する。モテなくたっていい。泣かない。

10
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?