(57)【特許請求の範囲】
【請求項１】
マイコンの周辺デバイスとして実機デバイスおよび仮想デバイスを用いて、前記マイコン用プログラムの動作を検証するプログラム検証システムであって、
前記マイコン上の前記プログラムの動作をエミュレーションするエミュレータと、
前記実機デバイスに対応した検証動作を行うよう前記エミュレータを制御する検証制御部と、
前記検証制御部と前記仮想デバイスとの間に設けられ、前記仮想デバイスからの制御信号およびデータを前記検証制御部に適合させるブリッジ部と、
前記実機デバイスと前記プログラムとの間の入出力データを格納する実機用ＲＡＭと、
前記実機用ＲＡＭと前記仮想デバイスとの間に設けられた同期化ＲＡＭと、
前記実機デバイスに対する前記プログラムの入出力動作に同期させて、前記同期化ＲＡＭと前記実機用ＲＡＭとの間のデータ転送を制御する、仮想・実機同期処理部とを備えたことを特徴とするプログラム検証システム。
【請求項２】
前記仮想デバイスと前記ブリッジ部とを仮想配線により接続した、請求項１に記載のプログラム検証システム。
【請求項３】
前記仮想デバイスを複数備えた、請求項１に記載のプログラム検証システム。
【請求項４】
前記実機デバイスにてモニタ出力される実機モニタ出力画像を撮影する撮影装置と、
前記実機モニタ出力画像と、前記仮想デバイスにてモニタ出力される仮想モニタ出力画像とを、検証結果ファイルへ記録する、検証結果書込部とをさらに備えた、請求項１に記載のプログラム検証システム。
【請求項５】
前記周辺デバイスにおける所定の変化を検出するイベント検出部と、
前記イベント検出部の検出結果に従ったタイミングで、前記実機モニタ出力画像と前記仮想モニタ出力画像とを取り込む画像取得部とをさらに備えた、請求項４に記載のプログラム検証システム。
【請求項６】
前記イベント検出部の検出結果に従い、前記実機モニタ出力画像または仮想モニタ出力画像を含む検証処理状況を外部端末へ送信する検証状況配信部をさらに備えた、請求項５に記載のプログラム検証システム。
【請求項７】
外部端末から、制御信号およびその宛先を含むメッセージを受信し、受信したメッセージから前記制御信号を抽出し、当該制御信号の宛先へ配信するリモート制御部をさらに備えた、請求項６に記載のプログラム検証システム。
【請求項８】
前記撮影装置を複数台備えた、請求項４〜７のいずれか一項に記載のプログラム検証システム。
【請求項９】
前記プログラムを自動的に検証するための操作手順を記録したシナリオファイルからデータを読み込み、前記ブリッジ部へ転送するシナリオ制御部をさらに備えた、請求項１〜８のいずれか一項に記載のプログラム検証システム。
【請求項１０】
前記シナリオファイルから読み込んだデータの前記ブリッジ部への転送を、前記エミュレータの動作状況に合わせて制御するタイミング制御部をさらに備えた、請求項９に記載のプログラム検証システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＩＣＥを用いてマイコンプログラムの動作検証を行うプログラム検証システムであって、特に、プログラム実行に必要な周辺デバイスとして実機デバイスと仮想デバイスとを用いるプログラム検証システムに関する。
【０００２】
【従来の技術】
図１５に、従来の実機デバッグセットの一例を示す。図１５に示すように、シングルチップマイコン制御用アプリケーションプログラムの評価は、ターゲットとなるシングルチップマイコンの代わりに、シングルチップマイコンの全機能をエミュレートできるインサーキットエミュレータ（以下ＩＣＥと称する）４００をデバッグボード１８に組み込んだものを、ハードウエアで構成された実機デバッグセット（周辺デバイス１２０）に接続して行われていた。
【０００３】
しかし、このようなデバッグセットを用いる場合、プログラムのテストを行うためには、システムを動作させるハードウエアが先行完成していることが必須条件であるため、ソフトウエア開発の工程がハードウエア開発の進捗状況に大きく左右されるという問題があった。
【０００４】
この問題を解決するために、ターゲットとなるシングルチップマイコンのシミュレーションおよび周辺デバイスのシミュレーションを行うことで、実機を使わずに、プログラムを評価する方法が提案されている。
【０００５】
このようなシミュレーション方法の一例が、例えば特開平９−１１４７００号公報に開示されている。特開平９−１１４７００号公報に開示されたシステムは、テスト／デバッグの対象となる組込みソフトウエアと、マイクロプロセッサユニット（ＭＰＵ）およびメモリを模擬するＭＰＵシミュレータと、入出力を模擬する入出力装置模擬部と、ＭＰＵと１つ以上の入出力装置を接続する信号線を模擬する入出力装置実行制御機構と、シミュレータの起動順序を記述した起動定義ファイルと、Ｉ／ＯモニタとＩ／Ｏモデルのプロセスを起動／終了する手段と、ユーザが全てのＩ／Ｏモデルのリソース情報を参照・変更できる手段と、Ｉ／ＯモデルとＩ／Ｏモニタの接続関係を表示する手段を持つ入出力模擬部操作環境とで構成されている。それぞれの構成要素は、複数のプロセスで構成され、仮想配線にて接続されている。このシミュレーション方法では、図１６に示す通り、実機周辺デバイス１２０を全て仮想デバイス１００にて実現する。
【０００６】
また、実機デバッグ方法とシミュレータデバッグ方法の両方の良いところを合わせた実機・シミュレータ混載システムの一例が、特開平８−６８１０号公報に開示されている。特開平８−６８１０号公報に開示されたシステムは、図１７に示す通り、ＩＣＥ６４を利用した実機デバッグセットと、仮想デバイス（シミュレーション部５０）との混載システムである。このシステムでは、シミュレーション部５０とＩＣＥ６４との入出力データの受渡しは、専用の実機インターフェースボード６０を用いて実現されている。
【０００７】
【発明が解決しようとする課題】
しかし、従来の実機・シミュレータ混載システムでは、図１７に示したように、仮想デバイスとＩＣＥとの入出力データの受渡しを実現するために、専用のインターフェースボード６０を必要とする。このため、周辺デバイスの仕様変更等が発生した場合は、それに合わせてインターフェースボードを設計変更するために費用と時間が必要となり、プログラムのデバッグおよび検証を効率良く行えないという問題があった。
【０００８】
本発明は、上記の問題を解決するために、実機デバイスおよび仮想デバイスを周辺デバイスとして用いる場合に、効率良くプログラムの検証を行うことが可能なプログラム検証システムを提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記の目的を達成するために、本発明にかかるプログラム検証システムは、マイコンの周辺デバイスとして実機デバイスおよび仮想デバイスを用いて、前記マイコン用プログラムの動作を検証するプログラム検証システムであって、前記マイコン上の前記プログラムの動作をエミュレーションするエミュレータと、前記実機デバイスに対応した検証動作を行うよう前記エミュレータを制御する検証制御部と、前記検証制御部と前記仮想デバイスとの間に設けられ、前記仮想デバイスからの制御信号およびデータを前記検証制御部に適合させるブリッジ部と、前記実機デバイスと前記プログラムとの間の入出力データを格納する実機用ＲＡＭと、前記実機用ＲＡＭと前記仮想デバイスとの間に設けられた同期化ＲＡＭと、前記実機デバイスに対する前記プログラムの入出力動作に同期させて、前記同期化ＲＡＭと前記実機用ＲＡＭとの間のデータ転送を制御する、仮想・実機同期処理部とを備えたことを特徴とする。
【００１０】
この構成は、実機のハードウェア開発よりもプログラム開発の方が先行した場合でも、実機デバイスの完成を待たずにプログラム検証を可能とするために、既存の実機デバイスの仕様に対応した検証制御部と、新規プログラムに対応する実機デバイスの仕様をソフトウェアによりシミュレーションする仮想デバイスとの間に、この仮想デバイスからの制御信号やデータを検証制御部に適合させるべく例えばコマンドやデータの変換等を行うブリッジ部を設けたものである。これにより、実機デバイスの完成を待たずに、新規プログラムの検証を行うことが可能となる。また、実機デバイスと仮想デバイスとの動作速度の違いを吸収するために、プログラムが使用する実機用ＲＡＭとは別に、同期化を行うための同期化ＲＡＭを設ける。さらに、同期化ＲＡＭと実機用ＲＡＭとのデータ転送を同期制御するために仮想・実機同期処理部を設ける。
【００１１】
これにより、例えば、主機能が共通であるがユーザインターフェース周り（操作と表示に関する部分）の仕様にバリエーションを有する、いわゆる展開機種の開発を行うような場合に、新たにデバッグ用の実機セットをハードウェアで作らずとも、既存の実機セットを利用しつつ仮想デバイスでシミュレーションすることが可能となる。また、従来のように、仮想デバイスとＩＣＥとの間で入出力データを受け渡しするための、専用のインターフェースボードを作成する必要もない。以上のように、本発明によれば、実機デバッグセットの完成を待たずして、効率良くプログラムの開発を行うことが可能なプログラム検証システムを提供できる。
【００１２】
前記プログラム検証システムにおいて、前記仮想デバイスと前記ブリッジ部とを仮想配線により接続した構成とすることが好ましい。また、前記仮想デバイスを各機能毎に分けて複数備えた構成とすれば、他の自動検証システムにも各デバイスの再利用が容易に行えるという利点がある。
【００１３】
前記プログラム検証システムにおいて、前記実機デバイスにてモニタ出力される実機モニタ出力画像を撮影する撮影装置と、前記実機モニタ出力画像と前記仮想デバイスにてモニタ出力される仮想モニタ出力画像とを検証結果ファイルへ記録する検証結果書込部とをさらに備えた構成とすることが好ましい。
【００１４】
この構成によれば、例えば、新規プログラムを搭載すべき実機デバイスの試作機が完成した場合等に、プログラム検証のために当該実機デバイスの仕様に対応させて準備した仮想デバイスを利用して、完成した実機デバイスの動作検証を行うことができる。すなわち、同じ仕様の実機デバイスおよび仮想デバイスを動作させ、それらのモニタ出力画像を検証結果ファイルへ書き込む。これにより、開発担当者が、検証結果ファイルに書き込まれたモニタ出力画像を比較することにより、実機デバイスが目的の仕様を満たしているか否かを判定できる。また、異常があった場合、実機デバイスおよびプログラムのどちらに問題があるのかを把握することが容易になる。
【００１５】
さらに、この好ましい構成において、前記周辺デバイスにおける所定の変化を検出するイベント検出部と、前記イベント検出部の検出結果に従ったタイミングで、前記実機モニタ出力画像と前記仮想モニタ出力画像とを取り込む画像取得部とをさらに備えれば、例えば実機デバイスおよび仮想デバイスにおける入出力タイミングに合わせてモニタ出力画像を取り込むことができ、さらに効率良く検証を行うことが可能となる。
【００１６】
さらに、前記撮影装置を複数台備えた構成とすれば、より多くの情報を検証結果ファイルへ記録することが可能となり、例えば実機デバイスを複数種類有する機器等の検証の際に、検証精度を向上させることができる。
【００１７】
また、前記イベント検出部の検出結果に従い、前記実機モニタ出力画像または仮想モニタ出力画像を含む検証処理状況を検証処理状況を外部端末へ送信する検証状況配信部をさらに備えた構成とすることが好ましい。これにより、検証作業担当者が遠隔地に居る場合でも、リアルタイムで正確な情報が掴める。さらに、携帯情報端末等の外部端末から、制御信号およびその宛先を含むメッセージを受信し、受信したメッセージから前記制御信号を抽出し、当該制御信号の宛先へ配信するリモート制御部をさらに備えた構成とすればなお好ましい。これにより、プログラム自動検証作業中に何らかの問題が発生した場合に、プログラム検証システムをリモート制御することが可能となり、効率良いデバッグおよび検証が可能になる。
【００１８】
また、前記した各構成にかかるプログラム検証システムにおいて、プログラムを自動的に検証するための操作手順を記録したシナリオファイルからデータを読み込み、前記ブリッジ部へ転送するシナリオ制御部をさらに備えたことが好ましい。
【００１９】
この構成によれば、予め検証すべき操作手順が記録されたシナリオファイルからデータを読み込むことにより、仮想デバイスまたは実機デバイスから検証用の操作を行う必要がなくなり、本プログラム検証システムに自動的に検証作業を実行させることが可能となる。これにより、プログラム検証効率をさらに向上させることができる。
【００２０】
また、前記シナリオファイルから読み込んだデータの前記ブリッジ部への転送を、前記エミュレータの動作状況に合わせて制御するタイミング制御部をさらに備えた構成とすれば、なお好ましい。この構成によれば、例えば何らかの要因によりエミュレータが異常動作した場合等にも、タイミング制御部が、例えばシナリオファイルを再度読み込んでブリッジ部へ転送する等の制御を行う。これにより、自動検証作業の信頼性が向上する。
【００２１】
【発明の実施の形態】
最初に、以下の各実施形態で共通する構成および用語について、図１を参照しながら説明する。
【００２２】
プログラム４１４は、マイコン上で動作するプログラムとして開発されたものであり、本発明にかかるプログラム検証システムにおいてデバッグ対象となるプログラムである。
【００２３】
実機プログラム４１０とは、デバッグ対象のプログラム４１４と、同期化プログラム４１２とを含む。同期化プログラム４１２は、実機のマイコンには搭載されず、プログラム検証システムにおいてのみ用いられ、後に詳述するが、仮想デバイス１００からユーザＲＡＭ４０２へのデータ書き込みを、実機デバイス１５０からのデータ書き込みと同期させる処理を行う。
【００２４】
周辺デバイス１２０とは、プログラム４１４の動作検証に必要な入出力デバイスであり、実機デバイス１５０と仮想デバイス１００とを含む。実機デバイス１５０とは、プログラム４１４が搭載される実機の入出力デバイス（ハードウェアそのもの）である。これに対して、仮想デバイス１００は、プログラム４１４が搭載される実機のハードウェアをソフトウェアでシミュレーションするものである。
【００２５】
ＩＣＥ４００は、プログラム４１４を実行検証するために、プログラム４１４が搭載される実機の組み込みマイコンをエミュレートするインサーキットエミュレータ（in circuit emulator）であり、マイコンエミュレータ４０６、ユーザＲＡＭ４０２、および同期化ＲＡＭ４０４を含む。ユーザＲＡＭ４０２は、実機デバイス１５０とプログラム４１４との間の入出力データを格納するＲＡＭであり、同期化ＲＡＭ４０４は、後に詳述するが、仮想デバイス１２０からユーザＲＡＭ４０２へ書き込むべきデータを一時的に格納するＲＡＭである。
【００２６】
ＩＣＥ４００の動作は、デバッガ５００により制御される。デバッガ５００は、ブリッジ５０４およびＩＣＥデバッガ５０６（検証制御部）を含む。ＩＣＥデバッガ５０６は、実機デバイス１５０の仕様に対応した検証動作をＩＣＥ４００に実行させるように設計されている。これに対して、ブリッジ５０４は、実機デバイス１５０の代わりに仮想デバイス１００を入出力デバイスとして用いた検証動作を可能とするために、仮想デバイス１００とＩＣＥ５０６との間で制御コマンドの変換等を行うものであり、ソフトウェアで実現される。
【００２７】
すなわち、本実施形態にかかるプログラム検証システムは、実機のハードウェア開発よりもプログラム開発の方が先行した場合でも、実機デバイスの完成を待たずにプログラム検証を可能とするために、既存の実機デバイス１５０およびＩＣＥデバッガ５０６を用いながら、新規プログラム（プログラム４１４）に対応する実機デバイスの仕様をソフトウェアによりシミュレーションする仮想デバイス１００と、この仮想デバイス１００をＩＣＥデバッガ５０６に適合させるブリッジ５０４とを設けたものである。
【００２８】
仮想配線２０６とは、仮想デバイス１２０とデバッガ５００、並びに後の実施形態で説明する自動検証制御部等を、仮想的に接続する配線である。仮想デバイス１００およびデバッガ５００等を複数のパーソナルコンピュータで実現した場合は、この仮想配線２０６として、ネットワーク、ＵＳＢ、ＲＳ２３２Ｃ、ＩＥＥＥ１３９４を使用できる。また、仮想デバイス１００およびデバッガ５００等を、一台のパーソナルコンピュータ内で単独実行可能な複数のアプリケーションまたはプロセスとして実現した場合は、仮想配線２０６は、アプリケーションまたはプロセス間にて通信可能なＤＤＥ、ＣＯＭ等のデータ通信機能を利用して実現できる。なお、仮想配線２０６の具体的な実施形態は、本発明の発明者らによってなされた発明にかかる先の出願（特願２００１−２１９８８７号）に、詳しく開示されている。
【００２９】
仮想配線２０６による通信方法は、非同期通信または同期通信のどちらでもよい。非同期通信とは、データを通信相手に一方的に送信するだけで、返信がない通信方法である。同期通信とは、データを通信相手に送信した後、通信相手から返信データが返ってくるまで待っている通信方法である。
【００３０】
ＨＴＡとは、ＨＴＭＬ  Ａｐｐｌｉｃａｔｉｏｎｓの略で、Ｗｅｂページで実行可能なさまざまな機能（ＨＴＭＬ、ＣＳＳ、スクリプト言語（Ｊａｖａ（登録商標、以下略）Ｓｃｒｉｐｔ、ＶＢＡ等）、Ｂｅｈａｖｉｏｒ）をサポートする。
【００３１】
ＡｃｔｉｖｅＸとは、Ｉｎｔｅｒｎｅｔ対応のＯＬＥドキュメントオブジェクトであるＡｃｔｉｖｅＸドキュメントや、Ｉｎｔｅｒｎｅｔアクセス機能を持ったクライアントアプリケーションを開発するためのＡＰＩである。
【００３２】
ＯＬＥとは、Ｏｂｊｅｃｔ  Ｌｉｎｋｉｎｇ  ａｎｄ  Ｅｍｂｅｄｄｉｎｇの略で、アプリケーションが別のアプリケーションの機能を呼出して自分自身の機能のように利用したりできる。後述の実施形態では、ＨＴＡからＭｉｃｒｏｓｏｆｔ社のＥｘｃｅｌアプリケーションを利用する例を説明する。
【００３３】
（第１実施形態）
以下、本発明の一実施形態について、図を用いて説明する。
【００３４】
本実施形態にかかるプログラム検証システムは、仮想デバイス１００とＩＣＥ４００との間の入出力データの転送および同期化を全てソフトウエアで実現し、周辺デバイス１２０およびＩＣＥ４００等をそれぞれ仮想配線２０６上に接続することで、プログラム４１４の検証目的に合わせて柔軟な対応を可能にしたシステム構成である。すなわち、図１７に示したような、ＩＣＥ６４とシミュレーション部５０との間に、ハードウエアで実現した専用のＩ／Ｆ６０を有する従来のシステムとは異なる構成である。
【００３５】
＜システム構成＞
本実施形態にかかるプログラム検証システムでは、図１等に示す通り、プログラム４１４の動作に必要な周辺デバイス１２０は、仮想デバイス１００および実機デバイス１５０により構成される。また、仮想デバイス１００およびデバッガ５００は、共に、仮想配線２０６に接続されている。
【００３６】
＜初期化処理＞
本プログラム検証システムは、起動すると、初期化処理を行う。初期化処理において、仮想デバイス１００およびデバッガ５００は、仮想配線２０６に接続するための接続処理を行う。また、デバッガ５００のブリッジ５０４は、予め、仮想デバイス１００の仮想入力１０２および仮想出力１０４からのメッセージ受信を行うために、受信割込み許可しておく。また、ＩＣＥ４００は、予め、プログラム４１４を実行状態にしておく。
【００３７】
＜仮想入力からＩＣＥへのデータ転送＞
仮想入力１０２からＩＣＥ４００へのデータ転送は、以下の（ａ１）〜（ａ３）のとおりに実行される。
【００３８】
（ａ１）仮想入力から仮想配線へのデータ送出；
仮想入力１０２にて発生した入力イベントは、デバッガ５００へのＲＡＭ書込みメッセージ転送を指定し、入力イベントデータを書込む同期化ＲＡＭ４０４のＲＡＭアドレスとＲＡＭデータとを、バススロット１０６経由で、仮想配線２０６へ同期通信にて送出する。
【００３９】
（ａ２）ブリッジの書込み処理；
仮想入力１０２から、仮想配線２０６およびバススロット５０２経由でブリッジ５０４に送られて来たメッセージは、図２に示す通り、ブリッジ５０４内で受信割込み処理を行う同期受信部５５０で受け取られる。その後、コマンド変換部５５２が、仮想入力１０２からのメッセージをＩＣＥデバッガ５０６が処理できるフォーマットに適合させるために、図３に示すようなメッセージ一覧表に従い、受け取ったメッセージが、１バイトメモリライト、１バイトメモリリード、ＩＣＥリセット、ＩＣＥ実行等のどのメッセージであるかを分析する。コマンド発行部５５４は、その分析結果を、ＩＣＥデバッガ５０６内のＶｉｒｔｕａｌＬｉｎｋ５６０に渡す。
【００４０】
ＶｉｒｔｕａｌＬｉｎｋ５６０は、実機デバイス１５０の仕様に対応した検証動作を行うように設計されている既存デバッガ５６２を制御して、プログラム実行中のＩＣＥ４００内の同期化ＲＡＭ４０４に、仮想入力１０２から渡された指定ＲＡＭアドレスのＲＡＭデータを、オンザフライにて書込む。その後、同期受信部５５０が、前記メッセージへの返信としての書込み完了通知を、メッセージの送信元である仮想入力１０２へ返信する。なお、「オンザフライ」とは、プログラム４１４が実行中でも、ＩＣＥ４００内のユーザＲＡＭ４０２と同期化ＲＡＭ４０４のＲＡＭデータ、およびマイコンエミュレータ４０６内のレジスタの読書きを可能とする、ＩＣＥ４００の機能である。
【００４１】
（ａ３）同期化ＲＡＭからユーザＲＡＭへの転送処理；
同期化プログラム４１２は、マイコンエミュレータ４０６に、同期化ＲＡＭ４０４に書込まれたデータの変化を、プログラム４１４に必要なタイミングでチェックさせている。
【００４２】
同期化プログラム４１２は、例えばキー入力の場合は、プログラム４１４のキー入力処理の直後に呼ばれ、キー入力データにより同期化ＲＡＭ４０４に生じる変化をマイコンエミュレータ４０６経由でチェックし、変化が有れば、キー入力データを、ユーザＲＡＭ４０２内に設けられたキー入力データ確定エリアに転送する。なお、仮想入力１０２のキーデータと実機入出力１５６からのキー入力データとが同時に入力された場合は、仮想キーデータが優先される。この処理の順番は、用途に合わせて、実機デバイス１５０からのキー入力データを優先する変更も可能である。
【００４３】
同期化プログラム４１２内のキー入力処理は、具体的には、図４に示す通り、プログラム４１４から同期化プログラム４１２を呼出すことにより開始される（ステップＳ４００）。まず、マイコンエミュレータ４０６経由にて仮想デバイス１００から転送され同期化ＲＡＭ４０４に格納されているキー入力データを読込み（ステップＳ４０２）、キー入力データの変化をチェックする（ステップＳ４０４）。
【００４４】
もし変化が有れば、キー入力データを、ユーザＲＡＭ４０２内に設けられた実機キー入力データ確定エリアに上書きする（ステップＳ４０６）。実機キー入力データ確定エリアとは、ユーザＲＡＭ４０２において、実機入出力１５６からキー入力されて確定されたデータが記録されるべき領域である。このように、実機キー入力データ確定エリアに仮想デバイス１００からのキー入力を上書きすることにより、仮想キー入力が、実機キー入力より優先されて処理される。
【００４５】
また、同期化ＲＡＭ４０４内の仮想デバイスから転送されたキーデータをクリアし（ステップＳ４０８）、周期的に呼ばれるキー処理にて連続データ処理されない様に対応している。もし連続キーを有効にする場合は、このステップＳ４０８を削除して、仮想入力１０２からキー押下時にＯＮキーデータを送信し、キーが離された時に、ＯＦＦキーデータを送信する様にすれば良い。
【００４６】
＜ユーザＲＡＭから仮想出力へのデータ転送＞
一方、仮想入力１０２からの入力データ等によって、プログラム４１４がユーザＲＡＭ４０２内の出力ＲＡＭデータを変更した場合、この出力ＲＡＭデータをユーザＲＡＭ４０２から仮想出力１０４へ転送する手順は、以下の（ｂ１）〜（ｂ４）のとおりである。
【００４７】
（ｂ１）プログラムのユーザＲＡＭ変更；
プログラム４１４により、ユーザＲＡＭ４０２内の仮想出力１０４に関係するＲＡＭデータが変更された直後に、ユーザＲＡＭ４０２から同期化ＲＡＭ４０４内の特定ＲＡＭに変化を伝えるための処理を行う。具体的には、図５に示す通り、プログラム４１４から仮想同期化プログラムを呼び出すことにより、処理を開始する（ステップＳ４２０）。プログラム４１４からユーザＲＡＭ４０２への出力処理（ステップＳ４２２）を行った直後に、ユーザＲＡＭ４０２における出力ＲＡＭデータの変化を検出し（ステップＳ４２４）、変化があれば、出力ＲＡＭデータをユーザＲＡＭ４０２から同期化ＲＡＭ４０４内に転送する（ステップＳ４２６）。
【００４８】
（ｂ２）仮想出力から仮想配線へのデータ送出；
次に、仮想出力１０４から、同期化ＲＡＭ４０４内の出力ＲＡＭデータの変化イベントを読込むために、仮想出力１０４からデバッガ５００へのメッセージ転送の指定とイベントを読込むためのＲＡＭアドレスとを一緒に、バススロット１０８経由で、仮想配線２０６に同期通信により送出する。
【００４９】
（ｂ３）ブリッジデバイスの読込み処理；
仮想出力１０４からバススロット５０２経由でブリッジ５０４に送られて来たメッセージは、図２に示す通り、受信割込み処理を行う同期受信部５５０で受け取られる。その後、コマンド変換部５５２が、図３に示すようなメッセージ一覧表に従い、受け取ったメッセージが、１バイトメモリライト、１バイトメモリリード、ＩＣＥリセット、ＩＣＥ実行等のどのメッセージであるかを分析する。コマンド発行部５５４は、その分析結果を、ＩＣＥデバッガ５０６内のＶｉｒｔｕａｌＬｉｎｋ５６０に渡す。ＶｉｒｔｕａｌＬｉｎｋ５６０は、既存デバッガ５６２を制御して、プログラム実行中にＩＣＥ４００内の同期化ＲＡＭ４０４内の出力ＲＡＭデータをオンザフライにて読み込む。その後、読み込んだ出力ＲＡＭデータを、同期受信部５５０が、前記メッセージの送信元である仮想出力１０４へ返信する。これにより、出力ＲＡＭデータの仮想出力１０４への転送が、完了する。
【００５０】
（ｂ４）仮想出力の表示処理；
仮想出力１０４は、出力ＲＡＭデータを元に、パソコンモニタに仮想ＬＣＤ表示等を行う。
【００５１】
また、上述したように同期化ＲＡＭ４０４の変化のイベントを使う代わりに、仮想入力１０２から一定周期にて、デバッガ５００にユーザＲＡＭ４０２のデータを読込むことにより、仮想出力１０４で仮想ＬＣＤ表示等を行うようにしてもよい。
【００５２】
＜効果＞
以上のように、本実施形態によれば、周辺デバイス１２０として実機デバイス１５０と仮想デバイス１００とを用い、ＩＣＥ４００内に同期化ＲＡＭ４０４を設け、仮想デバイス１００とＩＣＥ４００との同期化処理を全てソフトウエア（ブリッジ５０４および同期化プログラム４１２）で行うことが可能となる。これにより、実機デバッグセットの完成を待たずして、効率良くプログラムの開発が可能となる。
【００５３】
なお、本実施形態において、機能の異なる複数の仮想デバイス１００を、仮想配線２０６に接続した構成としてもよい。この構成によれば、他の自動検証システムにも各デバイスの再利用が容易に行えるという利点がある。
【００５４】
（第２実施形態）
ハードウェア開発よりもプログラム開発が先行している場合、実機デバッグセットが完成すれば、実機デバッグセットが正常に動作しているかを、開発中のプログラムを用いて動作検証することが必要になる。しかし、従来は、動作検証の際に実機デバッグセットが正常に動作しない場合、プログラムあるいは実機デバッグセットのどちらが悪いのかを判断することが難しく、解析に時間がかかるという問題もあった。
【００５５】
そこで、本発明の第２実施形態にかかるプログラム検証システムは、図６等に示す通り、プログラム４１４のプログラム動作に必要な実機デバイス１５０の実入力１５２および実出力１５４を、ＩＣＥ４００からデバッガ５００を経由して仮想配線２０６に接続した構成である。また、本プログラム検証システムは、実入力１５２および実出力１５４と同等な機能を仮想的に実現した仮想入力１０２および仮想出力１０４を、仮想配線２０６に接続した構成である。
【００５６】
また、本プログラム検証システムでは、実出力１５４の表示をＰＣカメラ２０４にて撮影し、このＰＣカメラ２０４で撮影された映像を表示するカメラモニタ２０２を、パソコンのモニタ上に設ける。また、実出力１５４と同等機能である仮想出力１０４の画像も、パソコンのモニタに表示する。
【００５７】
カメラモニタ２０２および仮想出力１０４の表示画像を記録するために、記録制御部３０２が、仮想入力１０２のキーコードをＩＣＥ４００に向けて転送した後、ＩＣＥ４００内の表示用イメージデータに合わせて表示する実出力１５４および仮想出力１０４の表示画像をクリップボード２００にコピーし、検証結果ファイル３５０に記録する。合わせて、その時の表示ダンプデータも、検証結果ファイル３５０に記録する構成となっている。
【００５８】
検証結果ファイル３５０は、実出力１５４と仮想出力１０４の実行結果をデバッグ作業者が目視で比較できるようにするためのアプリケーションファイルであり、例えば、Ｍｉｃｒｏｓｏｆｔ社のＥｘｃｅｌ（登録商標、以下略）等を利用して実現することができる。検証結果ファイル３５０の読み書きを制御する記録制御部３０２の制御プログラムは、ＨＴＡを利用して記述されている。また、検証結果ファイル３５０をＥｘｃｅｌで作成する場合、その読書きを記録制御部３０２から行うために、ＯＬＥ機能を利用する。また、記録制御部３０２と仮想配線２０６との間のデータ通信は、ＡｃｔｉｖｅＸを利用して実現できる。
【００５９】
＜初期化処理＞
本実施形態にかかるプログラム検証システムも、起動されると、まず初期化処理を行う。仮想デバイス１００、デバッガ５００、および記録制御部３０２は、仮想配線２０６に接続するための接続処理を行う。ブリッジ５０４は、仮想入力１０２および仮想出力１０４からのメッセージ受信を行うために、予め、受信割込みを許可しておく。ＩＣＥ４００は、予め、プログラム４１４を実行状態にしておく。イベント検出部３０８は、仮想入力１０２およびブリッジ５０４からのメッセージ受信を許可しておく。画像データ取得部３１０は、仮想出力１０４からのメッセージ受信を許可しておく。
【００６０】
＜実機デバッグセットの動作確認＞
本プログラム検証システムでは、例えば実出力１５４の動作確認を行うために、実出力１５４が完成するまでシミュレータによるプログラム評価に利用していた仮想出力デバイス１００と、完成した実出力１５４との動作比較を、以下のとおりに行うことができる。
【００６１】
＜仮想入力からＩＣＥへのデータ転送＞
仮想入力１０２からＩＣＥ４００にデータを転送する際の手順は、第１の実施形態で説明した（ａ１）〜（ａ３）とほぼ同じである。ただし、（ａ１）の手順において、仮想入力１０２が、デバッガ５００だけでなく、イベント検出３０８へもＲＡＭ書き込みメッセージ転送を指定する点のみが、第１の実施形態とは異なる。
【００６２】
＜ユーザＲＡＭから仮想出力へのデータ転送＞
仮想入力１０２からの入力データ等によって、プログラム４１４がユーザＲＡＭ４０２内の出力ＲＡＭデータを変更した場合、この出力ＲＡＭデータを仮想出力１０４へ転送する手順は、第１の実施形態で説明した（ｂ１）〜（ｂ４）とほぼ同じである。ただし、（ｂ４）の手順において、仮想出力１０４が、出力ＲＡＭデータをパソコンモニタに仮想ＬＣＤ表示等するだけでなく、出力ＲＡＭデータに変化があれば、イベント検出部３０８に対し、仮想配線２０６経由で画面変化のイベント及び表示ダンプデータを転送する点が、第１の実施形態と異なる。
【００６３】
＜仮想入力から画像コピーイベント検出＞
仮想入力１０２からキーイベントの発行を検出するために、イベント検出部３０８に、仮想入力１０２から仮想配線２０６経由にて、キーデータが送られてくる。イベント検出部３０８は、そのキーデータを、画像データ取得部３１０に渡す。また、同期化ＲＡＭ４０４またはユーザＲＡＭ４０２から仮想出力１０４に取得した画像データの変化が有れば、仮想出力１０４から画像データ取得部３１０に対して、画像変化のメッセージおよび仮想出力１０４の表示ダンプデータを転送する。
【００６４】
＜表示画像の記録＞
画像データ取得部３１０は、前記キーデータを、検証結果書込部３０４経由で、検証結果ファイル３５０に書込む。検証結果書込部３０４は、検証結果ファイル３５０の形式に適した方法で、データの読み書きを行う。
【００６５】
また、画像データ取得部３１０は、仮想出力１０４から表示変化のメッセージを受けると、キャプチャー制御部３０６に指示を出し、実出力１５４の画像データであるカメラモニタ２０２の画像を、クリップボード２００にキャプチャーする。また、仮想出力１０４の表示画像も、同様に、クリップボード２００にキャプチャーする。クリップボード２００にキャプチャーされた画像は、検証結果書込部３０４により、検証結果ファイル３５０に書込む。
【００６６】
検証結果ファイル３５０の具体例を、図７に示す。図７に示すように、検証結果ファイル３５０には、画面モードと操作キーとの組み合わせ毎に、仮想画面および実機画面のそれぞれの画像イメージと、それらの表示の際に仮想出力１０４から送られてきた表示ダンプデータとが、記録される。
【００６７】
図７に示す検証結果ファイル３５０からは、画面モードを“ＭＤＰＷＲＯＮ”として、“ＫＰＯＷＥＲ”という名称で定義されているキー操作（電源をＯＮにする操作）をした場合、仮想画面および実機画面の両方に何も表示されなかったことが分かる。また、“ＫＣＨ  ＵＰ”という名称で定義されているキー操作により、画面右上方に“ＣＨ０３”という文字が表示され、さらに“ＫＶＯＬ  ＵＰ”という名称で定義されているキー操作により、画面左下に“Ｖｏｌ  ２４”という文字が表示されたことが分かる。以上のキー操作の場合は、いずれも、仮想画面と実機画面との表示が一致している。しかし、“ＫＭＥＮＵ”という名称で定義されたキー操作に対しては、仮想画面において最上行に“ＭＥＮＵ”と表示されているのに、実機画面では“ＭＥＵ０”と表示されており、仮想画面と実機画面の表示状態が一致していない。これにより、“ＫＭＥＮＵ”のキー操作に関して、実機デバイス１５０にバグがあることが分かる。
【００６８】
なお、図７では模式的に示したが、実際には、検証結果ファイル３５０の「仮想画面」の欄には、クリップボード２００にキャプチャーされた仮想出力１０４の画像イメージそのものが貼り付けられる。また、「実機画面」の欄には、ＰＣカメラ２０４で撮影されカメラモニタ２０２からクリップボード２００にキャプチャーされた実出力１５４の画像イメージそのものが貼り付けられる。従って、これらの画像イメージを見比べることにより、デバッグ作業者が、仮想画面と実機画面との相違を容易に認識することが可能となる。
【００６９】
＜複数台のＰＣカメラを制御＞
また、図８に示すように、実出力１５４の状態を撮影するＰＣカメラ２０４に加えて、実機入出力１５６の状態を撮影するＰＣカメラ２０５をさらに設けて、実機デバイス１５０を撮影する構成としてもよい。なお、実機入出力１５６の状態とは、例えば、実機デバイス１５０へのキー入力が実機モニタにエコー表示される様子や、処理結果がモニタへ表示される様子等をいう。ＰＣカメラ２０４およびＰＣカメラ２０５には、カメラモニタ２０２およびカメラモニタ２０３をそれぞれ接続する。また、カメラモニタ２０２およびカメラモニタ２０３からクリップボード２００へキャプチャーすべきモニタ画像を選択するキャプチャー選択部３２４を記録制御部３０２にさらに設ける。これにより、より多くのモニタ画像を記録することが可能になる。
【００７０】
＜効果＞
以上のように、本実施形態では、新規に開発した実出力１５４の動作確認を行うために、この実出力１５４と同等の動作をする仮想出力１０４（動作検証済み）をＩＣＥ４００にて動作させて、実出力１５４および仮想出力１０４の実行結果を、デバッグ作業者が目視で確認できる状態で、検証結果ファイル３５０に書込む。これにより、実出力１５４と仮想出力１０４の動作比較が容易になり、実出力１５４のハードウエアの動作検証を効率良く行える。また、実機デバイス１５０の状態を撮影するためのＰＣカメラを複数台備えた構成とすれば、より多くの情報の記録が可能となり、検証精度を向上できる。
【００７１】
（第３の実施形態）
本発明の第３の実施形態にかかるプログラム検証システムと、第２の実施形態にかかるプログラム検証システムとの主な相違点は、本実施形態にかかるプログラム検証システムは、プログラム自動検証を行うことにある。このため、図９等に示すとおり、本プログラム検証システムは、第２の実施形態で説明した検証結果ファイル３５０および記録制御部３０２の他に、シナリオファイル３５２と、これに対する読み書きを制御するシナリオ制御部３１４とを備えている。なお、記録制御部３０２およびシナリオ制御部３１４により、プログラム自動検証を実現するための自動検証制御部３００が構成されている。
【００７２】
シナリオファイル３５２とは、プログラム４１４を自動的に検証するための操作手順（シナリオ）を記録したファイルであり、検証結果ファイル３５０と同様に、例えば、Ｍｉｃｒｏｓｏｆｔ社のＥｘｃｅｌ等を利用して実現することができる。自動検証制御部３００の制御プログラムは、ＨＴＡを利用して記述されている。また、検証結果ファイル３５０およびシナリオファイル３５２をＥｘｃｅｌで作成する場合、これらの読書きを自動検証制御部３００から行うために、ＯＬＥ機能を利用する。また、自動検証制御部３００と仮想配線２０６との間のデータ通信は、ＡｃｔｉｖｅＸを利用して実現できる。
【００７３】
以下、本プログラム検証システムの構成および動作について、具体的な説明を行う。
【００７４】
本プログラム検証システムは、ＩＣＥ４００内の表示用イメージデータの変化に基づいて、仮想出力１０４の表示を更新し、仮想出力１０４の表示画像をクリップボード２００経由にて検証結果ファイル３５０に記録し、予め検証結果ファイル３５０に記録されていた検証用の期待値データと自動比較する構成となっている。
【００７５】
＜シナリオからＩＣＥへのデータ転送の自動シーケンス＞
以下、本プログラム検証システムの自動検証処理について説明する。自動検証処理は、自動検証制御部３００が、シナリオファイル３５２からキーデータ等を読み出し、ＩＣＥ４００へ自動的に転送して実行させ、その実行結果を検証結果ファイル３５０へ書き込んで評価することにより行う。
【００７６】
シナリオファイル３５２には、動作検証に必要な操作情報（キーデータ等）が、検証手順に従ってあらかじめ記録されている。シナリオファイル３５２は、Ｅｘｃｅｌファイルを利用して、例えば、図１１に示すような状態遷移表として作成される。本プログラム検証システムでは、シナリオファイルに記述されている動作シーケンスに従って画面モードを所定の状態にした後、イベントであるキーの発行を実行して、各キー入力に対するアクション（有効または無効）の確認を行う。例えば、図１１に示すシナリオファイル３５２の場合、図１１中に示した実行順番に従い、まず、画面モードを“ＭＤＰＷＲＯＮ”にした状態で、“ＫＰＯＷＥＲ”、“ＫＣＨ  ＵＰ”、“ＫＶＯＬ  ＵＰ”、“ＫＭＥＮＵ”、“ＫＳＥＴ”のキー入力を順次行い、これらの各キー操作に対する仮想デバイスおよび実機デバイスの動作を検証する。そして、次に、画面モードを“ＭＤＭＥＮＵ”とした状態で、上述と同様に“ＫＰＯＷＥＲ”、“ＫＣＨ  ＵＰ”、“ＫＶＯＬＵＰ”、“ＫＭＥＮＵ”、“ＫＳＥＴ”のキー入力を順次行い、仮想デバイスおよび実機デバイスの動作を検証する。以降、“ＭＤＴＩＭＥＲ”、“ＭＤＳＥＴ”、“ＭＤＴＥＳＴ”の各画面モードについて、同様に検証を行う。
【００７７】
ここで、図１１に示すシナリオファイル３５２を用いた自動検証処理の詳細について、画面モード“ＭＤＭＥＮＵ”の状態での各キー入力に対する動作検証を行う場合を例にとり、さらに具体的に説明する。自動検証制御部３００は、以下の（１）〜（９）の手順により、画面モード“ＭＤＭＥＮＵ”の状態でのキー入力に対する動作検証を行う。
【００７８】
（１）同期化ＲＡＭ４００内のリセット完了モニタ用フラグＲＡＭに“１”をセットする。
【００７９】
（２）ＩＣＥ４００にプログラム４１４を初期化させるために、シナリオ読込部３１６からデータ送信部３２０へ、リセットＧＯコマンド発行を指示する。なお、“リセットＧＯ”コマンドとは、ＩＣＥ４００に実機プログラム４１０の実行を停止させ初期化する“リセット”コマンドと、ＩＣＥ４００に実機プログラム４１０を最初から実行開始させる“ＧＯ”コマンドとを一連に実行させるものである。データ送信部３２０は、同期通信により、ブリッジ５０４を経由してＩＣＥデバッガ５０６に対してリセットＧＯのメッセージを送る。ＩＣＥデバッガ５０６が、ＩＣＥ４００をリセットＧＯ実行させることにより、実機プログラム４１０がリセットスタートされる。実機プログラムリセットスタート実行の先頭プログラムで、前記のリセット完了モニタ用フラグＲＡＭ値を“０”にする。ＩＣＥ４００がリセットＧＯ完了すれば、ブリッジ５０４からデータ送信部３２０を経由して、シナリオ読込３１６部にリセットＧＯ完了通知を行う。
【００８０】
（３）リセット完了モニタ用フラグＲＡＭ値が“０”になったことを確認した後、画面モードを“ＭＤＭＥＮＵ”にするために、シナリオファイル３５２において当該画面モードの動作シーケンスに記述されているキーをシナリオ読込部３１６により順次読み込み、発行する。発行されたキーは、データ送信部３２０、バススロット３１２、仮想配線２０６、デバッガ５００を介して、ＩＣＥ４００へ渡される。図１１の例では、“ＭＤＭＥＮＵ”の動作シーケンスの最初の動作（図１１のシナリオファイルにおける動作１の欄）として“ＫＰＯＷＥＲ”というキーが記述されているので、このキーが最初に発行される。
【００８１】
（４）“ＫＰＯＷＥＲ”キーの処理を実機プログラム４１０が完了したかを、ユーザＲＡＭ４０２内の特定ＲＡＭにおける値の変化をチェックすることにより、確認する。特定ＲＡＭの変化が確認できると、次に、動作シーケンスの動作２に記述されている“ＫＭＥＮＵ”キーを発行し、上記と同様に、ユーザＲＡＭ４０２内の特定ＲＡＭの変化をチェックすることにより、“ＫＭＥＮＵ”キーの処理が完了したかを確認する。以上の処理を、シナリオファイル３５２の動作シーケンスに記述されている最後のキーまで、繰り返し実行する。図１１に示す“ＭＤＭＥＮＵ”の場合、“ＫＰＯＷＥＲ”キーおよび“ＫＭＥＮＵ”キーの実行により、目的の画面モードである“ＭＤＭＥＮＵ”になる。
【００８２】
（５）目的の画面モードになったら、まず、ユーザＲＡＭ４０２内の画像データを同期ＲＡＭ４０４に取り込む。
【００８３】
（６）次に、シナリオファイル３５２に記述されている発行キーを、順次発行し、動作を検証する。図１１の例では、最初に、“ＫＰＯＷＥＲ”キーを発行する。“ＫＰＯＷＥＲ”キーの処理が完了したことを、ユーザＲＡＭ４０２内の特定ＲＡＭ値の変化で確認する。
【００８４】
（７）“ＫＰＯＷＥＲ”キーの処理が完了したことが確認できたら、この“ＫＰＯＷＥＲ”キーの処理結果を検証する。仮想出力１０４は、画面変化の有無を、イベント検出部３０８に伝える。イベント検出部３０８は、画面変化の有無が、シナリオファイル３５２に記述されている有効・無効仕様に合致するかを判断する。
【００８５】
例えば、図１１に示すシナリオファイルの場合、○記号は、当該画面モードにおける当該キー発行が有効であることを表し、×記号は、当該画面モードにおける当該キー発行が無効であることを表す。なお、「キー発行が有効である」とは、そのキー発行により画面上に何らかの変化が生じることをいい、「キー発行が無効である」とは、そのキー発行によっても画面に変化が生じないことをいう。
【００８６】
ここでは、“ＭＤＭＥＮＵ”の列と“ＫＰＯＷＥＲ”の行との交点にあたる欄には○記号が記述されているので、画面モードが“ＭＤＭＥＮＵ”である場合に“ＫＰＯＷＥＲ”キーを発行した場合、このキーが正しく処理されたならば、何らかの画面変化が生じるべきである。従って、“ＫＰＯＷＥＲ”キーの発行により画面変化が生じていれば、イベント検出部３０８は、“ＭＤＭＥＮＵ”画面モードにおける“ＫＰＯＷＥＲ”キーの有効・無効仕様は満たされているものと判断する。
【００８７】
イベント検出部３０８は、有効・無効仕様が満たされているか否かの判断結果に応じて、シナリオファイル３５２の有効・無効仕様欄に色付けする。すなわち、イベント検出部３０８が、シナリオファイル３５２に記述されている有効・無効仕様が満たされていると判断すれば、検証結果書込部３０４を介して、シナリオファイル３５２の当該有効・無効仕様欄の表示属性を例えば青色に設定し、満たされていないと判断した場合は例えば赤色に設定することにより異常動作であることが分かるようにする。これにより、デバッグ作業者は、シナリオファイル３５２の有効・無効仕様欄の表示色により、目標仕様が満たされているかを容易に識別することが可能となる。また、ここでは、有効・無効仕様の検証結果をシナリオファイル３５２に記録することとしたが、検証結果ファイル３５０に、有効・無効仕様の検証結果を記録する欄を別途設けるようにしてもよい。
【００８８】
（８）また、検証結果書込部３０４は、画像データ取得部３１０によりユーザＲＡＭ４０２から取得した画面データ（実行画像データ）を、検証結果ファイル３５０へ書き込む。さらに、検証結果書込部３０４は、前記実行画像データと、検証処理の実行に先立って予め作成されている基準画像データとを比較し、比較結果を検証結果ファイル３５０へ書き込む。基準画像データとは、キーが正しく処理された結果として表示されるべき画像データのダンプデータであり、図１２に示すように検証結果ファイル３５０へ書き込まれている。例えば図１２に示した例にかかる検証結果ファイル３５０では、基準画像データと実行画像データとの比較結果が一致すれば○記号、一致しなければ×記号が、「判定」の欄に書き込まれている。これにより、デバッグ作業者は、検証結果ファイル３５０の判定欄を見るだけで、キー発行により所定の画面データが表示されたか否かを容易に検証できる。
【００８９】
（９）また、検証結果ファイル３５０には、基準画像データに基づく画面イメージ（基準画面）が予め貼り付けられている。検証結果書込部３０４は、図１２に示すように、この基準画面の隣の列に、仮想出力１０４に出力された画面（実行画面）を、クリップボード２００を介して貼り付ける。これにより、デバッグ作業者は、検証結果ファイル３５０を見るだけで、基準画面と実行画面との違いを容易に識別することが可能となる。
【００９０】
“ＫＰＯＷＥＲ”キーについて上記の（９）までの処理が終了したら、（５）へ戻り、（６）においてシナリオファイルに記述されている次の発行キー“ＫＣＨ  ＵＰ”を発行し、以降の処理を行う。同様にして、シナリオファイルに記述されている全ての発行キーについて、（５）〜（９）の処理を繰り返すことにより、図１２に示すような検証結果ファイルが完成する。
【００９１】
また、本実施形態では、自動検証処理中の何らかの要因により、ＩＣＥ４００が異常動作になった場合に、自動検証処理が続行できなくなることを防ぐため、既存デバッガ５６２がＩＣＥ４００の挙動を監視する。そして、ＩＣＥ４００の動作に変化が発生した場合は、図１３に示すようなメッセージを、ＩＣＥデバッガ５０６が、ブリッジ５０４内のＩＣＥ状態モニタ５５８（図２参照）に伝える。さらに、このメッセージは、ＩＣＥ状態送信部５５６から、仮想配線２０６を介して、シナリオ制御部３１４内のタイミング制御部３１８に伝えられる。これにより、タイミング制御部３１８は、ＩＣＥ４００の動作変化に合わせて、シナリオ読込部３１６にシナリオファイル３５２のデータを再発行させる等の処理を行う。
【００９２】
以上のとおり、本実施形態によれば、プログラム自動検証を実現することができる。
【００９３】
＜リモート制御＞
また、図１０に示すように、記録制御部３０２内に自動検証処理の実行状況を配信する実行状況配信部３２２を設けると共に、外部装置との間で電子メールの送受信を行う電子メール送受信部６０２をさらに設けた構成としてもよい。この構成により、実行状況配信部３２２から電子メール送受信部６０２を経由して、自動検証処理の実行状況を携帯情報端末６０４等に電子メールにて配信すれば、し、自動検証処理の実行状況を遠隔地からリアルタイムでモニタすることが可能となる。
【００９４】
そして、自動検証処理の実行中に、プログラム４１４の不具合等が見つかった場合は、携帯情報端末６０４等から、図３に示すようなデバッガ制御コマンドを、電子メールのメッセージとして本プログラム検証システムに送信することで、リモートにて本プログラム検証システムを制御することができる。また、リモート制御結果は、実行状況配信部３２２から電子メール送受信部６０２を経由して、携帯情報端末６０４等に電子メールにより配信する。
【００９５】
これにより、プログラム検証システムをリモート制御可能となる。
【００９６】
なお、自動検証処理において、シナリオファイル３５２として前記の状態遷移表を用いる代わりに、シナリオファイル３５２の記述方法や自動検証制御部３００の制御方法を適宜変更することで、任意の自動検証処理を実現可能である。
【００９７】
＜具体的動作＞
以下、プログラム自動検証を行う本プログラム検証システムの動作について、さらに具体的に説明する。
【００９８】
＜初期化処理＞
本実施形態のプログラム検証システム（図１０に示す構成）も、起動すると、まず、初期化処理を行う。仮想デバイス１００、デバッガ５００、自動検証制御部３００、および電子メール送受信部６０２は、仮想配線２０６に接続するための接続処理を行う。また、ブリッジ５０４は、予め、データ送信部３２０および仮想出力１０４からのメッセージ受信を行うために、受信割込み許可しておく。また、実行状況配信部３２２は、仮想出力１０４からのメッセージ受信を許可しておく。また、電子メール送受信部６０２内の実行状況モニタ６０６は、実行状況配信部３２２からの受信を許可しておく。
【００９９】
＜シナリオ読込から仮想配線へリセットＧＯコマンドデータを流す＞
シナリオ読込部３１６から、ＩＣＥ４００の実行を初期化するために、リセットＧＯコマンドの送信をデータ送信部３２０に指示する。データ送信部３２０は、図３に示すようなリセットＧＯコマンドのフォーマットに従って作成したメッセージを、ブリッジ５０４に宛てて、バススロット１０６から仮想配線２０６に同期通信にて送出する。
【０１００】
＜ブリッジデバイスの書込み処理＞
データ送信部３２０からバススロット５０２経由でブリッジ５０４に送られて来たメッセージは、図２に示す通り、受信割込み処理を行う同期受信部５５０に受け取られる。コマンド変換部５５２は、図３に示すようなテーブルを参照し、受け取ったメッセージが、１バイトメモリライト、１バイトメモリリード、ＩＣＥリセット、ＩＣＥ実行等のどのメッセージであるかを分析し、その結果をコマンド発行部５５４からＩＣＥデバッガ５０６内のＶｉｒｔｕａｌＬｉｎｋ５６０に渡す。
【０１０１】
ＶｉｒｔｕａｌＬｉｎｋ５６０は、既存デバッガ５６２を制御して、ＩＣＥ４００にリセットコマンドを発行した後、実行開始コマンドを発行して、実行完了通知を同期受信部５５０の返信データとして、メッセージの送信元であるデータ送信部３２０に返信する。データ送信部３２０は、シナリオ読込部３１６にリセットＧＯコマンド実行完了を伝え、シナリオファイル３５２の内容に従った実行を行う。
【０１０２】
＜シナリオファイルから仮想配線へのデータを流す＞
シナリオ読込部３１６は、シナリオファイル３５２からキーコードを読込んで、データ送信部３２０に指示して、図３に示すようなメッセージ一覧表内の１バイトメモリライトコマンド発行フォーマットに従って作成したメッセージを、ブリッジ５０４に宛てて、バススロット１０６から仮想配線２０６へ同期通信にて送出する。
【０１０３】
＜ブリッジの書込み処理＞
データ送信３２０から、バススロット５０２経由でブリッジ５０４に送られて来たメッセージは、図２に示す通り、受信割込み処理を行う同期受信部５５０に受け取られる。そして、コマンド変換部５５２が、図３に示すようなテーブルに基づき、受け取ったメッセージが、１バイトメモリライト、１バイトメモリリード、ＩＣＥリセット、ＩＣＥ実行等のどのメッセージであるかを分析する。その分析結果は、コマンド発行部５５４からＩＣＥデバッガ５０６内のＶｉｒｔｕａｌＬｉｎｋ５６０に渡される。
【０１０４】
ＶｉｒｔｕａｌＬｉｎｋ５６０は、既存デバッガ５６２を制御して、プログラム４１４を実行中のＩＣＥ４００内の同期化ＲＡＭ４０４に、仮想入力１０２から渡された指定ＲＡＭアドレスのＲＡＭデータをオンザフライにて書込んだ後、書込み完了通知を、同期受信部５５０の返信データとして、メッセージの送信元であるデータ送信部３２０へ返信する。返信を受けると、キーデータを配信したことを、実行状況配信部３２２からイベント検出部３０８に伝える。
【０１０５】
＜同期化ＲＡＭからユーザＲＡＭへの転送処理＞
同期化プログラム４１２は、同期化ＲＡＭ４０４の変化を、プログラム４１４に必要なタイミングでマイコンエミュレータ４０６にチェックさせている。
【０１０６】
同期化プログラム４１２は、例えばキー入力の場合は、プログラム４１４のキー入力処理の直後に呼ばれ、同期化ＲＡＭ４０４内のキーデータＲＡＭの変化を、マイコンエミュレータ４０６経由でチェックし、もし変化が有れば、キーデータをユーザＲＡＭ４０２のキーデータ確定エリアに転送する。この際、仮想入力１０２のキーデータと実機デバイス１５０からのキーデータとが同時に入力された場合は、仮想入力１０２からのキーデータが優先される。
【０１０７】
同期化プログラム４１２内のキー入力処理は、具体的には、第１の実施形態において図４を用いて説明したとおりである。これにより、仮想キー入力が、実機キー入力より優先されて処理される。
【０１０８】
＜ユーザＲＡＭから仮想出力へのデータ転送＞
シナリオファイル３５２から読み込んだキーコードによってプログラム４１４がユーザＲＡＭ４０２内の出力ＲＡＭデータ（仮想出力１０４への出力データ）を変更した場合、この出力ＲＡＭデータを仮想出力１０４へ転送する方法は、以下の（ｃ１）〜（ｃ４）のとおりである。
【０１０９】
（ｃ１）プログラムのユーザＲＡＭ変更；
プログラム４１４により、ユーザＲＡＭ４０２内の仮想出力１０４に関係するＲＡＭエリアが変更された直後に、ユーザＲＡＭ４０２から同期化ＲＡＭ４０４内の特定ＲＡＭに変化を伝えるための処理を行う。具体的には、図５に示す通り、プログラム４１４から仮想同期化ルーチンを呼び出すことにより、処理を開始する（ステップＳ４２０）。実機デバイス１５０への出力処理（ステップＳ４２２）を行った直後に、実機デバイス１５０への出力ＲＡＭデータの変化を検出し（ステップＳ４２４）、変化があれば、出力ＲＡＭデータをユーザＲＡＭ４０２から同期化ＲＡＭ４０４内に転送する（ステップＳ４２６）。
【０１１０】
（ｃ２）仮想出力から仮想配線へデータを流す；
次に、仮想出力１０４から、同期化ＲＡＭ４０４内の出力ＲＡＭデータの変化イベントを読込むために、仮想出力１０４からデバッガ５００へのメッセージ転送の指定とイベントを読込むためのＲＡＭアドレスとを一緒に、バススロット１０８経由で、仮想配線２０６に同期通信により送出する。
【０１１１】
（ｃ３）ブリッジデバイスの読込み処理；
仮想出力１０４からバススロット５０２経由でブリッジ５０４に送られて来たメッセージは、図２に示す通り、受信割込み処理を行う同期受信部５５０で受け取られる。その後、コマンド変換部５５２が、図３に示すようなメッセージ一覧表に従い、受け取ったメッセージが、１バイトメモリライト、１バイトメモリリード、ＩＣＥリセット、ＩＣＥ実行等のどのメッセージであるかを分析する。コマンド発行部５５４は、その分析結果を、ＩＣＥデバッガ５０６内のＶｉｒｔｕａｌＬｉｎｋ５６０に渡す。ＶｉｒｔｕａｌＬｉｎｋ５６０は、既存デバッガ５６２を制御して、プログラム実行中にＩＣＥ４００内の同期化ＲＡＭ４０４内の出力ＲＡＭデータをオンザフライにて読み込む。その後、読み込んだ出力ＲＡＭデータを、同期受信部５５０が、前記メッセージの送信元である仮想出力１０４へ返信する。これにより、出力ＲＡＭデータの仮想出力１０４への転送が、完了する。
【０１１２】
（ｃ４）仮想出力の表示処理；
仮想出力１０４では、出力ＲＡＭデータを元にパソコンモニタに仮想ＬＣＤ表示等を行う。また、同期化ＲＡＭ４０４またはユーザＲＡＭ４０２から仮想出力１０４に取得した画像データの変化があれば、仮想出力１０４は、画像データ取得部３１０に対して、実行状況配信部３２２経由で、画像変化のメッセージおよび仮想出力１０４の表示ダンプデータを転送する。
【０１１３】
また、前記イベントを使わずに、仮想入力１０２から一定周期にて、デバッガ５００にユーザＲＡＭ４０２のデータを読込み、仮想出力１０４にて仮想ＬＣＤ表示等を行う方法でも良い。
【０１１４】
＜データ転送からイベント検出に転送＞
実行状況配信部３２２にデータ送信部３２０から前記キーデータが送られてくると、そのキーデータは、イベント検出部３０８から画像データ取得部３１０に渡される。また、同期化ＲＡＭ４０４またはユーザＲＡＭ４０２から仮想出力１０４に取得した画像データの変化が有れば、仮想出力１０４から実行状況配信部３２２を経由して、画像データ取得部３１０に対して画像変化のメッセージおよび、仮想出力の表示ダンプデータを転送する。画像データ取得部３１０は、前記キーデータを検証結果書込部３０４から検証結果ファイル３５０に書込む。
【０１１５】
また、画像データ取得部３１０は、仮想出力１０４から表示変化のメッセージを受けると、仮想出力１０４の表示画像を、クリップボード２００にキャプチャーする。クリップボード２００にキャプチャーされた画像は、検証結果書込部３０４により、検証結果ファイル３５０に対して書込まれる。
【０１１６】
具体的には、図１２に示すように、キーデータは操作キーの欄に書込み、シナリオファイル３５２の画面モードは、画面モードの欄に書込む。
【０１１７】
＜基準画像データと実行画像データとの比較＞
検証結果ファイル３５０において、「基準画像データ」と「実行画像データ」とのデータの相違を判定し、判定結果を「判定」の欄に「○」と「×」として書込む。なお、検証結果ファイル３５０をＥｘｃｅｌで作成する場合は、ＩＦ関数を用いて「基準画像データ」と「実行画像データ」の相違の判定を行うことができる。
【０１１８】
＜基準画像データの作成＞
尚、自動検証処理を行うための基準画像およびその表示ダンプデータの作成については、前記自動実行する方法で、画像データおよび表示ダンプデータを図１２に示す基準画面および実行画像データに書込むことで作成できる。
【０１１９】
＜効果＞
以上のように、本実施形態によれば、シナリオファイルを利用することにより、プログラム自動検証が行える様になり、評価効率の向上が可能となる。また、プログラム自動検証の実行状況を、遠隔地からも監視できるようになる。
【０１２０】
（第４の実施形態）
プログラム４１４を搭載すべき実機のハードウェアが完成した後は、図１４に示すように、仮想デバイスを利用せず、実機デバッグセットのみを利用したプログラム検証システムにより、自動検証を行うことも可能である。
【０１２１】
【発明の効果】
以上のように、本発明によれば、ＩＣＥを利用したプログラム検証システムにおいて周辺デバイスを実機デバイスと仮想デバイスに分けたプログラム検証を行うためのハードウエアは必要とせず実現でき、短期間にプログラム検証システムを構築できる。また、自動検証に関しては、ＬＣＤ表示等の出力表示を実機デバイスおよび仮想デバイス問わず、表示イメージのまま記録できるため、プログラム検証時間の短縮が可能となる。更に、自動検証をリモート制御できるため、遠隔操作によりプログラムのデバッグおよび検証が出来るようになり作業効率が向上する。
【図面の簡単な説明】
【図１】  本発明の第１の実施形態にかかるプログラム検証システムの構成を示すブロック図
【図２】  デバッガの内部構成を示すブロック図
【図３】  仮想デバイスからブリッジへのメッセージ一覧の説明図
【図４】  キー入力処理のフローチャート
【図５】  表示出力処理のフローチャート
【図６】  本発明の第２の実施形態にかかるプログラム検証システムの構成を示すブロック図
【図７】  検証結果ファイルの一例を示す説明図
【図８】  第２の実施形態にかかるプログラム検証システムの変形例として、複数のカメラを用いたプログラム検証システムのブロック図
【図９】  本発明の第３の実施形態にかかるプログラム検証システムの構成を示すブロック図
【図１０】  第３の実施形態にかかるプログラム検証システムの変形例のブロック図
【図１１】  シナリオファイルの一例を示す説明図
【図１２】  第３の実施形態にかかる検証結果ファイルの一例を示す説明図
【図１３】  ＩＣＥから仮想デバイスへ向けてのイベント一覧を示す説明図
【図１４】  本発明の第４の実施形態にかかるプログラム検証システムの構成を示すブロック図
【図１５】  従来の実機デバッグセットを用いたプログラム検証システムのブロック図
【図１６】  従来のシステムシミュレータセットを用いたプログラム検証システムのブロック図
【図１７】  従来の実セット・シミュレータ混載のプログラム検証システムのブロック図
【符号の説明】
１００  仮想デバイス
１０２  仮想入力
１０４  仮想出力
１２０  周辺デバイス
１５０  実機デバイス
１５２  実入力
１５４  実出力
１５６  実機入出力
２００  クリップボード
２０２，２０３  カメラモニタ
２０４，２０５  ＰＣカメラ
２０６  仮想配線
３００  自動検証制御部
３０２  記録制御部
３０４  検証結果書込部
３０８  イベント検出部
３１０  画像データ取得部
３１２  バススロット
３１４  シナリオ制御部
３１６  シナリオ読込部
３１８  タイミング制御部
３２０  データ送信部
３２２  実行状況配信部
３５０  検証結果ファイル
３５２  シナリオファイル
４００  ＩＣＥ
４０２  ユーザＲＡＭ
４０４  同期化ＲＡＭ
４１０  実機プログラム
４１２  同期化プログラム
５００  デバッガ
５０２  バススロット
５０４  ブリッジ
５０６  ＩＣＥデバッガ
６００  電子メール送受信部
６０４  携帯情報端末
６０６  実行状況モニタ
６０８  リモート制御部
６１０  メール配信制御部
【図１】
0004171240.tif 000002
【図２】
0004171240.tif 000003
【図３】
0004171240.tif 000004
【図４】
0004171240.tif 000005
【図５】
0004171240.tif 000006
【図６】
0004171240.tif 000007
【図７】
0004171240.tif 000008
【図８】
0004171240.tif 000009
【図９】
0004171240.tif 000010
【図１０】
0004171240.tif 000011
【図１１】
0004171240.tif 000012
【図１２】
0004171240.tif 000013
【図１３】
0004171240.tif 000014
【図１４】
0004171240.tif 000015
【図１５】
0004171240.tif 000016
【図１６】
0004171240.tif 000017
【図１７】
0004171240.tif 000018