特集
» 2006年03月07日 00時00分 公開

組み込み開発でもEclipseを!Eclipse Foundationのプロジェクト最新事情(2/3 ページ)

[トーマス・イベンソン ウインドリバー・システムズ,@IT MONOist]

Device Software Development Platformプロジェクト

 DSDPプロジェクトは、Eclipseのトップレベル・プロジェクトの中で唯一、組み込みソフトウェア開発者のニーズに応えるものです。DSDPの歴史は比較的新しく、2005年の初春にウインドリバーがEclipse Foundationに提案したのが始まりです。DSDPの使命は、組み込みソフトウェア開発のために、オープンスタンダードをベースに、拡張性とスケーラビリティを備えた開発環境を作り出すことです。

 DSDPプロジェクトは、製品に組み込まれるソフトウェア開発の現実を反映しています。


・アプリケーションはデスクトップ・コンピュータで開発され、ターゲットとなるカスタム・ハードウェアに実装される
・ターゲット・ハードウェアは、プロセッサのタイプと処理速度により大きな制約を受ける
・デバイスのOSは、メモリ容量、リアルタイム応答性に大きな制約を受ける
・デバイス開発プロジェクトには、ハードウェアの立ち上げ、プラットフォーム・ソフトウェア開発、アプリケーション・ソフトウェア開発という3つの明確な段階がある
・ターゲット・ハードウェア内部のソフトウェアの動作を可視化することは困難だった
・デバイスを完全にデバッグするのは容易ではない

 DSDPは、時代の要求に応えるべく登場したアイデアです。ウインドリバーの提案は、すぐに多くの有力企業の賛同と協力を得ることができました。アクセラレイテッド・テクノロジー(メンター・グラフィックス)、AMIセミコンダクタ、アポジー・ソフトウェア、フリースケール、ディジ、ヒューレット・パッカード、IBM、インテル、モンタビスタ、ノキア、パームソース、QNX、シェアMEテクノロジーズ、ソニー・エリクソン、サイベース、テキサス・インスツルメンツ、タイムシス、ワイヤレックスソフトの各社が、アーキテクチャとユースケースの策定に貢献しています。

 DSDPプロジェクトが認可されてインキュベーションの段階に入り、4つのサブ・プロジェクトが定義されました。

  • Device Debugging(デバイス・デバッギング)
  • Target Management(ターゲット管理)
  • Mobile Tools for Java(Javaプラットフォーム向けモバイル・ツールズ)
  • Native Application Builder(ネイティブ・アプリケーション・ビルダ)

 これら4つの技術的課題に共通の標準的なソリューションをもたらすことにより、組み込みソフトウェアの開発を大いに加速させ得ると認められ、サブ・プロジェクトが正式に発足しました(注)。さらに、Eclipseコミュニティは、DSDPが企業システムと組み込み製品の開発技術の橋渡しになるように位置付けました。

