(対応プロセッサを増やすごとに,加筆していきます。)
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を,全てアンインストールしました。
-
有償版ですから,それくらいあって当然ですね。 ↩