JP2004252585A - プログラム検証システム - Google Patents
プログラム検証システム Download PDFInfo
- Publication number
- JP2004252585A JP2004252585A JP2003040177A JP2003040177A JP2004252585A JP 2004252585 A JP2004252585 A JP 2004252585A JP 2003040177 A JP2003040177 A JP 2003040177A JP 2003040177 A JP2003040177 A JP 2003040177A JP 2004252585 A JP2004252585 A JP 2004252585A
- Authority
- JP
- Japan
- Prior art keywords
- verification
- program
- unit
- data
- virtual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
【課題】実機デバイスの完成を待たずにプログラム検証が可能であって、かつ、動作フリーズ等を起こさずにシステムの自動評価を長時間安定して行えるプログラム検証システムを提供する。
【解決手段】ICE400と、実機デバイス150に対応した検証動作を行うようICEを制御する検証制御部300と、仮想デバイス100からの制御信号等を検証制御部300に適合させるブリッジ504と、実機デバイス150に対するプログラム410の入出力動作に同期させて、同期化RAM404と実機用ユーザRAM402との間のデータ転送を制御する仮想・実機同期処理部412とを備え、ブリッジ504内に、検証制御部300からの検証動作指示が正常に処理されているかを判断する監視部を備えたプログラム検証システム。
【選択図】 図1
【解決手段】ICE400と、実機デバイス150に対応した検証動作を行うようICEを制御する検証制御部300と、仮想デバイス100からの制御信号等を検証制御部300に適合させるブリッジ504と、実機デバイス150に対するプログラム410の入出力動作に同期させて、同期化RAM404と実機用ユーザRAM402との間のデータ転送を制御する仮想・実機同期処理部412とを備え、ブリッジ504内に、検証制御部300からの検証動作指示が正常に処理されているかを判断する監視部を備えたプログラム検証システム。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、ICEを用いてマイコンプログラムの動作検証を行うプログラム検証システムであって、特に、プログラム実行に必要な周辺デバイスとして実機デバイスと仮想デバイスとを用いるプログラム検証システムに関する。
【0002】
【従来の技術】
図14に、従来の実機デバッグセットの一例を示す。図14に示すように、シングルチップマイコン制御用アプリケーションプログラムの評価は、ターゲットとなるシングルチップマイコンの代わりに、シングルチップマイコンの全機能をエミュレートできるインサーキットエミュレータ(以下ICEと称する)400をデバッグボード18に組み込んだものを、ハードウェアで構成された実機デバッグセット(周辺デバイス120)に接続して行われていた。
【0003】
しかし、このようなデバッグセットを用いる場合、プログラムのテストを行うためには、システムを動作させるハードウェアが先行完成していることが必須条件であるため、ソフトウェア開発の工程がハードウェア開発の進捗状況に大きく左右されるという問題があった。
【0004】
この問題を解決するために、ターゲットとなるシングルチップマイコンのシミュレーションおよび周辺デバイスのシミュレーションを行うことで、実機を使わずに、プログラムを評価する方法が提案されている。
【0005】
このようなシミュレーション方法の一例が、例えば特許文献1(特開平9−114700号公報)に開示されている。特許文献1に開示されたシステムは、テスト/デバッグの対象となる組込みソフトウェアと、マイクロプロセッサユニット(MPU)およびメモリを模擬するMPUシミュレータと、入出力を模擬する入出力装置模擬部と、MPUと1つ以上の入出力装置を接続する信号線を模擬する入出力装置実行制御機構と、シミュレータの起動順序を記述した起動定義ファイルと、I/OモニタとI/Oモデルのプロセスを起動/終了する手段と、ユーザが全てのI/Oモデルのリソース情報を参照・変更できる手段と、I/OモデルとI/Oモニタの接続関係を表示する手段を持つ入出力模擬部操作環境とで構成されている。それぞれの構成要素は、複数のプロセスで構成され、仮想配線にて接続されている。このシミュレーション方法では、図15に示す通り、実機周辺デバイス120を全て仮想デバイス100にて実現する。
【0006】
また、実機デバッグ方法とシミュレータデバッグ方法の両方の良いところを合わせた実機・シミュレータ混載システムの一例が、特許文献2(特開平8−6810号公報)に開示されている。特許文献2に開示されたシステムは、図16に示す通り、ICE64を利用した実機デバッグセットと、仮想デバイス(シミュレーション部50)との混載システムである。このシステムでは、シミュレーション部50とICE64との入出力データの受渡しは、専用の実機インターフェースボード60を用いて実現されている。
【0007】
【特許文献1】
特開平9−114700号公報
【0008】
【特許文献2】
特開平8−6810号公報
【0009】
【発明が解決しようとする課題】
しかし、従来の実機・シミュレータ混載システムでは、図16に示したように、仮想デバイスとICEとの入出力データの受渡しを実現するために、専用のインターフェースボード60を必要とする。このため、周辺デバイスの仕様変更等が発生した場合は、それに合わせてインターフェースボードを設計変更するために費用と時間が必要となるという問題があった。
【0010】
本発明は、このような問題に鑑み、実機のハードウェア開発よりもプログラム開発の方が先行した場合でも実機デバイスの完成を待たずにプログラム検証が可能であって、かつ、動作フリーズ等を起こさずにシステムの自動評価を長時間安定して行えるプログラム検証システムを提供することを目的とする。
【0011】
【課題を解決するための手段】
上記の目的を達成するために、本発明にかかるプログラム検証システムは、マイコンの周辺デバイスとして実機デバイスおよび仮想デバイスを用いて、前記マイコン用プログラムの動作を検証するプログラム検証システムであって、前記マイコン上の前記プログラムの動作をエミュレーションするエミュレータと、前記実機デバイスに対応した検証動作を行うよう前記エミュレータを制御する検証制御部と、前記検証制御部と前記仮想デバイスとの間に設けられ、前記仮想デバイスからの制御信号およびデータを前記検証制御部に適合させるブリッジ部と、前記実機デバイスと前記プログラムとの間の入出力データを格納する実機用RAMと、前記実機用RAMと前記仮想デバイスとの間に設けられた同期化RAMと、前記実機デバイスに対する前記プログラムの入出力動作に同期させて、前記同期化RAMと前記実機用RAMとの間のデータ転送を制御する、仮想・実機同期処理部とを備えると共に、前記ブリッジ部内に、前記検証制御部からの検証動作指示が正常に処理されているかを判断する監視部を備えたことを特徴とする。
【0012】
この構成は、実機のハードウェア開発よりもプログラム開発の方が先行した場合でも、実機デバイスの完成を待たずにプログラム検証を可能とするために、既存の実機デバイスの仕様に対応した検証制御部と、新規プログラムに対応する実機デバイスの仕様をソフトウェアによりシミュレーションする仮想デバイスとの間に、この仮想デバイスからの制御信号やデータを検証制御部に適合させるべく例えばコマンドやデータの変換等を行うブリッジ部を設けたものである。これにより、実機デバイスの完成を待たずに、新規プログラムの検証を行うことが可能となる。また、実機デバイスと仮想デバイスとの動作速度の違いを吸収するために、プログラムが使用する実機用RAMとは別に、同期化を行うための同期化RAMを設ける。さらに、同期化RAMと実機用RAMとのデータ転送を同期制御するために仮想・実機同期処理部を設ける。
【0013】
これにより、例えば、主機能が共通であるがユーザインターフェース周り(操作と表示に関する部分)の仕様にバリエーションを有する、いわゆる展開機種の開発を行うような場合に、新たにデバッグ用の実機セットをハードウェアで作らずとも、既存の実機セットを利用しつつ仮想デバイスでシミュレーションすることが可能となる。また、従来のように、仮想デバイスとICEとの間で入出力データを受け渡しするための、専用のインターフェースボードを作成する必要もない。以上のように、本発明によれば、実機デバッグセットの完成を待たずして、効率良くプログラムの開発を行うことが可能なプログラム検証システムを提供できる。
【0014】
さらに、検証制御部からの検証動作指示が正常に処理されているかを判断する監視部を備えたことにより、異常動作が生じた場合にこれを検知することができ、動作フリーズ等を起こさずにシステムの評価を長時間安定して行うことが可能となる。
【0015】
本発明にかかるプログラム検証システムは、検証動作の手順を記載したシナリオファイルを記憶するシナリオファイル記憶部をさらに備え、前記検証制御部が、前記シナリオファイル記憶部から読み出したシナリオファイルに基づいて前記エミュレータを制御する構成とすることが好ましい。これにより、検証動作手順を手入力する手間が省け、入力ミスも防止できるので、検証作業を効率的にかつ高精度に行うことが可能となる。
【0016】
本発明にかかるプログラム検証システムは、前記検証動作指示がリスタートコマンドであり、前記監視部が、前記リスタートコマンドが所定時間以内に処理されたか否かを判断する構成とすることが好ましい。
【0017】
この構成によれば、例えば、検証制御部からリスタートコマンドが発行された後、エミュレータやデバッグ対象プログラムに対して確実にリセット処理がされたかを確認することが可能になる。
【0018】
本発明にかかるプログラム検証システムは、前記検証動作指示がキー実行コードであり、前記監視部が、前記キー実行コードが所定時間以内に処理されたか否かを判断する構成とすることが好ましい。
【0019】
このように、各キーイベントに対してキー処理時間制限を付けることで、デバッグ対象プログラムのバグ等により、デバッグ対象プログラムが無限ループ等に陥った場合に、次の処理が行えなくなることを回避できる。例えば、制限時間内にキー実行コードの処理が行われなければ、次の検査項目の処理を行う様に回避策を入れることにより、検査項目全てを実行することが可能になる。
【0020】
本発明にかかるプログラム検証システムは、前記検証動作指示がシーケンス実行コードであり、前記監視部が、前記シーケンス実行コードが所定時間以内に処理されたか否かを判断することが好ましい。
【0021】
これにより、各シーケンス実行コードに対してシーケンスが実行完了したかどうかの判断を行うことにより、シーケンスの検証動作が停止した場合でも、例えば次のシーケンスの検証を行う等の回避策を講ずることが可能となる。これにより、さらに効率良く検証を行えると共に、自動検証作業の信頼性の向上が可能となる。
【0022】
本発明にかかるプログラム検証システムは、前記仮想デバイスに対する前記エミュレータの入出力データを取得するデータ取得部をさらに備え、前記ブリッジ部内に、前記データ取得部によるエミュレータ入出力データの取得タイミングを制御するデータ取得タイミング制御部をさらに備えたことが好ましい。
【0023】
この構成によれば、検証制御部から送られるキーのメッセージに対してエミュレータ入出力データの取得タイミングの同期がとれるため、例えば、仮想デバイスで模擬される実機の表示状態においてフラッシング等の表示の点滅(オン/オフ)がある場合に、表示画像が「オフ」の時にデータ取得せず、「オン」の時に確実にデータ取得できる。これにより、自動検証精度を向上できる。
【0024】
本発明にかかるプログラム検証システムは、上記のシナリオファイル記憶部を備えた構成において、前記ブリッジ部内に、前記監視部により異常動作が発見された場合、検証動作の手順を、前記シナリオファイル記憶部からではなく前記仮想デバイスから入力するよう切り替える切替設定部をさらに備えたことが好ましい。
【0025】
これにより、シナリオファイルを用いた自動検証作業の途中に異常動作を発見した場合等に、自動検証を一時中断して、仮想デバイスからの入力による手動検証に切り替えることが可能になる。
【0026】
【発明の実施の形態】
最初に、以下の各実施形態で共通する構成および用語について、図1を参照しながら説明する。
【0027】
プログラム414は、マイコン上で動作するプログラムとして開発されたものであり、本発明にかかるプログラム検証システムにおいてデバッグ対象となるプログラムである。
【0028】
実機プログラム410とは、デバッグ対象のプログラム414と、同期化プログラム412とを含む。同期化プログラム412は、実機のマイコンには搭載されず、プログラム検証システムにおいてのみ用いられ、後に詳述するが、仮想デバイス100からユーザRAM402へのデータ書き込みを、実機デバイス150からのデータ書き込みと同期させる処理を行う。
【0029】
リスタートとは、シナリオファイル352や仮想入力102から取得するシーケンスキーがリセットのコードであれば、マイコン制御をリセットさせ、自動検証システムを再スタートさせることである。
【0030】
周辺デバイス120とは、プログラム414の動作検証に必要な入出力デバイスであり、実機デバイス150と仮想デバイス100とを含む。実機デバイス150とは、プログラム414が搭載される実機の入出力デバイス(ハードウェアそのもの)である。これに対して、仮想デバイス100は、プログラム414が搭載される実機のハードウェアをソフトウェアでシミュレーションするものである。
【0031】
ICE400は、プログラム414を実行検証するために、プログラム414が搭載される実機の組み込みマイコンをエミュレートするインサーキットエミュレータ(in circuit emulator)であり、マイコンエミュレータ406、ユーザRAM402、および同期化RAM404を含む。ユーザRAM402は、実機デバイス150とプログラム414との間の入出力データを格納するRAMであり、同期化RAM404は、後に詳述するが、仮想デバイス120からユーザRAM402へ書き込むべきデータを一時的に格納するRAMである。
【0032】
ICE400の動作は、デバッガ500により制御される。デバッガ500は、ブリッジ504およびICEデバッガ506(検証制御部)を含む。ICEデバッガ506は、実機デバイス150の仕様に対応した検証動作をICE400に実行させるように設計されている。これに対して、ブリッジ504は、実機デバイス150の代わりに仮想デバイス100を入出力デバイスとして用いた検証動作を可能とするために、仮想デバイス100とICE506との間で制御コマンドの変換等を行うものであり、ソフトウェアで実現される。
【0033】
すなわち、本実施形態にかかるプログラム検証システムは、実機のハードウェア開発よりプログラム開発の方が先行した場合でも、実機デバイスの完成を待たずにプログラム検証を可能とするために、既存の実機デバイス150およびICEデバッガ506を用いながら、新規プログラム(プログラム414)に対応する実機デバイスの仕様をソフトウェアによりシミュレーションする仮想デバイス100と、この仮想デバイス100をICEデバッガ506に適合させるブリッジ504とを設けたものである。
【0034】
仮想配線206とは、仮想デバイス120とデバッガ500、並びに後の実施形態で説明する自動検証制御部等を、仮想的に接続する配線である。仮想デバイス100およびデバッガ500等を複数のパーソナルコンピュータで実現した場合は、この仮想配線206として、ネットワーク、USB、RS232C、IEEE1394を使用できる。また、仮想デバイス100およびデバッガ500等を、一台のパーソナルコンピュータ内で単独実行可能な複数のアプリケーションまたはプロセスとして実現した場合は、仮想配線206は、アプリケーションまたはプロセス間にて通信可能なDDE、COM等のデータ通信機能を利用して実現できる。なお、仮想配線206の具体的な実施形態は、本発明の発明者らによってなされた発明にかかる先の出願(特願2001−219887号)に、詳しく開示されている。
【0035】
仮想配線206による通信方法は、非同期通信または同期通信のどちらでもよい。非同期通信とは、データを通信相手に一方的に送信するだけで、返信がない通信方法である。同期通信とは、データを通信相手に送信した後、通信相手から返信データが返ってくるまで待っている通信方法である。
【0036】
HTAとは、HTML Applicationsの略で、Webページで実行可能なさまざまな機能(HTML、CSS、スクリプト言語(Java(登録商標、以下略)Script、VBA等)、Behavior)をサポートする。
【0037】
ActiveXとは、Internet対応のOLEドキュメントオブジェクトであるActiveXドキュメントや、Internetアクセス機能を持ったクライアントアプリケーションを開発するためのAPIである。
【0038】
OLEとは、Object Linking and Embeddingの略で、アプリケーションが別のアプリケーションの機能を呼出して自分自身の機能のように利用したりできる。
【0039】
(第1実施形態)
以下、本発明の一実施形態について、図1を用いて説明する。
【0040】
本実施形態にかかるプログラム検証システムは、長時間動作を安定させ、検証システムの停止やデータ取得失敗を起こさないで、プログラム自動検証を行うことを目的とする。このため、図1に示すとおり、本プログラム検証システムは、検証結果ファイル350および記録制御部302と、シナリオファイル352と、これに対する読み書きを制御するシナリオ制御部314を備えている。なお、記録制御部302およびシナリオ制御部314により、プログラム自動検証を実現するための自動検証制御部300が構成されている。
【0041】
シナリオファイル352とは、プログラム414を自動的に検証するための操作手順(シナリオ)を記録したファイルであり、検証結果ファイル350と同様に、例えば、Microsoft社のExcel等を利用して実現することができる。自動検証制御部300の制御プログラムは、HTAを利用して記述されている。また、検証結果ファイル350およびシナリオファイル352をExcelで作成する場合、これらの読書きを自動検証制御部300から行うために、OLE機能を利用する。また、自動検証制御部300と仮想配線206との間のデータ通信は、ActiveXを利用して実現できる。
【0042】
以下、本プログラム検証システムの構成および動作について、具体的な説明を行う。
【0043】
本プログラム検証システムは、ICE400内の表示用イメージデータの変化に基づいて、仮想出力104の表示を更新する。仮想出力104の表示画像は、クリップボード200および検証結果書込部304を経由して検証結果ファイル350に記録され、予め検証結果ファイル350に記録されていた検証用の期待値データと自動比較される構成となっている。
【0044】
<シナリオからICEへのデータ転送の自動シーケンス>
以下、本プログラム検証システムの自動検証処理について説明する。自動検証処理は、自動検証制御部300が、シナリオファイル352からキーデータ等を読み出し、ICE400へ自動的に転送して実行させ、その実行結果を検証結果ファイル350へ書き込んで評価することにより行う。
【0045】
シナリオファイル352には、動作検証に必要な操作情報(キーデータ等)が、検証手順に従ってあらかじめ記録されている。シナリオファイル352は、Excelファイルを利用して、例えば、図12に示すような状態遷移表として作成される。本プログラム検証システムでは、シナリオファイルに記述されている動作シーケンスに従って画面モードを所定の状態にした後、イベントであるキーの発行を実行して、各キー入力に対するアクション(有効または無効)の確認を行う。例えば、図12に示すシナリオファイル352の場合、図12中に示した実行順番に従い、まず、画面モードを”MDPWRON”にした状態で、”KPOWER”、”KCH UP”、”KVOL UP”、”KMENU”、”KSET”のキー入力を順次行い、これらの各キー操作に対する仮想デバイスおよび実機デバイスの動作を検証する。そして、次に、画面モードを”MDMENU”とした状態で、上述と同様に”KPOWER”、”KCH UP”、”KVOL UP”、”KMENU”、”KSET”のキー入力を順次行い、仮想デバイスおよび実機デバイスの動作を検証する。以降、”MDTIMER”、”MDSET”、”MDTEST”の各画面モードについて、同様に検証を行う。
【0046】
ここで、図12に示すシナリオファイル352を用いた自動検証処理の詳細について、画面モード”MDMENU”の状態での各キー入力に対する動作検証を行う場合を例にとり、さらに具体的に説明する。自動検証制御部300は、以下の(1)〜(9)の手順により、画面モード”MDMENU”の状態でのキー入力に対する動作検証を行う。
【0047】
(1)同期化RAM400内のリセット完了モニタ用フラグRAMに”1”をセットする。
【0048】
(2)ICE400にプログラム414を初期化させるために、シナリオ読込部316からデータ送信部320へ、リセットGOコマンド発行を指示する。なお、”リセットGO”コマンドとは、ICE400に実機プログラム410の実行を停止させ初期化する”リセット”コマンドと、ICE400に実機プログラム410を最初から実行開始させる”GO”コマンドとを一連に実行させるものである。データ送信部320は、同期通信により、ブリッジ504を経由してICEデバッガ506に対してリセットGOのメッセージを送る。ICEデバッガ506が、ICE400をリセットGO実行させることにより、実機プログラム410がリセットスタートされる。実機プログラムリセットスタート実行の先頭プログラムで、前記のリセット完了モニタ用フラグRAM値を”0”にする。ICE400がリセットGO完了すれば、ブリッジ504からデータ送信部320を経由して、シナリオ読込316部にリセットGO完了通知を行う。
【0049】
(3)リセット完了モニタ用フラグRAM値が”0”になったことを確認した後、画面モードを”MDMENU”にするために、シナリオファイル352において当該画面モードの動作シーケンスに記述されているキーをシナリオ読込部316により順次読み込み、発行する。発行されたキーは、データ送信部320、バススロット312、仮想配線206、デバッガ500を介して、ICE400へ渡される。図12の例では、”MDMENU”の動作シーケンスの最初の動作(図12のシナリオファイルにおける動作1の欄)として”KPOWER”というキーが記述されているので、このキーが最初に発行される。
【0050】
(4)”KPOWER”キーの処理を実機プログラム410が完了したかを、ユーザRAM402内の特定RAMにおける値の変化をチェックすることにより、確認する。特定RAMの変化が確認できると、次に、動作シーケンスの動作2に記述されている”KMENU”キーを発行し、上記と同様に、ユーザRAM402内の特定RAMの変化をチェックすることにより、”KMENU”キーの処理が完了したかを確認する。以上の処理を、シナリオファイル352の動作シーケンスに記述されている最後のキーまで、繰り返し実行する。図12に示す”MDMENU”の場合、”KPOWER”キーおよび”KMENU”キーの実行により、目的の画面モードである”MDMENU”になる。
【0051】
(5)目的の画面モードになったら、まず、ユーザRAM402内の画像データを同期化RAM404に取り込む。
【0052】
(6)次に、シナリオファイル352に記述されている発行キーを、順次発行し、動作を検証する。図12の例では、最初に、”KPOWER”キーを発行する。”KPOWER”キーの処理が完了したことを、ユーザRAM402内の特定RAM値の変化で確認する。
【0053】
(7)”KPOWER”キーの処理が完了したことが確認できたら、この”KPOWER”キーの処理結果を検証する。仮想出力104は、画面変化の有無を、イベント検出部308に伝える。イベント検出部308は、画面変化の有無が、シナリオファイル352に記述されている有効・無効仕様に合致するかを判断する。
【0054】
例えば、図12に示すシナリオファイルの場合、○記号は、当該画面モードにおける当該キー発行が有効であることを表し、×記号は、当該画面モードにおける当該キー発行が無効であることを表す。なお、「キー発行が有効である」とは、そのキー発行により画面上に何らかの変化が生じることをいい、「キー発行が無効である」とは、そのキー発行によっても画面に変化が生じないことをいう。
【0055】
ここでは、”MDMENU”の列と”KPOWER”の行との交点にあたる欄には○記号が記述されているので、画面モードが”MDMENU”である場合に”KPOWER”キーを発行した場合、このキーが正しく処理されたならば、何らかの画面変化が生じるべきである。従って、”KPOWER”キーの発行により画面変化が生じていれば、イベント検出部308は、”MDMENU”画面モードにおける”KPOWER”キーの有効・無効仕様は満たされているものと判断する。
【0056】
イベント検出部308は、有効・無効仕様が満たされているか否かの判断結果に応じて、シナリオファイル352の有効・無効仕様欄に色付けする。すなわち、イベント検出部308が、シナリオファイル352に記述されている有効・無効仕様が満たされていると判断すれば、検証結果書込部304を介して、シナリオファイル352の当該有効・無効仕様欄の表示属性を例えば青色に設定し、満たされていないと判断した場合は例えば赤色に設定することにより異常動作であることが分かるようにする。これにより、デバッグ作業者は、シナリオファイル352の有効・無効仕様欄の表示色により、目標仕様が満たされているかを容易に識別することが可能となる。また、ここでは、有効・無効仕様の検証結果をシナリオファイル352に記録することとしたが、検証結果ファイル350に、有効・無効仕様の検証結果を記録する欄を別途設けるようにしてもよい。
【0057】
(8)また、検証結果書込部304は、画像データ取得部310によりユーザRAM402から取得した画面データ(実行画像データ)を、検証結果ファイル350へ書き込む。さらに、検証結果書込部304は、前記実行画像データと、検証処理の実行に先立って予め作成されている基準画像データとを比較し、比較結果を検証結果ファイル350へ書き込む。基準画像データとは、キーが正しく処理された結果として表示されるべき画像データのダンプデータであり、図13に示すように検証結果ファイル350へ書き込まれている。例えば図13に示した例にかかる検証結果ファイル350では、基準画像データと実行画像データとの比較結果が一致すれば○記号、一致しなければ×記号が、「判定」の欄に書き込まれている。これにより、デバッグ作業者は、検証結果ファイル350の判定欄を見るだけで、キー発行により所定の画面データが表示されたか否かを容易に検証できる。
【0058】
(9)また、検証結果ファイル350には、基準画像データに基づく画面イメージ(基準画面)が予め貼り付けられている。検証結果書込部304は、図13に示すように、この基準画面の隣の列に、仮想出力104に出力された画面(実行画面)を、クリップボード200を介して貼り付ける。これにより、デバッグ作業者は、検証結果ファイル350を見るだけで、基準画面と実行画面との違いを容易に識別することが可能となる。
【0059】
”KPOWER”キーについて上記の(9)までの処理が終了したら、(5)へ戻り、(6)においてシナリオファイルに記述されている次の発行キー”KCHUP”を発行し、以降の処理を行う。同様にして、シナリオファイルに記述されている全ての発行キーについて、(5)〜(9)の処理を繰り返すことにより、図13に示すような検証結果ファイルが完成する。
【0060】
また、本実施形態では、自動検証処理中の何らかの要因によりICE400が異常動作になった場合に、自動検証処理が続行できなくなることを防ぐため、既存デバッガ562(図2参照)がICE400の挙動を監視する。そして、ICE400の動作に変化が発生した場合は、図11に示すようなメッセージを、ICEデバッガ506が、ブリッジ504内のICE状態モニタ558(図2参照)に伝える。さらに、このメッセージは、ICE状態送信部556から、仮想配線206を介して、シナリオ制御部314内のタイミング制御部318に伝えられる。これにより、タイミング制御部318は、ICE400の動作変化に合わせて、シナリオ読込部316にシナリオファイル352のデータを再発行させる等の処理を行う。
【0061】
なお、自動検証処理において、シナリオファイル352として前記の状態遷移表を用いる代わりに、シナリオファイル352の記述方法や自動検証制御部300の制御方法を適宜変更することで、任意の自動検証処理を実現可能である。
【0062】
<具体的動作>
以下、プログラム自動検証を行う本プログラム検証システムの動作について、さらに具体的に説明する。
【0063】
<初期化処理>
本実施形態のプログラム検証システム(図1に示す構成)は、起動すると、まず、初期化処理を行う。仮想デバイス100、デバッガ500、及び自動検証制御部300は、仮想配線206に接続するための接続処理を行う。また、ブリッジ504は、予め、データ送信部320および仮想出力104からのメッセージ受信を行うために、受信割込み許可しておく。
【0064】
<シナリオ読込から仮想配線へリセットGOコマンドデータを流す>
シナリオ読込部316から、ICE400の実行を初期化するために、リセットGOコマンドの送信をデータ送信部320に指示する。データ送信部320は、図3に示すようなリセットGOコマンドのフォーマットに従って作成したメッセージを、ブリッジ504に宛てて、バススロット312から仮想配線206に同期通信にて送出する。
【0065】
<ブリッジデバイスの書込み処理>
データ送信部320からデバッガ500のバススロット502経由でブリッジ504に送られて来たメッセージは、図2に示す通り、受信割込み処理を行う同期受信部550に受け取られる。コマンド変換部552は、図3に示すようなテーブルを参照し、受け取ったメッセージが、1バイトメモリライト、1バイトメモリリード、ICEリセット、ICE実行等のどのメッセージであるかを分析し、その結果をコマンド発行部554からICEデバッガ506内のVirtualLink560に渡す。
【0066】
VirtualLink560は、既存デバッガ562を制御して、ICE400にリセットコマンドを発行した後、実行開始コマンドを発行して、実行完了通知を同期受信部550の返信データとして、メッセージの送信元であるデータ送信部320に返信する。データ送信部320は、シナリオ読込部316にリセットGOコマンド実行完了を伝え、シナリオファイル352の内容に従った実行を行う。
【0067】
<シナリオファイルから仮想配線へのデータを流す>
シナリオ読込部316は、シナリオファイル352からキーコードを読込んで、データ送信部320に指示して、図3に示すようなメッセージ一覧表内の1バイトメモリライトコマンド発行フォーマットに従って作成したメッセージを、ブリッジ504に宛てて、バススロット106から仮想配線206へ同期通信にて送出する。
【0068】
<ブリッジの書込み処理>
データ送信部320から、バススロット502経由でブリッジ504に送られて来たメッセージは、図2に示す通り、受信割込み処理を行う同期受信部550に受け取られる。そして、コマンド変換部552が、図3に示すようなテーブルに基づき、受け取ったメッセージが、1バイトメモリライト、1バイトメモリリード、ICEリセット、ICE実行等のどのメッセージであるかを分析する。その分析結果は、コマンド発行部554からICEデバッガ506内のVirtualLink560に渡される。
【0069】
VirtualLink560は、既存デバッガ562を制御して、プログラム414を実行中のICE400内の同期化RAM404に、仮想入力102から渡された指定RAMアドレスのRAMデータをオンザフライにて書込んだ後、書込み完了通知を、同期受信部550の返信データとして、メッセージの送信元であるデータ送信部320へ返信する。返信を受けると、キーデータを配信したことを、実行状況配信部322からイベント検出部308に伝える。
【0070】
<リセットコードの判定およびコマンド変換処理>
自動検証制御部300から、仮想配線206およびバススロット502経由でブリッジ504に送られて来たリセットコードは、図2に示す通り、ブリッジ504内で受信割込み処理を行う同期受信部550で受け取られる。ここで、リセットコードを受け取ったコマンド変換部552が行うコマンド変換処理の内容を、図6に示す。
【0071】
図6に示すように、コマンド変換部552は、受け取ったリセットコードの種類を判断し(ステップS60)、リセットコードの種類に応じた処理を行う。
【0072】
(1)リスタートコードの場合
受け取ったリセットコードがリスタートコードであった場合、コマンド変換部552は、リスタート初期化処理(ステップS611)を行い、コマンド変換部552内に設けられたリスタート判定部(図示せず)により、リスタートの完了確認フラグが一定時間以内にセットされたか否かを判定するリスタート判定処理(ステップS612)を行う。リスタート判定処理の結果は、「受付異常」または「リスタートOK」のいずれかを表す返信データとして、コマンド発行部554へ返信される(ステップS69)。
【0073】
リスタート判定処理の内容を、図7に示す。リスタート初期化処理(ステップS611)の後、図7に示すように、リスタートの完了確認フラグがセットされたか判断し(ステップS612a)、フラグがセットされていれば、返信データの内容に、「リスタートOK」を表すデータをセットする(ステップS612b)。フラグがセットされていなければ、予め設定された所定の時間以内であるか否かを判断し(ステップS612c)、時間内であればステップS612aへ戻る。前記所定の時間を越えた場合は、返信データの内容に、「受付異常」を表すデータをセットする(ステップS612d)。
【0074】
(2)キー実行コードの場合
受け取ったリセットコードがキー実行コードであれば、コマンド変換部552は、イベントキーの発行初期化処理(ステップS621)を行い、コマンド変換部522内に設けられたキー実行判定部(図示せず)により、イベントキー発行が一定時間以内に行われたか否かを判定するキー実行判定処理(ステップS622)を行う。キー実行判定処理の結果は、コマンド発行部554へ返信される(ステップS69)。
【0075】
キー実行判定処理の内容を、図8に示す。イベントキーの発行初期化処理(ステップS621)の後、図8に示すように、イベントキーが発行されたか判断し(ステップS622a)、イベントキーが発行されていれば、コマンド発行部554への返信データとして表示画像を取得し(ステップS622b)、コマンド変換部522内に設けられたフラグセット部(図示せず)によってフラッシングフラグをセットする(ステップS622c)。ステップS622aにおいてイベントキーが発行されていないと判断されれば、予め設定された所定の時間以内であるかを判断し(ステップS622d)、時間内であればステップS622aへ戻る。前記所定の時間を越えた場合は、コマンド発行部554への返信データの内容に、「応答なし」を表すデータをセットする(ステップS622e)。
【0076】
なお、上述のフラッシングフラグは、検証プログラムにフラッシング表示仕様があれば、表示をフラッシングできるようにするためのフラグであり、図10に示すように、実機プログラム内のリセット時の初期化処理の時に、フラグクリア部によってクリアされる。なお、フラグクリア部は、図2に示すコマンド変換部552内に設けられる(図示省略)。
【0077】
(3)シーケンス実行コードの場合
受け取ったリセットコードがシーケンス実行コードであれば(ステップS630)、コマンド変換部552は、キー発行処理(ステップS631)を行い、コマンド変換部522内に設けられたシーケンス実行判定部(図示せず)により、キー発行が一定時間以内に行われたか否かを判定するシーケンス実行判定処理(ステップS632)を行う。シーケンス実行判定処理の結果は、「シーケンス実行異常」または「シーケンス実行OK」のいずれかを表す返信データとして、コマンド発行部554へ返信される(ステップS69)。
【0078】
シーケンス実行判定処理の内容を、図9に示す。キー発行処理(ステップS631)の後、図9に示すように、キーが発行されたか判断し(ステップS632a)、キーが発行されていれば、返信データの内容に、「シーケンス実行OK」を表すデータをセットする(ステップS632b)。キーが発行されていなければ、予め設定された所定の時間以内であるか否かを判断し(ステップS632c)、時間内であればステップS632aへ戻る。前記所定の時間を越えた場合は、返信データの内容に、「シーケンス実行異常」を表すデータをセットする(ステップS632d)。
【0079】
以上の(1)〜(3)に説明したように、コマンド変換部552によりリセットコードに応じた返信データが作成され、コマンド発行部554へ返信される。コマンド発行部554は、その分析結果を、ICEデバッガ506内のVirtualLink560に渡す。
【0080】
VirtualLink560は、実機デバイス150の仕様に対応した検証動作を行うように設計されている既存デバッガ562を制御して、プログラム実行中のICE400内の同期化RAM404に、仮想入力102から渡された指定RAMアドレスのRAMデータを、オンザフライにて書込む。その後、同期受信部550が、前記メッセージへの返信としての書込み完了通知を、メッセージの送信元である仮想入力102へ返信する。なお、「オンザフライ」とは、プログラム414が実行中でも、ICE400内のユーザRAM402と同期化RAM404のRAMデータ、およびマイコンエミュレータ406内のレジスタの読書きを可能とする、ICE400の機能である。
【0081】
このようにすれば、シーケンス実行時に、万一なんらかの理由で動作がフリーズした場合でも検証システムが止まることなく、長時間安定した動作検証することができ、検証精度を向上させることができる。
【0082】
また、各テスト項目を実行する前にリセットを掛ければ、前テスト項目においてデバッグ対象プログラムのバグ等にて無限ループに陥った場合でもリスタートが可能となり、各項目のテストを行う事が可能になる。
【0083】
<同期化RAMからユーザRAMへの転送処理>
同期化プログラム412は、同期化RAM404の変化を、プログラム414に必要なタイミングで、マイコンエミュレータ406にチェックさせている。
【0084】
同期化プログラム412は、例えばキー入力の場合は、プログラム414のキー入力処理の直後に呼ばれ、同期化RAM404内のキーデータRAMの変化を、マイコンエミュレータ406経由でチェックし、もし変化が有れば、キーデータをユーザRAM402のキーデータ確定エリアに転送する。この際、仮想入力102のキーデータと実機デバイス150からのキーデータとが同時に入力された場合は、仮想入力102からのキーデータが優先される。
【0085】
同期化プログラム412内のキー入力処理は、図4に示すように、仮想キー入力が、実機キー入力より優先されて処理される。
【0086】
<ユーザRAMから仮想出力へのデータ転送>
シナリオファイル352から読み込んだキーコードによってプログラム414がユーザRAM402内の出力RAMデータ(仮想出力104への出力データ)を変更した場合、この出力RAMデータを仮想出力104へ転送する方法は、以下の(c1)〜(c4)のとおりである。
【0087】
(c1)プログラムのユーザRAM変更;
プログラム414により、ユーザRAM402内の仮想出力104に関係するRAMエリアが変更された直後に、ユーザRAM402から同期化RAM404内の特定RAMに変化を伝えるための処理を行う。具体的には、図5に示す通り、プログラム414から仮想同期化ルーチンを呼び出すことにより、処理を開始する(ステップS420)。実機デバイス150への出力処理(ステップS422)を行った直後に、実機デバイス150への出力RAMデータの変化を検出し(ステップS424)、変化があれば、出力RAMデータをユーザRAM402から同期化RAM404内に転送する(ステップS426)。
【0088】
(c2)仮想出力から仮想配線へデータを流す;
次に、仮想出力104から、同期化RAM404内の出力RAMデータの変化イベントを読込むために、仮想出力104からデバッガ500へのメッセージ転送の指定とイベントを読込むためのRAMアドレスとを一緒に、バススロット108経由で、仮想配線206に同期通信により送出する。
【0089】
(c3)ブリッジデバイスの読込み処理;
仮想出力104からバススロット502経由でブリッジ504に送られて来たメッセージは、図2に示す通り、受信割込み処理を行う同期受信部550で受け取られる。その後、コマンド変換部552が、図3に示すようなメッセージ一覧表に従い、受け取ったメッセージが、1バイトメモリライト、1バイトメモリリード、ICEリセット、ICE実行等のどのメッセージであるかを分析する。コマンド発行部554は、その分析結果を、ICEデバッガ506内のVirtualLink560に渡す。VirtualLink560は、既存デバッガ562を制御して、プログラム実行中にICE400内の同期化RAM404内の出力RAMデータをオンザフライにて読み込む。その後、読み込んだ出力RAMデータを、同期受信部550が、前記メッセージの送信元である仮想出力104へ返信する。これにより、出力RAMデータの仮想出力104への転送が、完了する。
【0090】
(c4)仮想出力の表示処理;
仮想出力104では、出力RAMデータを元に、パソコンモニタに、実機液晶画面を模した仮想表示等を行う。また、同期化RAM404またはユーザRAM402から仮想出力104に取得した画像データの変化があれば、仮想出力104は、画像データ取得部310に対して、画像変化のメッセージおよび仮想出力104の表示ダンプデータを転送する。
【0091】
また、前記イベントを使わずに、仮想入力102から一定周期にて、デバッガ500にユーザRAM402のデータを読込み、仮想出力104にて実機液晶画面を模した仮想表示等を行う方法でも良い。
【0092】
<データ転送からイベント検出に転送>
データ送信部320から前記キーデータが送られてくると、そのキーデータは、イベント検出部308から画像データ取得部310に渡される。また、同期化RAM404またはユーザRAM402から仮想出力104に取得した画像データの変化が有れば、仮想出力104を経由して、画像データ取得部310に対して画像変化のメッセージおよび、仮想出力の表示ダンプデータを転送する。画像データ取得部310は、前記キーデータを検証結果書込部304から検証結果ファイル350に書込む。
【0093】
また、画像データ取得部310は、仮想出力104から表示変化のメッセージを受けると、仮想出力104の表示画像を、クリップボード200にキャプチャーする。クリップボード200にキャプチャーされた画像は、検証結果書込部304により、検証結果ファイル350に対して書込まれる。
【0094】
具体的には、図13に示すように、キーデータは操作キーの欄に書込み、シナリオファイル352の画面モードは、画面モードの欄に書込む。
【0095】
<基準画像データと実行画像データとの比較>
検証結果ファイル350において、「基準画像データ」と「実行画像データ」とのデータの相違を判定し、判定結果を「判定」の欄に「○」と「×」として書込む。なお、検証結果ファイル350をExcelで作成する場合は、IF関数を用いて「基準画像データ」と「実行画像データ」の相違の判定を行うことができる。
【0096】
<基準画像データの作成>
尚、自動検証処理を行うための基準画像およびその表示ダンプデータの作成については、前述したように画像データおよび表示ダンプデータを図13に示す基準画面および実行画像データに書込むことで作成できる。
【0097】
<表示の出力抑制処理>
また、本実施形態のプログラム検証システムでは、図10(b)に示すように、表示同期判定プログラムによって、実機プログラム内の出力処理でフラッシングフラグがセットされていれば仮想出力104へ出力しないようにする。なお、表示同期判定プログラムは、実機プログラム内に検証用プログラムとして埋め込む。このようにすれば、フラッシングフラグのタイミングにより表示出力するため、画像取得のタイミングが同期化される。このことにより、自動検証制御部300から来るキーのメッセージに対して同期がとれるため、フラッシング等の表示の点滅がある場合に、仮想出力104の画像表示の記録時と完全に同期がとれるために、表示画像を「滅」の時にキャプチャーせず、「点」の時に確実にキャプチャーできるため、自動検証精度を向上できる。
【0098】
<仮想入力からの表示の出力抑制処理>
なお、仮想デバイス100からの入力からも画像キャプチャーの同期を行えるようにするために、図6に示すように、コマンド変換部552において通常のキーコードを受理した場合は、キー発行処理(ステップS641)およびキー受理処理(ステップS642)を行い、仮想デバイス100からの入力がリセットキーであれば(ステップS643)、コマンド変換部552に設けられた表示同期化フラグクリア部(図示せず)によってフラッシングフラグをクリアする(ステップS644)。なお、ステップS642のキー受理処理とは、キー受付をしたかどうかを判定する処理である。これにより、仮想デバイス100からのリセット時にも画像取得を同期化することができる。
【0099】
このようにすれば、自動検証途中に異常動作を発見したときなど、自動検証を一時中断して手動検証する場合に、仮想デバイスからの入力に対して、通常の動作に切り替えて手動検査を行う事が可能になり、検証精度を向上させることができる。
【0100】
以上のとおり、本実施形態によれば、長時間安定した動作が可能なプログラム自動検証システムを実現することができる。また、表示画像取得をキーと同期させることにより、画像のキャプチャーずれを防止することができる、これにより、検証精度および作業効率が向上する。
【0101】
【発明の効果】
以上のように、本発明によれば、万一なんらかの理由で動作がフリーズした場合でも自動検証システムが停止することなく、長時間安定して動作検証を行えると共に、検証精度を向上させることができる。
【図面の簡単な説明】
【図1】本発明の一実施形態にかかる実セット・シミュレータ混載のプログラム自動検証システムを示すブロック図
【図2】デバッガの内部構成を示すブロック図
【図3】仮想デバイスからブリッジへのメッセージ一覧の説明図
【図4】仮想から実機同期化フローチャート
【図5】実機から仮想同期化フローチャート
【図6】本発明の一実施形態にかかるプログラム自動検証システムにおけるコマンド変換処理の内容を示すフローチャート
【図7】図6のリスタート判定処理の内容を示すフローチャート
【図8】図6のキー実行判定処理の内容を示すフローチャート
【図9】図6のシーケンス実行判定処理の内容を示すフローチャート
【図10】(a)および(b)は本実施形態のプログラム自動検証システムにおける入出力処理のフローチャート
【図11】ICEから仮想デバイスへ向けてのイベント一覧を示す説明図
【図12】シナリオファイルの一例を示す説明図
【図13】本検証結果ファイルの一例を示す説明図
【図14】従来のプログラム検証システムの一例を示すブロック図
【図15】従来のプログラム検証システムの一例を示すブロック図
【図16】従来のプログラム検証システムの一例を示すブロック図
【符号の説明】
100 仮想デバイス
102 仮想入力
104 仮想出力
120 周辺デバイス
150 実機デバイス
152 実入力
154 実出力
156 実機入出力
200 クリップボード
206 仮想配線
300 自動検証制御部
302 記録制御部
304 検証結果書込部
308 イベント検出部
310 画像データ取得部
312 バススロット
314 シナリオ制御部
316 シナリオ読込部
318 タイミング制御部
320 データ送信部
350 検証結果ファイル
352 シナリオファイル
400 ICE
402 ユーザRAM
404 同期化RAM
410 実機プログラム
412 同期化プログラム
500 デバッガ
502 バススロット
504 ブリッジ
506 ICEデバッガ
522 コマンド変換部
524 コマンド発行部
【発明の属する技術分野】
本発明は、ICEを用いてマイコンプログラムの動作検証を行うプログラム検証システムであって、特に、プログラム実行に必要な周辺デバイスとして実機デバイスと仮想デバイスとを用いるプログラム検証システムに関する。
【0002】
【従来の技術】
図14に、従来の実機デバッグセットの一例を示す。図14に示すように、シングルチップマイコン制御用アプリケーションプログラムの評価は、ターゲットとなるシングルチップマイコンの代わりに、シングルチップマイコンの全機能をエミュレートできるインサーキットエミュレータ(以下ICEと称する)400をデバッグボード18に組み込んだものを、ハードウェアで構成された実機デバッグセット(周辺デバイス120)に接続して行われていた。
【0003】
しかし、このようなデバッグセットを用いる場合、プログラムのテストを行うためには、システムを動作させるハードウェアが先行完成していることが必須条件であるため、ソフトウェア開発の工程がハードウェア開発の進捗状況に大きく左右されるという問題があった。
【0004】
この問題を解決するために、ターゲットとなるシングルチップマイコンのシミュレーションおよび周辺デバイスのシミュレーションを行うことで、実機を使わずに、プログラムを評価する方法が提案されている。
【0005】
このようなシミュレーション方法の一例が、例えば特許文献1(特開平9−114700号公報)に開示されている。特許文献1に開示されたシステムは、テスト/デバッグの対象となる組込みソフトウェアと、マイクロプロセッサユニット(MPU)およびメモリを模擬するMPUシミュレータと、入出力を模擬する入出力装置模擬部と、MPUと1つ以上の入出力装置を接続する信号線を模擬する入出力装置実行制御機構と、シミュレータの起動順序を記述した起動定義ファイルと、I/OモニタとI/Oモデルのプロセスを起動/終了する手段と、ユーザが全てのI/Oモデルのリソース情報を参照・変更できる手段と、I/OモデルとI/Oモニタの接続関係を表示する手段を持つ入出力模擬部操作環境とで構成されている。それぞれの構成要素は、複数のプロセスで構成され、仮想配線にて接続されている。このシミュレーション方法では、図15に示す通り、実機周辺デバイス120を全て仮想デバイス100にて実現する。
【0006】
また、実機デバッグ方法とシミュレータデバッグ方法の両方の良いところを合わせた実機・シミュレータ混載システムの一例が、特許文献2(特開平8−6810号公報)に開示されている。特許文献2に開示されたシステムは、図16に示す通り、ICE64を利用した実機デバッグセットと、仮想デバイス(シミュレーション部50)との混載システムである。このシステムでは、シミュレーション部50とICE64との入出力データの受渡しは、専用の実機インターフェースボード60を用いて実現されている。
【0007】
【特許文献1】
特開平9−114700号公報
【0008】
【特許文献2】
特開平8−6810号公報
【0009】
【発明が解決しようとする課題】
しかし、従来の実機・シミュレータ混載システムでは、図16に示したように、仮想デバイスとICEとの入出力データの受渡しを実現するために、専用のインターフェースボード60を必要とする。このため、周辺デバイスの仕様変更等が発生した場合は、それに合わせてインターフェースボードを設計変更するために費用と時間が必要となるという問題があった。
【0010】
本発明は、このような問題に鑑み、実機のハードウェア開発よりもプログラム開発の方が先行した場合でも実機デバイスの完成を待たずにプログラム検証が可能であって、かつ、動作フリーズ等を起こさずにシステムの自動評価を長時間安定して行えるプログラム検証システムを提供することを目的とする。
【0011】
【課題を解決するための手段】
上記の目的を達成するために、本発明にかかるプログラム検証システムは、マイコンの周辺デバイスとして実機デバイスおよび仮想デバイスを用いて、前記マイコン用プログラムの動作を検証するプログラム検証システムであって、前記マイコン上の前記プログラムの動作をエミュレーションするエミュレータと、前記実機デバイスに対応した検証動作を行うよう前記エミュレータを制御する検証制御部と、前記検証制御部と前記仮想デバイスとの間に設けられ、前記仮想デバイスからの制御信号およびデータを前記検証制御部に適合させるブリッジ部と、前記実機デバイスと前記プログラムとの間の入出力データを格納する実機用RAMと、前記実機用RAMと前記仮想デバイスとの間に設けられた同期化RAMと、前記実機デバイスに対する前記プログラムの入出力動作に同期させて、前記同期化RAMと前記実機用RAMとの間のデータ転送を制御する、仮想・実機同期処理部とを備えると共に、前記ブリッジ部内に、前記検証制御部からの検証動作指示が正常に処理されているかを判断する監視部を備えたことを特徴とする。
【0012】
この構成は、実機のハードウェア開発よりもプログラム開発の方が先行した場合でも、実機デバイスの完成を待たずにプログラム検証を可能とするために、既存の実機デバイスの仕様に対応した検証制御部と、新規プログラムに対応する実機デバイスの仕様をソフトウェアによりシミュレーションする仮想デバイスとの間に、この仮想デバイスからの制御信号やデータを検証制御部に適合させるべく例えばコマンドやデータの変換等を行うブリッジ部を設けたものである。これにより、実機デバイスの完成を待たずに、新規プログラムの検証を行うことが可能となる。また、実機デバイスと仮想デバイスとの動作速度の違いを吸収するために、プログラムが使用する実機用RAMとは別に、同期化を行うための同期化RAMを設ける。さらに、同期化RAMと実機用RAMとのデータ転送を同期制御するために仮想・実機同期処理部を設ける。
【0013】
これにより、例えば、主機能が共通であるがユーザインターフェース周り(操作と表示に関する部分)の仕様にバリエーションを有する、いわゆる展開機種の開発を行うような場合に、新たにデバッグ用の実機セットをハードウェアで作らずとも、既存の実機セットを利用しつつ仮想デバイスでシミュレーションすることが可能となる。また、従来のように、仮想デバイスとICEとの間で入出力データを受け渡しするための、専用のインターフェースボードを作成する必要もない。以上のように、本発明によれば、実機デバッグセットの完成を待たずして、効率良くプログラムの開発を行うことが可能なプログラム検証システムを提供できる。
【0014】
さらに、検証制御部からの検証動作指示が正常に処理されているかを判断する監視部を備えたことにより、異常動作が生じた場合にこれを検知することができ、動作フリーズ等を起こさずにシステムの評価を長時間安定して行うことが可能となる。
【0015】
本発明にかかるプログラム検証システムは、検証動作の手順を記載したシナリオファイルを記憶するシナリオファイル記憶部をさらに備え、前記検証制御部が、前記シナリオファイル記憶部から読み出したシナリオファイルに基づいて前記エミュレータを制御する構成とすることが好ましい。これにより、検証動作手順を手入力する手間が省け、入力ミスも防止できるので、検証作業を効率的にかつ高精度に行うことが可能となる。
【0016】
本発明にかかるプログラム検証システムは、前記検証動作指示がリスタートコマンドであり、前記監視部が、前記リスタートコマンドが所定時間以内に処理されたか否かを判断する構成とすることが好ましい。
【0017】
この構成によれば、例えば、検証制御部からリスタートコマンドが発行された後、エミュレータやデバッグ対象プログラムに対して確実にリセット処理がされたかを確認することが可能になる。
【0018】
本発明にかかるプログラム検証システムは、前記検証動作指示がキー実行コードであり、前記監視部が、前記キー実行コードが所定時間以内に処理されたか否かを判断する構成とすることが好ましい。
【0019】
このように、各キーイベントに対してキー処理時間制限を付けることで、デバッグ対象プログラムのバグ等により、デバッグ対象プログラムが無限ループ等に陥った場合に、次の処理が行えなくなることを回避できる。例えば、制限時間内にキー実行コードの処理が行われなければ、次の検査項目の処理を行う様に回避策を入れることにより、検査項目全てを実行することが可能になる。
【0020】
本発明にかかるプログラム検証システムは、前記検証動作指示がシーケンス実行コードであり、前記監視部が、前記シーケンス実行コードが所定時間以内に処理されたか否かを判断することが好ましい。
【0021】
これにより、各シーケンス実行コードに対してシーケンスが実行完了したかどうかの判断を行うことにより、シーケンスの検証動作が停止した場合でも、例えば次のシーケンスの検証を行う等の回避策を講ずることが可能となる。これにより、さらに効率良く検証を行えると共に、自動検証作業の信頼性の向上が可能となる。
【0022】
本発明にかかるプログラム検証システムは、前記仮想デバイスに対する前記エミュレータの入出力データを取得するデータ取得部をさらに備え、前記ブリッジ部内に、前記データ取得部によるエミュレータ入出力データの取得タイミングを制御するデータ取得タイミング制御部をさらに備えたことが好ましい。
【0023】
この構成によれば、検証制御部から送られるキーのメッセージに対してエミュレータ入出力データの取得タイミングの同期がとれるため、例えば、仮想デバイスで模擬される実機の表示状態においてフラッシング等の表示の点滅(オン/オフ)がある場合に、表示画像が「オフ」の時にデータ取得せず、「オン」の時に確実にデータ取得できる。これにより、自動検証精度を向上できる。
【0024】
本発明にかかるプログラム検証システムは、上記のシナリオファイル記憶部を備えた構成において、前記ブリッジ部内に、前記監視部により異常動作が発見された場合、検証動作の手順を、前記シナリオファイル記憶部からではなく前記仮想デバイスから入力するよう切り替える切替設定部をさらに備えたことが好ましい。
【0025】
これにより、シナリオファイルを用いた自動検証作業の途中に異常動作を発見した場合等に、自動検証を一時中断して、仮想デバイスからの入力による手動検証に切り替えることが可能になる。
【0026】
【発明の実施の形態】
最初に、以下の各実施形態で共通する構成および用語について、図1を参照しながら説明する。
【0027】
プログラム414は、マイコン上で動作するプログラムとして開発されたものであり、本発明にかかるプログラム検証システムにおいてデバッグ対象となるプログラムである。
【0028】
実機プログラム410とは、デバッグ対象のプログラム414と、同期化プログラム412とを含む。同期化プログラム412は、実機のマイコンには搭載されず、プログラム検証システムにおいてのみ用いられ、後に詳述するが、仮想デバイス100からユーザRAM402へのデータ書き込みを、実機デバイス150からのデータ書き込みと同期させる処理を行う。
【0029】
リスタートとは、シナリオファイル352や仮想入力102から取得するシーケンスキーがリセットのコードであれば、マイコン制御をリセットさせ、自動検証システムを再スタートさせることである。
【0030】
周辺デバイス120とは、プログラム414の動作検証に必要な入出力デバイスであり、実機デバイス150と仮想デバイス100とを含む。実機デバイス150とは、プログラム414が搭載される実機の入出力デバイス(ハードウェアそのもの)である。これに対して、仮想デバイス100は、プログラム414が搭載される実機のハードウェアをソフトウェアでシミュレーションするものである。
【0031】
ICE400は、プログラム414を実行検証するために、プログラム414が搭載される実機の組み込みマイコンをエミュレートするインサーキットエミュレータ(in circuit emulator)であり、マイコンエミュレータ406、ユーザRAM402、および同期化RAM404を含む。ユーザRAM402は、実機デバイス150とプログラム414との間の入出力データを格納するRAMであり、同期化RAM404は、後に詳述するが、仮想デバイス120からユーザRAM402へ書き込むべきデータを一時的に格納するRAMである。
【0032】
ICE400の動作は、デバッガ500により制御される。デバッガ500は、ブリッジ504およびICEデバッガ506(検証制御部)を含む。ICEデバッガ506は、実機デバイス150の仕様に対応した検証動作をICE400に実行させるように設計されている。これに対して、ブリッジ504は、実機デバイス150の代わりに仮想デバイス100を入出力デバイスとして用いた検証動作を可能とするために、仮想デバイス100とICE506との間で制御コマンドの変換等を行うものであり、ソフトウェアで実現される。
【0033】
すなわち、本実施形態にかかるプログラム検証システムは、実機のハードウェア開発よりプログラム開発の方が先行した場合でも、実機デバイスの完成を待たずにプログラム検証を可能とするために、既存の実機デバイス150およびICEデバッガ506を用いながら、新規プログラム(プログラム414)に対応する実機デバイスの仕様をソフトウェアによりシミュレーションする仮想デバイス100と、この仮想デバイス100をICEデバッガ506に適合させるブリッジ504とを設けたものである。
【0034】
仮想配線206とは、仮想デバイス120とデバッガ500、並びに後の実施形態で説明する自動検証制御部等を、仮想的に接続する配線である。仮想デバイス100およびデバッガ500等を複数のパーソナルコンピュータで実現した場合は、この仮想配線206として、ネットワーク、USB、RS232C、IEEE1394を使用できる。また、仮想デバイス100およびデバッガ500等を、一台のパーソナルコンピュータ内で単独実行可能な複数のアプリケーションまたはプロセスとして実現した場合は、仮想配線206は、アプリケーションまたはプロセス間にて通信可能なDDE、COM等のデータ通信機能を利用して実現できる。なお、仮想配線206の具体的な実施形態は、本発明の発明者らによってなされた発明にかかる先の出願(特願2001−219887号)に、詳しく開示されている。
【0035】
仮想配線206による通信方法は、非同期通信または同期通信のどちらでもよい。非同期通信とは、データを通信相手に一方的に送信するだけで、返信がない通信方法である。同期通信とは、データを通信相手に送信した後、通信相手から返信データが返ってくるまで待っている通信方法である。
【0036】
HTAとは、HTML Applicationsの略で、Webページで実行可能なさまざまな機能(HTML、CSS、スクリプト言語(Java(登録商標、以下略)Script、VBA等)、Behavior)をサポートする。
【0037】
ActiveXとは、Internet対応のOLEドキュメントオブジェクトであるActiveXドキュメントや、Internetアクセス機能を持ったクライアントアプリケーションを開発するためのAPIである。
【0038】
OLEとは、Object Linking and Embeddingの略で、アプリケーションが別のアプリケーションの機能を呼出して自分自身の機能のように利用したりできる。
【0039】
(第1実施形態)
以下、本発明の一実施形態について、図1を用いて説明する。
【0040】
本実施形態にかかるプログラム検証システムは、長時間動作を安定させ、検証システムの停止やデータ取得失敗を起こさないで、プログラム自動検証を行うことを目的とする。このため、図1に示すとおり、本プログラム検証システムは、検証結果ファイル350および記録制御部302と、シナリオファイル352と、これに対する読み書きを制御するシナリオ制御部314を備えている。なお、記録制御部302およびシナリオ制御部314により、プログラム自動検証を実現するための自動検証制御部300が構成されている。
【0041】
シナリオファイル352とは、プログラム414を自動的に検証するための操作手順(シナリオ)を記録したファイルであり、検証結果ファイル350と同様に、例えば、Microsoft社のExcel等を利用して実現することができる。自動検証制御部300の制御プログラムは、HTAを利用して記述されている。また、検証結果ファイル350およびシナリオファイル352をExcelで作成する場合、これらの読書きを自動検証制御部300から行うために、OLE機能を利用する。また、自動検証制御部300と仮想配線206との間のデータ通信は、ActiveXを利用して実現できる。
【0042】
以下、本プログラム検証システムの構成および動作について、具体的な説明を行う。
【0043】
本プログラム検証システムは、ICE400内の表示用イメージデータの変化に基づいて、仮想出力104の表示を更新する。仮想出力104の表示画像は、クリップボード200および検証結果書込部304を経由して検証結果ファイル350に記録され、予め検証結果ファイル350に記録されていた検証用の期待値データと自動比較される構成となっている。
【0044】
<シナリオからICEへのデータ転送の自動シーケンス>
以下、本プログラム検証システムの自動検証処理について説明する。自動検証処理は、自動検証制御部300が、シナリオファイル352からキーデータ等を読み出し、ICE400へ自動的に転送して実行させ、その実行結果を検証結果ファイル350へ書き込んで評価することにより行う。
【0045】
シナリオファイル352には、動作検証に必要な操作情報(キーデータ等)が、検証手順に従ってあらかじめ記録されている。シナリオファイル352は、Excelファイルを利用して、例えば、図12に示すような状態遷移表として作成される。本プログラム検証システムでは、シナリオファイルに記述されている動作シーケンスに従って画面モードを所定の状態にした後、イベントであるキーの発行を実行して、各キー入力に対するアクション(有効または無効)の確認を行う。例えば、図12に示すシナリオファイル352の場合、図12中に示した実行順番に従い、まず、画面モードを”MDPWRON”にした状態で、”KPOWER”、”KCH UP”、”KVOL UP”、”KMENU”、”KSET”のキー入力を順次行い、これらの各キー操作に対する仮想デバイスおよび実機デバイスの動作を検証する。そして、次に、画面モードを”MDMENU”とした状態で、上述と同様に”KPOWER”、”KCH UP”、”KVOL UP”、”KMENU”、”KSET”のキー入力を順次行い、仮想デバイスおよび実機デバイスの動作を検証する。以降、”MDTIMER”、”MDSET”、”MDTEST”の各画面モードについて、同様に検証を行う。
【0046】
ここで、図12に示すシナリオファイル352を用いた自動検証処理の詳細について、画面モード”MDMENU”の状態での各キー入力に対する動作検証を行う場合を例にとり、さらに具体的に説明する。自動検証制御部300は、以下の(1)〜(9)の手順により、画面モード”MDMENU”の状態でのキー入力に対する動作検証を行う。
【0047】
(1)同期化RAM400内のリセット完了モニタ用フラグRAMに”1”をセットする。
【0048】
(2)ICE400にプログラム414を初期化させるために、シナリオ読込部316からデータ送信部320へ、リセットGOコマンド発行を指示する。なお、”リセットGO”コマンドとは、ICE400に実機プログラム410の実行を停止させ初期化する”リセット”コマンドと、ICE400に実機プログラム410を最初から実行開始させる”GO”コマンドとを一連に実行させるものである。データ送信部320は、同期通信により、ブリッジ504を経由してICEデバッガ506に対してリセットGOのメッセージを送る。ICEデバッガ506が、ICE400をリセットGO実行させることにより、実機プログラム410がリセットスタートされる。実機プログラムリセットスタート実行の先頭プログラムで、前記のリセット完了モニタ用フラグRAM値を”0”にする。ICE400がリセットGO完了すれば、ブリッジ504からデータ送信部320を経由して、シナリオ読込316部にリセットGO完了通知を行う。
【0049】
(3)リセット完了モニタ用フラグRAM値が”0”になったことを確認した後、画面モードを”MDMENU”にするために、シナリオファイル352において当該画面モードの動作シーケンスに記述されているキーをシナリオ読込部316により順次読み込み、発行する。発行されたキーは、データ送信部320、バススロット312、仮想配線206、デバッガ500を介して、ICE400へ渡される。図12の例では、”MDMENU”の動作シーケンスの最初の動作(図12のシナリオファイルにおける動作1の欄)として”KPOWER”というキーが記述されているので、このキーが最初に発行される。
【0050】
(4)”KPOWER”キーの処理を実機プログラム410が完了したかを、ユーザRAM402内の特定RAMにおける値の変化をチェックすることにより、確認する。特定RAMの変化が確認できると、次に、動作シーケンスの動作2に記述されている”KMENU”キーを発行し、上記と同様に、ユーザRAM402内の特定RAMの変化をチェックすることにより、”KMENU”キーの処理が完了したかを確認する。以上の処理を、シナリオファイル352の動作シーケンスに記述されている最後のキーまで、繰り返し実行する。図12に示す”MDMENU”の場合、”KPOWER”キーおよび”KMENU”キーの実行により、目的の画面モードである”MDMENU”になる。
【0051】
(5)目的の画面モードになったら、まず、ユーザRAM402内の画像データを同期化RAM404に取り込む。
【0052】
(6)次に、シナリオファイル352に記述されている発行キーを、順次発行し、動作を検証する。図12の例では、最初に、”KPOWER”キーを発行する。”KPOWER”キーの処理が完了したことを、ユーザRAM402内の特定RAM値の変化で確認する。
【0053】
(7)”KPOWER”キーの処理が完了したことが確認できたら、この”KPOWER”キーの処理結果を検証する。仮想出力104は、画面変化の有無を、イベント検出部308に伝える。イベント検出部308は、画面変化の有無が、シナリオファイル352に記述されている有効・無効仕様に合致するかを判断する。
【0054】
例えば、図12に示すシナリオファイルの場合、○記号は、当該画面モードにおける当該キー発行が有効であることを表し、×記号は、当該画面モードにおける当該キー発行が無効であることを表す。なお、「キー発行が有効である」とは、そのキー発行により画面上に何らかの変化が生じることをいい、「キー発行が無効である」とは、そのキー発行によっても画面に変化が生じないことをいう。
【0055】
ここでは、”MDMENU”の列と”KPOWER”の行との交点にあたる欄には○記号が記述されているので、画面モードが”MDMENU”である場合に”KPOWER”キーを発行した場合、このキーが正しく処理されたならば、何らかの画面変化が生じるべきである。従って、”KPOWER”キーの発行により画面変化が生じていれば、イベント検出部308は、”MDMENU”画面モードにおける”KPOWER”キーの有効・無効仕様は満たされているものと判断する。
【0056】
イベント検出部308は、有効・無効仕様が満たされているか否かの判断結果に応じて、シナリオファイル352の有効・無効仕様欄に色付けする。すなわち、イベント検出部308が、シナリオファイル352に記述されている有効・無効仕様が満たされていると判断すれば、検証結果書込部304を介して、シナリオファイル352の当該有効・無効仕様欄の表示属性を例えば青色に設定し、満たされていないと判断した場合は例えば赤色に設定することにより異常動作であることが分かるようにする。これにより、デバッグ作業者は、シナリオファイル352の有効・無効仕様欄の表示色により、目標仕様が満たされているかを容易に識別することが可能となる。また、ここでは、有効・無効仕様の検証結果をシナリオファイル352に記録することとしたが、検証結果ファイル350に、有効・無効仕様の検証結果を記録する欄を別途設けるようにしてもよい。
【0057】
(8)また、検証結果書込部304は、画像データ取得部310によりユーザRAM402から取得した画面データ(実行画像データ)を、検証結果ファイル350へ書き込む。さらに、検証結果書込部304は、前記実行画像データと、検証処理の実行に先立って予め作成されている基準画像データとを比較し、比較結果を検証結果ファイル350へ書き込む。基準画像データとは、キーが正しく処理された結果として表示されるべき画像データのダンプデータであり、図13に示すように検証結果ファイル350へ書き込まれている。例えば図13に示した例にかかる検証結果ファイル350では、基準画像データと実行画像データとの比較結果が一致すれば○記号、一致しなければ×記号が、「判定」の欄に書き込まれている。これにより、デバッグ作業者は、検証結果ファイル350の判定欄を見るだけで、キー発行により所定の画面データが表示されたか否かを容易に検証できる。
【0058】
(9)また、検証結果ファイル350には、基準画像データに基づく画面イメージ(基準画面)が予め貼り付けられている。検証結果書込部304は、図13に示すように、この基準画面の隣の列に、仮想出力104に出力された画面(実行画面)を、クリップボード200を介して貼り付ける。これにより、デバッグ作業者は、検証結果ファイル350を見るだけで、基準画面と実行画面との違いを容易に識別することが可能となる。
【0059】
”KPOWER”キーについて上記の(9)までの処理が終了したら、(5)へ戻り、(6)においてシナリオファイルに記述されている次の発行キー”KCHUP”を発行し、以降の処理を行う。同様にして、シナリオファイルに記述されている全ての発行キーについて、(5)〜(9)の処理を繰り返すことにより、図13に示すような検証結果ファイルが完成する。
【0060】
また、本実施形態では、自動検証処理中の何らかの要因によりICE400が異常動作になった場合に、自動検証処理が続行できなくなることを防ぐため、既存デバッガ562(図2参照)がICE400の挙動を監視する。そして、ICE400の動作に変化が発生した場合は、図11に示すようなメッセージを、ICEデバッガ506が、ブリッジ504内のICE状態モニタ558(図2参照)に伝える。さらに、このメッセージは、ICE状態送信部556から、仮想配線206を介して、シナリオ制御部314内のタイミング制御部318に伝えられる。これにより、タイミング制御部318は、ICE400の動作変化に合わせて、シナリオ読込部316にシナリオファイル352のデータを再発行させる等の処理を行う。
【0061】
なお、自動検証処理において、シナリオファイル352として前記の状態遷移表を用いる代わりに、シナリオファイル352の記述方法や自動検証制御部300の制御方法を適宜変更することで、任意の自動検証処理を実現可能である。
【0062】
<具体的動作>
以下、プログラム自動検証を行う本プログラム検証システムの動作について、さらに具体的に説明する。
【0063】
<初期化処理>
本実施形態のプログラム検証システム(図1に示す構成)は、起動すると、まず、初期化処理を行う。仮想デバイス100、デバッガ500、及び自動検証制御部300は、仮想配線206に接続するための接続処理を行う。また、ブリッジ504は、予め、データ送信部320および仮想出力104からのメッセージ受信を行うために、受信割込み許可しておく。
【0064】
<シナリオ読込から仮想配線へリセットGOコマンドデータを流す>
シナリオ読込部316から、ICE400の実行を初期化するために、リセットGOコマンドの送信をデータ送信部320に指示する。データ送信部320は、図3に示すようなリセットGOコマンドのフォーマットに従って作成したメッセージを、ブリッジ504に宛てて、バススロット312から仮想配線206に同期通信にて送出する。
【0065】
<ブリッジデバイスの書込み処理>
データ送信部320からデバッガ500のバススロット502経由でブリッジ504に送られて来たメッセージは、図2に示す通り、受信割込み処理を行う同期受信部550に受け取られる。コマンド変換部552は、図3に示すようなテーブルを参照し、受け取ったメッセージが、1バイトメモリライト、1バイトメモリリード、ICEリセット、ICE実行等のどのメッセージであるかを分析し、その結果をコマンド発行部554からICEデバッガ506内のVirtualLink560に渡す。
【0066】
VirtualLink560は、既存デバッガ562を制御して、ICE400にリセットコマンドを発行した後、実行開始コマンドを発行して、実行完了通知を同期受信部550の返信データとして、メッセージの送信元であるデータ送信部320に返信する。データ送信部320は、シナリオ読込部316にリセットGOコマンド実行完了を伝え、シナリオファイル352の内容に従った実行を行う。
【0067】
<シナリオファイルから仮想配線へのデータを流す>
シナリオ読込部316は、シナリオファイル352からキーコードを読込んで、データ送信部320に指示して、図3に示すようなメッセージ一覧表内の1バイトメモリライトコマンド発行フォーマットに従って作成したメッセージを、ブリッジ504に宛てて、バススロット106から仮想配線206へ同期通信にて送出する。
【0068】
<ブリッジの書込み処理>
データ送信部320から、バススロット502経由でブリッジ504に送られて来たメッセージは、図2に示す通り、受信割込み処理を行う同期受信部550に受け取られる。そして、コマンド変換部552が、図3に示すようなテーブルに基づき、受け取ったメッセージが、1バイトメモリライト、1バイトメモリリード、ICEリセット、ICE実行等のどのメッセージであるかを分析する。その分析結果は、コマンド発行部554からICEデバッガ506内のVirtualLink560に渡される。
【0069】
VirtualLink560は、既存デバッガ562を制御して、プログラム414を実行中のICE400内の同期化RAM404に、仮想入力102から渡された指定RAMアドレスのRAMデータをオンザフライにて書込んだ後、書込み完了通知を、同期受信部550の返信データとして、メッセージの送信元であるデータ送信部320へ返信する。返信を受けると、キーデータを配信したことを、実行状況配信部322からイベント検出部308に伝える。
【0070】
<リセットコードの判定およびコマンド変換処理>
自動検証制御部300から、仮想配線206およびバススロット502経由でブリッジ504に送られて来たリセットコードは、図2に示す通り、ブリッジ504内で受信割込み処理を行う同期受信部550で受け取られる。ここで、リセットコードを受け取ったコマンド変換部552が行うコマンド変換処理の内容を、図6に示す。
【0071】
図6に示すように、コマンド変換部552は、受け取ったリセットコードの種類を判断し(ステップS60)、リセットコードの種類に応じた処理を行う。
【0072】
(1)リスタートコードの場合
受け取ったリセットコードがリスタートコードであった場合、コマンド変換部552は、リスタート初期化処理(ステップS611)を行い、コマンド変換部552内に設けられたリスタート判定部(図示せず)により、リスタートの完了確認フラグが一定時間以内にセットされたか否かを判定するリスタート判定処理(ステップS612)を行う。リスタート判定処理の結果は、「受付異常」または「リスタートOK」のいずれかを表す返信データとして、コマンド発行部554へ返信される(ステップS69)。
【0073】
リスタート判定処理の内容を、図7に示す。リスタート初期化処理(ステップS611)の後、図7に示すように、リスタートの完了確認フラグがセットされたか判断し(ステップS612a)、フラグがセットされていれば、返信データの内容に、「リスタートOK」を表すデータをセットする(ステップS612b)。フラグがセットされていなければ、予め設定された所定の時間以内であるか否かを判断し(ステップS612c)、時間内であればステップS612aへ戻る。前記所定の時間を越えた場合は、返信データの内容に、「受付異常」を表すデータをセットする(ステップS612d)。
【0074】
(2)キー実行コードの場合
受け取ったリセットコードがキー実行コードであれば、コマンド変換部552は、イベントキーの発行初期化処理(ステップS621)を行い、コマンド変換部522内に設けられたキー実行判定部(図示せず)により、イベントキー発行が一定時間以内に行われたか否かを判定するキー実行判定処理(ステップS622)を行う。キー実行判定処理の結果は、コマンド発行部554へ返信される(ステップS69)。
【0075】
キー実行判定処理の内容を、図8に示す。イベントキーの発行初期化処理(ステップS621)の後、図8に示すように、イベントキーが発行されたか判断し(ステップS622a)、イベントキーが発行されていれば、コマンド発行部554への返信データとして表示画像を取得し(ステップS622b)、コマンド変換部522内に設けられたフラグセット部(図示せず)によってフラッシングフラグをセットする(ステップS622c)。ステップS622aにおいてイベントキーが発行されていないと判断されれば、予め設定された所定の時間以内であるかを判断し(ステップS622d)、時間内であればステップS622aへ戻る。前記所定の時間を越えた場合は、コマンド発行部554への返信データの内容に、「応答なし」を表すデータをセットする(ステップS622e)。
【0076】
なお、上述のフラッシングフラグは、検証プログラムにフラッシング表示仕様があれば、表示をフラッシングできるようにするためのフラグであり、図10に示すように、実機プログラム内のリセット時の初期化処理の時に、フラグクリア部によってクリアされる。なお、フラグクリア部は、図2に示すコマンド変換部552内に設けられる(図示省略)。
【0077】
(3)シーケンス実行コードの場合
受け取ったリセットコードがシーケンス実行コードであれば(ステップS630)、コマンド変換部552は、キー発行処理(ステップS631)を行い、コマンド変換部522内に設けられたシーケンス実行判定部(図示せず)により、キー発行が一定時間以内に行われたか否かを判定するシーケンス実行判定処理(ステップS632)を行う。シーケンス実行判定処理の結果は、「シーケンス実行異常」または「シーケンス実行OK」のいずれかを表す返信データとして、コマンド発行部554へ返信される(ステップS69)。
【0078】
シーケンス実行判定処理の内容を、図9に示す。キー発行処理(ステップS631)の後、図9に示すように、キーが発行されたか判断し(ステップS632a)、キーが発行されていれば、返信データの内容に、「シーケンス実行OK」を表すデータをセットする(ステップS632b)。キーが発行されていなければ、予め設定された所定の時間以内であるか否かを判断し(ステップS632c)、時間内であればステップS632aへ戻る。前記所定の時間を越えた場合は、返信データの内容に、「シーケンス実行異常」を表すデータをセットする(ステップS632d)。
【0079】
以上の(1)〜(3)に説明したように、コマンド変換部552によりリセットコードに応じた返信データが作成され、コマンド発行部554へ返信される。コマンド発行部554は、その分析結果を、ICEデバッガ506内のVirtualLink560に渡す。
【0080】
VirtualLink560は、実機デバイス150の仕様に対応した検証動作を行うように設計されている既存デバッガ562を制御して、プログラム実行中のICE400内の同期化RAM404に、仮想入力102から渡された指定RAMアドレスのRAMデータを、オンザフライにて書込む。その後、同期受信部550が、前記メッセージへの返信としての書込み完了通知を、メッセージの送信元である仮想入力102へ返信する。なお、「オンザフライ」とは、プログラム414が実行中でも、ICE400内のユーザRAM402と同期化RAM404のRAMデータ、およびマイコンエミュレータ406内のレジスタの読書きを可能とする、ICE400の機能である。
【0081】
このようにすれば、シーケンス実行時に、万一なんらかの理由で動作がフリーズした場合でも検証システムが止まることなく、長時間安定した動作検証することができ、検証精度を向上させることができる。
【0082】
また、各テスト項目を実行する前にリセットを掛ければ、前テスト項目においてデバッグ対象プログラムのバグ等にて無限ループに陥った場合でもリスタートが可能となり、各項目のテストを行う事が可能になる。
【0083】
<同期化RAMからユーザRAMへの転送処理>
同期化プログラム412は、同期化RAM404の変化を、プログラム414に必要なタイミングで、マイコンエミュレータ406にチェックさせている。
【0084】
同期化プログラム412は、例えばキー入力の場合は、プログラム414のキー入力処理の直後に呼ばれ、同期化RAM404内のキーデータRAMの変化を、マイコンエミュレータ406経由でチェックし、もし変化が有れば、キーデータをユーザRAM402のキーデータ確定エリアに転送する。この際、仮想入力102のキーデータと実機デバイス150からのキーデータとが同時に入力された場合は、仮想入力102からのキーデータが優先される。
【0085】
同期化プログラム412内のキー入力処理は、図4に示すように、仮想キー入力が、実機キー入力より優先されて処理される。
【0086】
<ユーザRAMから仮想出力へのデータ転送>
シナリオファイル352から読み込んだキーコードによってプログラム414がユーザRAM402内の出力RAMデータ(仮想出力104への出力データ)を変更した場合、この出力RAMデータを仮想出力104へ転送する方法は、以下の(c1)〜(c4)のとおりである。
【0087】
(c1)プログラムのユーザRAM変更;
プログラム414により、ユーザRAM402内の仮想出力104に関係するRAMエリアが変更された直後に、ユーザRAM402から同期化RAM404内の特定RAMに変化を伝えるための処理を行う。具体的には、図5に示す通り、プログラム414から仮想同期化ルーチンを呼び出すことにより、処理を開始する(ステップS420)。実機デバイス150への出力処理(ステップS422)を行った直後に、実機デバイス150への出力RAMデータの変化を検出し(ステップS424)、変化があれば、出力RAMデータをユーザRAM402から同期化RAM404内に転送する(ステップS426)。
【0088】
(c2)仮想出力から仮想配線へデータを流す;
次に、仮想出力104から、同期化RAM404内の出力RAMデータの変化イベントを読込むために、仮想出力104からデバッガ500へのメッセージ転送の指定とイベントを読込むためのRAMアドレスとを一緒に、バススロット108経由で、仮想配線206に同期通信により送出する。
【0089】
(c3)ブリッジデバイスの読込み処理;
仮想出力104からバススロット502経由でブリッジ504に送られて来たメッセージは、図2に示す通り、受信割込み処理を行う同期受信部550で受け取られる。その後、コマンド変換部552が、図3に示すようなメッセージ一覧表に従い、受け取ったメッセージが、1バイトメモリライト、1バイトメモリリード、ICEリセット、ICE実行等のどのメッセージであるかを分析する。コマンド発行部554は、その分析結果を、ICEデバッガ506内のVirtualLink560に渡す。VirtualLink560は、既存デバッガ562を制御して、プログラム実行中にICE400内の同期化RAM404内の出力RAMデータをオンザフライにて読み込む。その後、読み込んだ出力RAMデータを、同期受信部550が、前記メッセージの送信元である仮想出力104へ返信する。これにより、出力RAMデータの仮想出力104への転送が、完了する。
【0090】
(c4)仮想出力の表示処理;
仮想出力104では、出力RAMデータを元に、パソコンモニタに、実機液晶画面を模した仮想表示等を行う。また、同期化RAM404またはユーザRAM402から仮想出力104に取得した画像データの変化があれば、仮想出力104は、画像データ取得部310に対して、画像変化のメッセージおよび仮想出力104の表示ダンプデータを転送する。
【0091】
また、前記イベントを使わずに、仮想入力102から一定周期にて、デバッガ500にユーザRAM402のデータを読込み、仮想出力104にて実機液晶画面を模した仮想表示等を行う方法でも良い。
【0092】
<データ転送からイベント検出に転送>
データ送信部320から前記キーデータが送られてくると、そのキーデータは、イベント検出部308から画像データ取得部310に渡される。また、同期化RAM404またはユーザRAM402から仮想出力104に取得した画像データの変化が有れば、仮想出力104を経由して、画像データ取得部310に対して画像変化のメッセージおよび、仮想出力の表示ダンプデータを転送する。画像データ取得部310は、前記キーデータを検証結果書込部304から検証結果ファイル350に書込む。
【0093】
また、画像データ取得部310は、仮想出力104から表示変化のメッセージを受けると、仮想出力104の表示画像を、クリップボード200にキャプチャーする。クリップボード200にキャプチャーされた画像は、検証結果書込部304により、検証結果ファイル350に対して書込まれる。
【0094】
具体的には、図13に示すように、キーデータは操作キーの欄に書込み、シナリオファイル352の画面モードは、画面モードの欄に書込む。
【0095】
<基準画像データと実行画像データとの比較>
検証結果ファイル350において、「基準画像データ」と「実行画像データ」とのデータの相違を判定し、判定結果を「判定」の欄に「○」と「×」として書込む。なお、検証結果ファイル350をExcelで作成する場合は、IF関数を用いて「基準画像データ」と「実行画像データ」の相違の判定を行うことができる。
【0096】
<基準画像データの作成>
尚、自動検証処理を行うための基準画像およびその表示ダンプデータの作成については、前述したように画像データおよび表示ダンプデータを図13に示す基準画面および実行画像データに書込むことで作成できる。
【0097】
<表示の出力抑制処理>
また、本実施形態のプログラム検証システムでは、図10(b)に示すように、表示同期判定プログラムによって、実機プログラム内の出力処理でフラッシングフラグがセットされていれば仮想出力104へ出力しないようにする。なお、表示同期判定プログラムは、実機プログラム内に検証用プログラムとして埋め込む。このようにすれば、フラッシングフラグのタイミングにより表示出力するため、画像取得のタイミングが同期化される。このことにより、自動検証制御部300から来るキーのメッセージに対して同期がとれるため、フラッシング等の表示の点滅がある場合に、仮想出力104の画像表示の記録時と完全に同期がとれるために、表示画像を「滅」の時にキャプチャーせず、「点」の時に確実にキャプチャーできるため、自動検証精度を向上できる。
【0098】
<仮想入力からの表示の出力抑制処理>
なお、仮想デバイス100からの入力からも画像キャプチャーの同期を行えるようにするために、図6に示すように、コマンド変換部552において通常のキーコードを受理した場合は、キー発行処理(ステップS641)およびキー受理処理(ステップS642)を行い、仮想デバイス100からの入力がリセットキーであれば(ステップS643)、コマンド変換部552に設けられた表示同期化フラグクリア部(図示せず)によってフラッシングフラグをクリアする(ステップS644)。なお、ステップS642のキー受理処理とは、キー受付をしたかどうかを判定する処理である。これにより、仮想デバイス100からのリセット時にも画像取得を同期化することができる。
【0099】
このようにすれば、自動検証途中に異常動作を発見したときなど、自動検証を一時中断して手動検証する場合に、仮想デバイスからの入力に対して、通常の動作に切り替えて手動検査を行う事が可能になり、検証精度を向上させることができる。
【0100】
以上のとおり、本実施形態によれば、長時間安定した動作が可能なプログラム自動検証システムを実現することができる。また、表示画像取得をキーと同期させることにより、画像のキャプチャーずれを防止することができる、これにより、検証精度および作業効率が向上する。
【0101】
【発明の効果】
以上のように、本発明によれば、万一なんらかの理由で動作がフリーズした場合でも自動検証システムが停止することなく、長時間安定して動作検証を行えると共に、検証精度を向上させることができる。
【図面の簡単な説明】
【図1】本発明の一実施形態にかかる実セット・シミュレータ混載のプログラム自動検証システムを示すブロック図
【図2】デバッガの内部構成を示すブロック図
【図3】仮想デバイスからブリッジへのメッセージ一覧の説明図
【図4】仮想から実機同期化フローチャート
【図5】実機から仮想同期化フローチャート
【図6】本発明の一実施形態にかかるプログラム自動検証システムにおけるコマンド変換処理の内容を示すフローチャート
【図7】図6のリスタート判定処理の内容を示すフローチャート
【図8】図6のキー実行判定処理の内容を示すフローチャート
【図9】図6のシーケンス実行判定処理の内容を示すフローチャート
【図10】(a)および(b)は本実施形態のプログラム自動検証システムにおける入出力処理のフローチャート
【図11】ICEから仮想デバイスへ向けてのイベント一覧を示す説明図
【図12】シナリオファイルの一例を示す説明図
【図13】本検証結果ファイルの一例を示す説明図
【図14】従来のプログラム検証システムの一例を示すブロック図
【図15】従来のプログラム検証システムの一例を示すブロック図
【図16】従来のプログラム検証システムの一例を示すブロック図
【符号の説明】
100 仮想デバイス
102 仮想入力
104 仮想出力
120 周辺デバイス
150 実機デバイス
152 実入力
154 実出力
156 実機入出力
200 クリップボード
206 仮想配線
300 自動検証制御部
302 記録制御部
304 検証結果書込部
308 イベント検出部
310 画像データ取得部
312 バススロット
314 シナリオ制御部
316 シナリオ読込部
318 タイミング制御部
320 データ送信部
350 検証結果ファイル
352 シナリオファイル
400 ICE
402 ユーザRAM
404 同期化RAM
410 実機プログラム
412 同期化プログラム
500 デバッガ
502 バススロット
504 ブリッジ
506 ICEデバッガ
522 コマンド変換部
524 コマンド発行部
Claims (7)
- マイコンの周辺デバイスとして実機デバイスおよび仮想デバイスを用いて、前記マイコン用プログラムの動作を検証するプログラム検証システムであって、
前記マイコン上の前記プログラムの動作をエミュレーションするエミュレータと、
前記実機デバイスに対応した検証動作を行うよう前記エミュレータを制御する検証制御部と、
前記検証制御部と前記仮想デバイスとの間に設けられ、前記仮想デバイスからの制御信号およびデータを前記検証制御部に適合させるブリッジ部と、
前記実機デバイスと前記プログラムとの間の入出力データを格納する実機用RAMと、
前記実機用RAMと前記仮想デバイスとの間に設けられた同期化RAMと、
前記実機デバイスに対する前記プログラムの入出力動作に同期させて、前記同期化RAMと前記実機用RAMとの間のデータ転送を制御する、仮想・実機同期処理部とを備えると共に、
前記ブリッジ部内に、前記検証制御部からの検証動作指示が正常に処理されているかを判断する監視部を備えたことを特徴とするプログラム検証システム。 - 検証動作の手順を記載したシナリオファイルを記憶するシナリオファイル記憶部をさらに備え、
前記検証制御部が、前記シナリオファイル記憶部から読み出したシナリオファイルに基づいて前記エミュレータを制御する、請求項1に記載のプログラム検証システム。 - 前記検証動作指示がリスタートコマンドであり、
前記監視部が、前記リスタートコマンドが所定時間以内に処理されたか否かを判断する、請求項1または2に記載のプログラム検証システム。 - 前記検証動作指示がキー実行コードであり、
前記監視部が、前記キー実行コードが所定時間以内に処理されたか否かを判断する、請求項1または2に記載のプログラム検証システム。 - 前記検証動作指示がシーケンス実行コードであり、
前記監視部が、前記シーケンス実行コードが所定時間以内に処理されたか否かを判断する、請求項1または2に記載のプログラム検証システム。 - 前記仮想デバイスに対する前記エミュレータの入出力データを取得するデータ取得部をさらに備え、
前記ブリッジ部内に、前記データ取得部によるエミュレータ入出力データの取得タイミングを制御するデータ取得タイミング制御部をさらに備えた、請求項1または2に記載のプログラム検証システム。 - 前記ブリッジ部内に、前記監視部により異常動作が発見された場合、検証動作の手順を、前記シナリオファイル記憶部からではなく前記仮想デバイスから入力するよう切り替える切替設定部をさらに備えた、請求項2に記載のプログラム検証システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003040177A JP2004252585A (ja) | 2003-02-18 | 2003-02-18 | プログラム検証システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003040177A JP2004252585A (ja) | 2003-02-18 | 2003-02-18 | プログラム検証システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004252585A true JP2004252585A (ja) | 2004-09-09 |
Family
ID=33024138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003040177A Withdrawn JP2004252585A (ja) | 2003-02-18 | 2003-02-18 | プログラム検証システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004252585A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010020561A (ja) * | 2008-07-10 | 2010-01-28 | Ricoh Co Ltd | 情報処理装置、画像処理装置、ソフトウェア動作テスト方法、ソフトウェア動作テストプログラム、及びそのプログラムを記録した記録媒体 |
JP2010198335A (ja) * | 2009-02-25 | 2010-09-09 | Toshiba Corp | ソフトウェア自動試験装置およびその方法 |
JP2010211682A (ja) * | 2009-03-12 | 2010-09-24 | Hitachi Information & Control Solutions Ltd | プログラム設計支援装置、プログラム設計支援方法、およびプログラム |
JP2012248055A (ja) * | 2011-05-30 | 2012-12-13 | Hitachi Advanced Digital Inc | シミュレーション装置及びシミュレーション方法 |
US8903704B2 (en) | 2009-07-24 | 2014-12-02 | Ricoh Company, Ltd. | Information processing device, information processing system, and recording medium |
-
2003
- 2003-02-18 JP JP2003040177A patent/JP2004252585A/ja not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010020561A (ja) * | 2008-07-10 | 2010-01-28 | Ricoh Co Ltd | 情報処理装置、画像処理装置、ソフトウェア動作テスト方法、ソフトウェア動作テストプログラム、及びそのプログラムを記録した記録媒体 |
JP2010198335A (ja) * | 2009-02-25 | 2010-09-09 | Toshiba Corp | ソフトウェア自動試験装置およびその方法 |
JP2010211682A (ja) * | 2009-03-12 | 2010-09-24 | Hitachi Information & Control Solutions Ltd | プログラム設計支援装置、プログラム設計支援方法、およびプログラム |
US8903704B2 (en) | 2009-07-24 | 2014-12-02 | Ricoh Company, Ltd. | Information processing device, information processing system, and recording medium |
US9454388B2 (en) | 2009-07-24 | 2016-09-27 | Ricoh Company, Ltd. | Information processing device, information processing system, and recording medium |
JP2012248055A (ja) * | 2011-05-30 | 2012-12-13 | Hitachi Advanced Digital Inc | シミュレーション装置及びシミュレーション方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5157782A (en) | System and method for testing computer hardware and software | |
US6718294B1 (en) | System and method for synchronized control of system simulators with multiple processor cores | |
US5596714A (en) | Method for simultaneously testing multiple graphic user interface programs | |
US6954880B2 (en) | Test tool and methods for facilitating testing of a system managed event | |
US7171653B2 (en) | Systems and methods for providing communication between a debugger and a hardware simulator | |
US7337104B2 (en) | Device emulation in programmable circuits | |
JP4171240B2 (ja) | プログラム検証システム | |
JP2007058813A (ja) | 検証装置及び検証方法 | |
JP2004252585A (ja) | プログラム検証システム | |
JP2008135008A (ja) | プログラムモジュール検証方式 | |
JP4562439B2 (ja) | プログラム検証システムおよびプログラム検証システム制御用コンピュータプログラム | |
JPH11272494A (ja) | ワイドバンドスイッチファームウエアのデバック/コシミュレーション方式 | |
US20020184001A1 (en) | System for integrating an emulator and a processor | |
JP2913991B2 (ja) | リアルタイム・システム・デバッグ装置 | |
JPH11327956A (ja) | ソフトウェアデバッグ装置 | |
JP2004157787A (ja) | プログラム検証システム | |
JP2002007483A (ja) | スキャナシミュレータ装置及びスキャナシミュレーション方法 | |
KR100200712B1 (ko) | 노-타겟 시스템의 프로그램 디버깅 장치 | |
KR920003279B1 (ko) | 데이타 처리장치의 os 및 nos 로딩방법 | |
US20020026302A1 (en) | Automatic evaluation method, automatic evaluation system, and storage medium storing automatic evaluation program | |
JP2007141139A (ja) | 情報処理装置 | |
JP2887515B2 (ja) | 記録装置のシミュレータ | |
JP3110418B2 (ja) | インサーキットエミュレータおよび制御方法 | |
JPS5968034A (ja) | マイクロコンピユ−タ開発装置用入出力ポ−トシミユレ−タ | |
CN117170798A (zh) | 一种基于UBQ-SIMTest框架的龙芯1E300模拟器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060509 |