(57)【特許請求の範囲】
【請求項１】
複数のデバイスと接続するバスを擬似化するバス擬似化装置であって、
前記デバイスを擬似化した擬似デバイスに対応するアプリケーションからの呼出しに応じて、前記擬似デバイスのアプリケーション名に対する通信ハンドルを取得する受信タスクを作成するための関数を含むアプリケーションインターフェースと、
前記関数に従って作成された受信タスクが取得した通信ハンドルと、当該受信タスクを作成するための関数を呼出した擬似デバイスに対応するアプリケーションのアプリケーション名とが関連付けて格納される通信ハンドル管理テーブルと、
一方の擬似デバイスに対応するアプリケーションからの呼出しに応じて作成された受信タスクが取得した通信ハンドルと、当該一方の擬似デバイスに対応するアプリケーション名とを関連付けて前記通信ハンドル管理テーブルに格納した後に、他方の擬似デバイスから、前記一方の擬似デバイスへデータの転送を要求するデータ転送要求を前記一方の擬似デバイスに対応するアプリケーション名とともに受信すると、前記受信したアプリケーション名に合致するアプリケーション名を前記通信ハンドル管理テーブルから検索し、検索されたアプリケーション名に対応する通信ハンドルを用いて、前記一方の擬似デバイスに対応するアプリケーションの呼出しに応じて作成された受信タスクにデータを送信する擬似バスマネージャとを備えたバス擬似化装置。
【請求項２】
前記一方の擬似デバイスへデータの転送を要求した他方の擬似デバイスに対応するアプリケーションのアプリケーション名と割り込み関数のポインタとが関連付けて格納される割込み関数管理テーブルをさらに備え、
前記一方の擬似デバイスは、前記他方の擬似デバイスから、前記データ転送要求とともに前記他方の擬似デバイスに対応するアプリケーションのアプリケーション名を受信すると、前記割込み関数管理テーブルを検索し、前記他方の擬似デバイスに対応するアプリケーションのアプリケーション名に関連付けた割り込み関数のポインタに対応する割込み関数を呼出す処理を実行する請求項１記載のバス擬似化装置。
【請求項３】
前記割込み関数管理テーブルには、さらに前記他方の擬似デバイスに所定機能を公開するための公開機能関数のポインタと前記公開機能関数がアプリケーション名として関連付けて格納され、
前記擬似バスマネージャは、前記他方の擬似デバイスから、前記データ転送要求とともにアプリケーション名として前記公開機能関数の名称を受信すると、前記割込み関数管理テーブルを検索し、前記公開機能関数の名称に関連付けた公開機能関数のポインタに対応する公開機能関数を実行する請求項２記載のバス擬似化装置。
【請求項４】
前記データの転送先の一方の擬似デバイスに対応するアプリケーション名と前記転送先を変更するための擬似デバイスに対応するアプリケーション名とが関連付けて格納される転送管理テーブルをさらに備え、
前記擬似バスマネージャは、他方の擬似デバイスから、一方の擬似デバイスへデータの転送を要求するデータ転送要求を前記一方の擬似デバイスに対応するアプリケーション名とともに受信すると、前記転送管理テーブルから前記受信したアプリケーション名を検索し、前記受信したアプリケーション名に関連付けたアプリケーション名に対応する擬似デバイスに対応するアプリケーションの呼出しに応じて作成された受信タスクにデータを送信する請求項１記載のバス擬似化装置。
【請求項５】
擬似デバイス間の通信経路を定義する通信定義ファイルをさらに備え、
前記転送管理テーブルは、前記通信定義ファイル基づいて作成される請求項４記載のバス擬似化装置。
【請求項６】
前記擬似デバイスに対応するアプリケーションのアプリケーション名と、同報通信のための他の擬似デバイスに対応するアプリケーションのアプリケーション名とが関連付けて格納される同報送信管理テーブルをさらに備え、
前記擬似バスマネージャは、他方の擬似デバイスから、一方の擬似デバイスへデータの転送を要求するデータ転送要求を前記一方の擬似デバイスに対応するアプリケーションのアプリケーション名とともに受信すると、前記同報送信管理テーブルを検索し、前記一方の擬似デバイスに対応するアプリケーションのアプリケーション名と関連付けた同報通信のアプリケーション名に対応する前記他の擬似デバイスのアプリケーションの呼出しに応じて作成された受信タスクにデータを送信する請求項１記載のバス擬似化装置。
【請求項７】
前記擬似デバイスが異なる情報処理装置上にある場合に、前記情報処理装置間の通信は、前記情報処理装置上の擬似バスマネージャ間の通信によって行う請求項１記載のバス擬似化装置。
【請求項８】
コンピュータを請求項１記載のバス擬似化装置として機能させるバス擬似化プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサや周辺機器などの間を接続するバスを擬似化するバス擬似化装置及びバス擬似化プログラムに関するものである。
【０００２】
【従来の技術】
例えば特開平７−１２１４０５号公報などには、ソフトウェアのテストやデバッグ作業を行うために、実際にソフトウェアが稼働するターゲットマシンをそれとは異なる汎用計算機で擬似化する技術が記載されている。
【０００３】
この公報に記載されているＭＰＵシミュレータは、マイクロプロセッサを擬似化するものであり、Ｉ／Ｏモデルは、入出力装置を擬似化するものである。また、Ｉ／Ｏモニタは、マイクロプロセッサと入出力装置とを接続する信号線群を擬似化するものである。
【０００４】
これらＭＰＵシミュレータ、Ｉ／Ｏモデル及びＩ／Ｏモニタは、別計算機や別プロセスで動作する。従って、マイクロプロセッサ及び入出力装置間の信号の授受を擬似化するためには、ＭＰＵシミュレータ、Ｉ／Ｏモデル及びＩ／Ｏモニタ間で計算機間通信又はプロセス間通信を行うことになる。計算機間通信又はプロセス間通信には、例えばソケット通信が用いられる。
【０００５】
【発明が解決しようとする課題】
しかしながら、ＭＰＵシミュレータ、Ｉ／Ｏモデル及びＩ／Ｏモニタに個別にソケット通信などの手続きを実装すると、マイクロプロセッサ及び入出力装置間の接続関係に各実装が依存してしまう。このことは、ＭＰＵシミュレータ等の作成効率に悪影響を与える。さらに、ＭＰＵシミュレータ、Ｉ／Ｏモデル及びＩ／Ｏモニタを別計算機や別プロセスで動作させるようにしていても、接続関係の設計などに変更があると、ＭＰＵシミュレータ、Ｉ／Ｏモデル及びＩ／Ｏモニタを再利用してその変更に対応するのは困難になる。同様に、他のシステム設計に従ったものに、ＭＰＵシミュレータ、Ｉ／Ｏモデル及びＩ／Ｏモニタを移植することも困難になる。もちろん、ＭＰＵシミュレータ等の数が増大すれば、それらの困難性は飛躍的に大きくなる。
【０００６】
また、ソケット通信では、通信対象間でクライアントとサーバの関係が生じる。クライアントとサーバの関係が、ＭＰＵシミュレータ、Ｉ／Ｏモデル及びＩ／Ｏモニタ間で交錯すると、起動順序などの影響を受け易くなり、デバック作業等の安定性を損ねる一因となる。
【０００７】
本発明は、このような従来の技術における課題を鑑みてなされたものであり、マイクロプロセッサや周辺機器等を擬似化するプログラムの作成効率、移植効率、再利用率を向上させ、しかもデバッグ作業等の安定性も容易に確保することができるバス擬似化装置及びバス擬似化プログラムを提供することを目的とするものである。
【０００８】
【課題を解決するための手段】
本発明は、上記目的を達成するために以下の手段を採用している。すなわち、本発明のバス擬似化装置は、複数のデバイスと接続するバスを擬似化するバス擬似化装置であって、前記デバイスを擬似化した擬似デバイスに対応するアプリケーションからの呼出しに応じて、前記擬似デバイスのアプリケーション名に対する通信ハンドルを取得する受信タスクを作成するための関数を含むアプリケーションインターフェースと、前記関数に従って作成された受信タスクが取得した通信ハンドルと、当該受信タスクを作成するための関数を呼出した擬似デバイスに対応するアプリケーションのアプリケーション名とが関連付けて格納される通信ハンドル管理テーブルと、一方の擬似デバイスに対応するアプリケーションからの呼出しに応じて作成された受信タスクが取得した通信ハンドルと、当該一方の擬似デバイスに対応するアプリケーション名とを関連付けて前記通信ハンドル管理テーブルに格納した後に、他方の擬似デバイスから、前記一方の擬似デバイスへデータの転送を要求するデータ転送要求を前記一方の擬似デバイスに対応するアプリケーション名とともに受信すると、前記受信したアプリケーション名に合致するアプリケーション名を前記通信ハンドル管理テーブルから検索し、検索されたアプリケーション名に対応する通信ハンドルを用いて、前記一方の擬似デバイスに対応するアプリケーションの呼出しに応じて作成された受信タスクにデータを送信する擬似バスマネージャとを備えたものである。
【０００９】
また、前記一方の擬似デバイスへデータの転送を要求した他方の擬似デバイスに対応するアプリケーションのアプリケーション名と割り込み関数のポインタとが関連付けて格納される割込み関数管理テーブルをさらに備え、前記一方の擬似デバイスは、前記他方の擬似デバイスから、前記データ転送要求とともに前記他方の擬似デバイスに対応するアプリケーションのアプリケーション名を受信すると、前記割込み関数管理テーブルを検索し、前記他方の擬似デバイスに対応するアプリケーションのアプリケーション名に関連付けた割り込み関数のポインタに対応する割込み関数を呼出す処理を実行するようにしてもよい。
【００１０】
また、前記割込み関数管理テーブルには、さらに前記他方の擬似デバイスに所定機能を公開するための公開機能関数のポインタと前記公開機能関数がアプリケーション名として関連付けて格納され、前記擬似バスマネージャは、前記他方の擬似デバイスから、前記データ転送要求とともにアプリケーション名として前記公開機能関数の名称を受信すると、前記割込み関数管理テーブルを検索し、前記公開機能関数の名称に関連付けた公開機能関数のポインタに対応する公開機能関数を実行するようにしてもよい。
【００１１】
また、前記データの転送先の一方の擬似デバイスに対応するアプリケーション名と前記転送先を変更するための擬似デバイスに対応するアプリケーション名とが関連付けて格納される転送管理テーブルをさらに備え、前記擬似バスマネージャは、他方の擬似デバイスから、一方の擬似デバイスへデータの転送を要求するデータ転送要求を前記一方の擬似デバイスに対応するアプリケーション名とともに受信すると、前記転送管理テーブルから前記受信したアプリケーション名を検索し、前記受信したアプリケーション名に関連付けたアプリケーション名に対応する擬似デバイスに対応するアプリケーションの呼出しに応じて作成された受信タスクにデータを送信する。
【００１２】
また、擬似デバイス間の通信経路を定義する通信定義ファイルをさらに備え、
前記転送管理テーブルは、前記通信定義ファイル基づいて作成されるようにしてもよい。
【００１３】
また、前記擬似デバイスに対応するアプリケーションのアプリケーション名と、同報通信のための他の擬似デバイスに対応するアプリケーションのアプリケーション名とが関連付けて格納される同報送信管理テーブルをさらに備え、前記擬似バスマネージャは、他方の擬似デバイスから、一方の擬似デバイスへデータの転送を要求するデータ転送要求を前記一方の擬似デバイスに対応するアプリケーションのアプリケーション名とともに受信すると、前記同報送信管理テーブルを検索し、前記一方の擬似デバイスに対応するアプリケーションのアプリケーション名と関連付けた同報通信のアプリケーション名に対応する前記他の擬似デバイスのアプリケーションの呼出しに応じて作成された受信タスクにデータを送信するようにしてもよい。
【００１４】
また、前記擬似デバイスが異なる情報処理装置上にある場合に、前記情報処理装置間の通信は、前記情報処理装置上の擬似バスマネージャ間の通信によって行うようにしてもよい。
【００１５】
本発明のバス擬似化プログラムは、コンピュータを請求項１記載のバス擬似化装置として機能させる。
【００１７】
また、複数の前記被接続装置プログラムが異なる情報処理装置上で動作している場合に、前記通信仲介手段は、各情報処理装置にそれぞれ配置され、前記情報処理装置間の通信は、前記通信仲介手段間で行う。
【００１８】
これによって、前記被接続装置プログラムは、前記情報処理装置間の通信に必要なＩＰアドレスなどの情報に依存しなくなる。その結果、複数の前記被接続装置プログラムが異なる情報処理装置上で動作している場合でも、前記プログラムの作成効率、移植効率、再利用率を向上させることが可能となる。
【００１９】
また、バス擬似化プログラムは、コンピュータのＣＰＵやメモリといったハードウェアと協働して、コンピュータを上述のバス擬似化装置として機能させる。このバス擬似化プログラムは、ＣＤＲＯＭなどのコンピュータ読取可能な記録媒体に記憶された状態で流通することもある。
【００２０】
【発明の実施の形態】
以下に本発明の実施の形態を図面に従って説明する。
【００２１】
例えば図２に示すマイコンボードＡ０では、マイクロプロセッサ１がリモコン２ａ用のデバイス２とバス３を通じて接続されている。この実施の形態では、本発明は、このバス３を擬似化するバス擬似化プログラムに現れる。このバス擬似化プログラムは、図１に示すようなバス擬似化装置３０として少なくともコンピュータを機能させる。
【００２２】
バス擬似化装置３０において、通信仲介手段３１は、擬似マイコン１０及び擬似デバイス２０と独立しており、擬似マイコン１０と擬似デバイス２０との通信を仲介する。また、インターフェイス提供手段３２は、擬似マイコン１０及び擬似デバイス２０の通信部１１、２１それぞれに、通信仲介手段３１と通信を行うための共通のアプリケーションインターフェイスを提供する。
【００２３】
擬似マイコン１０は、バス３に接続された各種のデバイスを擬似化するためのプログラムの一例であり、マイクロプロセッサ１を擬似化した環境で動作するマイコンファームウェア１２を含む。このマイコンファームウェア１２は、デバッガ４０を用いてデバッグされる。また、擬似マイコン１０は、マイコンファームウェア１２に加えて、通信部１１を有している。擬似マイコン１０は、この通信部１１を用いて通信仲介手段３１の仲介を受け、擬似デバイス２０と通信を行う。
【００２４】
擬似デバイス２０は、バス３に接続された各種のデバイスを擬似化するためのプログラムの他の例であり、リモコン２ａ用のデバイス２を擬似化する仮想デバイス２２を有する。仮想デバイス２２は、リモコン２ａのキー割り当て等のデータ２３を参照しながら、対象となるデバイス２を擬似化する。また、擬似デバイス２０は、仮想デバイス２２やデータ２３に加えて、通信部２１を有している。擬似デバイス２０は、この通信部２１を用いて通信仲介手段３１の仲介を受け、擬似デバイス１０と通信を行う。
【００２５】
そして、例えばバス擬似化装置３０が備える通信仲介手段３１の機能は、コンピュータ上ではプログラムとして、インターフェイス提供手段３２の機能は、擬似マイコン１０及び擬似デバイス２０それぞれが利用可能な共有ライブラリとして実装される。さらに、通信仲介手段３１に対応するプログラム（以下、擬似バスマネージャという）、擬似マイコン１０及び擬似デバイス２０は、これらのプログラムが同一のコンピュータ上で動作するか否かにかかわらず、互いに独立して実装される。
【００２６】
（実施の形態１）
ここでは、擬似バスマネージャ、擬似マイコン１０及び擬似デバイス２０が、同一のコンピュータ上で動作しているものとする。各プログラム間の通信は、メモリ共有などによって行えばよい。
【００２７】
例えば図３に示すように、擬似バスマネージャ、擬似マイコン１０及び擬似デバイス２０からなる擬似マイコンボードＡ１の各プログラムは、コンピュータのＯＳ(Operating System)によって、幾つかのタスクとして扱われる。
【００２８】
図３では、図２に示した実際のマイコンボードＡ０に合わせて、通信を行う擬似マイコン１０、擬似バスマネージャ及び擬似デバイス２０の各プログラムを横方向に隔てて配列している。また、同じプログラムに関連するタスクは縦方向に配列している。
【００２９】
擬似バスマネージャに関連するタスクは、擬似バスマネージャ起動タスク３００、プログラム間通信受信タスク３０１及びプログラム間通信転送タスク３０３である。このうち、プログラム間通信受信タスク３０１及びプログラム間通信転送タスク３０３が他のプログラムとの通信に用いられる。
【００３０】
また、擬似マイコン１０に関連するタスクは、マイコンプログラムアプリケーションタスク１００及びプログラム間通信受信タスク１０１である。マイコンプログラムアプリケーションタスク１００は、擬似マイコン１０のマイコンファームウェア１２に対応する。このマイコンプログラムアプリケーションタスク１００には、マイクロプロセッサ１を擬似化する擬似マイコンライブラリ１００ａがリンクされる。また、擬似マイコン１０に関連するタスクには、前述の共有ライブラリがリンクされており、擬似バススロットアプリケーションインターフェイス１０２を利用することができる。擬似バススロットアプリケーションインターフェイス１０２は、擬似バスマネージャに関連するタスクとの通信に利用される関数を含む。プログラム間通信受信タスク１０１も、この関数を用いて作成される。擬似バスマネージャに関連するタスクとの通信は、マイコンプログラムアプリケーションタスク１００が擬似バススロットアプリケーションインターフェイス１０２から呼出した関数か、プログラム間通信受信タスク１０１によって行われる。すなわち、通信のためにマイコンプログラムアプリケーションタスク１００の呼出した関数及びプログラム間通信受信タスク１０１が擬似マイコン１０の通信部１１に相当する。
【００３１】
また、擬似デバイス２０に関するタスクは、擬似デバイスアプリケーションタスク２００及びプログラム間通信受信タスク２０１である。擬似デバイスアプリケーションタスク２００は、仮想デバイス２２に対応する。さらに、擬似デバイス２０に関連するタスクにも、上述の共有ライブラリがリンクされており、擬似デバイス２０に関連するタスクは、擬似バススロットアプリケーションインターフェイス２０２を利用することができる。擬似バススロットアプリケーションインターフェイス２０２は、擬似バススロットアプリケーションインターフェイス１０２と同じものである。プログラム間通信受信タスク２０１も、擬似バススロットアプリケーションインターフェイス２０２の関数を用いて作成される。擬似バスマネージャに関連するタスクとの通信は、擬似デバイスアプリケーションタスク２００の呼出した関数か、プログラム間通信受信タスク２０１によって行われる。すなわち、通信のために擬似デバイスアプリケーションタスク２００の呼出した関数及びプログラム間通信受信タスク２０１が擬似デバイス２０の通信部２１に相当する。
【００３２】
さらに、各プログラム間の通信は、バス３を擬似化するものであり、擬似化された擬似バス３Ｄは、プログラム間通信を行うためのプログラム間通信受信タスク１０１、２０１、３０１、プログラム間通信転送タスク３０３、及び擬似バススロットアプリケーションインターフェイス１０２、２０２の関数によって構成されることになる。
【００３３】
さて、擬似マイコンボードＡ１に関連する上述のタスクのうち、最初に起動するタスクは、起動バスマネージャのメインタスクである擬似バスマネージャ起動タスク３００である。
【００３４】
起動した擬似バスマネージャ起動タスク３００は、図３で破線太矢印Ｙ１を用いて示している通り、プログラム間通信受信タスク３０１を作成する。なお、図３中の矢印Ｙ１乃至Ｙ７は起動時における作成、接続要求及び関数呼出しのいずれかの主体と客体の関係を表す。破線太矢印Ｙ１、Ｙ３、Ｙ６は作成に関するもの、実線太矢印Ｙ２、Ｙ５は関数呼出しに関するもの、実線細矢印Ｙ４、Ｙ７は接続要求に関するものである。また、符号Ｙに続く数字は、起動時に行われる順序に従う。
【００３５】
プログラム間通信受信タスク３０１は、他のプログラム（ここでは擬似マイコン１０及び擬似デバイス２０）からのイベントを受信し、そのイベントに応じた処理を行うためのタスクである。
【００３６】
ここで、図４はプログラム間通信受信タスク３０１の動作手順を表すフローチャートである。
【００３７】
図４に示すように、プログラム間通信受信タスク３０１は、まずメモリ上のプログラム間通信ハンドル管理テーブルを初期化する（Ｓ４０１）。次に、プログラム間通信受信タスク３０１は、ＯＳの提供するプログラム間通信システムに、予約語のバスマネージャ名で、プログラム間通信のサーバ登録を申請する（Ｓ４０２）。そして、プログラム間通信システムからのデータ受信待ち状態になる（Ｓ４０３）。
【００３８】
プログラム間通信受信タスク３０１がデータ受信待ち状態になると、例えば次に擬似マイコン１０のメインタスクであるマイコンプログラムアプリケーションタスク１００が起動する。起動したマイコンプログラムアプリケーションタスク１００は、指定のスロットアプリケーション名を添付して、図３で実線太矢印Ｙ２を用いて示している通り、擬似バススロットアプリケーションインターフェイス１０２からプログラム間通信タスク開始関数を呼出す。
【００３９】
ここで、図５はプログラム間通信タスク開始関数の動作手順を表すフローチャートである。
【００４０】
図５に示すように、プログラム間通信タスク開始関数は、まず割込み関数管理テーブル（の全項目）を初期化する（Ｓ５０１）。次に、プログラム間通信タスク開始関数は、図３で破線太矢印Ｙ３を用いて示している通り、プログラム間通信受信タスク１０１を作成する（Ｓ５０２）。
【００４１】
ここで、図６はプログラム間通信受信タスク１０１の動作手順を表すフローチャートである。
【００４２】
図６に示すように、プログラム間通信受信タスク１０１は、ＯＳの提供するプログラム間通信システムに、指定のスロットアプリケーション名で、プログラム間通信のサーバ登録を申請し、プログラム間通信ハンドルを取得する（Ｓ６０１）。スロットアプリケーション名は、擬似バススロットアプリケーションインターフェイス１０２、２０２を利用する各プログラムに固有の名称であり、例えば擬似マイコンを表す名称は「micon」と与えられる。このスロットアプリケーション名に対して取得されるプログラム間通信ハンドルは例えば「handle＿micon」である。次に、プログラム間通信受信タスク１０１は、当該スロットアプリケーション名を添付して、図３で実線細矢印Ｙ４を用いて示している通り、プログラム間通信受信タスク３０１に対して接続要求を行う（Ｓ６０２）。
【００４３】
プログラム間通信受信タスク１０１からの接続要求を受信すると、擬似バスマネージャのプログラム間通信受信タスク３０１は、受信タイプの判別を行う（Ｓ４０４）。
【００４４】
イベントの受信タイプには、プログラム間通信終了、データ受信、接続、切断という４つのタイプがある。この場合の受信タイプは接続である。受信タイプが接続であれば、プログラム間通信受信タスク３０１は、プログラム間通信ハンドル登録関数を呼出し（Ｓ４０７１）、接続に関する処理を終了する（Ｓ４０７２）。この場合のプログラム間通信ハンドル登録関数の引数には、接続要求に添付された「micon」というスロットアプリケーション名が含まれる。
【００４５】
ここで、図７はプログラム間通信ハンドル登録関数の動作手順を表すフローチャートである。
【００４６】
図７に示すように、プログラム間通信ハンドル登録関数は、まずプログラム間通信ハンドル管理テーブルから、接続要求に添付されたスロットアプリケーション名と合致するスロットアプリケーション名を検索する（Ｓ７０１）。プログラム間通信ハンドル管理テーブルは、図８（ａ）に示すように、スロットアプリケーション名とプログラム間通信ハンドルを関連付けるテーブルである。
【００４７】
合致するスロットアプリケーション名が検索された場合、プログラム間通信ハンドル登録関数は、当該スロットアプリケーション名に、接続要求をなしたプログラム間通信受信タスク１０１のプログラム間通信ハンドルをセットし直し（Ｓ７０２）、検索処理を終了する（Ｓ７０３）。一方、合致するスロットアプリケーション名が検索されなかった場合、スロットアプリケーション名がプログラム間通信ハンドル管理テーブルから発見できないから（Ｓ７０４）、プログラム間通信ハンドル登録関数は、プログラム間通信ハンドル管理テーブルに未使用の項目があるか否かを検索する（Ｓ７０５）。未使用の項目が検索された場合、プログラム間通信ハンドル登録関数は、当該未使用の項目にスロットアプリケーション名と接続要求元のプログラム間通信ハンドルをセットし（Ｓ７０６）、処理を終了する（Ｓ７０７）。
【００４８】
このとき、プログラム間通信ハンドル管理テーブルは、例えば図８（ｂ）に示すように、擬似マイコンを表す「micon」というスロットアプリケーション名に
対して「handle＿micon」というプログラム間通信ハンドルを関連付けるものとなる。
【００４９】
このようにしてプログラム間通信受信タスク３０１に対するプログラム間通信受信タスク１０１の接続がなされる一方、擬似マイコン１０のプログラム間通信受信タスク１０１は、プログラム通信システムからのデータ受信待ち状態になる（Ｓ６０３）。
【００５０】
データ受信待ち状態では、プログラム間通信受信タスク１０１も、イベントの受信タイプの判別を行うが（Ｓ６０４）、受信タイプは、プログラム間通信終了だけの場合もある。他のプログラム（ここでは、擬似デバイス２０）からの割込みを受け付ける場合には、受信タイプに、データ受信が含まれる。
【００５１】
この場合、起動したマイコンプログラムアプリケーションタスク１００は、プログラム間通信タスク開始関数だけでなく、擬似バススロットアプリケーションインターフェイス１０２から割込み関数設定関数も呼出す。この呼出しの際には、送信元アプリケーション名、割込み関数ポインタが添付される。割込み関数設定関数は、データ受信時に用いられる割込み関数１００ｉを割込み関数管理テーブルに登録する。割込み関数管理テーブルは、図９（ａ）に示すように、送信元アプリケーション名と割込み関数を指す割込み関数ポインタとを関連付けるテーブルである。送信元アプリケーション名は、データ送信元のスロットアプリケーション名である。
【００５２】
ここで、図１０に割込み関数設定関数の動作手順を表すフローチャートを示す。
【００５３】
図１０に示すように、割込み関数設定関数は、割込み関数管理テーブルの全ての項目を検索し、添付された送信元アプリケーション名に合致する送信元アプリケーション名が既にセットされているか否かを各項目について判別する（Ｓ１００１）。送信元アプリケーション名が既にセットされている項目がある場合、割込み関数設定関数は、当該項目の割込み関数ポインタを添付されたもので上書きセットして（Ｓ１００２）、処理を終了する（Ｓ１００３）。一方、送信元アプリケーション名が既にセットされている項目がない場合、割込み関数設定関数は、割込み関数ポインタのセットされていない未使用の項目があるか否かを判別する（Ｓ１００４）。未使用の項目があると判別した場合、割込み関数設定関数は、当該未使用の項目に、添付された送信元アプリケーション名と割込み関数ポインタをセットして（Ｓ１００５）、処理を終了する（Ｓ１００６）。例えば図９（ｂ）に示すように、この割込み関数管理テーブルでは、擬似デバイス２０を表す「remocon」という送信元アプリケーション名に対して、「receive＿remocon」という割込み関数ポインタが関連付けられる。この割込み関数ポインタが指す割込み関数は、例えば送信データに含まれるチャンネル番号などのデータを受信する。
【００５４】
擬似マイコン１０のプログラム間通信受信タスク１０１がデータ受信待ち状態になると、例えば次に擬似デバイス２０のメインタスクである擬似デバイスアプリケーションタスク２００が起動する。起動した擬似デバイスアプリケーションタスク２００は、指定のスロットアプリケーション名を添付して、図３で実線太矢印Ｙ５を用いて示している通り、擬似スロットアプリケーションインターフェイス２０２からプログラム間通信タスク開始関数を呼出す。擬似スロットアプリケーションインターフェイス２０２は、擬似スロットアプリケーションインターフェイス１０２と同じものであるから、プログラム間通信タスク開始関数が行う手順は、図５で説明したものと同様である。すなわち、プログラム間通信タスク開始関数は、まず割込み関数管理テーブルを初期化する（Ｓ５０１）。次に、プログラム間通信タスク開始関数は、図３で破線太矢印Ｙ６を用いて示している通り、プログラム間通信受信タスク２０１を作成する（Ｓ５０２）。
【００５５】
さらに、このプログラム間通信受信タスク２０１の動作手順も、図６に示したプログラム間通信受信タスク１０１のものと基本的に同様である。すなわち、プログラム間通信受信タスク２０１は、ＯＳの提供するプログラム間通信システムに、指定のスロットアプリケーション名で、プログラム間通信のサーバ登録を申請し、プログラム間通信ハンドルを取得する（Ｓ６０１）。ここで、スロットアプリケーション名は、擬似デバイス２０を表す例えば「remocon」と与えられる。また、このスロットアプリケーション名に対して取得されるプログラム間通信ハンドルは例えば「handle＿remocon」である。次に、プログラム間通信受信タスク２０１は、当該スロットアプリケーション名を添付して、図３で実線細矢印Ｙ７を用いて示している通り、プログラム間通信受信タスク３０１に対して接続要求を行う（Ｓ６０２）。
【００５６】
プログラム間通信受信タスク２０１からの接続要求を受信すると、擬似バスマネージャのプログラム間通信受信タスク３０１は、受信タイプの判別を行う（Ｓ４０４）。
【００５７】
この場合、受信タイプは接続であるから、プログラム間通信受信タスク３０１は、プログラム間通信ハンドル登録関数を呼出す（Ｓ４０７１）。このとき、プログラム間通信ハンドル登録関数の引数には、接続要求に添付された「remocon」というスロットアプリケーション名が含まれる。そして、プログラム間通信ハンドル登録関数によって、プログラム間通信受信タスク１０１の場合と同様に、プログラム間通信ハンドル管理テーブルに、スロットアプリケーション名とプログラム間通信ハンドルがセットされる。プログラム間通信ハンドル管理テーブルは、例えば図８（ｃ）に示すようなものになる。図８（ｃ）の例では、擬似マイコン１０を表す「micon」というスロットアプリケーション名の他に、擬似デバイス２０を表す「remocon」というスロットアプリケーション名がセットされており、この「remocon」というスロットアプリケーション名に、「handle＿remocon」というプログラム通信ハンドルが関連付けられている。
【００５８】
このようにしてプログラム間通信受信タスク３０１に対するプログラム間通信受信タスク２０１の接続がなされる一方、擬似デバイス２０のプログラム間通信受信タスク２０１は、プログラム通信システムからのデータ受信待ち状態になる。データ受信待ち状態において、プログラム間通信受信タスク２０１も、他のプログラム（ここでは、擬似マイコン１０）からの割込みを受け付ける場合には、プログラム間通信受信タスク１０１の場合と同様、割込み関数設定関数が呼出される。割込み関数設定関数は、割込み関数管理テーブルに送信元アプリケーション名と割込み関数２００ｉの割込み関数ポインタをセットするが、この割込み関数管理テーブルは、プログラム間通信受信タスク１０１とは別個に設けられるものである。この割込み関数管理テーブルでは、例えば図９（ｃ）に示すように、擬似マイコン１０を表す「micon」という送信元アプリケーション名に対して、「receive＿micon」という割込み関数ポインタが関連付けられる。
【００５９】
上述のようにして擬似デバイス２０のプログラム間通信受信タスク２０１も擬似バスマネージャのプログラム間通信受信タスク３０１に接続されると、擬似マイコンボードＡ１の起動は完了し、擬似バス３Ｄを介した各プログラム間の通信が可能な状態となる。なお、この時点では、図３に示したプログラム間通信転送タスク３０３は作成されていない。プログラム間通信転送タスク３０３が作成されるのは、プログラム間通信受信タスク３０１がデータ受信待ち状態にある場合に、擬似マイコン１０や擬似デバイス２０からのデータ送信要求やデータ自体が受信され、受信タイプがデータ受信であるとされたときである。
【００６０】
次に、擬似デバイス２０からデータが出力されることを契機として擬似マイコン１０が当該データを受信する場合の手順について説明する。この場合、データ通信は非同期データ送信によって実現される。また、この場合、図１１に示す通り、擬似マイコン１０側に割込み関数１００ｉを設定しておけばよく、擬似デバイス２０側に割込み関数２００ｉを設定しておく必要はない。
【００６１】
まず擬似デバイス２０の擬似デバイスアプリケーションタスク２００が、送信データを添付して、図１１で実線太矢印Ｙ８を用いて示している通り、擬似バススロットアプリケーションインターフェイス２０２からプログラム間送信関数を呼び出す。ここで、送信データは、送信元アプリケーション名、送信先アプリケーション名、通信タイプ、データなどからなる。このとき、送信元アプリケーション名は擬似デバイスを表す「remocon」であり、送信先アプリケーション名は擬似マイコンを表す「micon」であり、通信タイプは「非同期」である。また、データは例えばリモコン２ａのチャンネル番号などである。
【００６２】
図１２にプログラム間送信関数の動作手順を表すフローチャートを示す。
【００６３】
図１２に示すように、プログラム間送信関数は、通信が同期通信であるか非同期通信であるかを判別し（Ｓ１２０１）、非同期通信であれば、ＯＳのプログラム間通信システムにデータ送信要求を発行し、図１１で実線細矢印Ｙ９を用いて示している通り、擬似バスマネージャのプログラム間通信受信タスク３０１に送信データを送信する（Ｓ１２０３）。
【００６４】
この場合、受信タイプはデータ受信であるから、プログラム間通信受信タスク３０１は、図１１で破線太矢印Ｙ１０を用いて示している通り、プログラム間通信転送タスク３０３を作成する（Ｓ４０６１）。この際、送信データは、プログラム間通信転送タスク３０３に受け渡される。
【００６５】
ここで、図１３はプログラム間通信転送タスクの動作手順を表すフローチャートである。
【００６６】
図１３に示すように、プログラム間通信転送タスク３０３は、まず送信データから送信先アプリケーション名を抽出する（Ｓ１３０１）。次に、プログラム間通信転送タスク３０３は、抽出した送信先アプリケーション名に合致するスロットアプリケーション名をプログラム間通信ハンドル管理テーブルから検索する（Ｓ１３０２）。スロットアプリケーション名が検索された場合には、当該スロットアプリケーション名に関連付けられたプログラム間通信ハンドルを抽出する（Ｓ１３０３）。この場合、送信先アプリケーション名は「micon」であるから、図８（ｃ）に従い、抽出されるプログラム間通信ハンドルは「handle＿micon」になる。送信先アプリケーション名が検索されていれば（Ｓ１３０４）、プログラム間通信転送タスク３０３は、抽出したプログラム間通信ハンドルでもって、プログラム間通信システムにデータ送信要求を発行し、図１１で実線細矢印Ｙ１１を用いて示している通り、擬似マイコン１０のプログラム間通信受信タスク１０１に送信データを送信する（Ｓ１３０５）。
【００６７】
この場合、受信タイプはデータ受信であり、擬似マイコン１０のプログラム間通信受信タスク１０１は、割込み関数呼出処理関数を呼出す（Ｓ６０６）。割込み関数呼出処理関数の引数には、受信した送信データが含まれる。
【００６８】
ここで、図１４は割込み関数呼出処理関数の動作手順を表すフローチャートである。
【００６９】
図１４に示す通り、割込み関数呼出処理関数は、まず送信データから通信タイプを抽出する（Ｓ１４０１）。次に、割込み関数呼出処理関数は、通信タイプが非同期受信、同期受信、同期返信のいずれであるかを判別する（Ｓ１４０２）。この場合、通信タイプは非同期受信であるので、割込み関数は、非同期受信処理関数を呼び出す（Ｓ１４０３）。非同期受信処理関数には、送信データが受け渡される。
【００７０】
ここで、図１５は非同期受信処理関数の動作手順を表すフローチャートである。
【００７１】
図１５に示すように、非同期受信処理関数は、まず送信データから送信元アプリケーション名を抽出する（Ｓ１５０１）。次に、抽出した送信元アプリケーション名と合致する送信元アプリケーション名を割込み関数管理テーブルから検索する（Ｓ１５０２）。合致する送信元アプリケーション名が検索された場合、非同期受信処理関数は、送信元アプリケーション名が合致した項目にある割込み関数ポインタを抽出し、当該割込み関数ポインタの指す割込み関数を取得して（Ｓ１５０３）、検索処理を終了する（Ｓ１５０４）。この場合、送信データから抽出される送信元アプリケーション名は「remocon」であるから、図９（ｂ）の割込み関数管理テーブルから抽出される割込み関数ポインタは、「receive＿remocon()」である。そして、非同期受信処理関数は、割込み関数が取得されていれば（Ｓ１５０５）、図１１で実線太矢印Ｙ１２を用いて示している通り、これを呼出し、当該割込み関数を実行する（Ｓ１５０６）。これによって、擬似デバイス２０からのデータが擬似マイコン１０により受信される。
【００７２】
次に、擬似マイコン１０からのデータ要求に応じて擬似デバイス２０はデータを出力し、擬似マイコン１０がそのデータを受信する手順について説明する。この場合、データ送信は、同期データ送信によって実現される。また、この場合、図１６に示す通り、擬似デバイス２０側に割込み関数２００ｉを設定しておけばよく、擬似マイコン１０側に割込み関数１００ｉを設定しておく必要はない。さらに、擬似バスマネージャでは、２つのプログラム間通信転送タスク３０３ａ、３０３ｂが用いられる。
【００７３】
図１６で実線太矢印Ｙ１３を用いて示している通り、まず擬似マイコン１０のマイコンプログラムアプリケーションタスク１００は、送信データを添付して、プログラム間送信関数を呼出す。ここで、送信データは、送信元アプリケーション名、送信先アプリケーション名、通信タイプ、返信データ情報などからなる。また、例えば送信元アプリケーション名は擬似マイコン１０を表す「micon」であり、送信先アプリケーション名は擬似デバイス２０を表す「remocon」であり、通信タイプは「同期」である。また、返信データ情報は返信データサイズ、返信データメモリなどを表す符号列である。
【００７４】
この場合、通信は同期送信であるから、図１２に示すように、プログラム間送信関数は、同期通信イベントハンドルを作成する（Ｓ１２０２）。さらに、プログラム間通信システムにデータ送信要求を発行し、図１６で実線細矢印Ｙ１４を用いて示している通り、擬似バスマネージャのプログラム間通信受信タスク３０１に送信データを送信する（Ｓ１２０３）。そして、通信が同期通信であるから（Ｓ１２０４）、擬似マイコン１０のマイコンプログラムアプリケーションタスク１００を同期通信イベント待ち状態にする（Ｓ１２０５）。
【００７５】
この場合、受信タイプはデータ受信であるから、擬似バスマネージャのプログラム間通信受信タスク３０１は、図１６で破線太矢印Ｙ１５を用いて示している通り、プログラム間通信転送タスク３０３ｂを作成して（Ｓ４０６１）、処理を終了し（Ｓ４０６２）、データ受信待ち状態に戻る。このプログラム間通信転送タスク３０３ｂは、送信データを擬似デバイス２０に送信するためのものである。
【００７６】
プログラム間通信転送タスク３０３ｂは、図１３に示した手順Ｓ１３０１乃至Ｓ１３０５を行う。この場合、送信先アプリケーション名は擬似デバイス２０を表す「remocon」であるから、図８（ｃ）に示すプログラム通信ハンドル管理テーブルから、「handle＿remocon」というプログラム間通信ハンドルが抽出されることになる。そして、プログラム間通信転送タスク３０３ｂは、このプログラム間通信ハンドルでもってプログラム間通信システムにデータ送信要求を発行し、図１６で実線細矢印１６を用いて示している通り、擬似デバイス２０のプログラム間通信受信タスク２０１に送信データを送信する。
【００７７】
プログラム間通信転送タスク３０３ｂから送信データを受信したとき、受信タイプはデータ受信であるから、プログラム間通信受信タスク２０１は、割込み関数呼出処理関数を呼出す（Ｓ６０６）。割込み関数呼出処理関数は、手順Ｓ１４０１及びＳ１４０２を行う。この場合、通信タイプは同期受信であるから、割込み関数呼出処理関数は、同期受信処理関数を呼出して（Ｓ１４０５）、処理を終了する（Ｓ１４０６）。
【００７８】
ここで、図１７は同期受信処理関数の動作手順を表すフローチャートである。
【００７９】
図１７に示すように、同期受信処理関数は、送信データから返信データ情報、送信元アプリケーション名を抽出する（Ｓ１７０１）。次に、同期受信処理関数は、返信データの要求があるか否かを判別する（Ｓ１７０２）。返信データの要求があれば、返信データサイズ分のメモリを確保する（Ｓ１７０３）。次に、同期受信処理関数は、送信データから抽出した送信元アプリケーション名と合致する送信元アプリケーション名を割込み関数管理テーブルから検索する（Ｓ１７０４）。合致する送信元アプリケーション名が検索された場合、同期受信処理関数は、送信元アプリケーション名が合致した項目にある割込み関数ポインタを抽出し、当該割込み関数ポインタの指す割込み関数を取得して（Ｓ１７０５）、検索処理を終了する（Ｓ１７０６）。この場合、送信データから抽出される送信元アプリケーション名は「micon」であるから、図９（ｃ）の割込み関数管理テーブルから抽出される割込み関数ポインタは、「receive＿micon()」である。そして、同期受信処理関数は、割込み関数が取得されていれば（Ｓ１７０７）、図１６で実線太矢印Ｙ１７を用いて示している通り、これを呼出し、当該割込み関数を実行する（Ｓ１７０８）。割込み関数の実行後、返信データがあれば（Ｓ１７０９）、同期受信処理関数は、プログラム間通信システムにデータ送信要求を発行し、擬似バスマネージャのプログラム間通信受信タスク３０１に返信データを送信する（Ｓ１７１０）。ここで、返信データは、送信元アプリケーション名、送信先アプリケーション名、通信タイプ、データなどからなる。例えば送信元アプリケーション名は擬似デバイス２０を表す「remocon」となり、送信先アプリケーション名は擬似マイコン１０を表す「micon」となり、通信タイプは「同期」である。また、データは擬似マイコンのデータ送信要求に応じて返信するデータ自体である。
【００８０】
擬似バスマネージャのプログラム間通信受信タスク３０１に返信データが受信されたとき、受信タイプはデータ受信であるから、プログラム間通信受信タスク３０１は、図１６で破線太矢印Ｙ１９を用いて示している通り、プログラム間通信転送タスク３０３ａを作成して（Ｓ４０６１）、処理を終了し（Ｓ４０６２）、データ受信待ち状態に戻る。このプログラム間通信転送タスク３０３ａは、返信データを擬似マイコン１０に送信するためのものである。
【００８１】
プログラム間通信転送タスク３０３ａは、図１３に示した手順Ｓ１３０１乃至Ｓ１３０５を行う。この場合、送信先アプリケーション名は擬似マイコン１０を表す「micon」であるから、図８（ｃ）に示すプログラム通信ハンドル管理テーブルから、「handle＿micon」というプログラム間通信ハンドルが抽出されることになる。そして、プログラム間通信転送タスク３０３ａは、このプログラム間通信ハンドルでもってプログラム間通信システムにデータ送信要求を発行し、図１６で実線細矢印２０を用いて示している通り、擬似マイコン１０のプログラム間通信受信タスク１０１に返信データを送信する。
【００８２】
擬似マイコン１０のプログラム間通信受信タスク１０１に返信データが受信されたとき、受信タイプはデータ受信であるから、プログラム間通信受信タスク１０１は、割込み関数呼出処理関数を呼出す（Ｓ６０６）。割込み関数呼出処理関数は、手順Ｓ１４０１及びＳ１４０２を行う。この場合、通信タイプは同期返信であるから、割込み関数呼出処理関数は、同期返信処理関数を呼出して（Ｓ１４０７）、処理を終了する（Ｓ１４０８）。
【００８３】
ここで、図１８は同期返信処理関数の動作手順を表すフローチャートである。
【００８４】
図１８に示すように、同期返信処理関数は、まず返信データメモリが確保してあるか否かを判別する（Ｓ１８０１）。返信データ用のメモリが確保してあれば、同期受信処理関数は、返信データを返信データメモリに格納する（Ｓ１８０２）。そして、同期受信処理関数は、同期通信イベントを解除して、マイコンプログラムアプリケーションタスク１００を再び実行させる。
【００８５】
このように、この擬似マイコンボードＡ１では、同期通信によっても擬似マイコン１０がデータ受信を行うことも可能である。
【００８６】
同期通信、非同期通信のいずれの場合でも、擬似バススロットアプリケーションインターフェイス１０２、２０２が提供する共通のインターフェイスを利用して、擬似マイコン１０、擬似デバイス２０間の通信が一元化される。その結果、プログラムの作成効率、移植効率、再利用率を向上させ、マイコンボードのテストやデバッグ作業の効率化を図ることができる。また、擬似マイコン１０や擬似デバイス２０はデータの送信先や送信元としてスロットアプリケーション名を用いるだけでよくなる。また、擬似マイコン１０と擬似デバイス２０間の通信は、擬似バスマネージャによって仲介を受ける。擬似バスマネージャからみれば、擬似マイコンと擬似デバイスとは同等である。従ってサーバとクライアントの関係が擬似マイコンと擬似デバイスとの間である場合に発生する起動順序などの影響を回避することができる。
【００８７】
（実施の形態２）
実施の形態１において、例えば同期通信時に擬似デバイス２０が割込み関数を実行した。この割込み関数の代わりに、擬似デバイス２０の外部に所定機能を有した関数を公開することも可能である。この関数（以下、公開機能関数という）のポインタは、割込み関数と同様に、割込み関数管理テーブルによって管理される。擬似デバイス２０が管理する割込み関数管理テーブルの具体例を図１９に示す。図１９に示す割込み関数管理テーブルには、送信元アプリケーション名「micon」に対する割込み関数のポインタ「receive＿micon()」の他、公開機能関数のポインタ「function2()」も登録されている。この公開機能関数には、公開機能関数の名称が関連付けられる。ポインタ「function2()」に関連付けられているのは、「function2」という公開機能関数の名称である。
【００８８】
この擬似デバイスの公開機能関数は、例えば実施の形態１における同期通信時とほぼ同様の手順によって利用することができる。擬似デバイス２０に対してデータ送信要求を行う際に、要求元が、利用する公開機能関数の名称、ここでは「function2」を送信データとして添付すればよい。
【００８９】
擬似デバイス２０は、送信データから公開機能関数の名称を抽出し、抽出した公開機能関数の名称と合致する送信元アプリケーション名を検索する。送信元アプリケーション名が検索された場合には、当該送信元アプリケーション名に対応する公開機能関数を実行する。
【００９０】
このような公開機能関数を利用することによって、公開機能関数が提供する機能を有していない他の擬似デバイスなども、同機能を共用することができる。もちろん、返信データがある場合には、実施の形態１における同期通信の場合と同様に擬似マイコン１０などに当該返信データを送信することもできる。
【００９１】
（実施の形態３）
上述のように、擬似マイコンボードＡ１では、擬似マイコン１０や擬似デバイス２０は、送信元及び送信先を表すのにスロットアプリケーション名を指定するだけでよい。従って、例えば送信先を変更するには、スロットアプリケーション名を変更すればよい。但し、スロットアプリケーション名を変更する際にプログラムの再構築が必要になると不便である。
【００９２】
そこで、この実施の形態３におけるバス擬似化装置３０は、図２０に示すように、通信定義ファイル３３を備えている。この通信定義ファイル３３は、通信経路を定義するための例えばテキストファイルであり、変更内容などはこの通信定義ファイル３３に記述する。通信仲介手段３１は、通信定義ファイル３３からメモリ上に作成された転送管理テーブルを参照して、例えば擬似デバイス２０ａから擬似デバイス２０ｂに送信先を変更する。
【００９３】
通信仲介手段３１に対応する擬似バスマネージャ、擬似マイコン１０及び擬似デバイス２０ａ、２０ｂの各プログラムは、例えば図２１に示すようなタスクとして扱われる。
【００９４】
擬似デバイス２０ａに関連するタスクは、擬似デバイスアプリケーションタスク２００ａ及びプログラム間通信受信タスク２０１ａである。また、擬似デバイス２０ｂに関連するタスクは、擬似デバイスアプリケーションタスク２００ｂ及びプログラム間通信受信タスク２０１ｂである。擬似デバイス２０ａ、２０ｂに関連するタスクには、それぞれ上述の共有ライブラリがリンクされており、別個であるが同じ擬似バススロットアプリケーションインターフェイス２０１ａ、２０１ｂをそれぞれ利用することができる。
【００９５】
ここで、擬似デバイスアプリケーションタスク２００ａが作成したプログラム間通信受信タスク２０１ａが「remocon」というスロットアプリケーション名を指定してサーバ登録申請を行っており、擬似マイコン１０は当初このスロットアプリケーション名を送信先に指定していたとする。
【００９６】
また、擬似デバイスアプリケーションタスク２００ｂが作成したプログラム間通信受信タスク２０１ｂは、「remocon2」というスロットアプリケーション名を指定してサーバ登録申請を行っている。
【００９７】
そして、擬似マイコン１０が指定する送信先のスロットアプリケーション名を「remocon」から「remocon2」に変更するならば、その旨が通信定義ファイル３３に記述される。
【００９８】
図２２に、通信定義ファイル３３から作成された転送管理テーブルの具体例を示す。転送管理テーブルは、通信定義ファイル３３で関連付けられた変更前の通信経路と変更後の通信経路とを表す。この実施の形態では、転送管理テーブルは、変更前のスロットアプリケーション名とそれに関連付けられた変更後のスロットアプリケーション名とを表す。図２２の例では、「remocon」という変更前のスロットアプリケーション名に、「remocon2」という変更後のスロットアプリケーション名が関連付けられていることが表されている。
【００９９】
擬似バスマネージャのプログラム間通信転送タスク３０３は、この転送管理テーブルを参照して、送信先をプログラム間通信受信タスク３０１ａからプログラム間通信受信タスク３０１ｂに変更する。
【０１００】
プログラム間通信転送タスク３０３は、例えば送信データから送信先アプリケーション名を抽出すると（Ｓ１３０１）、プログラム間通信ハンドル管理テーブルを検索する前に、転送管理テーブルを参照する。次に、プログラム間通信転送タスク３０３は、抽出した送信先アプリケーション名に合致するスロットアプリケーション名を転送管理テーブルから検索する。合致するスロットアプリケーション名が検索された場合、プログラム間通信転送タスク３０３は、当該スロットアプリケーション名に関連付けられた変更後のスロットアプリケーション名を転送管理テーブルから抽出する。そして、抽出した変更後のスロットアプリケーション名を手順Ｓ１３０２における検索の対象とする。これによって、送信先が変更されることになる。
【０１０１】
このようにして送信先を変更すれば、プログラムの再構築を行う必要はなくなり、通信定義ファイルを編集するという簡単な作業を行うだけでよいから、生産性を更に向上させることができ、バス配線のジャンパー線などによる変更や分岐のシミュレーションに特に有用である。
【０１０２】
（実施の形態４）
また、通信定義ファイル３３を用いれば、通信先の変更だけでなく、同報通信も簡単に行うことができる。同報通信を行う場合に通信定義ファイル３３からメモリ上に作成される同報送信管理テーブルの具体例を図２３に示す。同報送信管理テーブルは、通信定義ファイル３３で特定の通信経路に関連付けられた通信経路を表す。この実施の形態では、同報送信管理テーブルは、スロットアプリケーション名と当該スロットアプリケーション名に対して同報通信を行うスロットアプリケーション名とが関連付けられていることを表す。図２３の例では、「remocon」というスロットアプリケーション名に、「remocon2」という同報通信を行うスロットアプリケーション名が関連付けられていることが表される。
【０１０３】
擬似バスマネージャのプログラム間通信転送タスク３０３は、この同報送信管理テーブルを参照して、プログラム間通信受信タスク３０１ａだけでなくプログラム間通信受信タスク３０１ｂにも送信データを送信する。
【０１０４】
プログラム間通信転送タスク３０３は、例えば送信データから送信先アプリケーション名を抽出すると（Ｓ１３０１）、プログラム間通信ハンドル管理テーブルを検索する前に、同報送信管理テーブルを参照する。次に、プログラム間通信転送タスク３０３は、抽出した送信先アプリケーション名に合致するスロットアプリケーション名を同報送信管理テーブルから検索する。合致するスロットアプリケーション名が検索された場合、プログラム間通信転送タスク３０３は、当該スロットアプリケーション名に関連付けられた、同報通信を行うスロットアプリケーション名を同報送信管理テーブルから抽出する。そして、送信データから抽出したスロットアプリケーション名だけでなく、同報送信管理テーブルから抽出されたスロットアプリケーション名も手順Ｓ１３０２における検索の対象とする。これによって、プログラム間通信受信タスク２０１ａにも、プログラム間通信受信タスク２０１ｂにも送信データが送信されることになる。
【０１０５】
各擬似デバイス２０ａ、２０ｂは、それぞれ送信元アプリケーション名に対応する割込み関数を割込み関数管理テーブルから検索し、対応する割込み関数を実行する。
【０１０６】
このようにして、同報通信を行うことができ、バス配線のジャンパー等による多重分岐を擬似化するのに特に有用である。さらに、各擬似デバイス２０ａ、２０ｂにおいて、割込み関数だけでなく、公開機能関数も用意しておけば、複数の公開機能関数を同時に利用することもできる。
【０１０７】
（実施の形態５）
実施の形態１では、通信を行う擬似マイコン１０及び擬似デバイス２０は、同一のコンピュータ上で動作しているものとした。これに対し、例えば図２４に示すように、通信を行う擬似マイコン１０及び擬似デバイス２０が、それぞれ別のコンピュータ５０ａ、５０ｂ上で動作していても、バス擬似化装置３０Ｍ、３０Ｓによってバス３の擬似化を行うことが可能である。
【０１０８】
この場合、コンピュータ５０ａ、５０ｂ間の通信は、バス擬似化装置３０Ｍの通信仲介手段３１Ｍとバス擬似化装置３０Ｓの通信仲介手段３１Ｓとの間で行う。
【０１０９】
コンピュータをバス擬似化装置３０Ｓ、３０Ｍとして機能させるバス擬似化プログラムは、コンピュータ５０ａ、５０ｂにそれぞれ導入される。インターフェイス提供手段３２Ｍ、３２Ｓの機能を実装した共有ライブラリは、コンピュータ５０ａ、５０ｂに別個に存在するファイルとなるが、これらのファイルは同一である。
【０１１０】
また、例えば図２５に示すように、通信仲介手段３１Ｓに対応する擬似バスマネージャ及び擬似マイコン１０は、コンピュータ５０ａのＯＳによってそれぞれ幾つかのタスクとして扱われる。さらに、通信仲介手段３１Ｍに対応する擬似バスマネージャ及び擬似デバイス２０は、コンピュータ５０ｂのＯＳによってそれぞれ幾つかのタスクとして扱われる。
【０１１１】
擬似バスマネージャに関連するタスクは、両方のコンピュータ５０ａ、５０ｂで実行されるが、先に起動した側がマスターとなり、他方がスレーブとなる。マスター側のタスクとスレーブ側のタスクとの通信には例えばソケット通信を用いればよい。
【０１１２】
最初に起動した擬似バスマネージャ起動タスク３００Ｍは、図２５で破線太矢印Ｙ２１を用いて示している通り、プログラム間通信受信タスク３０１Ｍを作成する。プログラム間通信受信タスク３０１Ｍは、手順Ｓ４０１乃至Ｓ４０３を行う。この際、プログラム間通信ハンドル管理テーブルの初期化が行われるが、このプログラム間通信ハンドル管理テーブルの構造は、実施の形態１のものと一部異なる。図２６に示すように、このプログラム間通信ハンドル管理テーブルは、スロットアプリケーション名とプログラム間通信ハンドルに加えてコンピュータ名も関連付ける。
【０１１３】
プログラム間通信受信タスク３０１Ｍがデータ受信待ち状態になると、次に擬似バスマネージャ起動タスク３００Ｍは、図２５で破線太矢印Ｙ２２を用いて示している通り、コンピュータ間通信受信タスク３０４Ｍを作成する。
【０１１４】
コンピュータ間通信受信タスク３０４Ｍは、コンピュータ間通信ハンドル管理テーブルを初期化する。ここで、コンピュータ間通信ハンドル管理テーブルは、図２７に示すように、コンピュータ名とコンピュータ間通信ハンドルを関連付けるものである。さらに、コンピュータ間通信受信タスク３０４Ｍは、コンピュータ５０ｂのＩＰアドレス、コンピュータ名をＯＳに問合せ取得する。次に、ＯＳの提供するソケット通信システムに、ソケット通信のサーバ登録を申請する。さらに、ＯＳの提供するメール通信システムに、指定のグループ名でメール通信のサーバ登録を申請する。
【０１１５】
次に、擬似バスマネージャ起動タスク３００Ｓが起動する。擬似バスマネージャ起動タスク３００Ｓは、図２５で破線太矢印Ｙ２３を用いて示している通り、プログラム間通信受信タスク３０１Ｓを作成する。プログラム間通信受信タスク３０１Ｓも、手順Ｓ４０１乃至Ｓ４０３を行う。
【０１１６】
プログラム間通信受信タスク３０１Ｓがデータ受信待ち状態になると、次に擬似バスマネージャ起動タスク３００Ｓは、図２５で破線太矢印Ｙ２４を用いて示している通り、コンピュータ間通信受信タスク３０４Ｓを作成する。
【０１１７】
コンピュータ間通信受信タスク３０４Ｓは、コンピュータ間通信ハンドル管理テーブルを初期化する。さらに、コンピュータ間通信受信タスク３０４Ｓは、コンピュータ５０ａのＩＰアドレス、コンピュータ名をＯＳに問合せ取得する。次に、ＯＳの提供するメール通信システムに、グループ名を指定してメール通信サーバの検索を要求する。さらに、ＯＳの提供するソケット通信システムにソケット通信のサーバ登録を申請する。そして、検索されたメール通信サーバに、ＩＰアドレス、コンピュータ名を添付して、図２５で実線細矢印Ｙ２５を用いて示している通り、メール通信で接続要求を発行する。例えばコンピュータ名はコンピュータ５０ａを表す「Pana1」である。
【０１１８】
この接続要求をメール通信によってマスター側の擬似バスマネージャが受信すると、接続要求に添付された要求元のＩＰアドレス、コンピュータ名を抽出する。次に、抽出したＩＰアドレス、コンピュータ名でもって、ソケット通信によって接続を実施する。さらに、抽出したコンピュータ名とコンピュータ間ソケット通信ハンドルの関係をマスター側のコンピュータ間通信ハンドル管理テーブルに登録する。この場合のコンピュータ間通信ハンドル管理テーブルの内容は、例えば図２８（ａ）に示すように、コンピュータ５０ａを表す「Pana1」というコンピュータ名を、「hPana1」というコンピュータ間通信ハンドルに関連付けるものとなる。そして、このコンピュータ間通信ハンドルでもって、要求元のソケット通信サーバに、コンピュータ５０ｂのＩＰアドレス、コンピュータ名を添付して、図２５で実線細矢印Ｙ２６を用いて示している通り、ソケット通信で接続要求を発行する。
【０１１９】
スレーブ側の擬似バスマネージャは、マスター側の擬似バスマネージャからの接続要求を受信すると、添付されたＩＰアドレス、コンピュータ名を抽出する。次に、抽出したＩＰアドレス、コンピュータ名でもって、ソケット通信によって接続を実施する。さらに、抽出したコンピュータ名とコンピュータ間ソケット通信ハンドルの関係をスレーブ側のコンピュータ間通信ハンドル管理テーブルに登録する。この場合のコンピュータ間通信ハンドル管理テーブルの内容は、例えば図２８（ｂ）に示すように、コンピュータ５０ｂを表す「PanaMaster」というコンピュータ名を、「hPanaMaster」というコンピュータ間通信ハンドルに関連付けるものとなる。
【０１２０】
次に、例えばマイコンプログラムアプリケーションタスク１００が起動する。マイコンプログラムアプリケーションタスク１００は、図２５で実線太矢印Ｙ２７を用いて示している通り、プログラム間通信タスク開始関数を呼出す。プログラム間通信タスク開始関数は、図２５で破線太矢印Ｙ２８を用いて示している通り、プログラム間通信受信タスク１０１を作成する。プログラム間通信受信タスク１０１は、手順Ｓ６０１乃至Ｓ６０４を行う。但し、図２５で実線細矢印Ｙ２９を用いて示している通り、プログラム間通信受信タスク１０１が接続を要求するのは、プログラム間通信受信タスク３０１Ｓである。
【０１２１】
このとき、受信タイプは接続であるから、プログラム間通信受信タスク３０１Ｓは、手順Ｓ４０７１、Ｓ４０７２を行う。その結果、スレーブ側のプログラム間通信ハンドル管理テーブルの内容は、例えば図３０（ａ）に示すようになる。すなわち、プログラム間通信ハンドル管理テーブルにおいて、擬似マイコン１０を表す「micon」というスロットアプリケーション名が、「handle＿micon」というプログラム間通信ハンドルに関連付けられる。
【０１２２】
そして、スレーブ側の擬似バスマネージャに擬似マイコン１０が接続されたことが、マスター側の擬似バスマネージャに通知される。
【０１２３】
通知を受けたマスター側の擬似バスマネージャは、ソケット通信によるスレーブ側の擬似バスマネージャとの接続後、擬似マイコン１０のスロットアプリケーション名と擬似マイコン１０のあるコンピュータ名をプログラム間通信ハンドル管理テーブルにセットする。すなわち、図３１（ａ）に示すように、マスター側のプログラム間通信ハンドル管理テーブルにおいて、「micon」というスロットアプリケーション名が、コンピュータ５０ａを表す「Pana1」というコンピュータ名に関連付けられる。
【０１２４】
次に、擬似デバイスアプリケーションタスク２００が起動する。擬似デバイスアプリケーションタスク２００は、図２５で実線太矢印Ｙ３０を用いて示している通り、プログラム間通信タスク開始関数を呼出す。プログラム間通信タスク開始関数は、図２５で破線太矢印Ｙ３１を用いて示している通り、プログラム間通信受信タスク２０１を作成する。プログラム間通信受信タスク２０１は、手順Ｓ６０１乃至Ｓ６０４を行う。但し、図２５で実線細矢印Ｙ３２を用いて示している通り、プログラム間通信受信タスク２０１が接続を要求するのは、プログラム間通信受信タスク３０１Ｍである。
【０１２５】
このとき、受信タイプは接続であるから、プログラム間通信受信タスク３０１Ｍは、手順Ｓ４０７１、Ｓ４０７２を行う。その結果、マスター側のプログラム間通信ハンドル管理テーブルの内容は、図３１（ｂ）に示すように、擬似デバイス２０を表す「remocon」というスロットアプリケーション名を、「handle＿remocon」というプログラム間通信ハンドルに関連付ける。
【０１２６】
そして、マスター側の擬似バスマネージャに擬似デバイス２０が接続されたことが、スレーブ側の擬似バスマネージャに通知される。
【０１２７】
通知を受けたスレーブ側の擬似バスマネージャは、ソケット通信によるマスター側の擬似バスマネージャとの接続後、擬似デバイス２０のスロットアプリケーション名と擬似デバイス２０のあるコンピュータ名をプログラム間通信ハンドル管理テーブルにセットする。すなわち、図３０（ｂ）に示すように、スレーブ側のプログラム間通信ハンドル管理テーブルにおいて、「remocon」というスロットアプリケーション名が、コンピュータ５０ｂを表す「PanaMaster」というコンピュータ名に関連付けられる。
【０１２８】
次に、この実施の形態５において、擬似デバイス２０からデータが出力されることを契機として擬似マイコン１０が当該データを受信する場合の手順について説明する。この場合も、データ通信は非同期データ送信によって実現される。
【０１２９】
まず擬似デバイス２０の擬似デバイスアプリケーションタスク２００が、送信データを添付して、図２９で実線太矢印Ｙ３３を用いて示している通り、プログラム間送信関数を呼出す。この送信データは、送信元アプリケーション名、送信先アプリケーション名、通信タイプ、データなどからなる。例えば送信元アプリケーション名は擬似デバイス２０を表す「remocon」であり、送信先アプリケーション名は擬似マイコン１０を表す「micon」であり、通信タイプは「非同期」である。
【０１３０】
プログラム間送信関数は、手順Ｓ１２０１を行い、続いて手順Ｓ１２０３において、図２９で実線細矢印Ｙ３４を用いて示している通り、プログラム間通信受信タスク３０１Ｍに送信データを送信する。
【０１３１】
プログラム間通信受信タスク３０１Ｍは、図２９で破線太矢印Ｙ３５を用いて示している通り、プログラム間通信転送タスク３０３Ｍを作成する。プログラム間通信転送タスク３０３Ｍは、送信データから送信先アプリケーション名を抽出する。次に、抽出した送信先アプリケーション名に合致するスロットアプリケーション名をマスター側のプログラム間通信ハンドル管理テーブルから検索する。スロットアプリケーション名が検索された場合には、当該スロットアプリケーション名に関連付けられたプログラム間通信ハンドル又はコンピュータ名を抽出する。この場合、送信先アプリケーション名は「micon」であるから、図３１（ｂ）のプログラム間通信ハンドル管理テーブルに従い、抽出されるのは「Pana1」というコンピュータ名になる。抽出されたのがプログラム間通信ハンドルではなく、コンピュータ名の場合、プログラム間通信転送タスク３０３Ｍは、図２９で実線細矢印Ｙ３６を用いて示している通り、このコンピュータ名と送信データをコンピュータ間通信受信タスク３０４Ｍに送信する。コンピュータ間通信受信タスク３０４Ｍは、マスター側のコンピュータ間通信ハンドル管理テーブルを検索し、受信したコンピュータ名に関連するコンピュータ間通信ハンドルを抽出する。この場合、コンピュータ名が「Pana1」であるから、図３０（ａ）に示すように、「hPana1」というコンピュータ間通信ハンドルが抽出されることになる。そして、コンピュータ間通信受信タスク３０４Ｍは、このコンピュータ間通信ハンドルでもってコンピュータ間通信システムにデータ送信要求を発行し、図２９で実線細矢印Ｙ３７を用いて示している通り、スレーブ側のコンピュータ間通信受信タスク３０４Ｓに送信データを送信する。
【０１３２】
送信データが受信されると、コンピュータ間通信受信タスク３０４Ｓは、図２９で破線太矢印Ｙ３８を用いて示している通り、プログラム間通信転送タスク３０３Ｓを作成する。プログラム間通信転送タスク３０３Ｓは、送信データから送信先アプリケーション名を抽出する。次に、抽出した送信先アプリケーション名に合致するスロットアプリケーション名をスレーブ側のプログラム間通信ハンドル管理テーブルから検索する。スロットアプリケーション名が検索された場合には、当該スロットアプリケーション名に関連付けられたプログラム間通信ハンドル又はコンピュータ名を抽出する。この場合、送信先アプリケーション名は「micon」であるから、図３０（ｂ）に示すように、抽出されるのは「handle＿micon」というプログラム間通信ハンドルになる。そして、このプログラム間通信ハンドルでもって、図２９で実線細矢印Ｙ３９を用いて示している通り、プログラム間通信受信タスク１０１に送信データを送信する。
【０１３３】
そして、擬似マイコン１０は、実施の形態１の場合と同様に、割込み関数を実行する。
【０１３４】
このように、複数のコンピュータ上で擬似マイコンボードを動作させたときでも、非同期通信を行うことができる。同様に、同期通信を行うことも可能である。このとき、コンピュータのＩＰアドレスなどは、スロットアプリケーション名によって隠蔽されることになるから、高い作成効率や再利用性、移植性を確保することができる。
【０１３５】
なお、上述の実施の形態１では、プログラム間通信ハンドル管理テーブルのみを用いて、スロットアプリケーション名でもって、通信先及び通信元を含む通信経路を特定していた。これに対し、この実施の形態５では、通信経路を特定するのにコンピュータ間通信ハンドル管理テーブルも用いている。また、コンピュータの数が３つ以上の場合でも、同様に本発明を適用することができる。
【０１３６】
（その他）
上述の各実施の形態では、マイクロプロセッサ１とリモコン２ａ用のデバイス２とを接続するバス３を擬似化したが、これに限られるものではない。他のデバイスを擬似化するプログラムなどにも本発明を適用することは可能である。
【０１３７】
さらに、マイクロプロセッサ１やデバイス２は、それぞれ複数あってもよい。
【０１３８】
さらに、マイクロプロセッサとデバイス間の通信だけでなく、複数のマイクロプロセッサ間又は複数のデバイス間の通信を擬似化する場合にも、本発明を利用することが可能である。
【０１３９】
また、例えば擬似デバイスを、実デバイスを接続するための実バスと擬似バスとをブリッジする擬似ブリッジに置き換えることによって、実デバイスと擬似マイコン間で通信を行わせることも可能である。図３２に示すように、擬似ブリッジ２０ＢＲは、リレープログラム２２ＢＲを含む。このリレープログラム２２ＢＲは、通信部２１と実機器通信仲介手段３１Ａとの間で通信を中継する。リレープログラム２２ＢＲは、通信部２１からのデータを実機器通信仲介手段３１Ａに供給し、実機器通信仲介手段３１Ａからのデータを通信部２１に供給する。実機器通信仲介手段３１Ａは、実バスを通じてリレープログラム２２ＢＲにより供給されたデータを実デバイス２０Ｒに送信し、実バスを通じて供給された実機器２０Ｒからのデータをリレープログラム２２ＢＲに供給する。実機器通信仲介手段３１Ａは実バスのコントローラとそのコントローラを制御するためのドライバによって実現することができる。そのコントローラと実機器２０Ｒとは、イーサネット（登録商標）、ＳＣＳＩ(Small Computer System Interface)、ＩＥＥＥ１３９４(Institute of Electrical and Electronics Engineers 1394)、ＵＳＢ(Universal Serial Bus)、シリアル及びパラレルなどの一般的なインタフェースか、専用接続冶具を用いて接続される。このような場合に、実デバイス及びそれと同等の擬似デバイスの両方に対して擬似マイコンから同報通信を行えば、実際のデバイスと擬似デバイスとを比較しながら、テストやデバッグ作業を行うことも可能となる。
【０１４０】
また、上述の各実施の形態では、スロットアプリケーション名によって擬似マイコンや擬似デバイスを識別したが、これに限られるものではなく、例えば各プログラム固有の番号等を用いて識別するようにしてもよい。
【０１４１】
本発明のバス擬似化装置によれば、複数のデバイスと接続するバスを擬似化するバス擬似化装置であって、前記デバイスを擬似化した擬似デバイスに対応するアプリケーションからの呼出しに応じて、前記擬似デバイスのアプリケーション名に対する通信ハンドルを取得する受信タスクを作成するための関数を含むアプリケーションインターフェースと、前記関数に従って作成された受信タスクが取得した通信ハンドルと、当該受信タスクを作成するための関数を呼出した擬似デバイスに対応するアプリケーションのアプリケーション名とが関連付けて格納される通信ハンドル管理テーブルと、一方の擬似デバイスに対応するアプリケーションからの呼出しに応じて作成された受信タスクが取得した通信ハンドルと、当該一方の擬似デバイスに対応するアプリケーション名とを関連付けて前記通信ハンドル管理テーブルに格納した後に、他方の擬似デバイスから、前記一方の擬似デバイスへデータの転送を要求するデータ転送要求を前記一方の擬似デバイスに対応するアプリケーション名とともに受信すると、前記受信したアプリケーション名に合致するアプリケーション名を前記通信ハンドル管理テーブルから検索し、検索されたアプリケーション名に対応する通信ハンドルを用いて、前記一方の擬似デバイスに対応するアプリケーションの呼出しに応じて作成された受信タスクにデータを送信する擬似バスマネージャとを備えた。
これにより、マイクロプロセッサや周辺機器などの擬似デバイスに対応するプログラム間の通信に関する実装が一元化されるから、プログラムの作成効率、移植効率、再利用率が向上し、その結果テストやデバッグ作業の効率を著しく向上させることができる。また、マイクロプロセッサや周辺機器などの増大の影響も抑えられる。しかも、本発明では、各プログラムの通信について擬似バスマネージャの仲介が行われるから、各擬似デバイス間に例えばサーバ、クライアントの関係がある場合、擬似デバイスに対応するプログラムの起動順序などの影響を抑えることができる。
【０１４２】
また、前記一方の擬似デバイスへデータの転送を要求した他方の擬似デバイスに対応するアプリケーションのアプリケーション名と割り込み関数のポインタとが関連付けて格納される割込み関数管理テーブルをさらに備え、前記一方の擬似デバイスは、前記他方の擬似デバイスから、前記データ転送要求とともに前記他方の擬似デバイスに対応するアプリケーションのアプリケーション名を受信すると、前記割込み関数管理テーブルを検索し、前記他方の擬似デバイスに対応するアプリケーションのアプリケーション名に関連付けた割り込み関数のポインタに対応する割込み関数を呼出す処理を実行するようにすれば、例えば転送されるデータを用いて割込み関数を実行できる。
【０１４３】
また、前記割込み関数管理テーブルは、さらに前記他方の擬似デバイスに所定機能を公開するための公開機能関数のポインタと前記公開機能関数がアプリケーション名として関連付けて格納され、前記擬似バスマネージャは、前記他方の擬似デバイスから、前記データ転送要求とともにアプリケーション名として前記公開機能関数の名称を受信すると、前記割込み関数管理テーブルを検索し、前記公開機能関数の名称に関連付けた公開機能関数のポインタに対応する公開機能関数を実行するようにしてもよい。
【０１４４】
このようにすれば、所定機能を公開するための公開機能関数を識別符号と関連付ければ、所定機能を有していない擬似デバイスに対応するアプリケーションであっても、その所定機能を利用することが可能となる。
【０１４５】
また、前記データの転送先の一方の擬似デバイスに対応するアプリケーション名と前記転送先を変更するための擬似デバイスに対応するアプリケーション名とが関連付けて格納される転送管理テーブルをさらに備え、前記擬似バスマネージャは、他方の擬似デバイスから、一方の擬似デバイスへデータの転送を要求するデータ転送要求を前記一方の擬似デバイスに対応するアプリケーション名とともに受信すると、前記転送管理テーブルから前記受信したアプリケーション名を検索し、前記受信したアプリケーション名に関連付けたアプリケーション名に対応する擬似デバイスに対応するアプリケーションの呼出しに応じて作成された受信タスクにデータを送信するようにすれば、転送先の変更が可能となる。
また、前記擬似デバイスに対応するアプリケーションのアプリケーション名と、同報通信のための他の擬似デバイスに対応するアプリケーションのアプリケーション名とが関連付けて格納される同報送信管理テーブルをさらに備え、前記擬似バスマネージャは、他方の擬似デバイスから、一方の擬似デバイスへデータの転送を要求するデータ転送要求を前記一方の擬似デバイスに対応するアプリケーションのアプリケーション名とともに受信すると、前記同報送信管理テーブルを検索し、前記一方の擬似デバイスに対応するアプリケーションのアプリケーション名と関連付けた同報通信のアプリケーション名に対応する前記他の擬似デバイスのアプリケーションの呼出しに応じて作成された受信タスクにデータを送信すれば、同報送信が可能となる。
【０１４６】
また、前記擬似デバイスが異なる情報処理装置上にある場合に、前記情報処理装置間の通信は、前記情報処理装置上の擬似バスマネージャ間の通信によって行うようにすれば、複数の擬似デバイスに対応するアプリケーションが異なる情報処理装置上で動作していても、各情報処理装置にそれぞれ配置された擬似バスマネージャ間で、情報処理装置間の通信を行えば、擬似デバイスに対応するアプリケーションを情報処理装置間の通信に必要な情報に依存させなくて済む。従って、複数の被接続装置プログラムが異なる情報処理装置上で動作している場合でも、擬似デバイスに対応するアプリケーションの作成効率、移植効率、再利用率を向上させることが可能である。
【図面の簡単な説明】
【図１】実施の形態１におけるバス擬似化装置の概略構成を示す図
【図２】実際のマイコンボードの外観の一例を示す図
【図３】実施の形態１における擬似マイコンボードの構成を説明するための図
【図４】擬似バスマネージャのプログラム間通信受信タスクの動作手順を表すフローチャート
【図５】プログラム間通信タスク開始関数の動作手順を表すフローチャート
【図６】擬似マイコン又は擬似デバイスのプログラム間通信受信タスクの動作手順を表すフローチャート
【図７】プログラム間通信ハンドル登録関数の動作手順を表すフローチャート
【図８】プログラム間通信ハンドル管理テーブルを説明するための図
【図９】割込み関数管理テーブルを説明するための図
【図１０】割込み関数設定関数の動作手順を表すフローチャート
【図１１】実施の形態１における擬似マイコンボードの非同期通信を説明するための図
【図１２】プログラム間送信関数の動作手順を表すフローチャート
【図１３】プログラム間通信転送タスクの動作手順を表すフローチャート
【図１４】割込み関数呼出処理関数の動作手順を表すフローチャート
【図１５】非同期受信処理関数の動作手順を表すフローチャート
【図１６】実施の形態１における擬似マイコンボードの同期通信を説明するための図
【図１７】同期受信処理関数の動作手順を表すフローチャート
【図１８】同期返信処理関数の動作手順を表すフローチャート
【図１９】実施の形態２における公開機能関数を含む割込み関数管理テーブルの具体例を示す図
【図２０】実施の形態３におけるバス擬似化装置の概略構成を示す図
【図２１】実施の形態３における擬似マイコンボードの構成を示す図
【図２２】実施の形態３における転送管理テーブルの具体例を示す図
【図２３】実施の形態４における同報送信管理テーブルの具体例を示す図
【図２４】実施の形態５におけるバス擬似化装置の概略構成を示す図
【図２５】実施の形態５における擬似マイコンボードの構成を示す図
【図２６】実施の形態５におけるプログラム間通信ハンドル管理テーブルを説明するための図
【図２７】実施の形態５におけるコンピュータ間通信ハンドル管理テーブルを説明するための図
【図２８】実施の形態５におけるコンピュータ間通信ハンドル管理テーブルの具体例を示す図
【図２９】実施の形態５における擬似マイコンボードの非同期通信を説明するための図
【図３０】実施の形態５におけるスレーブ側のプログラム間通信ハンドル管理テーブルの具体例を示す図
【図３１】実施の形態５におけるマスター側のプログラム間通信ハンドル管理テーブルの具体例を示す図
【図３２】実機器と接続されるバス擬似化装置の概略構成を示す図
【符号の説明】
１        マイクロプロセッサ
２        リモコン用のデバイス
３        バス
１０      擬似マイコン
２０      擬似デバイス
３０      バス擬似化装置
３１      通信仲介手段
３１Ａ    実機器通信仲介手段
３２      インターフェイス提供手段
３３      通信定義ファイル
１００    マイコンプログラムアプリケーションタスク
１００ｉ  割込み関数
１０１    プログラム間通信受信タスク
１０２    擬似バススロットアプリケーションインターフェイス
２００    擬似デバイスアプリケーションタスク
２０１    プログラム間通信受信タスク
２０２    擬似バススロットアプリケーションインターフェイス
３００    擬似バスマネージャ起動タスク
３０１    プログラム間通信受信タスク
３０３    プログラム間通信転送タスク
【図１】
0004287624.tif 000002
【図２】
0004287624.tif 000003
【図３】
0004287624.tif 000004
【図４】
0004287624.tif 000005
【図５】
0004287624.tif 000006
【図６】
0004287624.tif 000007
【図７】
0004287624.tif 000008
【図８】
0004287624.tif 000009
【図９】
0004287624.tif 000010
【図１０】
0004287624.tif 000011
【図１１】
0004287624.tif 000012
【図１２】
0004287624.tif 000013
【図１３】
0004287624.tif 000014
【図１４】
0004287624.tif 000015
【図１５】
0004287624.tif 000016
【図１６】
0004287624.tif 000017
【図１７】
0004287624.tif 000018
【図１８】
0004287624.tif 000019
【図１９】
0004287624.tif 000020
【図２０】
0004287624.tif 000021
【図２１】
0004287624.tif 000022
【図２２】
0004287624.tif 000023
【図２３】
0004287624.tif 000024
【図２４】
0004287624.tif 000025
【図２５】
0004287624.tif 000026
【図２６】
0004287624.tif 000027
【図２７】
0004287624.tif 000028
【図２８】
0004287624.tif 000029
【図２９】
0004287624.tif 000030
【図３０】
0004287624.tif 000031
【図３１】
0004287624.tif 000032
【図３２】
0004287624.tif 000033