※注:
各サブ・プロジェクトに関する詳細やリリース計画については、DSDPプロジェクトのWebページ(http://www.eclipse.org/dsdp/)を参照してください。



Device Debuggingサブ・プロジェクト

 Eclipseプロジェクトにおいて策定されたデバッグAPIとデバッガ・ビューは、Java Debugger(JDT)およびC/C++ Debugger(CDT)などのデバッガに土台を提供しています。ただし、このAPIとビューは、高速ワークステーション用アプリケーションのデバッグ向けに開発されたものであり、プロセッサ、スレッド、スタック・フレームという単純なデバッグ階層を前提にしています。

 組み込みデバイスやリモートシステムで動作するソフトウェアのデバッグは、サーバやデスクトップ・コンピュータ用アプリケーションのデバッグとはいくつかの点で異なっています。

 まず、通常はハードウェア・モデルが異なります。組み込みデバイスは、マルチコアやDSPとの組み合わせなど、複数のプロセッサを使うことが少なくありません。

 2番目に、メモリ・モデルが複雑かつ多岐にわたります。組み込みデバイスのメモリは通常非常に限られた容量しかなく、さらにその限られた容量を複数のプロセッサが共有し、ターゲット・システムのOSやデバイス構成によっては複数のMMUを使います。

 3番目に、組み込みソフトウェアのデバッグに際しては、ターゲット・システムの内部をもっと深く可視化する必要があります。プロセッサ上には周辺機器の役割を果たすモジュールがあり、その動作検証にはオンチップとオフチップのキャッシュメモリの内容を可視化する必要があります。さらに、フラッシュメモリのプログラミングやオンチップ・トレース・バッファを用いた命令シーケンスの追跡、ローレベルのハードウェア診断などを簡単に行えることも重要です。

 4番目として、組み込みデバイスの開発では通常、ターゲット・システムをデバッグするためにプロセッサやターゲット・ソフトウェアに特化したハードウェアを使用します。一般にそのアクセス速度は遅いため、デバッガのターゲット・システムとのやりとりには時間が掛かります。また、デバッグを開始するまでの設定にも手間が掛かります。スムーズなデバッグを可能にするための工夫が必要です。

 これらの組み込みデバイスのソフトウェア・デバッグに必要とされる要件の多くは、プラットフォーム・デバッグAPIやビューあるいはCDTのCDIインターフェイスのみでは対処できません。Device Debuggingサブ・プロジェクトの使命は、デバッグ・モデルやAPI、ビューを強化して、組み込みソフトウェアのデバッグの複雑性に対処できるようにEclipseデバッグ・プラットフォームを補強することです。

関連リンク:
DSDP-DD Home Page

Target Managementサブ・プロジェクト

 組み込みソフトウェアの開発においては、最終製品に複数のターゲットが組み込まれていることを考慮する必要があります。それぞれのターゲットは複数のプロセッサを使用することができ、それに使われているプロセッサがマルチコアである場合もあります。1つのコア上で走っているソフトウェアは、複数のプロセスとスレッドで構成されています。

 ターゲット・システムは、開発者のオフィスや研究所にあるかもしれませんし、製品として市場に出回っているかもしれません。1つのターゲット・システムは、ローカル・シリアル、JTAG、リモート・ソケット接続など複数の制御チャネルを備えることができます。

 Target Managementサブ・プロジェクトの使命は、これらのシステム、接続、サービスを設定して管理するデータ・モデルとフレームワークを作ることです。Target Managementでは、ダウンロードされるソフトウェアとデータをサポートし、単一あるいは複数の設定変更やコアの起動と停止を可能にし、プロセスとスレッドをデバッグしたり、ターゲット情報の検索などができるようにすることを目指しています。

関連リンク:
DSDP-TM Home page

Mobile Tools for Javaサブ・プロジェクト

 モバイル・デバイスもパワフルな進化を遂げつつあります。高速なプロセッサが搭載されるようになり、メモリ容量とディスプレイ面積も拡大しています。Javaは言語環境とライブラリを充実させ、こうしたモバイル・デバイス向けのプログラミング言語として大きな支持を獲得しています。

 開発者にとって、モバイル向けのJava環境は挑戦課題になります。デスクトップおよびサーバ向けのJ2SEやJ2EEと異なり、モバイル向け(J2ME)にはいくつかの構成とプロファイルがあります。携帯電話などリソースが限られた端末向けとしては、CLDC(Connected Limited Device Configuration)を土台にしたMIDP(Mobile Information Device Profile)というプロファイルがあります。

 カーナビなどある程度リソースが豊富な機器向けには、CDC(Connected Device Configuration)を土台にした「Foundation Profile」および「Personal Profile」と呼ばれるプロファイルがあります。

 モバイル関連のJava仕様には、これ以外にも開発者コミュニティから提案されたいくつかのJSR(Java Specification Request)があります。例えばJSR-248(Mobile Service Architecture for CLDC)とさらに包括的なJTWI(Java Technology for the Wireless Industry)というJSRがあり、開発および実行時のバインディングを可能にするクラスおよびランタイム・ライブラリを管理できる開発ツールを求めています。モバイルJavaによる開発プロジェクトでは、複数のターゲット・システムで共通のソースコードを異なるビルド設定で利用できることが、非常に重要になります。

 モバイルJavaアプリケーションには、実行環境に関連する挑戦課題に加え、立ち上げとデバッグにもユニークな要件があります。これらのアプリケーションは、必要に応じてサーバからダウンロードさせるものばかりではありません。開発者は、ワークステーションで開発したソフトウェアのデバッグとテストを行うために、デバイスのエミュレータをしばしば利用することになります。さらに、実際のデバイスにアプリケーションを展開して実行、デバッグ、テスト、性能分析を行う段階になると、モバイル・デバイスのタイプによって接続方法や接続のレベルが異なることがあります。これらの要件は、ソリューションを確実に本番運用できるようにし、製造される最終製品に反映させるうえで必要になります。

 最後に、モバイルJavaの開発者には、エディタ、コード生成、リファクタリング、ユーザーインターフェイス設計などを行う開発ツールが不可欠です。モバイルJavaの領域で共通に使えるツールとフレームワークがそろっていれば、開発工数とコストを管理しやすくなり、異なるモバイル・プラットフォームに対応する学習時間を短縮可能になります。

 Mobile Tools for Javaサブ・プロジェクトの目標は、既存のEclipseフレームワークを拡張し、モバイルJavaアプリケーションの開発を支援することです。このために、デバイスとエミュレータのフレームワーク、運用フレームワーク、モバイル・デバイス・デバッグ、アプリケーション作成ウィザード、ユーザーインターフェイス設計ツール、ローカライズ、最適化、セキュリティなどの環境整備を進めています。

 このサブ・プロジェクトはノキアがスポンサーとなり、土台となるコードの多くはノキアとIBMが商用製品からコミュニティに提供することになっています。そのほかの参加者は、EclipseMEとアンテナ・オープンソース・プロジェクトの代表者およびソニー・エリクソン、サイベース、ShareMEテクノロジーズ、アポジー・ソフトウェア、ワイヤレックスソフトの各社です。


Native Application Builderサブ・プロジェクト

 Native Application Builderサブ・プロジェクトは、WideStudio/MWTオープンソース・プロジェクトから誕生しました。

 WideStudio/MWTは、マルチプラットフォーム対応のGUIアプリケーション統合開発環境で、Windows、Linux、MacOS、Solarisなどで動作し、ターゲットとして前述のOS以外にT-EngineやITRON、ザウルスなどをサポートしています。「WideStudio」はGUIアプリケーション・ビルダであり、MWT(Multi-platform Widget Toolkit)がOSごとの実装を担っています。WideStudio/MWTは、開発者が一度記述したGUIアプリケーションを、コードを変更することなく複数のプラットフォームで利用できるようにすることを目標にしています。概念的にはJavaのSWT(Standard Widget Toolkit)とJFaceに似ていますが、WideStudio/MWTツールはC++で記述され、C++のアプリケーションで利用できるように設計されています。

WideStudio/MWT(アプリケーション・ビルダ)の画面 画面2 WideStudio/MWT(アプリケーション・ビルダ)の画面

 DSDPプロジェクトがカバーする領域は組み込みソフトウェアですので、Native Application Builderサブ・プロジェクトは、EclipseにWideStudioツールを持ち込んで、C++で記述された組み込み用GUIを利用可能にすることを主眼としています。

関連リンク:
WideStudio/MWT
WideStudio動作環境

Copyright © ITmedia, Inc. All Rights Reserved.