(57)【要約】本発明は、コンピュータデバイスと関連付けられる少なくとも１つのオリジナルコードと、埋め込みシステムと関連付けられる少なくとも１つの埋め込みコードと、前記埋め込みシステムと関連付けられる少なくとも１台のプロセッサとを備える埋め込みシステムを管理する方法に関する。本発明は、オリジナルコードによって呼び出されるが、前記コードの中では実現されないターゲット機能を特定するために該オリジナルコードを分析すること、前記実現されない関数のそれぞれについて対応する関数識別子を決定すること、埋め込みコードによって実現される少なくとも１つのスイッチング関数ＰＬＵＧで前記実現されない関数の呼び出しを置換することからなる少なくとも１つの自律ソフトウェアコンポーネントの作成を含む第１のステップを備えることを特徴としている。本発明は、前記埋め込みシステムでのコンポーネントの実行を含む第２のステップを備え、前述のスイッチング関数ＰＬＵＧが、関数識別子に対応する実現されないターゲット関数のアドレスに向かうプロセッサの経路再選択を制御することをさらに特徴としている。【特許請求の範囲】
【請求項１】
埋め込みシステムを管理する方法であって、
コンピュータ装置の項目と関連付けられた少なくとも１つのオリジナルコードと、
前記埋め込みシステムと関連付けられた少なくとも１つの埋め込みコードと、
前記埋め込みシステムと関連付けられた少なくとも１台のプロセッサと、
を備え、
該方法が、
前記オリジナルコードによって呼び出されるとともに、前記オリジナルコードの中で実現されないターゲット関数を識別するために前記オリジナルコードを分析すること、
実現されない前記関数のそれぞれについて、対応する関数識別子を決定すること、
実現されない前記関数の呼び出しを、前記埋め込みコードで実現される少なくとも１つのＰＬＵＧスイッチング関数の呼び出しで置換すること、
からなる少なくとも１つの内蔵ソフトウェアコンポーネントの作成と、
前記埋め込みシステム上での前記コンポーネントの実行であって、前記ＰＬＵＧスイッチング関数が前記関数識別子に対応する実現されない前記ターゲット関数のアドレスへの前記プロセッサのリダイレクトを制御する実行と、
からなるステップを含むことを特徴とする方法。
【請求項２】
請求項１に記載の埋め込みシステムを管理する方法であって、さらに、
内蔵ソフトウェアコンポーネントの作成時に、
コンポーネント内で定められるオリジナル関数のアドレスをパラメータとして有するターゲット関数呼び出しを識別するために前記オリジナルコードを分析するステップと、
特殊な関数の呼び出しで、前記コールバックパラメータを置換するステップと、
前記関連付けられた特殊な関数を自動的に生成するステップであって、関数は、前記オリジナル関数の識別子を供給し、前記埋め込みコードによって実現される少なくとも１つのＰＬＵＧスイッチング関数を呼び出す、生成するステップと、
を備える方法。
【請求項３】
請求項１に記載の埋め込みシステムを管理する方法であって、さらに、
内蔵ソフトウェアコンポーネントの作成時に、
オリジナルコードでは定められていない、前記コンポーネントが実行できるために必要とする情報を識別するために前記オリジナルコードを分析するステップと、
この欠けている情報のリストを、それが生成されるときに前記コンポーネントに追加するステップと、
前記コンポーネントの実行時に、前記埋め込みシステムで前記コンポーネントを実行可能にするために、初期に欠けていた情報の１つまたは複数の項目がいったんシステムによって供給される、前記コンポーネントのコードを修正するステップと、
を備える方法。
【請求項４】
請求項１に記載の埋め込みシステムを管理する方法において、
前記コンポーネントが前記埋め込みシステムに常駐することを特徴とする、方法。
【請求項５】
請求項１に記載の埋め込みシステムを管理する方法において、
前記コンポーネントが前記埋め込みコードによってダウンロードされることを特徴とする、方法。
【請求項６】
請求項１に記載の埋め込みシステムを管理する方法において、
前記コンポーネントが、それが作成されるときに暗号化された形式であることを特徴とする、方法。
【請求項７】
請求項６に記載の埋め込みシステムを管理する方法であって、さらに、
前記コンポーネントを復号化するステップを備えることを特徴とする方法。
【請求項８】
請求項１に記載の埋め込みシステムを管理する方法において、
前記コンポーネントが同じ機能を履行する別のコンポーネントで置換される、方法。
【請求項９】
請求項１に記載の埋め込みシステムを管理する方法において、
前記コンポーネントが、実行のために、それが当初位置していたメモリ領域とは異なる領域であるいわゆる実行メモリ領域を含む埋め込みシステムのメモリ領域に入れられることを特徴とする、方法。
【請求項１０】
請求項９に記載の埋め込みシステムを管理する方法において、
前記実行メモリ領域が前記プロセッサによりアクセス可能であり、前記実行メモリ領域が、実行速度、消費またはアクセス可能性に関する特定の特性、あるいはアクセス権に関する特定の特性を所有することを特徴とする、方法。
【請求項１１】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ＰＬＵＧスイッチング関数が関連パラメータを用いて処理される多様な呼び出しを表示する関数を実現することを特徴とする、方法。
【請求項１２】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ＰＬＵＧスイッチング関数が関連パラメータを用いて処理される多様な呼び出しを記録する関数を実現することを特徴とする、方法。
【請求項１３】
請求項１２に記載の埋め込みシステムを管理する方法において、
前記呼び出しの前記記録が前記呼び出しのそれぞれに少なくとも１つの追加の情報の項目を備えることを特徴とする、方法。
【請求項１４】
請求項１３に記載の埋め込みシステムを管理する方法において、
前記追加の情報が時間情報であることを特徴とする、方法。
【請求項１５】
請求項１３に記載の埋め込みシステムを管理する方法において、
前記追加の情報が実行コンテキスト情報であることを特徴とする、方法。
【請求項１６】
請求項１３に記載の埋め込みシステムを管理する方法において、
前記追加の情報がメモリ使用情報であることを特徴とする、方法。
【請求項１７】
請求項１２に記載の埋め込みシステムを管理する方法において、
前記コンポーネントに関する呼び出しの前記記録が、内蔵式で前記コンポーネントをシミュレーションするために使用されることを特徴とする、方法。
【請求項１８】
請求項１２に記載の埋め込みシステムを管理する方法において、
前記コンポーネントに関する呼び出しの前記記録が埋め込みコードの中のエラーの検出に使用されることを特徴とする、方法。
【請求項１９】
請求項１８に記載の埋め込みシステムを管理する方法において、
前記エラー検出記録が、いったんエラーが検出されるとエラーを分析することに関与する別のコンピュータリソースに送信されることを特徴とする、方法。
【請求項２０】
請求項１に記載の埋め込みシステムを管理する方法において、
実現されないターゲット関数の識別子がＰＬＵＧスイッチング関数のパラメータを構成することを特徴とする、方法。
【請求項２１】
請求項１に記載の埋め込みシステムを管理する方法であって、
実現されないターゲット関数パラメータをコピーする動作を備えないことを特徴とする方法。
【請求項２２】
請求項１に記載の埋め込みシステムを管理する方法において、
実現されない関数の識別子が、ＰＬＵＳスイッチング関数の呼び出しの前にプロセッサのスタックに記憶され、記憶された識別子が次に前記識別子に対応する関数への前記リダイレクトの前記制御を実現するために前記スイッチング関数によって使用されることを特徴とする、方法。
【請求項２３】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ＰＬＵＧスイッチング関数の呼び出しの前に、前記実現されない関数の前記識別子が前記プロセッサのレジスタに記憶され、記憶された識別子が次に、前記識別子に対応する前記関数へのリダイレクトの前記制御を実現するために、前記スイッチング関数により使用されることを特徴とする、方法。
【請求項２４】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ターゲット関数が前記埋め込み装置の別のプロセッサで実現されることを特徴とする、方法。
【請求項２５】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ターゲット関数が前記埋め込みシステム以外の別のコンピュータリソースで実現されることを特徴とする方法。
【請求項２６】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ＰＬＵＧスイッチング関数が、呼び出された前記ターゲット関数と関連付けられた特殊なアクションの集合を実行し、ターゲット関数によるすべてのアクションが以前に前記埋め込みシステムで定められ、記憶されていることを特徴とする、方法。
【請求項２７】
請求項２６に記載の埋め込みシステムを管理する方法において、
特殊なアクションの前記集合がプロセッサの１つのコンテキストから別のコンテキストまでの通過を備えることを特徴とする、方法。
【請求項２８】
請求項２６に記載の埋め込みシステムを管理する方法において、
特殊なアクションの前記集合が別のコンポーネントのインストール及び実行を含むことを特徴とする、方法。
【請求項２９】
請求項２６に記載の埋め込みシステムを管理する方法において、
特殊なアクションの前記集合が、前記ターゲット関数の前記呼び出しの１つまたは複数のコンポーネントの通知を含むことを特徴とする、方法。
【請求項３０】
請求項２６に記載の埋め込みシステムを管理する方法において、
特殊なアクションの前記集合が、前記埋め込みシステムのユーザの通知を含むことを特徴とする、方法。
【請求項３１】
請求項２６に記載の埋め込みシステムを管理する方法において、
特殊なアクションの前記集合が、別のコンピュータリソースの通知を含むことを特徴とする、方法。
【請求項３２】
請求項２６に記載の埋め込みシステムを管理する方法において、
特殊なアクションの前記集合が、動的に修正可能であることを特徴とする、方法。
【請求項３３】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ＰＬＵＧスイッチング関数が、また、前記ターゲット関数が使用できない関数識別子に対応する場合に、特殊なアクションを生成するステップを実行することを特徴とする、方法。
【請求項３４】
請求項３３に記載の埋め込みシステムを管理する方法において、
前記特殊なアクションが、前記使用できない関数の前記識別子の属性により決定されることを特徴とする、方法。
【請求項３５】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ＰＬＵＧスイッチング関数が、また、前記ターゲット関数を呼び出すために前記コンポーネントの権利を検証するステップを実行することを特徴とする、方法。
【請求項３６】
請求項３５に記載の埋め込みシステムを管理する方法において、
前記検証が、どのコンポーネントがどの関数を呼び出すことができるのかを示すアクセス権テーブルから実行されることを特徴とする、方法。
【請求項３７】
請求項３６に記載の埋め込みシステムを管理する方法において、
前記アクセス権テーブルが最終ユーザによって修正可能であることを特徴とする、方法。
【請求項３８】
請求項３６に記載の埋め込みシステムを管理する方法において、
前記アクセス権テーブルが別のコンピュータリソースによって遠隔に修正可能であることを特徴とする、方法。
【請求項３９】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ＰＬＵＧスイッチング関数が、また、オリジナル関数識別子に対応する前記ターゲット関数が使用できない場合には、同等な関数を検索し、前記ターゲット関数のフォーマットと異なるフォーマットであるが同じ機能を実行し、前記同等な関数を実行するアクションを制御することを特徴とする、方法。
【請求項４０】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ＰＬＵＧスイッチング関数が、また、識別子の関数に対応する前記関数が使用できない場合には、前記使用できない関数に対応するコンピュータリソースの位置を決め、前記検索から生じる前記関数を実行するアクションを制御することを特徴とする、方法。
【請求項４１】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ターゲット関数識別子が、前記ターゲット関数を実現する前記ソフトウェアコンポーネントに対応する第１の情報の項目と、前記コンポーネントの中の前記ターゲット関数の数に対応する第２の情報の項目とを備えることを特徴とする、方法。
【請求項４２】
請求項１に記載の埋め込みシステムを管理する方法において、
前記ＰＬＵＧスイッチング関数が、前記ターゲット関数識別子と前記ターゲット関数のアドレスとの間の対応の少なくとも１つのテーブルを使用して実行されることを特徴とする、方法。
【請求項４３】
請求項４１および４２に記載の埋め込みシステムを管理する方法において、
前記対応のテーブルが、前記ソフトウェアコンポーネントに対応する前記情報と、前記ターゲット関数を実現する前記コンポーネントとの間の第１の対応のテーブル、及び前記コンポーネントのそれぞれについて、前記関数の前記数と、前記対応するコンポーネントでの前記ターゲット関数の前記アドレスとの間の第２の対応のテーブルに再分割されることを特徴とする、方法。
【請求項４４】
請求項４３に記載の埋め込みシステムを管理する方法において、
前記第２のテーブルが、コンポーネント作成時に生成されることを特徴とする、方法。
【請求項４５】
請求項４３に記載の埋め込みシステムを管理する方法において、
前記第２のテーブルが読取専用メモリに記録されることを特徴とする、方法。
【請求項４６】
請求項４３に記載の埋め込みシステムを管理する方法において、
前記第１のテーブルがランダムアクセスメモリに記録されることを特徴とする、方法。
【請求項４７】
請求項１に記載の埋め込みシステムを管理する方法において、
前記コンポーネントのインストールが事前の許可に依存することを特徴とする、方法。
【請求項４８】
請求項１に記載の埋め込みシステムを管理する方法において、
前記コンポーネントの実行が事前の許可に依存することを特徴とする、方法。
【請求項４９】
請求項４８または４７に記載の埋め込みシステムを管理する方法において、
前記事前の許可が、前記埋め込みシステムによって保持されるキー（システムキー）と、実行されるコンポーネントにより保持されるキー（コンポーネントキー）との間の一致に依存し、前記システムキーが前記埋め込みシステムを一意に指定する情報から計算可能であることを特徴とする、方法。
【請求項５０】
請求項４８または４７に記載の埋め込みシステムを管理する方法において、
前記コンポーネントが前記埋め込みシステムによって実行されなければならないときに、別のコンピュータリソースに通知が供給されること、及びこの別のコンピュータリソースが、この通知に続いて、前記コンポーネントを実行する許可または拒絶を前記埋め込みシステムに送信することを特徴とする、方法。
【請求項５１】
請求項５０に記載の埋め込みシステムを管理する方法において、
前記別のコンピュータリソースが、前記通知に続いて、前記コンポーネントを実行する許可または拒絶を前記埋め込みシステムに送信することを特徴とする、方法。
【請求項５２】
請求項４８または４７に記載の埋め込みシステムを管理する方法において、
前記別のコンピュータリソースにより送信される前記許可が、埋め込みシステム上の前記コンポーネントの実行を許可するために、前記コンポーネントキーと前記システムキーとに結合されるキー（外部キー）を含むことを特徴とする、方法。
【請求項５３】
請求項４８または４７に記載の埋め込みシステムを管理する方法において、
前記別のコンピュータリソースにより送信される前記許可が、前記別のコンピュータリソースでの金銭上の取引きの正確な実行に関連付けられていることを特徴とする、方法。
【請求項５４】
請求項５２に記載の埋め込みシステムを管理する方法において、
前記外部キーが、金銭上の取引きに続き、その商業的な配備の前に埋め込みシステム内に保存されることを特徴とする、方法。
【請求項５５】
請求項５２に記載の埋め込みシステムを管理する方法において、
前記外部キーが、金銭上の取引きに続いて、埋め込みシステムに保存されることを特徴とする、方法。
【請求項５６】
請求項１に記載の埋め込みシステムを管理する方法において、
前記コンポーネントがサービス品質情報のうちの少なくとも１つの項目を含むことを特徴とする、方法。
【請求項５７】
請求項５６に記載の埋め込みシステムを管理する方法において、
前記サービス品質情報が、前記コンポーネントの実行前にリソースを割り当てるために前記埋め込みシステムによって使用されることを特徴とする、方法。
【請求項５８】
請求項５６に記載の埋め込みシステムを管理する方法において、
前記サービス品質情報が、前記コンポーネントがそれが機能するためのランダムアクセスメモリ要件であることを特徴とする、方法。
【請求項５９】
請求項５８に記載の埋め込みシステムを管理する方法において、
前記コンポーネントの前記ランダムアクセスメモリ要件が、それが機能するための最小要件情報、平均要件情報、及び最適要件情報を含むことを特徴とする、方法。
【請求項６０】
請求項５６に記載の埋め込みシステムを管理する方法において、
前記サービス品質情報が、前記コンポーネントがそれが機能するために必要とする別のコンポーネント（関連コンポーネント）のリストであることを特徴とする、方法。
【請求項６１】
請求項６０に記載の埋め込みシステムを管理する方法において、
関連コンポーネントの前記リストが前記関連コンポーネントによって必要とされるバージョン番号情報を含むことを特徴とする、方法。
【請求項６２】
請求項６１に記載の埋め込みシステムを管理する方法において、
前記埋め込みシステムが、前記関連コンポーネントが前記コンポーネントによって示される前記バージョン番号に応答しない場合に、前記コンポーネントの前記実行に着手しないことを特徴とする、方法。
【請求項６３】
請求項６１に記載の埋め込みシステムを管理する方法において、
前記埋め込みシステムが、前記関連コンポーネントが前記コンポーネントにより示されるバージョン番号より大きいバージョン番号に応答しない場合に、前記コンポーネントの前記実行に着手しないことを特徴とする、方法。
【請求項６４】
請求項５６に記載の埋め込みシステムを管理する方法において、
前記サービス品質情報が、前記コンポーネントの処理能力要件であることを特徴とする、方法。
【請求項６５】
請求項６４に記載の埋め込みシステムを管理する方法において、
前記埋め込みシステムが、前記処理能力要件に応じて前記埋め込みシステムのプロセッサの周波数を修正することを特徴とする、方法。
【請求項６６】
請求項６４に記載の埋め込みシステムを管理する方法において、
前記埋め込みシステムが、前記使用可能なリソースと前記多様なコンピュータリソースの処理可用性に従って前記コンポーネントを前記埋め込みシステムのどのコンピュータリソースで実行するのかを決定することを特徴とする、方法。
【請求項６７】
請求項１に記載の埋め込みシステムを管理する方法において、
前記埋め込みシステムの電力消費を最小限に抑えるために、前記埋め込みシステムが前記コンポーネントをそのコンピュータリソースの一方または他方で実行させることを決定することを特徴とする、方法。
【請求項６８】
請求項５６に記載の埋め込みシステムを管理する方法において、
前記埋め込みシステムがサービス品質情報のうちの少なくとも１つの項目で前記コンポーネントにより表される要件を保証できない場合に、前記埋め込みシステムが前記コンポーネントの実行を拒絶することを特徴とする、方法。
【請求項６９】
請求項１に記載の埋め込みシステムを管理する方法において、
前記コンポーネントが、前記コンポーネントにより実行される機能を指定するための少なくとも１つの情報の項目を含むことを特徴とする、方法。
【請求項７０】
請求項６９に記載の埋め込みシステムを管理する方法において、
前記情報が前記コンポーネントの名前であることを特徴とする、方法。
【請求項７１】
請求項６９に記載の埋め込みシステムを管理する方法において、
前記情報が前記コンポーネントのバージョン番号であることを特徴とする、方法。
【請求項７２】
請求項６９に記載の埋め込みシステムを管理する方法において、
前記情報が、前記コンポーネントにより実現される関数のリストであることを特徴とする、方法。
【請求項７３】
請求項６９に記載の埋め込みシステムを管理する方法において、
前記埋め込みシステムが、以前に要求を行った別のコンピュータリソースに、前記埋め込みシステム上で利用可能なコンポーネントのリスト、及び関連コンポーネント情報を供給できることを特徴とする、方法。
【請求項７４】
前記埋め込みシステムにより実行される完全なコードが請求項１に記載の方法に従って得られるコンポーネントに分割されることを特徴とする埋め込みシステムを管理する方法。
【請求項７５】
請求項７４に記載の埋め込みシステムを管理する方法において、
初期システムのコンポーネントへの分割が、前記コンポーネントにより実現されないターゲット関数の数を最小限に抑えるために行われることを特徴とする、方法。
【請求項７６】
請求項７５に記載の埋め込みシステムを管理する方法において、
初期システムのコンポーネントへの分割が、その後に修正される確率で前記コンポーネントのサイズを相関付けることにより行われることを特徴とする、方法。
【請求項７７】
少なくとも１つのエンジンを備える埋め込みシステムであって、
前記エンジンが請求項１に記載の方法のステップを実行することを特徴とするシステム。
【請求項７８】
少なくとも１つのエンジンを備える埋め込みシステムをシミュレーションする非埋め込みシステムであって、
前記エンジンが請求項１に記載の方法のステップを実行することを特徴とする、システム。
【請求項７９】
埋め込みエンジンであって、
請求項１に記載の方法のステップを実行することを特徴とする埋め込みエンジン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、埋め込みシステム、特に携帯電話におけるソフトウェアコンポーネントの分野に関する。
本発明は、特にコンポーネント相互の呼び出し及び会話を含む、コンポーネントを管理する方法に関する。
【背景技術】
【０００２】
携帯電話、カメラまたは自動車用のナビゲーションシステムなどの埋め込みシステムに常駐するソフトウェアは、パーソナルコンピュータ（ＰＣ）型の器具において達成されたレベルに達するために、過去１０年の間に信じられないほど複雑化してきた。業界、特に携帯電話の業界は、新しい器具を迅速に開発し、非常に多数の機能を無数の非常に多様なプラットホームに統合するという課題に直面している。このように複雑化が進むことと関連して、埋め込みシステムは今日、柔軟性、（ダウンロードを介して、または付属品またはメモリカードの追加によって）開放性、コスト、開発及びロバストネスまたはセキュリティの速度も同時に組み合わせた仕様を満たさなければならない。これらの制約は特にこのようなシステムにおけるソフトウェアに関して見受けられる。
【０００３】
これらの制約という観点からは、業界がソフトウェアに関して直面している課題が、本質的には（このようなもの、及び多かれ少なかれ実現が複雑である既定の機能を有するこのようなソフトウェアの）開発の問題に関連しているのではなく、むしろ１０年間のハードウェア業界に当てはまるように、（多様性のある原点の数個のソフトウェアの）統合と妥当性検査の問題に関連していることは明らかである。本発明の目的はシステムレベルでは現在通常の技術に同等な性能を維持しつつ、それらを独立したコンポーネントに変換することによってソフトウェアエンドを隔離することを可能にする技術によって複雑な埋め込まれたシステムを統合し、妥当性検査をするタスクを容易にすることである。そしてこれは、いったん器具が市場にされると、追加または補正にこのように形成されるシステムを広げる。
【０００４】
従来の技術に従って、埋め込みソフトウェアは従来ソフトウェア層の形で開発され、層は、最も開発されたシステムの場合には、おそらくプロセッサに、またはシステムの特定のリソースに対するアクセスの特権を有する。層内または層間の通信は、手続き式に（関数呼び出し）で発生する。ソフトウェアの最後の画像に関しては、これは、３つのコードが１、２、及び３と参照され、最終的な画像がいったんメモリに入れられたコード１、２、及び３のリンク（［リンケージ］）の編集後に得られる図１に描かれているように、プロセッサによる実行のために準備が完了した、目的ごとの編纂または全体の「リンケージ」の段階の後に生じる。
【０００５】
この種の開発は資源の利用と速度という点で非常に効果的なシステムを作成するという優位点を有する。他方、それらは一定数の問題を結集させ、問題はシステムが複雑性を増すにつれて管理するのがさらに困難になる。試験、別個のパーツごとの開発、及び別のプラットホームへの移動、更新、安定性、柔軟性等の問題点を特に引用できる。
【０００６】
また、従来の技術に従って、これらの問題を軽減するために、埋め込み技術の世界でのプレーヤの大多数は、はるかに老朽化したプラットホームで（特にサーバに関して）はるかに大規模且つはるかに複雑であるシステムについて開発された、いわゆる「コンポーネント」手法に近い手法を採用している。これは、３つのコードが１、２及び３と参照され、メールボックス７がルータ６を使用して多様なコードによって送信されるメッセージ５を受信し、ＯＳによって管理される図２に示されるようにオペレーティングシステム（以後ＯＳが「オペレーティングシステム」を表す）によるメッセージの交換で可能であれば手続き呼び出しを置換することによって達成された。これにより、ソフトウェアエンティティ間の交換をはるかにうまく、制御された方法で分離することが可能になる。他方、（開発及び資源の要求という点での）このような機構の負担のため、この機構はただ部分的に使用されるにすぎず、手続き呼び出しはこのようなシステムでの共通の慣行のままとなり、このようにして前記に引用された不利な点の大多数は続くので該手法の優位点を制限する。
【０００７】
従来の技術は、埋め込みコンポーネントの分野では、特許出願ＰＣＴ  ＷＯ第０３／００９１３７号によって、埋め込みシステムのためにソフトウェアコンポーネントを統合するための方法も知っている。モジュールは、モジュールが実際には実行を開始する前にそれが必要とする別のすべてのモジュールを有することを確実にする、「マネージャ」に基づいてその中で単独でインスタンス化される。
【０００８】
しかしながら、本願は、資源をよりよく活用するためのコンポーネント間の効果的な通信には言及しない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、これらのエンティティが完全に独立したソフトウェアコンポーネントとして活動できるようにする一方で、ソフトウェアエンティティ間で手続き呼び出しとまったく同じくらい効率的に通信する方法をセットアップすることによって従来の技術の欠点を矯正することを目指す。
【課題を解決するための手段】
【００１０】
これを実行するために、本発明は前述された種類であり、コンピュータ装置と関連付けられる少なくとも１つのオリジナルコードと、前記埋め込みシステムと関連付けられる少なくとも１つの埋め込みコードと、前記埋め込みシステムと関連付けられる少なくとも１台のプロセッサと、を備え、埋め込みシステムを管理する方法に関するという点において、それが最も幅広く受け入れられているという点で注目に値し、本発明は、前記オリジナルコードにより呼び出されるが、前記オリジナルコードで実現されないターゲット関数を特定するために前記オリジナルコードを分析すること、実現されない前記関数のそれぞれについて、対応する関数識別子を決定すること、前記埋め込みコードによって実現される少なくとも１つのＰＬＵＧスイッチング関数の呼び出しで、実現されない前記関数の呼び出しを置き換えることからなる少なくとも１つの内蔵ソフトウェアコンポーネントの作成と、埋め込みシステム上での前記コンポーネントの実行であって、前記ＰＬＵＧスイッチング関数が前記関数識別子に対応する実現されないターゲット関数のアドレスへのプロセッサのリダイレクトを制御と、からなるステップを備えることを特徴とする。
【００１１】
好ましくは、本発明は、さらに、内蔵ソフトウェアコンポーネントの作成時に、コンポーネント内で定められるオリジナル関数のアドレスをそのパラメータとして有する、呼び出されるターゲット関数を特定するために前記オリジナルコードを分析するステップと、特定の関数の呼び出しで、前記コールバックパラメータを置換するステップと、前記の関連付けられた特殊な関数を自動的に生成するステップであって、関数は、前記のオリジナル関数の識別子を供給し、前記埋め込みコードによって実現される少なくとも１つのＰＬＵＧスイッチング関数を呼び出す、生成するステップと、を備える。
【００１２】
好ましくは、本発明は、さらに、内蔵ソフトウェアコンポーネントの作成時に、オリジナルコードでは定められていない、前記コンポーネントが実行できるために必要とする情報を識別するために前記オリジナルコードを分析するステップと、この欠けている情報のリストを、それが生成されるときに前記コンポーネントに追加するステップと、前記コンポーネントの実行時に、前記埋め込みシステムで前記コンポーネントを実行可能にするために、初期に欠けていた情報の１つまたは複数の項目がいったんシステムによって供給される、前記コンポーネントのコードを修正するステップと、を備える。
【００１３】
有利なことに、コンポーネントは前記埋め込みシステムに常駐する。
好ましくは、前記コンポーネントは前記埋め込まれたコードによってダウンロードされる。
【００１４】
有利なことに、前記コンポーネントはその作成時点で暗号化された形式である。
この場合は、該方法は、前記コンポーネントを復号化するステップも含む。
有利なことに、前記コンポーネントは、同じ関数を履行する別のコンポーネントで置換される。
【００１５】
好ましくは、前記コンポーネントは、前記実行メモリ領域が初期に位置付けられたメモリ領域とは異なる埋め込みシステムのメモリ領域に実行のために入れられる。
有利なことに、前記実行メモリ領域は前記プロセッサがアクセス可能であり、実行の速度、消費に関して特殊な特性と、アクセス権実行に関してアクセスしやすさを有する。
【００１６】
好ましくは、前記ＰＬＵＧスイッチング関数は、関連パラメータで処理される多様な呼び出しを表示する関数を実現する。
さらに、前記ＰＬＵＧスイッチング関数は、関連パラメータで処理される多様な呼び出しを記録する関数を実現する。
【００１７】
この場合、前記呼び出しの前記記録は、前記呼び出し（時間情報、実行コンテキスト、メモリ使用）のそれぞれについて情報の少なくとも１つの追加項目を備える。
好ましくは、コンポーネントに関する呼び出しの前記記録は、内蔵式で前記コンポーネントをシミュレーションするために使用される。
【００１８】
有利なことに、コンポーネントに関する呼び出しの前記記録は埋め込みコードのエラーの検出に使用される。
この場合には、前記エラー検出記録は、いったんエラーが検出されるとエラーを分析することに責任のある別のコンピュータリソースに送信される。
【００１９】
有利なことに、実現されなかったターゲット関数識別子が、ＰＬＵＧスイッチング関数のパラメータを構成する。
有利なことに、それは実現されなかったターゲット関数のパラメータをコピーする動作を備えない。
【００２０】
好ましくは、実現されない関数の識別子は、ＰＬＵＧスイッチング関数を呼び出す前にプロセッサのスタックに記憶され、記憶された識別子は、次に、該識別子に対応する関数へのリダイレクトのための要求を実現するために、前記スイッチング関数によって使用される。
【００２１】
好ましくは、実現されない関数の識別子は、ＰＬＵＧスイッチング関数の呼び出しの前にプロセッサのレジスタに記憶され、記憶される該識別子は、前記識別子に対応する前記関数へのリダイレクトのためのコマンドを実現するために前記スイッチング関数によって使用される。
【００２２】
ある実施形態によれば、ターゲット関数は埋め込み装置の別のプロセッサで実現される。
別の実施形態によれば、ターゲット関数は前記埋め込みシステム以外の別のコンピュータリソースで実現される。
【００２３】
好ましくは、前記ＰＬＵＧスイッチング関数は、呼び出されたターゲット関数と関連づけられた特殊なアクションの集合を形成し、ターゲット関数の全てのアクションは以前に定義され、埋め込みシステムで記憶されている。
【００２４】
例えば、特殊なアクションの前記集合は、プロセッサのあるコンテキストから別のコンテキストへの変化、別のコンポーネントのインストールと実行、ターゲット関数の呼び出しの１つまたは複数のコンポーネントの通知、埋め込みシステムのユーザの通知、別のコンピュータリソースの通知を含む。
【００２５】
好ましくは、アクションの前記集合は動的に修正可能である。
有利なことに、前記ＰＬＵＧスイッチング関数は、ターゲット関数が使用できない関数識別子に対応する場合に、特殊なアクションを生成するステップも実行する。
【００２６】
この場合には、前記特殊なアクションは、使用できない関数の識別子の属性によって決定される。
好ましくは、前記ＰＬＵＧスイッチング関数は、ターゲット関数を呼び出すためにコンポーネントの権利を検証するステップも実行する。
【００２７】
この場合には、前記検証は、どのコンポーネントがどの関数を呼び出すことができるのかを示すアクセス権テーブルから実行される。
有利なことに、前記アクセス権テーブルは最終ユーザによって修正可能である。
【００２８】
好ましくは、前記アクセス権テーブルは別のコンピュータリソースによって遠隔に修正可能である。
有利なことに、前記ＰＬＵＧスイッチング関数は、オリジナル関数識別子に対応する前記ターゲット関数が使用できない場合には、同等な関数を検索し、同じ機能であるが、ターゲット関数のフォーマットとは異なるフォーマットで実行し、及び前記同等な関数を実行するアクションも要求する。
【００２９】
好ましくは、ＰＬＵＧスイッチング関数は、関数識別子に対応する関数が使用できない場合には、前記使用できない関数に対応するコンピュータリソースの位置を突き止め、前記検索の結果生じる関数を実行するアクションも要求する。
【００３０】
さらに、前記ターゲット関数識別子は、前記ターゲット関数を実現するソフトウェアコンポーネントに対応する第１の情報の項目、及び前記コンポーネントの中のターゲット関数の数に対応する第２の情報の項目を含む。
【００３１】
優先的に、ＰＬＵＧスイッチング関数は、ターゲット関数識別子とターゲット関数のアドレスとの間の対応の少なくとも１つのテーブルを使用して実行される。
さらに、前記対応のテーブルは前記ターゲット関数を実現するソフトウェアコンポーネントに対応する情報の前記項目の第１の対応のテーブルと、前記コンポーネントのそれぞれについて、前記関数の数と対応するコンポーネントでの前記ターゲット関数のアドレスとの間の第２の対応のテーブルに再分割される。
【００３２】
好ましくは、前記第２のテーブルは、コンポーネントが作成されるときに生成される。
有利なことに、前記第２のテーブルは読取専用メモリに記録される。
好ましくは、前記第１のテーブルがランダムアクセスメモリに記録されることを特徴とする。
【００３３】
好ましくは、前記コンポーネントのインストールは事前の許可に依存する。
有利なことは、前記コンポーネントの実行は事前の許可に依存する。
さらに、事前の許可は埋め込みシステムによって保持されるキー（システムキー）と実行されるコンポーネントによって保持されるキー（コンポーネントキー）との間の一致に依存し、システムキーは前記埋め込みシステムを一意に指定する情報の項目から計算可能である。
【００３４】
さらに、コンポーネントが埋め込みシステムによって実行されているとき、通知は別のコンピュータソースに供給され、この別のコンピュータソースは、この通知に続いて、埋め込みシステムに、前記コンポーネントを実行する許可または拒絶を送信する。
【００３５】
好ましくは、前記別のコンピュータソースは、前記通知に続き、前記埋め込みシステムに、前記コンポーネントを実行する許可または拒絶を送信する。
さらに、別のコンピュータリソースによって送信される許可は、埋め込みシステムでの前記コンポーネントの実行を許可するためにコンポーネントキーとシステムキーとに結合されるキー（外部キー）を含む。
【００３６】
好ましくは、前記別のコンピュータソースによって送信される許可は別のコンピュータリソースでの金銭上の取引の正しい実行に関連付けられる。
有利なことに、前記外部キーは、金銭上の取引きに続き、その商業的な配備の前に埋め込みシステムに保存される。
【００３７】
好ましくは、前記外部キーは、金銭上の取引きに続き、埋め込みシステムで保存される。
さらに、前記コンポーネントは、サービス品質情報のうちの少なくとも１つの項目を含む。
【００３８】
好ましくは、前記サービス品質情報は、前記コンポーネントの実行の前にリソースを割り当てるために埋め込みシステムで使用される。
有利なことに、前記サービス品質情報は、最小要件情報、平均要件情報及びそれが機能するための最適要件情報、前記コンポーネントがそれが機能するために必要とする別のコンポーネント（関連コンポーネント）のリスト、及び関連コンポーネントによって必要とされるバージョン番号情報を含む、それが機能するためのコンポーネントのランダムアクセスメモリ要件である。
【００３９】
好ましくは、埋め込みシステムは、関連コンポーネントが前記コンポーネントによって示されるバージョン番号に応答しない場合、コンポーネントの実行に着手しない。
別の実施形態によれば、埋め込みシステムは、関連コンポーネントが前記コンポーネントによって示されるバージョン番号より大きいバージョン番号に応答しない場合にコンポーネントの実行に着手しない。
【００４０】
有利なことに、前記サービス品質情報は、前記コンポーネントの処理能力要件である。
さらに、埋め込みシステムは、前記処理能力要件に従って埋め込み機能のプロセッサの周波数を修正する。
【００４１】
さらに、前記埋め込みシステムは、多様なコンピュータリソースのうちの使用可能なリソースに従って埋め込みシステムのどのコンピュータリソースで前記コンポーネントを実行するのかを決定する。
【００４２】
好ましくは、前記埋め込みシステムは各コンピュータリソースの処理可用性に従ってそのコンピュータリソースの一方または他方でコンポーネントを実行させることを決定する。
【００４３】
有利なことに、前記埋め込みシステムは、埋め込みシステムの電力消費を最小限に抑えるためにそのコンピュータリソースの一方または他方でコンポーネントを実行させることを決定する。
【００４４】
１つの実施形態によれば、埋め込みシステムがサービス品質情報のうちの少なくとも１つの項目でコンポーネントによって表現される要件を保証できない場合、埋め込みシステムは前記コンポーネントの実行を拒絶する。
【００４５】
好ましくは、前記コンポーネントは、前記コンポーネントによって実行される機能を指定するための情報のうちの少なくとも１つの項目を含む（コンポーネントの名前、バージョン、該コンポーネントによって実現される関数のリスト等）。
【００４６】
さらに、埋め込みシステムは前記埋め込みシステムで使用可能なコンポーネントのリスト、及び事前に要求を行った別のコンピュータリソースと関連付けられるコンポーネント情報を供給できる。
【００４７】
好ましくは、前記埋め込みシステムにより実行されなければならない完全なコードは前記コンポーネントによって実現されないターゲット関数の数を最小限に抑えるためにコンポーネントに分解される。
【００４８】
さらに、初期のシステムのコンポーネントへの分解はコンポーネントのサイズを以後修正される確率と相関付けることによって行われる。
本発明は、前記方法のステップを実行するエンジンを備える点を特徴とし、少なくとも１つのエンジンを備える埋め込みシステムをシミュレーションする非埋め込みシステムにも関する。
【００４９】
本発明は、メモリに含まれるコンポーネントが前記方法に従って得られることを特徴とする少なくとも１つのエンジンを備える埋め込みシステムにも関する。
本発明は、添付図に関して本発明の実施形態の、純粋に説明によって以下に示される説明の助けを借りてさらによく理解されるであろう。
【発明を実施するための最良の形態】
【００５０】
図３に描かれている本発明に従って、３つのコード１、２及び３は図で参照される以下の要素によってまったく新しい様式で管理できる。
３４：コンポーネントの間の多様な通信（ＰＬＵＧ）の切り替えと制御を担当するエンティティ
３５：多様なコンポーネントに関する情報を含むデータベース
３６：多様なコンポーネントの活性化及び非活性化を担当するマネージャ
３７：ソフトウェアエンジンのＰＬＵＧにリダイレクトされる手続き呼び出し
この図に関して、本発明の基本的な原則は以下の通りである。
−（内蔵式でコンパイル可能な）標準的な初期コードは、この初期コードの外部のリソースの全ての使用が以下により置換されるように自動的に作り直される（前処理）。
−ＰＲＯＸＹまたはＰＬＵＧのどちらかと呼ばれる、コンポーネント単位のコードの単一のエントリへのプロセッサのリダイレクト
この単一のエンティティの値は、コンポーネントが埋め込みシステムで活性化されるその後修正できる。
【００５１】
単一のエンティティの値は、コンポーネントが埋め込みシステムで活性化されるとその後修正できる。
−このリダイレクトの前のプロセッサとの関連での情報の追加であって、情報は要求される外部リソースを知る事を可能にする（例えば要求されるコンポーネントの数及び関連サービス）。
【００５２】
このようにして生成されたコードは、自己内蔵様式でコンパイル及びリンクできる（リンクの編集）。このコードは、特にコンポーネントによって供給されるサービスのプロトタイプ化に関する情報など、この前処理段階の間に、コンポーネントと呼ばれるものを構成するためにそれと並列される特定数の補足情報の項目が追加される。したがって、コンポーネントはＰＬＵＧによってのみシステムの残りと通信できる。
−エンジンは埋め込みシステムに位置付けられ、コンポーネントが実現するサービスに関する情報を保持することによってそれらを活性化することを可能にし、特にＰＬＵＧとのその通信を可能にする。ＰＬＵＧは、標準モードで、いくつかのプロセッサ命令の中で、コンポーネントによって要求されるターゲット関数の情報を回復し、この関数（サービス）が位置付けられるコードの場所にプロセッサを直接的に「スキップ」させるソフトウェアエンドである。
この機構によって、ソフトウェアエンティティはＰＬＵＧを介してシステムの残りから完全に隔離される。ＰＬＵＧは、システムの構成及び関連する制約に従って、通信フロー制御、（多様なプロセッサの間、またはさまざまな性質のコンポーネントまたはさまざまな特権の間の）リダイレクト、コンポーネントの置換、ある言語から別の言語への変換、別の実行エンティティへのゲートウェイ（プロセッサの別のタスク、別のメモリ領域、別のプロセッサ、チップカード、ネットワーク、付属品）の機能を追加できる。
【００５３】
この技術は、このようにして性能レベルまたは開発者にとっての制約で妥協することなく、コンポーネント手法（転送の容易さ、試験、保守、安定性、セキュリティ、ソフトウェア構成の柔軟性、ハードウェアアーキテクチャに関する柔軟性等）の使用に関するすべての優位点を回復できるようにする。さらにソフトウェアコンポーネントは独自に生成されるので、それらはシステムの残りに影響を及ぼさずに交換、修正、更新または追加を行うことができる。この原則を使用すると、このようなコンポーネントへの分割は、例えばコンポーネントのサイズと修正されるその確率の相関に応じて、実現されないターゲット関数の数を最小限に抑えるために最適化できる。
【００５４】
したがって、この技術により、例えば、同じ機能を履行する別のコンポーネントでコンポーネントを置換する、あるいはどのコンポーネントが別のどのコンポーネントを呼び出すことを許可されているのかを知るためにＰＬＵＧによって直接的に管理されるコンポーネント上で権利を関連付けることができるようになる。
【００５５】
ＰＬＵＧは、それが処理する呼び出しを知り、おそらく多様な関連パラメータを用いて登録できるようにするために実現することもできる。この記録システムは、次に、例えば埋め込みコードの中のあらゆるエラーを検出するために、行われた関数呼び出しにそれを同化させることによってコンポーネントをシミュレーションできる。いったんエラーが検出されると、これらのエラー検出記録は、次にエラーの分析を担当する別のコンピュータリソースに送信される。
【００５６】
呼び出しのこれらの記録は、これらの呼び出しのそれぞれに補足情報を備えることもできる。この情報は、時間、実行コンテンツ、メモリ使用に関する情報、またはコンポーネントのトレーサビリティ及び管理に必要な別の情報である場合がある。
【００５７】
図４に描かれている、本発明によるソフトウェアコンポーネントは、別のコンポーネントに対する要求とサービス応答の交換を介しては別にして、実行時にシステムの残りから完全に隔離されるように生成されるソフトウェアエンドである。
【００５８】
例えば、Ｃ言語（Ｂプラグコンポーネント）で符号化されたコンポーネントの場合には、それが（例えば関数呼び出しを介して）明示的であるのか、あるいは（グローバル変数等の使用を介して）暗示的であるのかに関係なく交換は許可されていない。コンポーネントは独立しており、それはデータと処理命令を含む同種のブロックであり、これは実行時も同等である。
【００５９】
コンポーネントのサービスのアクセスする手段がインターフェースと呼ばれる。インターフェースは、特にこの使用専用のＩＤＬ言語を介して説明できる。多様なコンポーネントのタイプに従って、このインターフェースは特定数の関数、メソッド等によって実現される。
【００６０】
例えば、Ｂ−プラグコンポーネントによって供給されるサービスインタフェースは、別のコンポーネントによって（それらが関連アクセス権を有するならば）（ＰＬＵＧを介して）呼び出すことができるＣ関数集合の形で実現される。
【００６１】
サービスのインプリメンテーションは、厳密に言えば、コンポーネント本体の中に位置する。コンポーネントの本体は、別のコンポーネントのサービスを使用できるようにする。
例えば、サービス「ＡＬＡＲＭ（警報）」はいかなる瞬間でも前もってプログラムされた特定のアクションを生じさせる。警報コンポーネントのインターフェースにより、クライアントは、
−警報によりどのアクションをトリガするのかを定めることができる。
−このアクションがトリガされなければならない瞬間を定めることができる。
【００６２】
インターフェース及びコンポーネントの本体に加えて、情報の特定数の項目がコンポーネントに、それが生成されるときに追加される。この情報は、以後システムをオンにするこのエンジンによって使用される。
【００６３】
コンポーネントは、例えば、
−コンポーネントのタイプ（（Ｃで符号化された）バイナリ、ＪＡＶＡ（登録商標）等）
−提供されるサービスの説明
−コンポーネントの実行に必要なサービスとリソースのリスト
−特権、アクセス権
−（発呼者に関連して、コンポーネントに関連して等）アクセスされる方法
等の情報を含むことがある。
【００６４】
さらに詳細には、コンポーネントは特定数の、埋め込みシステムによってそれが実行される前にコンポーネントにリソースを割り当てるために使用されるサービス品質情報と呼ばれる情報の項目を含む。このサービス品質情報は、
−最小要件、平均要件及び最適要件の形での、それが機能するためのコンポーネントのランダムアクセスメモリ要件であり得る。
−コンポーネントが、それが機能するために必要とする別のコンポーネント（関連コンポーネント）のリスト及びこれらの関連コンポーネントのバージョン番号であり得る。関連コンポーネントがコンポーネントによって示されるバージョン番号より高い、または等しいバージョン番号に対応しない場合、埋め込みシステムがコンポーネントの実行に着手しないことに留意しなければならない。
−コンポーネントの処理力に関しての要件であり得る。埋め込みシステムは特にコンポーネントまたは関連コンポーネントの能力に関して、要件に従って埋め込みシステムのプロセッサの周波数を修正する可能性があることに留意しなければならない。それは、リソースの処理可用性に従ってそのコンピュータリソースの一方または他方でコンポーネントを実行させることを決定する可能性がある。一般論としては、埋め込みシステムはその電力消費を最小限に抑えるために実行時にリソースを決定してよい。
【００６５】
その結果、このサービス品質情報のすべて、及び埋め込みシステムにより達成される管理によって、後者は、それがサービス品質情報で表される要件を保証できない場合には、コンポーネントの実行を拒絶できるようになる。
【００６６】
さらに、コンポーネントは、コンポーネントによって実行される機能（コンポーネントの名前、バージョン、コンポーネントによって実現される関数のリスト等）を指定できるようにする情報（コンポーネント情報）の特定数の項目を含む。このコンポーネントの情報及び使用できるコンポーネントのリストは、要求が事前に行われる場合には、埋め込みシステムによって別のコンピュータリソースに供給されてよい。
【００６７】
本発明によるコンポーネントの主要な状態は図５に描かれている。
ステップ５１は、コンポーネントがシステム内でダウンロードできるダウンロードステップである。
【００６８】
コンポーネントに関する特定数の特性（特にセキュリティ）を示すために、ラベルがこの時点でシステムによって作成できる。このステップの間、任意のタイプのダウンロードを使用できる。
【００６９】
コンポーネントは言うまでもなくすでに埋め込みシステム上に常駐してよいため、このダウンロードステップが絶対的に必要ではないことに留意しなければならない。
次にステップ５２の間にコンポーネントがインストールされる。その後、容易にコンポ−年を活性化できるようにするために、特定数のアクションが実行される。おそらく、コンポーネントのこのインストールの間、あるいはそのダウンロードの時点では、それはおそらくセキュリティの理由から暗号化された形式となる可能性がある。コンポーネントの実行のステップは、この場合には、さらに復号化ステップを備える。
さらに正確には、コンポーネントのインストールまたは実行は過去の許可に依存する可能性がある。この場合には、許可は埋め込みシステムにより保持されるキー（システムキー）と実行されるコンポーネントにより保持されるキー（コンポーネントキー）が一致する場合に付与される。システムキーは、例えば、埋め込みシステムを一意に指定する情報から計算されてよい。
【００７０】
埋め込みシステムによるコンポーネントの実行時に、別のコンピュータリソースに通知が供給される。この通知に続いて、前記リソースが次に埋め込みシステムのコンポーネントを実行する許可または拒絶を送信する。
【００７１】
許可は、例えばシステムキーとコンポーネントキーと結合される外部キーの形を取ってよい。それらは無料で配布されてよい、あるいは埋め込みシステムの販売の前後に金銭上の取引きに関連付けられる。
【００７２】
ステップ５３では、コンポーネントによって提供されるサービスの１つがシステムの一部によって要求されるとき、あるいはユーザが特定のサービスを活性化するときに、関連付けられるコンポーネントが活性化される。コンポーネントは、コンテナ内で実行され、その形式はコンポーネントのタイプに依存する。ＰＬＵＧに関しては、これはコンポーネント間のサービスの多様な交換の切り替えを担当する。ＰＬＵＧは、本発明によるコンポーネントの形でコンパイルされない残余コードにも関連付けることができる。
【００７３】
データベース５４は、多様なコンポーネントの状態（インストール可能、インストール済み、活性化済み等）、及び情報の特定数の別の項目（サービス、関連バージョン、セキュリティパラメータ、サービスのロケーション等の説明）を記録する。いったんインストールされると、コンポーネントはつねにその処理装置のデータベースで記録される。
【００７４】
例えば、アクセス権テーブルが最終ユーザによって、または別のコンピュータリソースによって遠隔で修正できることに留意しなければならない。
ステップ５５の間、コンポーネントをアンインストールする、あるいは交換することもできる。交換は静的に（つまり、コンポーネントがアクティブではなかった間に）または動的に（活性化中に）発生することがある。
【００７５】
さらに、コンポーネントがオリジナルコードから作成されるとき、ターゲット関数がそれ自体コンポーネントで定められる関数のアドレスをパラメータとして有する場合に、このパラメータはコールバック関数と呼ばれる特定の関数の呼び出しによって置換されることにも留意しなければならない。この関数は初期関数の識別子を供給し、スイッチング関数ＰＬＵＧを前述のように呼び出す。
【００７６】
同様に、ソフトウェアコンポーネントの作成時、オリジナルコードで定義されない任意の情報及びコンポーネントがそれを実行できるために必要とする情報が特定される。この情報は、次にコンポーネントに、それが生成されるときに追加される。失われた情報がいったんシステムによって供給できると、コンポーネントのコードはそれを実行可能にする順序で修正される。
【００７７】
別のコンポーネントはソフトウェアコンポーネントにリンクできる。特に、
コンテナはコンポーネントの実行に関与し、同コンテナは同じタイプのすべてのコンポーネントによって共用できる。
【００７８】
ローダは、ある場所から別の場所へのコンポーネントの転送（コピー）（例えばあるメモリから別のメモリへコピーすること）を行えるようにする。
プロビジョナは、システム内でダウンロードできるためにコンポーネントの特定数のパラメータを検証することに関与する。
【００７９】
チェッカは、コンポーネント、その権利等の完全性をチェックする。
図６に描かれている、本発明によるエンジンは４つの別々のパーツで構築される（ａｒｃｈｉｔｅｃｔｕｒｅｄ）。
【００８０】
ダウンローダは、システム内でのソフトウェアコンポーネントのダウンロードに関与する。それは、
−それらが何であれシステムのトランスポート層と、
−ダウンロードを受け入れるまたは拒絶するプロビジョナと、
−システムで利用できる１つまたは複数の記憶システム
と対話する。
【００８１】
マネージャは、
−インストーラ：ソフトウェアコンポーネントのインストール及びアンインストールに関与すること、
−アクティベータ：コンポーネントを活性化するまたは非活性化することに関与すること、
を含む。
【００８２】
データベースはシステム内でインストールされ、活性化されるコンポーネントに関する情報を再構築することに関与する。
最後に、ＰＬＵＧは多様なコンポーネント間の通信に関与する。このインプリメンテーションは、以下にさらに広範に説明される。
【００８３】
ＰＬＵＧに基づいたリダイレクトの原則は図７で描かれる。
最初に、コンポーネントがメモリにインストールされる。システムのメモリの一部はエンジン用に確保される。エンジンのマネージャは、この確保された領域にコンポーネントをインストールすることに関与する。コンポーネントは次々に記憶される。
【００８４】
さらに、それが実行されるとき、コンポーネントは、それが初期に実行メモリ領域と呼ばれていたメモリ領域とは異なる埋め込みシステムのメモリ領域内に入れられる。この実行メモリ領域は、実行速度、消費及びコンポーネントに特に適しているアクセス可能性に関して特定の特性を有する。
【００８５】
コンポーネントはアンインストールすることもできる。このようにしてマネージャは確保されたメモリ領域のフラグメンテーション解消の動作を実施できるようにされる。
その結果、コンポーネントはＰＬＵＧに接続される。コンポーネントが生成されたとき、このコンポーネントのすべての外部アクセスが（０ｘＦＦＦＦＦＦＦなどの）単純な意味のないアドレスにリダイレクトされた。インストール時、コンポーネントは、意味のないアドレスに代入するＰＬＵＧ内の入力アドレスを割り当てられる。したがって、コンポーネントの外部呼び出しは、事実上、コンポーネント専用のＰＬＵＧへの入力アドレスの呼び出しに変換される。
【００８６】
活性化時、エンジンのマネージャは、どこにコンポーネントが位置するのか、及びその情報がどこに位置するのか（特に、各コンポーネントにより供給される多様なサービス）を示すスイッチングテーブルをＰＬＵＧに供給する。コンポーネントが外部サービスを要求するとき、したがって、必要とされるコンポーネント数と所望されるサービスの数、つまりターゲット関数という情報の２つの項目または識別子が本発明に従ってコンポーネントの再生に基づいて追加された一方で、プロセッサはコンポーネントにリンクされたＰＬＵＧの入力アドレスにリダイレクトされる。情報のこれらの２つの項目とマネージャによって供給される情報に基づいて、ＰＬＵＧはプロセッサを（ＣＡＬＬ（呼び出し）タイプではなくＪＵＭＰ（ジャンプ）の命令を介して、つまり新しい関数呼び出しも、要求されるサービスに接続される情報のコピーも使用しないで）所望されるサービスが位置する点にリダイレクトする。したがって、スイッチング関数は、パラメータとして実現されないターゲット関数に、あるいは初期コンポーネント内のコールバック関数に対応する少なくとも前記２つの識別子を取る。これらの識別子は、スタック内あるいは対応する関数へのリダイレクトのためのＰＬＵＧスイッチング関数によって使用されるプロセッサのレジスタ内に記憶される。
【００８７】
このＰＬＵＧスイッチング関数はターゲット関数の識別子とターゲット関数のアドレスの間の対応ルートテーブルのテーブルを使用して実行される。これは、例えば２つのサブテーブルの形で作成され、第１はソフトウェアコンポーネントに関連する情報とターゲット関数を実現するコンポーね年とを対応させ、第２は関連コンポーネントの中の関数の数とそのアドレスを対応させる。
【００８８】
主要なテーブル、ルートテーブルはランダムアクセスメモリに記録されるが、これらのサブテーブルは、コンポーネントが作成されると生成され、コンポーネントのコードとともに読取専用メモリに記憶される。
【００８９】
このように、コンポーネントＡが２Ｄグラフィックコンポーネントの関数ＤｒａｗＬｉｎｅを呼び出すことを希望すると仮定する。
コンポーネントが作成されると、コンポーネントの初期コードのＤｒａｗＬｉｎｅ関数の呼び出しは、あたかもＤｒａｗＬｉｎｅが呼び出されたのかのように同じパラメータを用いてＰＬＵＧの呼び出しにより置換される。さらに、必要とされるコンポーネント（２Ｄグラフィックコンポーネント）と必要とされるサービス（ＤｒａｗＬｉｎｅサービス）の情報が追加される。実行時、ＤｒａｗＬｉｎｅ関数に対する呼び出しは、事実上、最初に、コンポーネント数とサービスに基づいてＤｒａｗＬｉｎｅ関数にプロセッサをリダイレクトするであろうＰＬＵＧへの切り替えにより置換される。
【００９０】
スイッチング関数ＰＬＵＧは呼び出されるターゲット関数に依存して特定数のアクションも実行する。ターゲット関数あたりのアクションのリストは過去に定められ、埋め込みシステムに保管される。アクションは、例えばプロセッサのあるコンテキストから別のコンテキストに変更すること、別のコンポーネントのインストールと実行、ターゲット関数の呼び出しの１つまたは複数のコンポーネントの通知、埋め込みシステムのユーザへの通知、または別のコンピュータリソースへの通知である場合がある。
【００９１】
ＰＬＵＧ及びこれに基づいて、静的にまたは動的に、
−あるコンポーネントから別のコンポーネントへ通信ストリームをリダイレクトする、
−あるコンポーネントを（デバッグされた、または更新された、あるいは別のインプリメンテーションに対応する）別のコンポーネントで置換する、
−ある言語から別の言語にサービス要求を変換する（前記の例では、ＰＬＵＧはＤｒａｗＬｉｎｅ機能に対する要求を、別の言語に変換し、変換されたこの要求を適切なコンポーネントに送信できるであろう）。
−埋め込みシステム内、または埋め込みシステム外で要求を別のプロセッサにリダイレクトする（例えば、ＤｒａｗＬｉｎｅ関数は専用のグラフィックプロセッサで実現できるであろう。この瞬間に、ＰＬＵＧは輸送を介してグラフィックプロセッサに常駐する別のＰＬＵＧに接続され、２つのＰＬＵＧは要求とサービス応答をトランスペアレントに互いに渡すことができる）ことが可能となる。
【００９２】
動的管理の場合には、修正は例えば別のコンピュータソースの表示から、または構成形式の埋め込みシステムのユーザから出現できることに留意する。
さらに、ＰＬＵＧによって呼び出されるコンポーネントが使用できない場合、後者は、使用できないコンポーネントの識別子によって決定される特殊なアクションを生じさせる。これらのアクションは、警報メッセージの作成、または同じ機能を、同じフォーマットに、または初期ターゲット関数のうちの１つより別のフォーマットで達成するコンポーネントの検索である場合がある。
【００９３】
コンポーネント間の通信は任意のトランスポート層で行われることに留意する必要がある。トランスポート層は、したがって携帯電話の場合には無線チャネル（その時点では、他が携帯電話に位置するが、コンポーネントはオペレータレベルでネットワークに位置する場合がある）、または、
−個人領域ネットワークを管理する（例えば、画面はブルーツース型無線リンクを介して電話に接続される別の装置に位置する）、
−多様なコンポーネント間でアクセス権を制御する、
−システムの開発の理由から、ＰＬＵＧを介して発生するすべての通信を説明することによって可視性を追加する、
−ＰＣ型エミュレータで関連サービスをエミュレートするために通信のいくつかをリダイレクトする、
−あるいは、コンポーネントとシステムの残りの間を通過する通信ストリーム全体がＰＬＵＧで非常に容易に操作できるという事実を使用して任意の別のアプリケーション
を可能にするブルーツース、ＷｉＦｉのリンクである場合がある。
【００９４】
最後に、本発明のコンポーネントへの分解は、これが埋め込みシステムをシミュレーションする場合には非埋め込みシステムによって使用できることに留意する。
本発明は例によってのみ前述された。当然、当業者はそれでも特許の範囲から逸脱することなく本発明のさまざまな変形を生じさせる立場にある。
【図面の簡単な説明】
【００９５】
【図１】従来の技術及び関連の原理に従って多様なコードを管理する方法。
【図２】従来の技術及びメッセージシステムに従って多様なコードを管理する方法。
【図３】本発明に従ってコンポーネントを管理する方法。
【図４】本発明によるコンポーネントの構造の全体図。
【図５】本発明によるコンポーネントの主要な状態。
【図６】本発明によるエンジンのアーキテクチャ。
【図７】ＰＲＯＸＹまたはＰＬＵＧに基づいてリダイレクトの原則。
【図１】
2007527562.tif 000002
【図２】
2007527562.tif 000003
【図３】
2007527562.tif 000004
【図４】
2007527562.tif 000005
【図５】
2007527562.tif 000006
【図６】
2007527562.tif 000007
【図７】
2007527562.tif 000008
【国際調査報告】
2007527562.tif 000009
2007527562.tif 000010
2007527562.tif 000011
2007527562.tif 000012
2007527562.tif 000013
2007527562.tif 000014
2007527562.tif 000015
2007527562.tif 000016
2007527562.tif 000017
2007527562.tif 000018