埋め込みデバイス(embedded device)は、通例、単一アプリケーションのデバイスである。このアプリケーションが埋め込みデバイスにおいて適正に動作するためには、埋め込みデバイスのオペレーティング・システムはそのアプリケーションの全ての機構をサポートしなければならない。多くの場合、アプリケーションが埋め込みデバイスのためにオペレーティング・システム・イメージに統合される場合、オペレーティング・システム・イメージにおいてサポートされない依存性がそのアプリケーションに存在する。例えば、このアプリケーションはビデオをレンダリングする必要があるかもしれず、したがって、そうするためには、ビデオ・プレーヤーのようなシステム・コンポーネントを必要とする場合もあり得る。
本願は、埋め込みデバイスのためのオペレーティング・システム・イメージを構築するシステムおよび方法を対象とする。本明細書において記載する例では、本システムおよび方法は、依存性分析プログラムを用いて、埋め込みデバイスにおいて実行する1つ以上のソフトウェア・アプリケーションについてオペレーティング・システムの依存性を判定する。これらの依存性を解決するために、オペレーティング・システム・イメージに追加することができるオペレーティング・システム・コンポーネントが特定される。分析プログラムは、単独で、または統合開発システムの一部として実行することができる。
図1は、埋め込みデバイスにおいてカスタム化オペレーティング・システム・イメージを構築するために用いられるシステム例100を示す。このシステム例100は、オペレーティング・システム・ベース・モジュール102、ソフトウェア・アプリケーション・モジュール104、分析プログラム・モジュール106、コンポーネント・モジュール108、マッピング・モジュール110、および構築モジュール112を含む。構築の最終結果は、カスタム化オペレーティング・システム・イメージ114となる。
オペレーティング・システム・ベース・モジュール102の一例は、例えば、ワシントン州、RedmondのMicrosoft Corporationが提供するWINDOWS(登録商標)埋め込みCEまたはXP埋め込みオペレーティング・システムのような、埋め込みシステムに用いられるオペレーティング・システム・ベースである。他のオペレーティング・システムを用いることもできる。オペレーティング・システム・ベースは、カーネル、ファイル・システム、コア・コンポーネント等のような基本機能を含むオペレーティング・システム全体のシェルである。
ソフトウェア・アプリケーション・モジュール104は、例えば、POSデバイスにおいて実行するポイント・オブ・セールス(POS)アプリケーション・システムのような、埋め込みオペレーティング・システムにおいて実行する1つ以上のソフトウェア・アプリケーションを含む。ソフトウェア・アプリケーション・モジュール104は、オペレーティング・システムにおいて1つ以上のシステム・コンポーネントからのサポートを必要とすることがある。このような必要性を依存性と呼ぶ。例えば、ソフトウェア・アプリケーション・モジュール104は、オーディオ能力(audio capabilities)を必要とするかもしれず、一方、オーディオ能力は、メディア・コンポーネントのオペレーティング・システム・ベース・モジュール102への追加を必要とする。以下で更に説明するが、依存性のその他のいくつかの例には、ハイパーテキスト・マークアップ言語フォーマットでフォーマット化された文書をレンダリングするために用いられるウェブ・ブラウザー、ならびに埋め込みデバイスへの接続および埋め込みデバイスからの接続を制限するために用いられるファイアウォールが含まれるが、これらに限定されるのではない。
依存性を判定するために、分析プログラム・モジュール106は、ソフトウェア・アプリケーション・モジュール104と関連のある依存性を分析し特定するようにプログラミングされている。このような分析プログラムの一例に、Dumpbin.exeがある。これは、ソフトウェア・アプリケーション・モジュール104と関連のある依存性を特定するために用いることができる、コマンド・ライン・ツールである。Dumpbin.exeは、二進ファイルおよびダイナミック・リンク・ライブラリの構造を分析する。別の例では、Depends.exeのような分析プログラムは、ソフトウェア・アプリケーション・モジュール104をスキャンして、それと関連のあるあらゆる依存性を判定するが、ソフトウェア・アプリケーションが適正に動作することを妨げてしまう。このような分析プログラムは、通例、静的プログラムであって、単体でも実行することができ、あるいはMicrosoft Corporationが提供するVISUAL STUDIO(登録商標)開発システムのような、統合開発システムのコンテキストの中で実行することもできる。
分析プログラム・モジュール106によって発見されたソフトウェア・アプリケーションにおける依存性は、その依存性を解決するために用いられるオペレーティング・システム・コンポーネントにマッピングされる。これらのコンポーネントは、コンポーネント・モジュール108の一例に含まれる。マッピングは、マッピング・プログラム・モジュール110によって行われる。オペレーティング・システム・コンポーネントの例をいくつかあげると、Microsoft Corporationが提供するINTERNET EXPLORER(登録商標)、WINDOWS MEDIA (登録商標)プレーヤーのようなメディア・コンポーネント、およびWindows(登録商標)ファイアウォールのようなファイアウォール・コンポーネントが含まれる。他のコンポーネント例も可能である。
マッピング・プログラム・モジュール110は、依存性をコンポーネントにマッピングするようにプログラミングすることができる。これは、種々の技法を用いて遂行することができる。例の中には、リスト、表、データベース、またはその他の任意のデータ構造を用いて依存性のマッピングが行われることもある。図示する非限定的な例では、表を用いて依存性をマッピングする。用いることができる表の一例は、キーを値と関連付けるデータ構造を含むハッシュ表である。このハッシュ表は、可能な依存性のリストを含み、その依存性を満たす1つ以上のシステム・コンポーネントに依存性をマッピングする。他の構成も可能である。
構築モジュール112は、特定したオペレーティング・システム・コンポーネントを用いてオペレーティング・システム・イメージを構築するために用いられる。このプロセスの最終結果は、ソフトウェア・アプリケーション・モジュール104において依存性を満足するオペレーティング・システム・イメージ114である。カスタム化オペレーティング・システム・イメージ114は、POSデバイスのような、埋め込みデバイスに埋め込んで、所望の環境においてそのデバイスを動作させることができる。
図2は、オペレーティング・システム・イメージを埋め込みデバイスに構築するために用いられる統合開発システム200の一例を示す。このような統合開発システム例の一例に、VISUAL STUDIO(登録商標)オペレーティング・システムがある。他のツールも用いることができる。例えば、他の例では、開発システム200は、以下で更に説明するように、依存性を特定し、その依存性をシステム・コンポーネントにマッピングし、および/またはカスタム化オペレーティング・システム・イメージを作成するために用いられる単体ツールである。
統合開発システム200は、オペレーティング・システム・ベース・モジュール102、ソフトウェア・アプリケーション・モジュール104、分析プログラム・モジュール106、コンポーネント・モジュール108、および構築モジュール112を含む。また、統合開発システム200の一例は、ユーザー・インターフェース・モジュール210、依存性処理モジュール212、構築モジュール214、ならびに検査および設計モジュール216も含む。
ユーザー・インターフェース210の一例では、概略的に、ユーザーに依存性の特定を制御させ、依存性をシステム・コンポーネントにマッピングし、カスタム化オペレーティング・システム・イメージを作成する。例えば、ユーザー・インターフェース・モジュール210は、ユーザーに、ソフトウェア・アプリケーション・モジュール104にフォーマットを選択させる。二進ファイル、ソース・コード・ファイル、およびインストール・ファイルを含む様々なファイルから1つを選択することができる。また、ユーザー・インターフェース・モジュール212の一例は、オペレーティング・システム・ベース・モジュール102に追加することができるコンポーネントの表示にも備えている。
依存性処理モジュール212の一例は、ソフトウェア・アプリケーションについての1つ以上の分析プログラムを実行し、このソフトウェア・アプリケーションにおけるオペレーティング・システム依存性を特定し、これらの依存性を解決するオペレーティング・システム・コンポーネントにその依存性をマッピングする。実施形態によっては、依存性および処理モジュール212は、特定したオペレーティング・システム・コンポーネントをオペレーティング・システム・コンポーネントのリストに自動的に追加し、これらのコンポーネントに基づいて新たなオペレーティング・システム・イメージを構築することもある。別の実施形態では、ユーザー・インターフェース・モジュール210を通じて、特定されたコンポーネントをユーザーに提示し、追加すべきコンポーネントをユーザーが選択する。
一旦ユーザーがオペレーティング・システム・ベース・モジュール102に追加するコンポーネントを選択したなら、構築モジュール214を用いてオペレーティング・システム・イメージを構築する。構築されたオペレーティング・システム・イメージは、次に、検査および設計モジュール216によって検査されて、オペレーティング・システムの中にいずれかの追加の依存性が存在するか否か判定する。検査および設計モジュール216は、構築モジュール112によって作成されたオペレーティング・システム・イメージを分析する分析プログラムを含む。オペレーティング・システム・イメージはソフトウェアおよびハードウェア双方の依存性を含む可能性があるので、検査および設計モジュール216は、依存性処理モジュール212が見逃した虞れがある新たな依存性を発見するようにプログラミングすることができる。
検査および設計モジュール216の一例は、新たなオペレーティング・システム依存性であればいずれでも特定し、これらの依存性を解決することができるオペレーティング・システム・コンポーネントも特定する。実施形態によっては、検査および設計モジュール216は、自動的に、特定したオペレーティング・システム・コンポーネントをオペレーティング・システム・コンポーネントのリストに追加し、これらのコンポーネントに基づいて新たなオペレーティング・システム・イメージを構築することもある。別の実施形態では、特定されたコンポーネントは、ユーザー・インターフェース・モジュール210を通じてユーザーに提示され、追加すべきコンポーネントをユーザーが選択する。
ユーザー・インターフェース・モジュール210によって発生されたユーザー・インターフェース300の一例を図3に示す。ユーザー・インターフェース300の一例は、ソフトウェア・アプリケーションのフォーマットを選択するためのセクション302と、コンポーネントを選択するためのセクション304とを含む。
セクション302の一例は、ソフトウェア・アプリケーションのフォーマットを選択するためのチェックボックスを含む。含まれるのは、二進ファイル・フォーマットのチェックボックス306、ソース・ファイル・フォーマットのチェックボックス308、およびインストール・ファイル・フォーマットのチェックボックス310である。
コンポーネント・セクション304の一例は、依存性を満足するシステム・コンポーネントを選択するためのチェックボックスを含む。図示の例では、コンポーネント・セクション304は、例えば、Microsoft Corporationによって提供されているWINDOWS(登録商標)XPオペレーティング・システム・インターフェースのような、企業固有のユーザー・インターフェース312、メディア・プレーヤーのチェックボックス314、ウェブ・ブラウザーのチェックボックス316、ファイアウォールのチェックボックス318、そしてMicrosoft Corporationによって提供されるthe.Netフレームワークのような、ネットワーク・フレームワークのチェックボックス320といったコンポーネントをリストに纏める。他のコンポーネントも可能である。
実施形態例では、セクション304における1つ以上のチェックボックスは、統合開発システム200によって自動的にチェックされ、依存性処理モジュール212によって特定されたコンポーネントを選択し、ソフトウェア・アプリケーションにおける依存性を解決することができる。自動チェック処理に加えて、ユーザーは、セクション304におけるチェックボックスの1つ以上を手作業でチェックすることによって、追加のコンポーネントを選択することもできる。
実施形態例では、システム100、200、およびユーザー・インターフェース300は1つ以上のコンピュータ・システムに実装される。実施形態例では、システム100、200は処理ユニットおよびコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、揮発性(RAMのような)、不揮発性(ROM、フラッシュ・メモリ等のような)、またはその何らかの組み合わせを含むことができる。システム100、200は、磁気あるいは光ディスクまたはテープのような、大容量ストレージ(リムーバブルおよび/または非リムーバブル)を含むことができる。オペレーティング・システムおよび1つ以上のアプリケーション・プログラムは、システム100、200に格納することができる。他の構成も可能である。
図4は、統合開発システムを用いて、埋め込みデバイスのためのオペレーティング・システム・イメージを作成する方法400の一例を示すフロー・チャートである。前述のように、統合開発システムは、通常、特定の埋め込みオペレーティング・システム・プラットフォームにオペレーティング・システム・イメージを構築するために用いられる。
最初に、方法400の動作402において、オペレーティング・システム・プラットフォームに追加するために、ソフトウェア・アプリケーションを特定する。これは、例えば、統合開発システム例においてプロジェクト・ファイルを開き、ソフトウェア・アプリケーションを選択することによって行うことができる。動作404において、このソフトウェア・アプリケーションのファイル・タイプを、例えば、二進ファイル、ソース・コード・ファイル、またはインストール・ファイルのように選択する。この選択は、統合開発システムのユーザー・インターフェースにおいて、該当するファイル・タイプに対応するチェックボックスを選択することによって行うことができる。例えば、統合開発システムにおいてプロジェクト・ファイルを用いることによるというような、代わりの選択方法も可能である。
別の例では、ユーザーは他のパラメータも選択することができる。例えば、実施形態の中には、統合開発システムが、WINDOWS(登録商標)埋め込みCEまたはXP埋め込みオペレーティング・システムのような、複数のタイプのオペレーティング・システムを扱うようにプログラミングされていることもある。このような例では、ユーザーは、ソフトウェア・アプリケーションの分析に先だって、どのオペレーティング・システムが望ましいのか選択することができる。
動作406において、統合開発システムに含まれる1つ以上の分析プログラムをソフトウェア・アプリケーションに対して実行し、このソフトウェア・アプリケーションに何らかのオペレーティング・システム依存性があるか否か判定する。動作408において、特定した依存性を、当該依存性を解決するために用いられるオペレーティング・システム・コンポーネントにマッピングする。
次に、動作410において、特定されたオペレーティング・システム・コンポーネントは、統合開発システムのユーザー・インターフェース上に表示される。例えば、ユーザー・インターフェースにおいて当該コンポーネントのチェックボックスをチェックすることによって、統合開発システムは、特定されたコンポーネントを表示することができる。動作412において、ユーザーは、特定されたコンポーネントを受け入れること、コンポーネントの選択を止めること、または手作業で追加のコンポーネントを選択することを選ぶ。一旦ユーザーが選択に満足したなら、動作414においてソフトウェア・アプリケーションがオペレーティング・システム・ベースに追加され、動作416においてオペレーティング・システム・イメージが構築される。
動作418において、構築したイメージを検査して、未だ別の依存性が存在するか否か判定する。例えば、統合開発システムは、オペレーティング・システム・ハードウェアの観点から、構築されたオペレーティング・システム・イメージを検査する追加の検査および分析プログラムを含むことができる。検査および分析プログラムは、オペレーティング・システム・イメージを更に調節するために追加するとよい追加のコンポーネントを特定することができる。動作420において、これら追加のコンポーネントをオペレーティング・システム・イメージに追加することができる。これらのコンポーネントの追加は、統合開発システムによって自動的に行うことができ、またはユーザーによって手作業で追加することもできる。最後に、動作422において、追加のコンポーネントが追加された場合、統合開発システムにおいてオペレーティング・システム・イメージを再構築する。
以上、主題について構造的特徴および/または方法論的行為に特定的な文言で説明したが、添付した特許請求の範囲において定められている主題は、前述した特定的な特徴や行為には必ずしも限定されないことは言うまでもない。むしろ、先に説明した特定的な特徴や行為は、特許請求の範囲を実施する形態例として開示したのである。