Eclipse/Che を組込み向けクロス開発環境として使ってみる。


(対応プロセッサを増やすごとに,加筆していきます。)

2016年現在のクラウド IDE の主戦場はLL系またはJVM系言語です。
mbed など特定環境向けのクラウド IDE は早くから立ち上がっていますが,汎用性がなくつぶしが利かないのが難点です。

Eclipse/Che は,ビルド環境に Docker を採用しているので,Linux 環境でできることはほぼ何でもできます。
つまり,Cheが求める構成を含むクロスGCC入りのコンテナを 作れば ,クロス開発環境になります。

PizzaFactory プロジェクトでは,クラウド IDE の組込みソフト分野での利活用を提案すべく,Che のための Docker コンテナを整備しています。

Eclipse/Che の調達方法

Eclipse/Che のインスタンスは立ち上がっているものとします。Che-server の Docker へのデプロイの仕方は,公式 Web ページを参照してください。

また,Eclipse/Che の開発に大きく貢献している Codenvyは実質 Eclipse/Che と同じクラウドIDEのサービスをフリーミアムモデルで行っており,日本ではPizzaFactory/Camino という有償のサービスも提供されています
手元に環境がない場合には,これらを使うと手軽に始められます。

ワークスペースの作り方

ワークスペースは Stack と呼ばれる,ワークスペースの雛形から生成されます。
本来は Stack を作ったほうがよく,上記有償サービスでは,その対応が為されています1
しかし,本記事の内容の範囲であれば,もっと簡便な手段があります。

まず,左メニューの Workspaces を選択し,青色の Add Workspace ボタンを押します。

出てきた New Workspace 画面で,`Runtimeタブを選択し,さらにその下のCustom stack` を選択します。

さらに,下のラジオボタンで Write your own stack を選択すると,テキストボックスが出現します。

ここに,Docker compose に則った yaml 記述を入力します。
いろいろと複雑なことも書く気になれば書けますが,とりいそぎ,下記の三行あればクロスGCCを使うには十分です。

services:
  dev-machine:
    image: 'イメージ名'

イメージ名は,ターゲットアーキテクチャによって異なります。
ターゲットアーキテクチャとイメージの対応は下表のとおりです。

ターゲットアーキテクチャ バージョン イメージ名
Blackfin ADI 2014R1以降の版 pf0camino/cross-bfin-elf:latest
Nios II Sourcery CodeBench Lite 2016.05-9 for Nios II ELF with R2 以降の版 pf0camino/cross-nios2-elf:latest
MIPS Sourcery CodeBench Lite 2016.05-7 for MIPS ELF 以降の版 pf0camino/cross-mips-elf:latest

ですので,例えば Blackfin プロセッサ向けの開発環境であれば下記のように入力します。
yaml では字下げに意味があるので,その点は気をつけてください。

services:
  dev-machine:
    image: 'pf0camino/cross-bfin-elf:latest'

入力に誤りがないことを確認したら,画面右上の CREATE ボタンを押して,ワークスペースを作成してください。
同じ位置に OPEN ボタンが出現するはずですので,それを押してワークスペースを開いてください。

ネットからクロス開発環境が入った Docker イメージがダウンロードされ,ワークスペース用のコンテナが起動します。

PATH 環境変数の設定等は済んでいますので,ターミナルから,クロス GCC を立ち上げてみてください。

まとめ

Eclipse/Che を組込みソフトのクロス開発向けに使う方法を概説しました。

通常の組込み開発,とくに複数の CPU アーキテクチャを扱う場合には,ツール環境をクリーンな状態に保つのが難しいという課題がありました。Eclipse/Che は Docker コンテナで環境を分離できるので,この課題は完全に解決します。
しかし銀の弾ではなく「手元にあるターゲットボードのデバッグが困難」「Windows 版しか提供されないツールに対しては無力」 という新たな課題は発生します。しかし,それを許容できるようであれば,かなり有力な選択肢ではと思います。

ぜひお試しください。
ちなみに筆者は既に,ローカルマシンにあったクロスGCCを,全てアンインストールしました。


  1. 有償版ですから,それくらいあって当然ですね。