(57)【特許請求の範囲】
【請求項１】
複数のプロセッサが搭載され、所定の機能を実現する組み込み機器における当該複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報を予め記憶する記憶手段と、
前記組み込み機器における前記所定の機能の構成を複数のノードにより定義した構成情報を生成する構成情報生成手段と、
前記構成情報に定義された複数のノードごとに、ノードの状態と当該状態におけるノードの振る舞いであるアクション情報とを定義したノード状態情報を生成するノード状態情報生成手段と、
前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換する変換手段と、
前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記記憶手段に記憶された前記通信処理情報と、前記変換したプログラムコードとを含めて生成するプログラム生成手段と、
を備えるプログラム生成装置。
【請求項２】
前記構成情報生成手段は、各ノードに前記複数のプロセッサのいずれかを割り当てた割当情報を含めて前記構成情報を生成し、
前記プログラム生成手段は、前記構成情報に含まれる割当情報に基づいて、各ノードを割り当てられた前記複数のプロセッサのいずれかに分類して複数の分類後構成情報を生成し、前記生成された複数の分類後構成情報から前記複数のプログラムを生成する
ことを特徴とする請求項１に記載のプログラム生成装置。
【請求項３】
前記複数のプロセッサのそれぞれに対応したプログラムを生成する複数のモデルコンパイラをさらに備え、
前記プログラム生成手段は、前記分類後構成情報から対応するプロセッサを特定し、特定したプロセッサに対応するモデルコンパイラを選択して、選択したモデルコンパイラを用いて前記分類後構成情報から当該特定したプロセッサで実行可能なプログラムを生成する
ことを特徴とする請求項２に記載のプログラム生成装置。
【請求項４】
前記プログラム生成手段は、前記複数のプログラムを生成する際に、ノードアクセスに対応する非同期イベントをさらに含めることを特徴とする請求項１乃至３のいずれか１項に記載のプログラム生成装置。
【請求項５】
前記構成情報生成手段は、前記構成情報としてＤＭＴ（Device Management Tree）を用いることを特徴とする請求項１乃至４のいずれか１項に記載のプログラム生成装置。
【請求項６】
前記ノード状態情報生成手段は、前記ノード状態情報に、前記複数のプロセッサ上で動作するアプリケーションの処理結果を加工するルールを関連付けることを特徴とする請求項１乃至５のいずれか１項に記載のプログラム生成装置。
【請求項７】
前記ノード状態情報生成手段は、前記ノード状態情報に、前記組み込み機器に搭載され、かつ、前記複数のプロセッサにより制御される制御装置との通信を行うためのルールを関連付けることを特徴とする請求項１乃至６のいずれか１項に記載のプログラム生成装置。
【請求項８】
複数のプロセッサが搭載され、所定の機能を実現する組み込み機器における当該所定の機能の構成を複数のノードにより定義した構成情報を生成し、
前記構成情報に定義された複数のノードごとに、ノードの状態と当該状態におけるノードの振る舞いであるアクション情報とを定義したノード状態情報を生成し、
前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換し、
前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報と、前記変換したプログラムコードとを含めて生成する、
プログラム生成方法。
【請求項９】
複数のプロセッサが搭載され、所定の機能を実現する組み込み機器における当該所定の機能の構成の複数のノードによる定義を受け付け、
当該受け付けた定義に基づき構成情報を生成し、
前記構成情報に含まれる複数のノードのいずれかの指定を受け付け、
当該指定されたノードにおけるノードの状態と当該状態におけるノードの振る舞いであるアクション情報との定義を受け付け、
当該受け付けた前記ノードの状態と前記アクション情報との定義に基づきノード状態情報を生成し、
前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換し、
予め記憶部に格納された前記複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報を取得し、
前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記取得した通信処理情報と、前記変換したプログラムコードとを含めて生成する、
処理をコンピュータに実行させるプログラム生成プログラム。
【請求項１０】
外部と無線通信可能なプロセッサを含む複数のプロセッサを備え、所定の機能を実現する組み込み機器と、
前記複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報を予め記憶する記憶手段と、
前記組み込み機器における前記所定の機能の構成を複数のノードにより定義した構成情報を生成する構成情報生成手段と、
前記構成情報に定義された複数のノードごとに、ノードの状態と当該状態におけるノードの振る舞いであるアクション情報とを定義したノード状態情報を生成するノード状態情報生成手段と、
前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換する変換手段と、
前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記記憶手段に記憶された前記通信処理情報と、前記変換したプログラムコードとを含めて生成するプログラム生成手段と、
無線通信により前記組み込み機器に対して制御を行う遠隔制御手段と、
を備える遠隔管理装置と、を備え、
前記遠隔制御手段は、前記生成した複数のプログラムを前記組み込み機器へ送信し、
前記組み込み機器は、前記遠隔管理装置から受信した複数のプログラムのそれぞれを、前記複数のプロセッサのうち対応するプロセッサにおいて実行させ、
前記複数のプロセッサは、各プロセッサが実行するプログラムに含まれる前記変換したプログラムコードに基づく処理を行い、当該プログラムに含まれる通信処理に基づいて、プロセッサ間の通信を行う
ことを特徴とする組み込み機器の遠隔管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム生成装置、方法及びプログラム並びに遠隔管理システムに関し、特に、複数のプロセッサを備え、所定の機能を実現する組み込み機器で実行可能なプログラムを生成するためのプログラム生成装置、方法及びプログラム並びに遠隔管理システムに関する。
【背景技術】
【０００２】
近年、自動車には、複数の制御系ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）ばかりでなく、情報系ＥＣＵが搭載されている。ここで、制御系ＥＣＵとは、エンジン制御系、ボディー系などの自動車本体を制御するための電子制御装置を指す。自動車には、通常、数十〜百個の制御系ＥＣＵが搭載されている。また、情報系ＥＣＵとは、カーナビやＡＶ（Ａｕｄｉｏ  Ｖｉｓｕａｌ）システムなどのマルチメディア機能等の機能を制御するための電子制御装置を指す。そして、情報系ＥＣＵは、内部のプロセッサによりプログラムを実行することにより制御系ＥＣＵに比べて柔軟な制御が可能である。そのため、情報系ＥＣＵが複数の制御系ＥＣＵをプログラムにより制御する場合もある。
【０００３】
このようなことから、自動車の開発は、複数の開発チームやサプライヤにより行われることが一般的である。そして、今後、自動車には制御系ＥＣＵだけでなく、情報系ＥＣＵについても複数の構成となることが予想される。また、大手メーカでは、開発部門と保守部門が分かれており、開発と保守はそれぞれ別のエンジニアが行う場合が多い。
【０００４】
ここで、自動車等の各種機能をデバイスという単位で管理するためのデバイスの構成を定義するための技術としてＤＭＴ（Ｄｅｖｉｃｅ  Ｍａｎａｇｅｍｅｎｔ  Ｔｒｅｅ）がある。ＤＭＴは、デバイス管理を行うために使用される木構造データである。各ノードの名前は、ＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）として表すことができる。そのため、ネットワーク上デバイス管理サーバや組み込み機器内のデバイス管理アプリは、ＵＲＩを指定することでＤＭＴ内の任意のノードに対して読み書きや実行命令の発行を行うことができる。また、ＤＭＴにノードを動的に追加することも可能である。
【０００５】
また、ＤＭＴベースのデバイス管理技術としてＯＭＡ−ＤＭ（Ｏｐｅｎ  Ｍｏｂｉｌｅ  Ａｌｌｉａｎｃｅ−Ｄｅｖｉｃｅ  Ｍａｎａｇｅｍｅｎｔ）がある。ＯＭＡ−ＤＭは、３Ｇ携帯電話やＷＩＭＡＸ（Ｗｏｒｌｄｗｉｄｅ  Ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  Ｍｉｃｒｏｗａｖｅ  Ａｃｃｅｓｓ）で運用されている遠隔デバイス管理プロトコルの規格である。規格化団体は、ＯＭＡ（Ｏｐｅｎ  Ｍｏｂｉｌｅ  Ａｌｌｉａｎｃｅ）である。ＯＭＡ−ＤＭは、ＤＭＴに相当するＭＯ（Ｍａｎａｇｅｍｅｎｔ  Ｏｂｊｅｃｔ）という単位でデバイスの管理を行う。ＯＭＡ−ＤＭが提供する標準ＭＯは、ＦＵＭＯ（遠隔ファームウエア更新）、ＳＣＯＭＯ（遠隔ＳＷ更新）、ＤｉａｇＭｏｎ（遠隔診断）、ＬＡＷＭＯ（遠隔セキュリティーロック）などがある。例えば、特許文献１には、モバイル・デバイスを管理するための技術が開示されている。
【０００６】
また、現状の車載機の診断における状況としては、次のとおりである。まず、制御系ＥＣＵに関しては、サービスエンジニアがＯＢＤ２とよばれるコネクタに診断テスタを接続して診断や制御を行っている。また、情報系ＥＣＵに関しては、サービスセンタに持ち込み後、情報系ＥＣＵに接続されるストレージからログ情報を取得するやり方が現在主流である。
【０００７】
そして、最近では、自動車の各種機能を管理するために、ＯＭＡ−ＤＭなどのＤＭＴをサポートした遠隔デバイス管理プロトコルなどを使用した遠隔診断プログラムを情報系ＥＣＵに予め埋め込むか、製品出荷後に、新たに診断プログラムを情報系ＥＣＵに送り込むなどの手法が考えられている。後者は、出荷後に不具合に可能性があることがわかった特定の自動車に対して、特殊な診断プログラムを送り込む際に使用する。
【０００８】
尚、特許文献２には、車両診断プログラムの作成や修正を行うための車両診断プログラム作成装置及び車両診断装置に関する技術が開示されている。特許文献３には、通信を行うためのプログラムの作成を行い、間違いがあった場合に、その原因の特定を行うためのツール装置に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特表２００９−５０４０４１号公報
【特許文献２】特開２０００−１３１１９４号公報
【特許文献３】特開２００９−０２０７１６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
このように、複数の情報系ＥＣＵに対応する遠隔診断プログラムを作成するためには、広範な専門知識が必要となり、保守作業を行うサービスエンジニアが単独で行うには難易度が高いという問題点があった。その理由は、上述した診断プログラムは、現状、各々のＥＣＵに詳しい開発部門のエンジニアがプログラミングにより作成しなければならないからである。そのため、保守部門又はサービスセンタのサービスエンジニアが作成するには敷居が高い。
【００１１】
ここで、複数の情報系ＥＣＵに対応する遠隔診断プログラムを作成するには、次のような知識が必要となる。まず、各情報系ＥＣＵで使われているプログラム言語やＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のシステムコール及びシステム固有の設計思想に関する知識が必要となる。例えば、第１の情報系ＥＣＵには、Ｌｉｎｕｘ（登録商標）及びＣ＋＋言語の知識が必要となり、第２の情報系ＥＣＵには、Ｔ−ｋｅｒｎｅｌ及びＣ言語の知識が必要となるといった具合である。さらに、ＯＭＡ−ＤＭプロトコル及び各情報系ＥＣＵ間のＤＭＴ共有方法や制御系ＥＣＵ向けの車載診断プロトコルや他ＥＣＵからのイベント取得方法などの知識も必要となる。
【００１２】
尚、特許文献１乃至３にかかる技術では、複数の制御系ＥＣＵと複数の情報系ＥＣＵを備えた組み込み機器において、情報系ＥＣＵ間の通信処理等を個別に実装しなければならず、上述した問題を解決することはできない。
【００１３】
本発明は、このような問題点を解決するためになされたものであり、複数のプロセッサを備え、所定の機能を実現する組み込み機器における広範な専門知識が必要とせずに、当該組み込み機器で実行されるプログラムを容易に生成するためのプログラム生成装置、方法及びプログラム並びに遠隔管理システムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の第１の態様にかかるプログラム生成装置は、複数のプロセッサが搭載され、所定の機能を実現する組み込み機器における当該複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報を予め記憶する記憶手段と、前記組み込み機器における前記所定の機能の構成を複数のノードにより定義した構成情報を生成する構成情報生成手段と、前記構成情報に定義された複数のノードごとに、ノードの状態と当該状態におけるノードの振る舞いであるアクション情報とを定義したノード状態情報を生成するノード状態情報生成手段と、前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換する変換手段と、前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記記憶手段に記憶された前記通信処理情報と、前記変換したプログラムコードとを含めて生成するプログラム生成手段と、を備える。
【００１５】
本発明の第２の態様にかかるプログラム生成方法は、複数のプロセッサが搭載され、所定の機能を実現する組み込み機器における当該所定の機能の構成を複数のノードにより定義した構成情報を生成し、前記構成情報に定義された複数のノードごとに、ノードの状態と当該状態におけるノードの振る舞いであるアクション情報とを定義したノード状態情報を生成し、前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換し、前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報と、前記変換したプログラムコードとを含めて生成する。
【００１６】
本発明の第３の態様にかかるプログラム生成プログラムは、複数のプロセッサが搭載され、所定の機能を実現する組み込み機器における当該所定の機能の構成の複数のノードによる定義を受け付け、当該受け付けた定義に基づき構成情報を生成し、前記構成情報に含まれる複数のノードのいずれかの指定を受け付け、当該指定されたノードにおけるノードの状態と当該状態におけるノードの振る舞いであるアクション情報との定義を受け付け、当該受け付けた前記ノードの状態と前記アクション情報途に基づきノード状態情報を生成し、前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換し、予め記憶部に格納された前記複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報を取得し、前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記取得した通信処理情報と、前記変換したプログラムコードとを含めて生成する処理をコンピュータに実行させるプログラムである。
【００１７】
本発明の第４の態様にかかる組み込み機器の遠隔管理システムは、外部と無線通信可能なプロセッサを含む複数のプロセッサを備え、所定の機能を実現する組み込み機器と、前記複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報を予め記憶する記憶手段と、前記組み込み機器における前記所定の機能の構成を複数のノードにより定義した構成情報を生成する構成情報生成手段と、前記構成情報に定義された複数のノードごとに、ノードの状態と当該状態におけるノードの振る舞いであるアクション情報とを定義したノード状態情報を生成するノード状態情報生成手段と、前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換する変換手段と、前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記記憶手段に記憶された前記通信処理情報と、前記変換したプログラムコードとを含めて生成するプログラム生成手段と、無線通信により前記組み込み機器に対して制御を行う遠隔制御手段と、を備える遠隔管理装置と、を備え、前記遠隔制御手段は、前記生成した複数のプログラムを前記組み込み機器へ送信し、前記組み込み機器は、前記遠隔管理装置から受信した複数のプログラムのそれぞれを、前記複数のプロセッサのうち対応するプロセッサにおいて実行させ、前記複数のプロセッサは、各プロセッサが実行するプログラムに含まれる前記変換したプログラムコードに基づく処理を行い、当該プログラムに含まれる通信処理に基づいて、プロセッサ間の通信を行う。
【発明の効果】
【００１８】
本発明により、複数のプロセッサを備え、所定の機能を実現する組み込み機器における広範な専門知識が必要とせずに、当該組み込み機器で実行されるプログラムを容易に生成するためのプログラム生成装置、方法及びプログラム並びに遠隔管理システムを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１にかかるプログラム生成装置の構成を示すブロック図である。
【図２】本発明の実施の形態１にかかるプログラム生成方法の処理の流れを示すフローチャートである。
【図３】本発明の実施の形態２にかかる遠隔管理システムの構成を示すブロック図である。
【図４】本発明の実施の形態２にかかる遠隔管理方法の処理の流れを示すシーケンス図である。
【図５】本発明の実施の形態３にかかる遠隔車載診断システムの構成を示すブロック図である。
【図６】本発明の実施の形態３にかかるプログラム生成装置のハードウェア構成を示すブロック図である。
【図７】本発明の実施の形態３にかかる車載組み込み機器の構成を示すブロック図である。
【図８】本発明の実施の形態３にかかる生成される車載診断プログラムの概念を示す図である。
【図９】本発明の実施の形態３にかかるDMTアクセス管理の例を示す図である。
【図１０】本発明の実施の形態３にかかるＧＵＩ開発ツールの概念を示す図である。
【図１１】本発明の実施の形態３にかかる状態モデル図及びアクション記述言語の例を示す図である。
【図１２】本発明の実施の形態３にかかる情報系ECU33用の車載診断プログラムの処理の流れを示すシーケンス図である。
【図１３】本発明の実施の形態３にかかる情報系ECU32用の車載診断プログラムの処理の流れを示すシーケンス図である。
【図１４】本発明の実施の形態３にかかる状態モデル図の例を示す図である。
【図１５】関連技術により設計した場合のクラス図の例を示す図である。
【図１６】関連技術により設計した場合のUMLモデリングの例を示す図である。
【図１７】本発明の実施の形態３にかかるＤＭＴを用いたデバイス管理の概念を示す図である。
【図１８】関連技術を用いた場合のプログラム作成手順の概念を示す図である。
【図１９】本発明の実施の形態３にかかるプログラム生成方法の概念を示す図である。
【発明を実施するための形態】
【００２０】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００２１】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかるプログラム生成装置１の構成を示すブロック図である。プログラム生成装置１は、複数のプロセッサが搭載され、所定の機能を実現する組み込み機器（不図示）において実行可能なプログラムを生成するコンピュータシステムである。特に、プログラム生成装置１は、複数のプロセッサのそれぞれに対応した複数のプログラムを生成する。ここで、生成される複数のプログラムは、それぞれ、対応するプロセッサにおいて実行可能な機械語プログラム又は当該機械語プログラムにコンパイル可能なソースプログラムである。また、生成される複数のプログラムは、組み込み機器の所定の機能を実現するためのプログラムであるか、当該機能を検査又は診断等するための補助的な機能を実現するためのプログラムである。そして、生成される複数のプログラムは、既存の有線通信又は無線通信の手段を用いてプログラム生成装置１から組み込み機器へ転送されることにより、対応する各プロセッサ上で実行される。また、生成される複数のプログラムは、各プロセッサで実行される際に、プロセッサ間の通信を行うことができるものである。
【００２２】
プログラム生成装置１は、記憶部１１と、構成情報生成部１２と、ノード状態情報生成部１３と、変換部１４と、プログラム生成部１５とを備える。記憶部１１は、複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報１１１を予め記憶する記憶装置である。構成情報生成部１２は、組み込み機器における所定の機能の構成を複数のノードにより定義した構成情報を生成する。構成情報には、組み込み機器を物理的な構成要素に限らず、機能レベルの抽象的な構成要素も含まれる。例えば、機能名、部品名、属性、パラメータ値、計量値等をノードとして表現し、ノード間の関係を定義した情報である。ノード状態情報生成部１３は、構成情報に定義された複数のノードごとに、ノードの状態と当該状態におけるノードの振る舞いであるアクション情報とを定義したノード状態情報を生成する。変換部１４は、ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換する。プログラム生成部１５は、構成情報に基づいて、複数のプロセッサごとに対応した複数のプログラムを、記憶部１１に記憶された通信処理情報１１１と、変換したプログラムコードとを含めて生成する。尚、構成情報生成部１２と、ノード状態情報生成部１３と、変換部１４と、プログラム生成部１５とは、これらの機能を実装したプログラム生成プログラムをＣＰＵ（Central Processing Unit）等の制御部により実行することにより実現することが可能である。尚、本発明の実施の形態１では、定義されたノードとプロセッサとの関連付けは、予め定義されているものとする。
【００２３】
図２は、本発明の実施の形態１にかかるプログラム生成方法の処理の流れを示すフローチャートである。まず、構成情報生成部１２は、構成情報を生成する（Ｓ１１）。このとき、構成情報生成部１２は、機能の構成に関する情報や複数のノードの指定を外部から受け付けるようにしてもよい。次に、ノード状態情報生成部１３は、構成情報を参照し、複数のノードのそれぞれに対応した複数のノード状態情報を生成する（Ｓ１２）。このとき、ノード状態情報生成部１３は、ノードの状態とアクション情報とを外部から受け付けるようにしてもよい。
【００２４】
そして、変換部１４は、ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換する（Ｓ１３）。変換されるプログラムコードは、機械語のコードでなくとも、少なくともソースコードであればよい。但し、変換部１４は、アクション情報をノードに予め関連付けられたプロセッサに対応するプログラムコードに変換するものとする。また、変換部１４は、複数のノード状態情報のそれぞれに定義されたアクション情報ごとに異なるプログラムコードへ変換する。
【００２５】
その後、プログラム生成部１５は、構成情報に基づいて、複数のプロセッサごとに対応した複数のプログラムを生成する（Ｓ１４）。つまり、プログラム生成装置１は、組み込み機器に対する一つの構成情報から複数のプログラムを生成する。その際、プログラム生成部１５は、記憶部１１から通信処理情報１１１を読み出して、各プログラムに含める。つまり、生成されたプログラムは、他のプロセッサとの通信処理が実装されたこととなる。また、プログラム生成部１５は、ステップＳ１３により変換したプログラムコードを、ノードに対応するプログラムに含める。つまり、アクション情報として定義することにより、プロセッサに応じたプログラムコードが実装されたこととなる。
【００２６】
このように、本発明の実施の形態１により、構成情報やノード状態情報といった組み込み機器の所定の機能を表現する情報を用いて、複数のプロセッサのそれぞれで実行可能な複数のプログラムを生成することができる。一方、サービスエンジニア等は、所定の機能についての専門知識があるが、複数のプロセッサで実行可能なプログラミングについての広範な専門知識を備えていないことが一般的である。そのため、本発明の実施の形態１により、サービスエンジニア等であっても、複数のプロセッサを備え、所定の機能を実現する組み込み機器で実行されるプログラムを容易に生成することができる。
【００２７】
＜発明の実施の形態２＞
図３は、本発明の実施の形態２にかかる遠隔管理システム１０の構成を示すブロック図である。尚、本発明の実施の形態２は、上述した発明の実施の形態１にかかるプログラム生成装置１を用いて実現した例について説明する。尚、発明の実施の形態１と同一の構成要素について、同一の符号を付し、詳細な説明を省略する。
【００２８】
遠隔管理システム１０は、遠隔管理装置１ａと組み込み機器２とを備える。遠隔管理システム１０は、遠隔管理装置１ａを用いて、組み込み機器２の各種機能を遠隔管理するための仕組である。遠隔管理装置１ａは、プログラム生成装置１の構成要素に加え、遠隔制御部１６をさらに備える。遠隔制御部１６は、無線通信により組み込み機器に対して制御を行う。具体的には、遠隔制御部１６は、プログラム生成部１５により生成された複数のプログラムを無線通信により組み込み機器２へ転送する。また、遠隔制御部１６は、組み込み機器２内の各プログラムに対して各種制御の指示を行う。これにより、遠隔管理装置１ａは、組み込み機器２を遠隔管理する。
【００２９】
組み込み機器２は、プロセッサ２１ａ、２１ｂ、・・・及び２１ｎを備える。また、組み込み機器２は、プロセッサ２１ａ、２１ｂ、・・・及び２１ｎの少なくとも一部を用いて所定の機能を実現する。また、プロセッサ２１ａは、外部との無線通信機能を有する。プロセッサ２１ａは、少なくとも遠隔制御部１６との無線通信が可能である。
【００３０】
図４は、本発明の実施の形態２にかかる遠隔管理方法の処理の流れを示すシーケンス図である。まず、遠隔管理装置１ａは、図２のステップＳ１１〜Ｓ１４と同等の処理により、プロセッサごとの複数のプログラムを生成する。すなわち、遠隔管理装置１ａは、プロセッサ２１ａ、２１ｂ、・・・及び２１ｎのそれぞれに対応する機械語プログラムを生成する。
【００３１】
次に、遠隔制御部１６は、組み込み機器２のプロセッサ２１ａに対して、複数のプログラムを送信する（Ｓ１５）。そして、プロセッサ２１ａは、遠隔管理装置１ａから受信した複数のプログラムのそれぞれを、対応するプロセッサに送信する（Ｓ１６）。つまり、プロセッサ２１ａは、プロセッサ２１ｂにはプロセッサ２１ｂ上で実行可能なプログラムを、プロセッサ２１ｎにはプロセッサ２１ｎ上で実行可能なプログラムを、それぞれ送信する。
【００３２】
そして、プロセッサ２１ａ、２１ｂ、・・・及び２１ｎは、受信した各プログラムを実行する（Ｓ１７）。プロセッサ２１ａ、２１ｂ、・・・及び２１ｎは、各プロセッサが実行するプログラムに含まれるプログラムコードに基づく処理を行う。ここで、プログラムコードは、ステップＳ１３によりアクション情報に基づいてプロセッサごとに変換されたものである。そのため、各プロセッサは、ノードの状態におけるノードの振る舞いに相当する処理を実行することができる。
【００３３】
また、プロセッサ２１ａ、２１ｂ、・・・及び２１ｎは、各プロセッサが実行するプログラムに含まれる通信処理に基づいて、プロセッサ間の通信を行う（Ｓ１８）。例えば、プロセッサ２１ａと２１ｂとは、プロセッサ間で相互のノードに対してイベントを発生させ、また、イベントに対する応答を行う。
【００３４】
このように、本発明の実施の形態２により、発明の実施の形態１と同様の効果を奏することができる。
【００３５】
＜発明の実施の形態３＞
複数の情報系ＥＣＵに対応する遠隔診断プログラムを作成するために、ＭＤＡ（登録商標）（Ｍｏｄｅｌ  Ｄｒｉｖｅｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を用いて、遠隔診断の仕様から診断プログラムを自動生成する手法が考えられる。なぜなら、ＭＤＡを導入することにより、プログラム設計やコーディング技術などの専門知識の敷居を下げることが可能であるからである。
【００３６】
ここで、ＭＤＡとは、モデルとして表現される構造的仕様のガイドラインを提供するソフトウェア開発手法である。ＭＤＡを用いると、ＧＵＩ開発ツールを用いて記述されたモデルから、機械語プログラムを自動生成することが可能となる。ＭＤＡを用いた開発ツールとしては、例えば、ＢｒｉｄｇｅＰｏｉｎｔやＲｈａｐｓｏｄｙなどがあり、組み込み系ソフトウェア開発に用いられている。また、ＭＤＡには、ＳＱＬの構文を一部取り入れたアクション記述言語をサポートしたＥｘｅｃｕｔａｂｌｅ  ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）という手法がある。
【００３７】
図１８は、ＭＤＡを用いた場合のプログラム作成手順の概念を示す図である。まず、オブジェクト指向分析（Ｏｂｊｅｃｔ−Ｏｒｉｅｎｔｅｄ  Ａｎａｌｙｓｉｓ）（以下、ＯＯＡと呼ぶ）に相当する作業として、診断仕様に基づくＵＭＬのモデリングを行う（Ｓ９１）。次に、オブジェクト指向設計（Ｏｂｊｅｃｔ−Ｏｒｉｅｎｔｅｄ  Ｄｅｓｉｇｎ）（以下、ＯＯＤと呼ぶ）に相当する作業として、情報系ＥＣＵごとに必要な機能についてのＵＭＬのモデリングを行う（Ｓ９２及びＳ９３）。その後、各情報系ＥＣＵに対応したモデルコンパイラにより、各モデルからソースコードＳＣ１及びＳＣ２を生成する（Ｓ９４及びＳ９５）。
【００３８】
しかしながら、複数の情報系ＥＣＵに対応する遠隔診断プログラムを作成するために、単純に、ＭＤＡを用いるだけでは、下記に示すような問題があり、サービスエンジニアが単独で行うには難易度が高いという問題は、解消しない。
【００３９】
（１）関連する情報系ＥＣＵの数だけ、ＵＭＬ等で記述されたモデルを生成し、各々のモデルコンパイラでコンパイルする必要がある。つまり、ステップＳ９１（ＯＯＡ相当）後、ＯＯＤ相当のフェーズで、クラスライブラリと各情報系ＥＣＵに割り当てられた機能を考慮したモデルに、作り直さなければならない。また、情報系ＥＣＵ毎に分割されたモデル間の連携方法や管理センタ（例えば、図３の遠隔管理装置１ａ）との通信方法も、別途考える必要がある。
【００４０】
（２）オブジェクトのライフサイクルの管理（オブジェクトやイベント生成、削除など）は、モデル作成者が記述しなければならない。これは、ＭＤＡのようなオブジェクト指向設計手法を、強引にデバイス管理に持ち込んだ場合に発生する矛盾である。
【００４１】
（３）情報系ＥＣＵ間の通信処理に関しては自動生成できず、従来の手書きによる処理を実装しなければならない。
【００４２】
（４）さらに、情報系ＥＣＵ間の連携を考えた場合、モデル作成時のアクション記述が複雑になってしまい、結局、ＭＤＡを導入する利点がなくなってしまう。つまり、管理センタと無線通信するＥＣＵの割り当てを定義しなければならない。また、管理センタから受信したイベントを基に他の情報系ＥＣＵに割り振るしくみや、他の情報系ＥＣＵからのアクションを管理センタにフィードバックするしくみを考えなければならない。
【００４３】
そこで、本発明の実施の形態３では、図１９に示すようなプログラム生成方法の概念について説明する。図１９では、まず、ＯＯＡと呼ぶに相当する作業として、設計対象の組み込み機器に関するＤＭＴに基づくモデリングを行う（Ｓ４１）。そのため、サービスエンジニアは、ＤＭＴ構成と、制御系ＥＣＵや各センサーと情報系ＥＣＵの割り当てを把握していれば、プログラムを生成することができる。
【００４４】
次に、ＤＭＴのノード構成及び各ノードの振る舞いを基に、組み込み装置内に搭載される複数のＥＣＵごとのソースコードＳＣ１及びＳＣ２を生成する（Ｓ４２）。このとき、ノードと情報系ＥＣＵとの割り当てを基に、自動的にモデルが分割される。その後、各々の情報系ＥＣＵに対応したモデルコンパイラで別々にビルドされる。
【００４５】
これにより、ソースコードＳＣ１及びＳＣ２をコンパイルすることにより、組み込み装置内の各ＥＣＵで実行される機械語プログラムを生成する。ここで、生成される機械語プログラムには、管理センタのサーバと組み込み装置間の通信処理及び組み込み装置内に搭載される複数のＥＣＵの連携処理が含まれる。また、本発明の実施の形態３には、自動生成された機械語プログラムの構成方法、並びに、これらに対応したＧＵＩ開発ツール及びモデルコンパイラも含まれる。このように、本発明の実施の形態３により、サービスエンジニアが情報系ＥＣＵ間の連携や管理センタとの通信に関するロジックを記述する必要がなくなる。
【００４６】
本発明の実施の形態３は、上述した発明の実施の形態１にかかるプログラム生成装置１に改良を加えることでも実現することができる。その場合、以下のような構成を有することとなる。構成情報生成部１２は、各ノードに複数のプロセッサのいずれかを割り当てた割当情報を含めて構成情報を生成し、プログラム生成部１５は、構成情報に含まれる割当情報に基づいて、各ノードを割り当てられた複数のプロセッサのいずれかに分類して複数の分類後構成情報を生成し、生成された複数の分類後構成情報から複数のプログラムを生成する。
【００４７】
また、複数のプロセッサのそれぞれに対応したプログラムを生成する複数のモデルコンパイラをさらに備え、プログラム生成部１５は、分類後構成情報から対応するプロセッサを特定し、特定したプロセッサに対応するモデルコンパイラを選択して、選択したモデルコンパイラを用いて分類後構成情報から当該特定したプロセッサで実行可能なプログラムを生成することが望ましい。
【００４８】
さらに、プログラム生成部１５は、複数のプログラムを生成する際に、ノードアクセスに対応する非同期イベントをさらに含めることが望ましい。また、構成情報生成部１２は、構成情報としてＤＭＴを用いることが望ましい。さらに、ノード状態情報生成部１３は、ノード状態情報に、複数のプロセッサ上で動作するアプリケーションの処理結果を加工するルールを関連付けるとよい。また、ノード状態情報生成部１３は、ノード状態情報に、組み込み機器に搭載され、かつ、複数のプロセッサにより制御される制御装置との通信を行うためのルールを関連付けるとよい。
【００４９】
図５は、本発明の実施の形態３にかかる遠隔車載診断システム１００の構成を示すブロック図である。遠隔車載診断システム１００は、開発用ＰＣ１０１と、管理センタの管理サーバ１０２と、車載組み込み機器１０３とを備える。遠隔車載診断システム１００は、車載組み込み機器１０３における各種機能を遠隔に診断するための仕組みである。尚、遠隔車載診断システム１００は、主に、車載組み込み機器をターゲットとした遠隔デバイス管理システムの一部であるが、本発明の実施の形態３はこれに限定されない。
【００５０】
開発用ＰＣ１０１は、ＧＵＩ開発ツールを用いて、車載診断プログラムを作成する（Ｓ５１）。車載診断プログラムは、車載組み込み機器１０３に搭載された複数のプロセッサに対応する複数の機械語プログラムである。具体的には、開発用ＰＣ１０１は、ユーザからＤＭＴのノードの構成、状態及びアクション情報等を受け付けて、車載組み込み機器１０３における一つのＤＭＴのモデル情報を生成する。そして、開発用ＰＣ１０１は、ＤＭＴベースのモデル情報に加え、ログフィルタリングルール言語や制御系ＥＣＵ向け車載診断言語などの複数の抽象度の高いスクリプト言語を生成する。
【００５１】
開発用ＰＣ１０１は、生成したＤＭＴのモデル情報及びスクリプト言語に基づき、各ＥＣＵに対応したモデルコンパイラを使用して、ＥＣＵ毎に対応したソースプログラムを生成する。つまり、開発用ＰＣ１０１は、一つのＤＭＴから車載組み込み機器１０３に搭載された複数のプロセッサに対応する複数のソースプログラムを生成する。その後、開発用ＰＣ１０１は、生成した複数のソースプログラムをバイナリ形式の複数の機械語プログラムに変換する。このようにして、開発用ＰＣ１０１は、複数の車載診断プログラムを作成する。
【００５２】
そして、開発用ＰＣ１０１は、複数の車載診断プログラムを管理サーバ１０２へアップロードする（Ｓ５２）。管理サーバ１０２は、アップロードされた複数の車載診断プログラムを、ＯＭＡ−ＤＭなどの無線を使用した遠隔デバイス管理プロトコルを使用して、無線通信網（不図示）を介して車載組み込み機器１０３へ送信する（Ｓ５３）。
【００５３】
車載組み込み機器１０３は、受信した複数の車載診断プログラムを、対応するプロセッサ上で実行する。各プロセッサは、車載診断プログラムの実行により取得される診断情報を基に、管理サーバ１０２や車載組み込み機器１０３自身に対してアクションを行う（Ｓ５４）。また、管理サーバ１０２は、車載診断プログラムから取得される情報を基に、車載診断プログラムへの指示を行うことで、車載組み込み機器１０３の遠隔診断を行う。
【００５４】
図６は、本発明の実施の形態３にかかるプログラム生成装置の一例である開発用ＰＣ１０１のハードウェア構成を示すブロック図である。開発用ＰＣ１０１は、ＣＰＵ（Central Processing Unit）１１０と、ＲＡＭ（Random Access Memory）１２０と、ＲＯＭ（Read Only Memory）１３０と、ＩＦ部１４０と、ハードディスク１５０とを備える。
【００５５】
また、ハードディスク１５０は、不揮発性記憶装置である。ハードディスク１５０は、ＯＳ１５１、ＧＵＩ開発ツール１５２、ＤＭＴ管理部１５３、ライブラリ１５４、フィルタリングルール１５５、変換ルール１５６、モデルコンパイラ１５７ａ〜１５７ｃ、ソースプログラム１５８ａ〜１５８ｃ及び機械語プログラム１５９ａ〜１５９ｃを格納する。
【００５６】
ＧＵＩ開発ツール１５２は、発明の実施の形態１にかかるプログラム生成プログラムを含み、ＧＵＩによりＤＭＴによる構成情報、ノード状態情報の設計を支援するためのソフトウェアである。ＤＭＴ管理部１５３は、通信処理情報１１１を含むプログラムモジュールであり、例えば、オブジェクト指向言語におけるクラス等である。ライブラリ１５４は、車載診断プログラムに用いられる各種ライブラリ関数、クラスライブラリ、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）等である。フィルタリングルール１５５は、ログをフィルタリングするためのルールを定義した情報である。変換ルール１５６は、制御系ＥＣＵとの通信に用いられる車載診断プロトコルとの変換に関するルールを定義した情報である。モデルコンパイラ１５７ａ〜１５７ｃは、それぞれ、ＤＭＴのモデル情報又は分割されたモデル情報から所定のプロセッサに対応するソースコードを生成するためのコンパイラである。尚、モデルコンパイラ１５７ａ〜１５７ｃは、後述する車載組み込み機器１０３が備える３つの情報系ＥＣＵのそれぞれに対応するものである。ソースプログラム１５８ａ〜１５８ｃは、それぞれ、モデルコンパイラ１５７ａ〜１５７ｃにより生成されたソースプログラムである。機械語プログラム１５９ａ〜１５９ｃは、それぞれ、ソースプログラム１５８ａ〜１５８ｃからコンパイルされたバイナリ形式のプログラムである。
【００５７】
ＣＰＵ１１０は、開発用ＰＣ１０１における各種処理、ＲＡＭ１２０、ＲＯＭ１３０、ＩＦ部１４０及びハードディスク１５０へのアクセス等を制御する。ＩＦ部１４０は、管理サーバ１０２との通信を行う。
【００５８】
開発用ＰＣ１０１は、ＣＰＵ１１０が、ＲＡＭ１２０、ＲＯＭ１３０又はハードディスク１５０に格納されたＯＳ１５１、ＧＵＩ開発ツール１５２等を読み込み、実行する。これにより、開発用ＰＣ１０１は、構成情報生成部１２、ノード状態情報生成部１３、変換部１４及びプログラム生成部１５として機能し、車載診断プログラムを生成することができる。
【００５９】
尚、管理サーバ１０２のハードウェア構成は、車載組み込み機器１０３との無線通信機能を有するものであればよく、公知技術により実現可能であるため、図示及び説明を省略する。
【００６０】
図７は、本発明の実施の形態３にかかる車載組み込み機器１０３の構成を示すブロック図である。まず、車載組み込み機器１０３の概要について説明する。車載組み込み機器１０３は、無線通信モジュール３４を搭載している。そのため、管理サーバ１０２は、無線通信ネットワーク（不図示）を経由して、車載組み込み機器１０３の遠隔診断や遠隔操作が可能である。管理サーバ１０２は、車載組み込み機器１０３を単一のデバイスとして認識する。よって、車載組み込み機器１０３のデバイス管理には、単一のＤＭＴを用いることができる。
【００６１】
車載組み込み機器１０３は、複数の情報系ＥＣＵ３１〜３３及び複数の制御系ＥＣＵ３７及び３８を備える。そのため、車載診断プログラムは、単一のＤＭＴで表現可能であるが、複数のＥＣＵにまたがる処理を行う必要がある。
【００６２】
制御系ＥＣＵ３７及び３８は、管理サーバ１０２からの制御及び管理対象である。制御系ＥＣＵ３７及び３８は、管理サーバ１０２と直接通信できない情報系ＥＣＵ３３に接続されている。
【００６３】
情報系ＥＣＵ３１は、無線通信機能があり、車載診断プログラムには、車載ＬＡＮｎ１を介した情報系ＥＣＵ間通信の実装が必要となる。
【００６４】
情報系ＥＣＵ３３と制御系ＥＣＵ３７及び３８は、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などの非ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）系の車載ＬＡＮＢに接続されており、管理サーバ１０２からのＤＭＴアクセスは、制御系ＥＣＵ専用の通信プロトコルに変換する必要がある。
【００６５】
管理サーバ１０２から制御及び管理する車載センサー３５及び３６（ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）、ジャイロセンサなど）やアプリケーションは、複数の情報系ＥＣＵ上に分散している。
【００６６】
続いて、車載組み込み機器１０３の詳細な構成について説明する。車載組み込み機器１０３は、情報系ＥＣＵ３１〜３３、無線通信モジュール３４、センサー３５及び３６、制御系ＥＣＵ３７及び３８、車載ＬＡＮｎ１及びｎ２を備える。情報系ＥＣＵ３１〜３３は、車載ＬＡＮｎ１を介して相互に接続されている。ここで、車載ＬＡＮｎ１は、ＭＯＳＴ（Ｍｅｄｉａ  Ｏｒｉｅｎｔｅｄ  Ｓｙｓｔｅｍｓ  Ｔｒａｎｓｐｏｒｔ）などのマルチメディア系の情報系ＥＣＵ向けＬＡＮである。また、ＭＯＳＴには、ＭＡＭＡＣ(ＭＯＳＴ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｍｅｄｉｕｍ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ)というＴＣＰ／ＩＰ通信をサポートした仕様もある。ここでは、車載ＬＡＮｎ１は、ＭＡＭＡＣによるＴＣＰ／ＩＰ通信を可能とする。
【００６７】
情報系ＥＣＵ３１は、無線通信モジュール３４及びセンサー３５を制御する。情報系ＥＣＵ３１は、無線通信モジュール３４経由で管理サーバ１０２と通信を行うことが可能である。無線通信モジュール３４は、例えば、通信方式としてＷ−ＣＤＭＡ  ３Ｇ携帯電話、デバイス管理用の通信プロトコルとしてＯＭＡ  ＤＭを使用することができる。
【００６８】
また、情報系ＥＣＵ３１には、デバイス管理プロトコルアダプタ４１１、ＤＭＴアクセスＩＦ４１２、アプリケーション４１３、ＤＭＴ管理アプリ４１６、アプリケーション４１７及び４１８が予めインストールされている。そして、情報系ＥＣＵ３１は、管理サーバ１０２から無線通信モジュール３４を介してＤＭＴアクセスＩＦ４１４及び車載診断プログラム４１５を受信して実行する。尚、ＤＭＴアクセスＩＦ４１４は、開発用ＰＣ１０１又は管理サーバ１０２により付加されるものとする。
【００６９】
情報系ＥＣＵ３２は、アプリケーション４２１、ＤＭＴアクセスＩＦ４２２及びアプリケーション４２３が予めインストールされている。そして、情報系ＥＣＵ３２は、情報系ＥＣＵ３１からＤＭＴアクセスＩＦ４２４及び車載診断プログラム４２５を受信して実行する。
【００７０】
情報系ＥＣＵ３３は、センサー３６を制御する。また、情報系ＥＣＵ３３は、車載ＬＡＮｎ２を介して制御系ＥＣＵ３７及び３８を制御する。車載ＬＡＮｎ２は、ＣＡＮなどの制御系ＥＣＵ向けのＬＡＮである。情報系ＥＣＵ３３は、ＣＡＮなどの制御系ＥＣＵ向けＬＡＮやＫＷＰ２０００などの診断プロトコルを使用して制御系ＥＣＵ３７及び３８にアクセスすることが可能である。そして、情報系ＥＣＵ３２は、情報系ＥＣＵ３１からＤＭＴアクセスＩＦ４３１及び車載診断プログラム４３２を受信して実行する。
【００７１】
車載診断プログラム４１５、４２５及び４３２は、開発用ＰＣ１０１により生成され、管理サーバ１０２から配信されたアプリケーションである。
【００７２】
情報系ＥＣＵ３１内のＤＭＴ管理アプリ４１６は、車載のＤＭＴを管理するアプリケーションであり、管理サーバ１０２又は他の情報系ＥＣＵ（３２又は３３）からのＤＭＴへのアクセスを可能にする。
【００７３】
ＤＭＴアクセスＩＦ４１２、４１４、４２２、４２４及び４３１は、情報系ＥＣＵ上で動作するアプリケーションから、ＤＭＴ管理アプリ４１６内のＤＭＴにアクセスするためのＡＰＩである。
【００７４】
情報系ＥＣＵ３２及び３３内のＤＭＴアクセスＩＦ４２２、４２４又は４３１とリンクされたアプリケーション４２３、車載診断プログラム４２５又は４３２は、ＴＣＰ／ＩＰのソケット通信などを用いて、情報系ＥＣＵ３１内のＤＭＴ管理アプリ４１６と通信を行う。
【００７５】
一方、ＤＭＴアクセスＩＦ４１２、４１４、４２２、４２４又は４３１とリンクされないアプリケーション４１７、４１８及び４２１は、ログ出力という形で車載診断プログラム４１５、４２５及び４３２にイベントを通知することができる。
【００７６】
情報系ＥＣＵ３１上のデバイス管理プロトコルアダプタ４１１は、ＯＭＡ  ＤＭなどのデバイス管理プロトコルが実装され、管理サーバ１０２とＤＭＴ管理アプリ４１６間のインタフェースをとる。
【００７７】
ここで、本発明の実施の形態３の特徴を以下の（１）〜（３）の３つに分けて説明する。
【００７８】
（１）本発明の実施の形態３は、ＤＭＴのノード構成及び各ノードの振る舞いを基に、組み込み装置内の複数のプロセッサ上で実行される機械語プログラムを、自動生成する仕組みということができる。
【００７９】
（１−１）ＤＭＴの任意のノードに独自の状態を持たせることが可能であり、ノード自体の状態及び当該状態におけるノードの振る舞いを状態モデル図として記述可能となる。尚、状態モデル図については、図１１を用いて後述する。状態モデル図上に記載されたノードの状態は、ノードの振る舞いを記述するための特別な状態である。そのため、ＯＭＡ−ＤＭなどのデバイス管理プロトコルで定義されるノードの状態とは異なる。すなわち、各ノードに対して同時に複数の状態を持たせることができる。
【００８０】
また、ＭＤＡでは、ＵＭＬ図を基にコード生成をしていた。しかし、本発明の実施の形態３では、ＤＭＴのモデル（ＤＭＴの構成図および、ノード単位の状態モデル図）を基にコード生成を行う。ＭＤＡとの差異は、ＧＵＩ開発ツールやＤＭＴ管理部で吸収する。それは、本発明の実施の形態３がＤＭＴを使用した遠隔デバイス管理に対象を絞り、それらに特化した構造であるためである。
【００８１】
ＭＤＡでは、クラス図毎にアクション記述可能な状態モデル図が作成される。しかし、本発明の実施の形態３では、ＤＭＴのノード単位に状態モデル図が作成される。仮に、ＵＭＬに強引に対応させた場合、各ノードは、ノードクラスのサブクラスにも相当し（図１５）、また、インスタンスにも相当する。すなわち、モデル設計時のノードの定義と同時に、クラス及びインスタンス相当のものが同時に生成されることになる。また、各ノードは、状態モデル図の振る舞いとなるアクション記述言語上では、自らクラスとしてもインスタンスとしても扱うことが可能となり、一般的なＵＭＬやＭＤＡの考え方と大きく異なる。
【００８２】
ＤＭＴベースのモデル導入により、ＭＤＡとの決定的な違いが生じる。それは、インスタンス生成、削除などオブジェクト指向のライフサイクル管理に相当するロジックをモデル上で各ノードに対して表記する必要がなくなることである。
【００８３】
本発明の実施の形態３では、モデル設計時のノード定義と同時に、開発ツールがノードアクセス（ＯＭＡ−ＤＭのＧｅｔ、Ｒｅｐｌａｃｅ、Ｅｘｅｃなど）に対応する非同期イベントを、定義されたノードに対して、自動的に割り当てることを可能とする。
【００８４】
さらに、本発明の実施の形態３により、管理サーバからのノード追加コマンド（ＯＭＡ−ＤＭのＡｄｄなど）受信により、ノードの実体（インスタンス）を実機上で、自動的に生成／活性状態にすることを可能とする。
【００８５】
（１−２）複数のプロセッサを備える車載組み込み機器１０３の場合、ＤＭＴ内の任意のノードを特定の情報系ＥＣＵに割り当てることが可能である。この情報を基に、異なるプロセッサ向け診断プログラムのアクション記述部のソースコードを同時に生成する。これにより、単一のＤＭＴから複数の情報系ＥＣＵのコードを自動生成することが可能となる。
【００８６】
モデルコンパイラのモデル分割機能が、ノードとプロセッサの割り当て情報を考慮し、モデルを複数に分割する。分割されたモデルは、それぞれのプロセッサに対応したモデルコンパイラのソースコード変換機能によって、モデルからソースコードに変換される。これにより、プロセッサ間の通信を意識することなく、診断プログラムを作成することが可能となる。
【００８７】
また、プロセッサ間通信に関する処理は、後述する図８の「ＤＭＴ管理部」および「ＤＭＴアクセスＩ／Ｆ」内で隠蔽される。よって、情報系ＥＣＵ３１のアクション記述部は、情報系ＥＣＵ３２に割り当てられたノードにアクセス（＝読み書き）するだけで、ＥＣＵ間の通信を行うことが可能となる。
【００８８】
（１−３）ＤＭＴベースの状態モデル図上で、アクション記述言語によるノードの振る舞いを記述することが可能となる。さらに、車載診断記述言語（ＡＳＡＭ−ＭＣＤ２  ＯＤＸなど）で記載されたスクリプト内で定義されたパラメータと対応するイベント及びＤＭＴへのアクセスイベント（同期または非同期）を生成可能となる。
【００８９】
（２）本発明の実施の形態３は、自動生成された機械語プログラムの構成方法ということができる。
【００９０】
（２−１）生成される機械語プログラムは、「ＤＭＴ管理部」「アクション記述部」から構成され、車載組み込み機器１０３上で実行されるバイナリプログラムである。このバイナリプログラムには、追加機能として「制御系ＥＣＵ車載診断プロトコル変換部」「ログフィルタリング処理部」を含めることができる。
【００９１】
図８は、本発明の実施の形態３にかかる生成される車載診断プログラムの概念を示す図である。ＤＭＴｄ５は、開発用ＰＣ１０１において生成された診断対象の車載組み込み機器１０３をデバイス管理するための木構データである。そして、開発用ＰＣ１０１は、ＤＭＴｄ５内の各ノード処理を異なる情報系ＥＣＵに割り当てることができる。ここでは、ＤＭＴｄ５内の各ノードのうち、情報系ＥＣＵ３３に割り当てられたノード群を分割ＤＭＴｄ５１、情報系ＥＣＵ３２に割り当てられたノード群を分割ＤＭＴｄ５２とする。開発用ＰＣ１０１は、ＧＵＩ開発ツールにより、ＤＭＴｄ５から分割ＤＭＴｄ５１と分割ＤＭＴｄ５２とに分割する。
【００９２】
ＤＭＴアクセスＩＦ５２１及びアプリケーション５２２は、分割ＤＭＴｄ５２に対応する情報系ＥＣＵ３２のアプリケーションである。情報系ＥＣＵ３２のアプリケーションは、管理サーバ１０２又は他の情報系ＥＣＵからの通知を、ＤＭＴイベントとしてＤＭＴアクセスＩ／Ｆ経由で受信することが可能である。尚、ＤＭＴアクセスＩＦ５２１は、プラグインＩ／Ｆであってもよい。
【００９３】
車載診断プログラム５１は、分割ＤＭＴｄ５１に対応する情報系ＥＣＵ３３用の車載診断プログラムである。車載診断プログラム５１は、ＤＭＴアクセスＩＦ５１１、ＤＭＴ管理部５１２、アクション記述部５１３、ログフィルタリング処理部５１４、フィルタリングルール５１５、変換ルール５１６及び制御系ＥＣＵ車載診断プロトコル変換部５１７を備える。
【００９４】
アクション記述部５１３は、状態モデル図に定義されたアクション情報に基づいて生成されるプログラムコードに相当する部分である。アクション記述部５１３は、ＤＭＴのモデル情報から自動生成された機械語で構成される機能部である。ここでは、ＤＭＴ管理部５１２やログフィルタリング処理部５１４などで発生したイベントに対するアクションが記述される。アクション記述部５１３から、同一プロセッサ内で動作する動的リンク可能なライブラリ関数５３を関数呼び出しすることができる。
【００９５】
アクション記述部５１３からＤＭＴのノードにアクセスすることにより、無線ネットワーク上の管理センタや情報系ＥＣＵ上で動作する他のアプリケーションに対するフィードバックを行うことが可能となる。フィードバック処理対象のアプリケーションは、例えば、ＤＭＴアクセスＩＦ５１１がリンクされたものである。
【００９６】
ＤＭＴ管理部５１２、制御系ＥＣＵ車載診断プロトコル変換部５１７及びログフィルタリング処理部５１４は、ライブラリとして提供されたものである。これにより、車載組み込み機器１０３特有のロジックが隠蔽される。そのため、サービスエンジニアが記述するのは、アクション記述部５１３を生成する元となるアクション情報のみとなる。そして、各機能部は、互いにリンクされ一つのバイナリとなる。
【００９７】
ＤＭＴ管理部５１２は、分割ＤＭＴｄ５１とアクション記述部５１３とのインタフェースをとる機能部である。そして、ＤＭＴ管理部５１２は、アクション記述部５１３に対し、イベントを発生させることが可能である。また、ＤＭＴ管理部５１２において、ＤＭＴへのアクセス方法の違いを吸収することも可能である。
【００９８】
ここで、ＤＭＴへのアクセス方法には、下記の２つの方法があり、本発明の実施の形態３により、１つのスクリプトで複数のＤＭＴアクセス手段を表現することが可能となった。
【００９９】
（方法１）管理サーバ１０２又は情報系ＥＣＵ内のローカルのプログラムによるＤＭＴアクセス後、直ぐにＤＭＴ自体にアクセス内容が反映される。これにより、高いリアルタイム性が必要な車載診断などで使用することができる。
【０１００】
（方法２）管理サーバ１０２又は情報系ＥＣＵ内ローカルのプログラムによるＤＭＴアクセス後、直ぐにはＤＭＴにアクセス内容が反映されず、アクセス内容は、コミット命令で反映される。また、ロールバック命令にも対応する。例えば、１つの診断機能が、関連する複数のノードから構成される場合、ノード間の同期をとる場合に使用することができる。
【０１０１】
これは、ＯＭＡ−ＤＭなどのプロトコルをサポートしたデバイス管理システムからのＤＭＴのノードに対するアクセス（ＧＥＴやＲＥＰＬＡＣＥ命令あるいは、ＣＯＭＭＩＴやＲＯＬＬＢＡＣＫ命令）を基に、ＤＭＴ管理部５１２がノードアクセスとは異なるタイミングでアクション記述部５１３に対する非同期イベントを生成するからである。
【０１０２】
図９は、本発明の実施の形態３にかかる方法２におけるＤＭＴアクセス管理の例を示す図である。ここでは、ＤＭＴ管理アプリ４１６から車載診断プログラム５１へのＤＭＴアクセスを例として挙げる。車載診断プログラム５１には、少なくともＤＭＴ管理部５１２、ノードデータ管理部５１２ａ及びアクション記述部５１３が含まれるものとする。
【０１０３】
まず、ＤＭＴ管理アプリ４１６は、ＤＭＴ管理部５１２へノードＡに対するＲＥＰＬＡＣＥ命令を送信する（Ｓ３０１）。そして、ＤＭＴ管理部５１２は、ノードデータ管理部５１２ａへその旨を通知する（Ｓ３０２）。次に、ＤＭＴ管理アプリ４１６は、ＤＭＴ管理部５１２へノードＢに対するＲＥＰＬＡＣＥ命令を送信する（Ｓ３０３）。そして、ＤＭＴ管理部５１２は、ノードデータ管理部５１２ａへその旨を通知する（Ｓ３０４）。但し、この時点で、ＤＭＴ管理部５１２は、アクション記述部５１３へイベント通知を行っていない。
【０１０４】
そして、ＤＭＴ管理アプリ４１６は、ＤＭＴ管理部５１２へＣＯＭＭＩＴ命令を送信する（Ｓ３０５）。これに伴い、ノードデータ管理部５１２ａは、アクション記述部５１３へノードＡに対するＲＥＰＬＡＣＥ命令を送信する（Ｓ３０６）。続いて、ノードデータ管理部５１２ａは、アクション記述部５１３へノードＢに対するＲＥＰＬＡＣＥ命令を送信する（Ｓ３０７）。つまり、アクション記述部５１３は、ＣＯＭＭＩＴ命令をトリガにノードＡ及びＢを新しいデータに更新する。尚、更新前のデータは、ＤＭＴ管理部５１２内でバックアップされる。
【０１０５】
その後、ＤＭＴ管理アプリ４１６は、ＤＭＴ管理部５１２へＲＯＬＬＢＡＣＫ命令を送信する（Ｓ３０８）。これに伴い、ノードデータ管理部５１２ａは、アクション記述部５１３へノードＡに対するＲＥＰＬＡＣＥ命令を送信する（Ｓ３０９）。続いて、ノードデータ管理部５１２ａは、アクション記述部５１３へノードＢに対するＲＥＰＬＡＣＥ命令を送信する（Ｓ３１０）。つまり、アクション記述部５１３は、ＲＯＬＬＢＡＣＫ命令をトリガにノードＡ及びＢを更新前のデータに戻す。
【０１０６】
図８に戻って説明する。ＤＭＴ管理部５１２を用いることにより、サービスエンジニアが、管理センタや他の情報系ＥＣＵとの通信処理を一切記述する必要がなくなった。
【０１０７】
制御系ＥＣＵ車載診断プロトコル変換部５１７は、生成されたイベントを、車載診断記述言語で記載された変換ルール５１６を基に、ＫＷＰ２０００などの制御系ＥＣＵ向けの車載診断プロトコルを用いたシーケンス処理に変換する機能部である。制御系ＥＣＵ車載診断プロトコル変換部５１７は、Ｄ−ＰＤＵ  ＡＰＩ５４１を介してＭＶＣＩ  Ｐｒｏｔｏｃｏｌ  Ｓｔａｃｋ  ＆  車載ＬＡＮドライバ５４２と接続されている。そして、Ｄ−ＰＤＵ  ＡＰＩ５４１は、ＣＡＮ等の車載ＬＡＮにより制御系ＥＣＵ５５１〜５５３と接続されている。
【０１０８】
ログ収集機能５６は、複数の情報系ＥＣＵ上で動作するアプリケーションのログを収集する。ログフィルタリング処理部５１４は、複数のプロセッサからログ収集機能５６により収集されたログを、フィルタリングルール５１５を用いて解析し、アクション記述部５１３に対するイベントを発生させる機能部である。尚、ログをフィルタリングする技術については、公知なものであるため、詳細な説明を省略する。
【０１０９】
（３）本発明の実施の形態３は、上記手段に対応したＧＵＩ開発ツール及びモデルコンパイラということができる。
【０１１０】
（３−１）ＧＵＩ開発ツール上の開発ツール上での簡単な作業（ドラッグ＆ドロップなど）から、ＤＭＴベースのモデルを作成することができる。さらに、ログフィルタリングのルールや制御系ＥＣＵ向けの車載診断プロトコルの変換ルールとＤＭＴベースのモデルとを連携させることができる。
【０１１１】
（３−２）単一のＤＭＴベースのモデルから、Ｃ言語やＣ＋＋言語などのソースコードに変換するモデルコンパイラをＧＵＩ開発ツールで用いることができる。ここで定義するモデルコンパイラは、下記の３つの機能を含むものである。
（３−２−１）単一のＤＭＴモデルから、自動生成可能な複数の（ＵＭＬなどの）モデルに、プロセッサ単位で分割できる機能。
（３−２−２）分割された（ＵＭＬなどの）モデルから、各プロセッサのシステム構成（システムコールやメモリマップなど）に特化したソースコードを自動生成できる機能。
（３−２−３）ＤＭＴモデル上でのノードへのアクセスを、ＤＭＴ管理部５１２内のクラスライブラリへのアクセスに自動変換する機能。
【０１１２】
続いて、図１０を用いて、本発明の実施の形態３にかかるＧＵＩ開発ツールの概念を説明する。まず、開発用ＰＣ１０１は、ユーザから診断対象の車載組み込み機器１０３における機能の構成をノードにより表現した場合の位置及びノード間の階層の関係をドラッグ＆ドロップ等で受け付ける。そして、開発用ＰＣ１０１は、受け付けたノードに関する位置及び階層の関係から階層構造で表したＤＭＴのモデル情報を生成する（Ｓ３１）。尚、開発用ＰＣ１０１は、既存のＤＭＴのモデル情報をインポートにより受け付けても構わない。
【０１１３】
次に、開発用ＰＣ１０１は、ユーザから任意のノードに対して、情報系ＥＣＵの割り当てを受け付ける。そして、開発用ＰＣ１０１は、受け付けた情報系ＥＣＵを当該ノードにおける割り当て情報すなわちプロパティ値として設定する（Ｓ３２）。尚、このとき、開発用ＰＣ１０１は、別ウィンドウによりプロパティ値を受け付けてもよい。
【０１１４】
続いて、開発用ＰＣ１０１は、ユーザから任意のノードの選択をマウスクリック等により受け付ける。このとき、開発用ＰＣ１０１は、状態モデル図の作成画面を別ウィンドウにより表示する（Ｓ３３）。ここで、開発用ＰＣ１０１は、選択したノードの状態と当該状態におけるノードの振る舞いであるアクション情報とをユーザから受け付ける。そして、開発用ＰＣ１０１は、受け付けた状態とアクション情報とから状態モデル図を表示し、ノード状態情報とする。
【０１１５】
さらに、開発用ＰＣ１０１は、当該ノードにおいて、ログからアクション記述部５１３で理解可能なイベントを作成することができる（Ｓ３４）。ログは、複数のプロセッサ上で動作するアプリケーションの処理結果の一例である。そして、ログを加工するルールを当該ノードに関連付けることができる。
【０１１６】
また、開発用ＰＣ１０１は、当該ノードにおいて、アクション記述部５１３が発行するイベントと車載診断プロトコルの対応付けを記述することができる（Ｓ３５）。車載診断プロトコルは、組み込み機器に搭載され、かつ、複数のプロセッサにより制御される制御装置との通信を行うためのルールの一例である。そして、車載診断プロトコルの変換ルールを当該ノードに関連付けることができる。また、開発用ＰＣ１０１は、ＯＤＸなどの車載診断言語のインポート及びエクスポートに対応することができる。
【０１１７】
さらに、開発用ＰＣ１０１は、提供ライブラリ(車載診断のライブラリを含む)やイベント一覧から、マウスでの選択などで状態モデル図内に取り込むことができる（Ｓ３６）。また、開発用ＰＣ１０１は、当該ノードで用いる一部のユーザ定義ライブラリを作成することができる（Ｓ３７）。これにより、ＭＤＡで作成されたノードのモデルと連携可能となる。
【０１１８】
図１１は、本発明の実施の形態３にかかる状態モデル図及びアクション記述言語の例を示す図である。尚、図１１内で使用されているアクション記述言語は、Ｅｘｅｃｕｔａｂｌｅ  ＵＭＬ向けのものに改良を加えたものである。但し、本発明の実施の形態３にかかるアクション記述言語は、Ｅｘｅｃｕｔａｂｌｅ  ＵＭＬを基礎としなくても構わない。
【０１１９】
また、図１１内ＤＭＴセッションとは、情報系ＥＣＵ上のアプリケーションと車載組み込み機器１０３内のＤＭＴ管理アプリ４１６との間で１対１に張られる、仮想的な接続の単位を指す。例えば、開発用ＰＣ１０１により生成された車載診断プログラムとＤＭＴ管理アプリ４１６との間で、ルートノードが"./Device"であるＤＭＴセッションが確立されると、配下のノード（"./Device/NodeA"など）へのＤＭＴイベントの発生が許可される。
【０１２０】
図１１は、ＤＭＴのノード"./OMADM/DiagMon/Battery/Level"に対する振る舞いを記述した例であり、処理の流れは下記のようになる。
（１）"./OMADM/DiagMon/Battery"をルートノードとするＤＭＴセッションがオープンされたら、"./OMADM/DiagMon/Battery/Cycle"に記述された値の定周期タイマを起動する。
（２）定周期タイマの割り込み処理で、バッテリ残量の読み出しを行う。
（３）DMTセッションオープン中に、管理センタから、"./OMADM/DiagMon/Battery/Level"に対するＧＥＴ命令が発行されたら、バッテリ残量の値を管理センタに返す。
【０１２１】
次に、図１１中に記載されているアクション記述言語、すなわち、アクション情報について簡単に説明する。まず、「Select Cycle from Node where selected.URL="./OMADM/DiagMon/Baterry/Cycle"」とは、ノードクラスから、URLが"./OMADM/DiagMon/Baterry/Cycle"であるノード"Cycle"を選択することを示す。また、「TIM:TimerStart(Cycle.NodeValue,タイマ割り込み処理中);」とは、定周期タイマを起動することを示す。そして、「generate "DMTセッションオープン状態移行通知"」とは、非同期イベント"DMTセッションオープン状態移行通知"を発行することを示す。
【０１２２】
続いて、情報系ＥＣＵ３２内の車載診断プログラム４２５上で動作するノードＢが、情報系ＥＣＵ３３内の車載診断プログラム４３２上で動作するノードＡに対してＲｅｐｌａｃｅイベント（＝ノードの値を書き換える）を発行する例について、図１２及び図１３のシーケンス図を用いて説明する。
【０１２３】
図１２は、本発明の実施の形態３にかかる情報系ＥＣＵ３３用の車載診断プログラムの処理の流れを示すシーケンス図である。ここでは、情報系ＥＣＵ３１内のＤＭＴ管理アプリ４１６と情報系ＥＣＵ３３内の車載診断プログラム４３２との間のプロセッサ間通信を含む処理を示す。自動追加部分６１は、クラス定義やインスタンス生成、ＤＭＴ管理部へのノードの登録に関する処理である。ＵＭＬベースのＭＤＡでは、自動追加部分６１についてもユーザが記述する必要があった。しかし、本発明の実施の形態３では、実装部分６２の処理のみをアクション情報にて記述するだけでよい。
【０１２４】
図１３は、本発明の実施の形態３にかかる情報系ＥＣＵ３２用の車載診断プログラムの処理の流れを示すシーケンス図である。ここでは、情報系ＥＣＵ３１内のＤＭＴ管理アプリ４１６と情報系ＥＣＵ３２内の車載診断プログラム４２５との間のプロセッサ間通信を含む処理を示す。自動追加部分６３は、クラス定義やインスタンス生成、ＤＭＴ管理部へのノードの登録に関する処理である。ＵＭＬベースのＭＤＡでは、自動追加部分６３についてもユーザが記述する必要があった。しかし、本発明の実施の形態３では、実装部分６４の処理のみをアクション情報にて記述するだけでよい。
【０１２５】
また、通常のＭＤＡでは、情報系ＥＣＵ３３内の車載診断プログラム４３２と情報系ＥＣＵ３２内上の車載診断プログラム４２５のそれぞれに対して、ＵＭＬのモデルを作成しなければならない。しかし、本発明の実施の形態３では、複数の情報系ＥＣＵ上での動作を１個のＤＭＴ上で表現することが可能となる。
【０１２６】
尚、本発明の実施の形態３では、下記の２つのソフトウェア開発手法を用いて、ほぼ同じ構成のソースコードおよびバイナリが生成されるものと仮定する。
（１）ＭＤＡを用いたコード自動生成（実施の形態３では、ＵＭＬのモデルから、オブジェクト指向言語であるＣ＋＋言語のソースコードに変換されるものとする。）
（２）本発明を用いたコード自動生成（実施の形態３では、ＤＭＴベースのモデルから、オブジェクト指向言語であるＣ＋＋言語のソースコードに変換されるものとする。）
【０１２７】
図１４は、本発明の実施の形態３にかかる状態モデル図の例を示す図である。ここでは、あるノードの状態として、「初期状態」及び「Ｒｅｐｌａｃｅイベント処理中」の２つを定義し、それぞれに「ノードＡに値Ｘを設定する」とのアクション情報を定義していることを示す。尚、Ｒｅｐｌａｃｅイベントを受信した場合に、「Ｒｅｐｌａｃｅイベント処理中」に遷移する。つまり、本発明の実施の形態３により図１４に示すようなわずかな量の記述のみで、複雑なシーケンスを伴ったソフトウェアを記述できることを示す。
【０１２８】
図１５は、関連技術により設計した場合のクラス図の例を示す図である。図１５のクラス図は、ノードクラス及びノードＡ及びノードＢとの関係を表したクラス図である。しかし、このクラス図は、ＭＤＡにＤＭＴベースの自動生成を強引に持ち込んだ場合のもので、ＵＭＬのモデリングとしてはあまり望ましくない形となってしまう。
【０１２９】
尚、ＵＭＬのモデリング例としては、本来、図１６のように記述するのが望ましいと考えられる。図１６は、関連技術により設計した場合のUMLモデリングの例を示す図である。この場合、そもそもノードＡ及びノードＢはクラスとして抽出されない。しかし、図１６から自動コード生成可能な振る舞いを記述するには、オブジェクト指向のかなり高度な技術が必要となり、本発明が対象とする課題を解決することができない。
【０１３０】
図１７は、本発明の実施の形態３にかかるＤＭＴを用いたデバイス管理の概念を示す図である。まず、プロトコルアダプタアプリケーション５７１及びＤＭＴ制御アプリケーション５７２により、管理サーバ１０２から無線通信モジュール３４を介して車載組み込み機器１０３内のＤＭＴの各ノードへのアクセスが可能である。また、指定したノードにアクセスがあった場合、イベント通知を受け取ることが可能である。
【０１３１】
また、プラグインアプリケーション５７３は、ノード"./Device/Battery"に割り当てられているバッテリ残量検出アプリケーションである。プラグインアプリケーション５７３は、ノードへのアクセスがあると、イベントが通知される。そのため、管理サーバ１０２や車載組み込み機器１０３内のローカルのアプリケーションは、各ノードに対してＡｄｄ／Ｇｅｔ／Ｒｅｐｌａｃｅ／Ｅｘｅｃを行うことが可能となる。
【０１３２】
以上のことから、本発明の実施の形態３の効果は、以下のとおりである。まず、開発者ではないサービスエンジニアでも、複数の情報系ＥＣＵや制御系ＥＣＵを扱った診断プログラムを簡単に作成することが可能となる。本発明により車載組み込み機器向けにアレンジされた自動コード生成手法を取り入れることにより、各ＥＣＵのシステム依存部分（プログラミング言語、ＯＳなど）の習得が不要となる。また、コーディング工程が省略できる。また、ＯＭＡ  ＤＭや車載診断などの車載固有技術に関する制御Ｉ／Ｆが、「アクション記述部」と連携可能なライブラリとして提供されるため、プログラミングのために、各技術や関連するミドルウエアの仕様を習得する時間を短縮することができる。
【０１３３】
さらに、ＤＭＴのノードの構成及びノードへのアクセスに対する動作のみ知っていればよく、ＯＭＡ  ＤＭの通信シーケンスなどの詳細を知る必要がなくなる。１つのＤＭＴツリーから複数の情報系ＥＣＵのコードを自動生成できるため、情報系ＥＣＵ間の通信を設計及びコーディングする必要がなくなる。また、ノードと情報系ＥＣＵの対応付け、つまり割り当てのみ指定すればよい。
【０１３４】
そして、複数のアプリケーションから異なるアクセス方法で、ＤＭＴの各ノードへのアクセスが行われるような場合においても、１つの手順のみで対応可能となる。ＤＭＴのアクセス方法の違いは、「DMT管理部」で吸収できるためである。また、アクション記述部で、ロールバック処理を全く意識する必要がなくなるという利点もある。
【０１３５】
このように、本発明の実施の形態３により、複数のプロセッサを備え、所定の機能を実現する組み込み機器における広範な専門知識が必要とせずに、当該組み込み機器で実行されるプログラムを容易に生成することができる。
【０１３６】
＜その他の発明の実施の形態＞
ＤＭＴ  Ａｄｍｉｎは、ＯＳＧｉ  Ｒ４  ｍｏｂｉｌｅやＪＳＲ２３２で定義された、ＯＳＧｉに対応したＪａｖａ（登録商標）アプリケーションから、ＤＭＴにアクセスするためのパッケージの仕様である。ＤＭＴ  Ａｄｍｉｎにより、複数のＪａｖａアプリケーションから同一のノードを共有することが可能である。但し、ＤＭＴ  Ａｄｍｉｎは、高機能ではあるが、かなり複雑なＡＰＩである。
【０１３７】
ＩＳＯ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ）化された制御系ＥＣＵ向けのＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ベースの車載診断言語として、ＡＳＡＭ−ＭＣＤ２  ＯＤＸがある。ＡＳＡＭ−ＭＣＤ２  ＯＤＸは、あるコマンドからＫＷＰ２０００などの車載診断プロトコルに変換するルールなどが記載されている。
【０１３８】
本発明により生成されたプログラムを無線経由で組み込み機器内の情報系ＥＣＵへ転送する技術及びログや診断情報を管理センタに送信する技術については、任意の無線通信技術を用いることが可能である。尚、車載向け無線通信サービスとしてＧ−ＢＯＯＫ（登録商標）等がある。但し、Ｇ−ＢＯＯＫ等では、本発明により生成されたプログラムを無線経由で組み込み機器内の情報系ＥＣＵへ転送することはできない。
【０１３９】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、任意の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。
【０１４０】
非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、ＤＶＤ（Digital Versatile Disc）、ＢＤ(Blu-ray(登録商標) Disc)、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、コンピュータプログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１４１】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【０１４２】
（付記１）複数のプロセッサが搭載され、所定の機能を実現する組み込み機器における当該複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報を予め記憶する記憶手段と、
前記組み込み機器における前記所定の機能の構成を複数のノードにより定義した構成情報を生成する構成情報生成手段と、
前記構成情報に定義された複数のノードごとに、ノードの状態と当該状態におけるノードの振る舞いであるアクション情報とを定義したノード状態情報を生成するノード状態情報生成手段と、
前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換する変換手段と、
前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記記憶手段に記憶された前記通信処理情報と、前記変換したプログラムコードとを含めて生成するプログラム生成手段と、
を備えるプログラム生成装置。
【０１４３】
（付記２）前記構成情報生成手段は、各ノードに前記複数のプロセッサのいずれかを割り当てた割当情報を含めて前記構成情報を生成し、
前記プログラム生成手段は、前記構成情報に含まれる割当情報に基づいて、各ノードを割り当てられた前記複数のプロセッサのいずれかに分類して複数の分類後構成情報を生成し、前記生成された複数の分類後構成情報から前記複数のプログラムを生成する
ことを特徴とする付記１に記載のプログラム生成装置。
【０１４４】
（付記３）前記複数のプロセッサのそれぞれに対応したプログラムを生成する複数のモデルコンパイラをさらに備え、
前記プログラム生成手段は、前記分類後構成情報から対応するプロセッサを特定し、特定したプロセッサに対応するモデルコンパイラを選択して、選択したモデルコンパイラを用いて前記分類後構成情報から当該特定したプロセッサで実行可能なプログラムを生成する
ことを特徴とする付記２に記載のプログラム生成装置。
【０１４５】
（付記４）前記プログラム生成手段は、前記複数のプログラムを生成する際に、ノードアクセスに対応する非同期イベントをさらに含めることを特徴とする付記１乃至３のいずれか１項に記載のプログラム生成装置。
【０１４６】
（付記５）前記構成情報生成手段は、前記構成情報としてＤＭＴ（Device Management Tree）を用いることを特徴とする付記１乃至４のいずれか１項に記載のプログラム生成装置。
【０１４７】
（付記６）前記ノード状態情報生成手段は、前記ノード状態情報に、前記複数のプロセッサ上で動作するアプリケーションの処理結果を加工するルールを関連付けることを特徴とする付記１乃至５のいずれか１項に記載のプログラム生成装置。
【０１４８】
（付記７）前記ノード状態情報生成手段は、前記ノード状態情報に、前記組み込み機器に搭載され、かつ、前記複数のプロセッサにより制御される制御装置との通信を行うためのルールを関連付けることを特徴とする付記１乃至６のいずれか１項に記載のプログラム生成装置。
【０１４９】
（付記８）複数のプロセッサが搭載され、所定の機能を実現する組み込み機器における当該所定の機能の構成を複数のノードにより定義した構成情報を生成し、
前記構成情報に定義された複数のノードごとに、ノードの状態と当該状態におけるノードの振る舞いであるアクション情報とを定義したノード状態情報を生成し、
前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換し、
前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報と、前記変換したプログラムコードとを含めて生成する、
プログラム生成方法。
【０１５０】
（付記９）各ノードに前記複数のプロセッサのいずれかを割り当てた割当情報を含めて前記構成情報を生成し、
前記構成情報に含まれる割当情報に基づいて、各ノードを割り当てられた前記複数のプロセッサのいずれかに分類して複数の分類後構成情報を生成し、前記生成された複数の分類後構成情報から前記複数のプログラムを生成する
ことを特徴とする付記８に記載のプログラム生成方法。
【０１５１】
（付記１０）前記分類後構成情報から対応するプロセッサを特定し、
前記複数のプロセッサのそれぞれに対応したプログラムを生成する複数のモデルコンパイラの中から、前記特定したプロセッサに対応するモデルコンパイラを選択し、
前記選択したモデルコンパイラを用いて前記分類後構成情報から前記特定したプロセッサで実行可能なプログラムを生成する
ことを特徴とする付記９に記載のプログラム生成方法。
【０１５２】
（付記１１）前記複数のプログラムを生成する際に、ノードアクセスに対応する非同期イベントをさらに含めることを特徴とする付記８乃至１０のいずれか１項に記載のプログラム生成方法。
【０１５３】
（付記１２）前記構成情報としてＤＭＴ（Device Management Tree）を用いることを特徴とする付記８乃至１１のいずれか１項に記載のプログラム生成方法。
【０１５４】
（付記１３）前記ノード状態情報に、前記複数のプロセッサ上で動作するアプリケーションの処理結果を加工するルールを関連付けることを特徴とする付記８乃至１２のいずれか１項に記載のプログラム生成方法。
【０１５５】
（付記１４）前記ノード状態情報に、前記組み込み機器に搭載され、かつ、前記複数のプロセッサにより制御される制御装置との通信を行うためのルールを関連付けることを特徴とする付記８乃至１３のいずれか１項に記載のプログラム生成方法。
【０１５６】
（付記１５）複数のプロセッサが搭載され、所定の機能を実現する組み込み機器における当該所定の機能の構成の複数のノードによる定義を受け付け、
当該受け付けた定義に基づき構成情報を生成し、
前記構成情報に含まれる複数のノードのいずれかの指定を受け付け、
当該指定されたノードにおけるノードの状態と当該状態におけるノードの振る舞いであるアクション情報との定義を受け付け、
当該受け付けた前記ノードの状態と前記アクション情報途に基づきノード状態情報を生成し、
前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換し、
予め記憶部に格納された前記複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報を取得し、
前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記取得した通信処理情報と、前記変換したプログラムコードとを含めて生成する、
処理をコンピュータに実行させるプログラム生成プログラム。
【０１５７】
（付記１６）各ノードに前記複数のプロセッサのいずれかを割り当てた割当情報を含めて前記構成情報を生成し、
前記構成情報に含まれる割当情報に基づいて、各ノードを割り当てられた前記複数のプロセッサのいずれかに分類して複数の分類後構成情報を生成し、前記生成された複数の分類後構成情報から前記複数のプログラムを生成する
ことを特徴とする付記１５に記載のプログラム生成プログラム。
【０１５８】
（付記１７）前記分類後構成情報から対応するプロセッサを特定し、
前記複数のプロセッサのそれぞれに対応したプログラムを生成する複数のモデルコンパイラの中から、前記特定したプロセッサに対応するモデルコンパイラを選択し、
前記選択したモデルコンパイラを用いて前記分類後構成情報から前記特定したプロセッサで実行可能なプログラムを生成する
ことを特徴とする付記１６に記載のプログラム生成プログラム。
【０１５９】
（付記１８）前記複数のプログラムを生成する際に、ノードアクセスに対応する非同期イベントをさらに含めることを特徴とする付記１５乃至１７のいずれか１項に記載のプログラム生成プログラム。
【０１６０】
（付記１９）前記構成情報としてＤＭＴ（Device Management Tree）を用いることを特徴とする付記１５乃至１８のいずれか１項に記載のプログラム生成プログラム。
【０１６１】
（付記２０）前記ノード状態情報に、前記複数のプロセッサ上で動作するアプリケーションの処理結果を加工するルールを関連付けることを特徴とする付記１５乃至１９のいずれか１項に記載のプログラム生成プログラム。
【０１６２】
（付記２１）前記ノード状態情報に、前記組み込み機器に搭載され、かつ、前記複数のプロセッサにより制御される制御装置との通信を行うためのルールを関連付けることを特徴とする付記１５乃至２０のいずれか１項に記載のプログラム生成プログラム。
【０１６３】
（付記２２）外部と無線通信可能なプロセッサを含む複数のプロセッサを備え、所定の機能を実現する組み込み機器と、
前記複数のプロセッサ間の通信処理が実装されたプログラムモジュールである通信処理情報を予め記憶する記憶手段と、
前記組み込み機器における前記所定の機能の構成を複数のノードにより定義した構成情報を生成する構成情報生成手段と、
前記構成情報に定義された複数のノードごとに、ノードの状態と当該状態におけるノードの振る舞いであるアクション情報とを定義したノード状態情報を生成するノード状態情報生成手段と、
前記ノード状態情報に定義されたアクション情報から、当該ノードの状態におけるノードの振る舞いに対応する処理を実現するプログラムコードへ変換する変換手段と、
前記構成情報に基づいて、前記複数のプロセッサごとに対応した複数のプログラムを、前記記憶手段に記憶された前記通信処理情報と、前記変換したプログラムコードとを含めて生成するプログラム生成手段と、
無線通信により前記組み込み機器に対して制御を行う遠隔制御手段と、
を備える遠隔管理装置と、を備え、
前記遠隔制御手段は、前記生成した複数のプログラムを前記組み込み機器へ送信し、
前記組み込み機器は、前記遠隔管理装置から受信した複数のプログラムのそれぞれを、前記複数のプロセッサのうち対応するプロセッサにおいて実行させ、
前記複数のプロセッサは、各プロセッサが実行するプログラムに含まれる前記変換したプログラムコードに基づく処理を行い、当該プログラムに含まれる通信処理に基づいて、プロセッサ間の通信を行う
ことを特徴とする組み込み機器の遠隔管理システム。
【符号の説明】
【０１６４】
１  プログラム生成装置
１１  記憶部
１１１  通信処理情報
１２  構成情報生成部
１３  ノード状態情報生成部
１４  変換部
１５  プログラム生成部
１０  遠隔管理システム
１ａ  遠隔管理装置
１６  遠隔制御部
２  組み込み機器
２１ａ  プロセッサ
２１ｂ  プロセッサ
２１ｎ  プロセッサ
１００  遠隔車載診断システム
１０１  開発用ＰＣ
１１０  ＣＰＵ
１２０  ＲＡＭ
１３０  ＲＯＭ
１４０  ＩＦ部
１５０  ハードディスク
１５１  ＯＳ
１５２  ＧＵＩ開発ツール
１５３  ＤＭＴ管理部
１５４  ライブラリ
１５５  フィルタリングルール
１５６  変換ルール
１５７ａ  モデルコンパイラ
１５７ｂ  モデルコンパイラ
１５７ｃ  モデルコンパイラ
１５８ａ  ソースプログラム
１５８ｂ  ソースプログラム
１５８ｃ  ソースプログラム
１５９ａ  機械語プログラム
１５９ｂ  機械語プログラム
１５９ｃ  機械語プログラム
１０２  管理サーバ
１０３  車載組み込み機器
３１  情報系ＥＣＵ
３２  情報系ＥＣＵ
３３  情報系ＥＣＵ
３４  無線通信モジュール
３５  センサー
３６  センサー
３７  制御系ＥＣＵ
３８  制御系ＥＣＵ
ｎ１  車載ＬＡＮ
ｎ２  車載ＬＡＮ
４１１  デバイス管理プロトコルアダプタ
４１２  ＤＭＴアクセスＩＦ
４１３  アプリケーション
４１４  ＤＭＴアクセスＩＦ
４１５  車載診断プログラム
４１６  ＤＭＴ管理アプリ
４１７  アプリケーション
４１８  アプリケーション
４２１  アプリケーション
４２２  ＤＭＴアクセスＩＦ
４２３  アプリケーション
４２４  ＤＭＴアクセスＩＦ
４２５  車載診断プログラム
４３１  ＤＭＴアクセスＩＦ
４３２  車載診断プログラム
ｄ５  ＤＭＴ
ｄ５１  分割ＤＭＴ
ｄ５２  分割ＤＭＴ
５１  車載診断プログラム
５１１  ＤＭＴアクセスＩＦ
５１２  ＤＭＴ管理部
５１２ａ  ノードデータ管理部
５１３  アクション記述部
５１４  ログフィルタリング処理部
５１５  フィルタリングルール
５１６  変換ルール
５１７  制御系ＥＣＵ車載診断プロトコル変換部
５２１  ＤＭＴアクセスＩＦ
５２２  アプリケーション
５３  ライブラリ関数
５４１  Ｄ−ＰＤＵ  ＡＰＩ
５４２  ＭＶＣＩ  Ｐｒｏｔｏｃｏｌ  Ｓｔａｃｋ  ＆  車載ＬＡＮドライバ
５５１  制御系ＥＣＵ
５５２  制御系ＥＣＵ
５５３  制御系ＥＣＵ
５６  ログ収集機能
５７１  プロトコルアダプタアプリケーション
５７２  ＤＭＴ制御アプリケーション
５７３  プラグインアプリケーション
６１  自動追加部分
６２  実装部分
６３  自動追加部分
６４  実装部分
ＳＣ１  ソースコード
ＳＣ２  ソースコード
【図１】
0005605109.tif 000002
【図２】
0005605109.tif 000003
【図３】
0005605109.tif 000004
【図４】
0005605109.tif 000005
【図５】
0005605109.tif 000006
【図６】
0005605109.tif 000007
【図７】
0005605109.tif 000008
【図８】
0005605109.tif 000009
【図９】
0005605109.tif 000010
【図１０】
0005605109.tif 000011
【図１１】
0005605109.tif 000012
【図１２】
0005605109.tif 000013
【図１３】
0005605109.tif 000014
【図１４】
0005605109.tif 000015
【図１５】
0005605109.tif 000016
【図１６】
0005605109.tif 000017
【図１７】
0005605109.tif 000018
【図１８】
0005605109.tif 000019
【図１９】
0005605109.tif 000020