JP4562439B2 - プログラム検証システムおよびプログラム検証システム制御用コンピュータプログラム - Google Patents

プログラム検証システムおよびプログラム検証システム制御用コンピュータプログラム Download PDF

Info

Publication number
JP4562439B2
JP4562439B2 JP2004201031A JP2004201031A JP4562439B2 JP 4562439 B2 JP4562439 B2 JP 4562439B2 JP 2004201031 A JP2004201031 A JP 2004201031A JP 2004201031 A JP2004201031 A JP 2004201031A JP 4562439 B2 JP4562439 B2 JP 4562439B2
Authority
JP
Japan
Prior art keywords
microcomputer
virtual
real
unit
ram
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.)
Expired - Fee Related
Application number
JP2004201031A
Other languages
English (en)
Other versions
JP2005166010A (ja
Inventor
克己 鶴本
司 永木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2004201031A priority Critical patent/JP4562439B2/ja
Publication of JP2005166010A publication Critical patent/JP2005166010A/ja
Application granted granted Critical
Publication of JP4562439B2 publication Critical patent/JP4562439B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

本発明は、実マイコンおよび仮想マイコンを混載し、テスト内容により実マイコンおよび仮想マイコンを切換えてデバッグ対象プログラムの動作検証を行うシステムおよびこのシステムに用いられる制御用プログラムに関する。
従来、シングルチップマイコン制御用アプリケーションプログラムのデバッグは、図18に示すように、ターゲットとなるシングルチップマイコンの代わりに、当該シングルチップマイコンの全機能をエミュレートできるインサーキットエミュレータ(以下ICEと称する)57をデバッグボード54に組み込んだものを、ハードウエアで構成された実機デバッグセット(周辺デバイス49)に接続して行われていた。
しかし、このようなデバッグセットを用いる場合、プログラムのテストを行うためには、システムを動作させるハードウエアが先行完成していることが必須条件である。このため、ソフトウエア開発の工程がハードウエア開発の進捗状況に大きく左右されるという問題があった。
この問題を解決するために、ターゲットとなるシングルチップマイコンのシミュレーションおよび周辺デバイスのシミュレーションを行うことで、実機を使わずにプログラムを評価する方法が提案されている。
このようなシミュレーションによる従来のプログラム検証システムの一例として、テスト/デバッグの対象となるプログラムと、マイクロプロセッサユニット(MPU)およびメモリを模擬する擬似エミュレータと、入出力を模擬する入出力装置模擬部と、MPUと1つ以上の入出力装置を接続する信号線を模擬する入出力装置実行制御機構と、シミュレータの起動順序を記述した起動定義ファイルと、I/OモニタとI/Oモデルのプロセスを起動/終了する手段と、ユーザが全てのI/Oモデルのリソース情報を参照・変更できる手段とI/OモデルとI/Oモニタの接続関係を表示する手段を持つ入出力模擬部操作環境とで構成されたシステムがある(例えば特許文献1参照)。それぞれの構成要素は、複数のプロセスで構成され、仮想配線にて接続されている。この従来のシミュレーション方法では、図30に示す通り、擬似マイコン73にてプログラムを評価する仮想ICE70と、マイコンの実機周辺入出力デバイスを模擬する仮想デバイス63を、擬似配線84にて接続して実現する。
また、実機デバッグ方法とシミュレータデバッグ方法の両方の良いところを合わせた実機・シミュレータ混載システムも提案されている。その一例を図31に示す。図31に示すシステムでは、テスト/デバッグの対象となるプログラムbと実エミュレータ210を組込んだ実マイコン200を利用した実機デバッグセットと、周辺入出力デバイスとして仮想周辺デバイスある仮想リモコン300や仮想LCD等の仮想入出力デバイスを混載システムである。このシステムでは、実マイコン部200と仮想入出力デバイスとの入出力データの受渡しは、専用の実機インターフェースボード85を用いて実現されている(例えば、特許文献2参照)。
以上のように、プログラムのテストに際して、論理的なテスト(以下論理テストと称する)を行う場合はシミュレータを使ってテストし、タイミング的なテスト(以下タイミングテストと称する)を行う場合はハードウエアを使ってテストする。例えば、プログラムのモジュールに入力する全ての入力データに対する出力データを検証する場合は論理テストを行う。マイコン周辺の入力デバイスから作為的に異常データを発生させ、プログラムに入力する論理テストもある。プログラムのメイン処理と割込み処理の競合によるRAM破壊、処理の応答時間等を検証するのはタイミングテストである。
従来のプログラム検証方法は、プログラムを効率よくテストする視点から考え、プログラムの機能毎にテストシナリオを作成することがある。この場合、テスト内容に、論理テストとタイミングテストが混在してしまうため、デバッグセットを操作する視点からみると、テスト項目に合わせてタイミングテストを行う実機デバッグセットと、論理テストを行うシミュレーションデバッグセットとを切換えて使いながらテストすることになる。従って、テスト効率が低下するが、従来は、デバッグセットの操作性を重視して、論理テストとタイミングテストに分けてプログラムのテストシナリオを作成していた。
特開平9−114700号公報(第1図) 特開平8−6810号公報(第2図)
テストシナリオは、テストするプログラムの機能視点で記述し、論理テストとタイミングテストを混在させても、テスト効率を向上させるために、実機デバッグシステムと仮想マイコンを使ったシミュレーションシステムを組合せたデバッグシステム、すなわち、実マイコンと仮想マイコンと周辺デバイス(実機デバイスと仮想デバイス)を混載したデバッグシステムとすることが望ましい。しかし、この方式では、以下の課題がある。
単独実行可能な仮想マイコンのアプリケーションと単独実行可能な実マイコンのアプリケーションを同時に起動すると、これらのアプリケーションが競合してしまい、正常に動作しない。このため、デバッグ対象プログラムの検証は、実マイコンと仮想マイコンを切換えて使ってプログラムテストを行うことになる。例えば、論理テストをする場合には、実マイコンのアプリケーションを終了させ、仮想マイコンのアプリケーションを起動し、マイコン周辺デバイスと接続した後、テストを行う。タイミングテストを行う場合には、逆に仮想マイコンのアプリケーションを終了させ、実マイコンのアプリケーションを起動し、マイコン周辺デバイスと接続した後、テストを行うことになる。このように、仮想マイコンのアプリケーションと実マイコンのアプリケーションの終了・起動を繰返すことでしかプログラム検証が実現出来なかった。このため、マイコンの停止・再起動の切換えの手間および時間がかかるという問題があった。また、自動検証を行う場合に、テストシナリオに、論理テストとタイミングテストが混在している場合、実マイコンと仮想マイコンを自動的に切換えできないためにテストができなかった。
これらにより、プログラムのデバッグおよび検証を効率よく行えないという問題があった。本発明は、上記の問題に鑑み、実マイコンと仮想マイコンとを用いてプログラムのデバッグおよび検証を効率よく行えるハイブリッドプログラム検証システムを提供することを目的とする。
本発明にかかるプログラム検証システムは、上記の目的を達成するために、シングルチップマイコンのデバッグ対象プログラムを動作させる、単独実行可能な実マイコンと、前記実マイコンによる前記プログラムの実行動作をシミュレーションする、単独実行可能な仮想マイコンと、前記実マイコンおよび前記仮想マイコンを動作させるために必要なデータ入力を行う周辺入力デバイスと、前記周辺入力デバイスと前記実マイコンおよび仮想マイコンとの間に設けられ、前記周辺入力デバイスから前記実マイコンおよび仮想マイコンへのデータ転送制御と、前記実マイコンおよび仮想マイコンの作動/停止制御とを行うマイコン制御部とを備え、前記マイコン制御部が、前記実マイコンおよび仮想マイコンの一方または両方を選択して前記周辺入力デバイスからの入力データを転送すると共に、転送先のマイコンを作動させることを特徴とする。
なお、本発明にかかるプログラム検証システムにおいて、仮想マイコンとマイコン制御部とは、単一のアプリケーションとして実装することもできるし、それぞれが単独実行可能なアプリケーションであっても良い。
また、本発明にかかるプログラム検証システム制御用コンピュータプログラムは、シングルチップマイコンのデバッグ対象プログラムを動作させる単独実行可能な実マイコンと、前記実マイコンによる前記プログラムの実行動作をシミュレーションする単独実行可能な仮想マイコンと、前記実マイコンおよび前記仮想マイコンを動作させるために必要なデータ入力を行う周辺入力デバイスとを有するプログラム検証システムにおいて、前記周辺入力デバイスと前記実マイコンおよび仮想マイコンとの間に設けられるコンピュータ、あるいは、前記仮想マイコンを具現化するコンピュータに読み込まれて実行されるプログラム検証システム制御用コンピュータプログラムであって、前記コンピュータに、前記周辺入力デバイスから前記実マイコンおよび仮想マイコンの一方または両方を選択して前記周辺入力デバイスからの入力データを転送する処理と、前記実マイコンおよび仮想マイコンの作動/停止を制御する処理とを行わせる命令を含むことを特徴とする。
本発明によれば、仮想マイコンおよび実マイコンを同時起動した後、仮想マイコンと実マイコンを切換えてプログラム検証することが可能になる。
本発明にかかるプログラム検証システムは、前記周辺入力デバイスを複数備え、前記マイコン制御部が、データ入力を行うべき周辺入力デバイスを前記複数の周辺入力デバイスから選択するようにしても良い。この複数の周辺入力デバイスには、実機入力デバイスと仮想入力デバイスの両方を含み得る。
本発明にかかるプログラム検証システムは、実マイコンまたは仮想マイコンの実行結果を出力する周辺出力デバイスをさらに備え、前記マイコン制御部が、前記実マイコンまたは仮想マイコンからの出力データを前記周辺出力デバイスへ転送することが好ましい。周辺出力デバイスにより、実マイコンまたは仮想マイコンによる実行結果を確認することができるからである。また、この周辺出力デバイスを複数備え、前記マイコン制御部が、出力データを転送すべき周辺出力デバイスを前記複数の周辺出力デバイス部から選択する態様としても良い。
また、本発明にかかるプログラム検証システムにおいて、前記仮想マイコンが、前記仮想マイコンの作成時にコンパイラが出力するシンボル情報に基づいて生成されたシンボル定義を扱うことが可能な疑似デバッガをさらに備えたことが好ましい。仮想マイコンと実マイコンとを切換えてデバッグ対象プログラムを検証する場合、例えば、仮想マイコンとマイコン制御部とが一体型である一つのアプリケーションとすると、マイコン制御部から仮想マイコンのRAMの読書きは、簡単に読書きできるRAMシンボル名を直接参照する方法をとれる。しかし、実マイコンは、RAMシンボル名を直接参照できないため、RAMシンボル名の文字列をマイコン制御部から実マイコンへ渡し、RAMシンボル名の文字列から実デバッガ内でRAMシンボル名へ変換を行って、RAM内のデータを読書きする方法をとっていた。このため、仮想マイコンと実マイコンではRAMの読書き制御コマンドが違っていた。例えば、プログラムをシミュレータテストする際にテストRAMを追加する場合は、同じ内容を実マイコンでテストするために、RAMを操作するプログラムを追加・修正する必要がある。また、その逆も同様で、読書きするRAMを追加する際は、必ず、シミュレータ検証と実マイコン検証の両方に対応したプログラム作成が必要であり、二度手間であった。上記の構成は、シンボル定義を扱える疑似デバッガを備えたことにより、この問題を解決するものである。
なお、より具体的には、ただしこれに限定されるべきではないが、マイコン制御部と一体型の仮想マイコンに擬似デバッガを組み込むと、マイコン制御部内のマイコン実行部が仮想マイコンと実デバッガに対して同じコマンドで制御できる。合わせて、擬似デバッガが、RAMシンボル名を扱える様にするため、例えばMicrosoft社のVisualC++アプリケーション等のコンパイラが出力するシンボル情報が記録されているファイルを解析し、擬似デバッガが利用可能なシンボル定義ファイルを生成するシンボル変換装置を付けることで、擬似デバッガは、実デバッガと同じRAMシンボル名が扱える様になる。これにより、マイコン実行から実デバッガに発行するコマンドと同じコマンドを仮想マイコンに対して発行可能になり、RAMの読書き処理および擬似エミュレータおよび実エミュレータのマイコン実行を共通化し、二度手間が無くなる。
また、本発明にかかるプログラム検証システムにおいて、前記実マイコンおよび仮想マイコンを用いたプログラム検証テストの手順を記録したシナリオファイルを参照し、前記シナリオファイルの内容に応じた指示を前記マイコン制御部へ渡す自動検証部をさらに備え、前記シナリオファイルには、検証手順毎に実行すべき仮想マイコンおよび実マイコンの少なくとも一方が指定され、前記自動検証部は、前記シナリオファイルに従って、各検証手順において実行すべきマイコンを選択し、選択結果を前記マイコン制御部へ渡すデバイス選択部を備え、前記マイコン制御部は、前記デバイス選択部の指示に従って、前記仮想マイコンおよび前記実マイコンの一方または両方を選択し作動させるマイコン実行部を備えたことが好ましい。
また、本発明にかかるプログラム検証システムにおいて、前記マイコン制御部が、前記周辺入力デバイスから前記仮想マイコンと前記実マイコンに同じ入力データを送る並列実行部と、前記仮想マイコンと前記実マイコンから実行結果をそれぞれ取得し、取得したデータを周辺出力デバイスに転送する出力分配部とを備え、前記周辺出力デバイスが、前記仮想マイコンの実行結果と前記実マイコンの実行結果とを対比可能な状態に表示することが好ましい。また、本発明にかかるプログラム検証システムにおいて、前記マイコン制御部が、前記周辺入力デバイスから前記仮想マイコンと前記実マイコンに同じ入力データを送る並列実行部と、前記仮想マイコンと前記実マイコンから実行結果をそれぞれ取得し、取得したデータの差異を求めて前記周辺出力デバイスへ出力する比較分析部とを備えた態様も好ましい。
プログラム開発段階を、シミュレーションから実機デバッグセット開発に移行する際に、仮想マイコンと実マイコンとでプログラム動作に相違があった場合に、プログラムが悪いのか、実機セットが悪いのか、あるいはシミュレーションシステムが悪いのかの判断を迅速に行うことが必要である。このために、マイコン制御部から仮想マイコンと実マイコンにリモコン等の同じ入力を加えることで同じ動作をさせ、それぞれのマイコンの出力結果を比較することで、動作の差異を検出することができる。
比較する方法として、先ず、周辺デバイス部のリモコン等からリモコンコードをマイコン制御部に送信し、マイコン制御部が、実マイコンと仮想マイコンに同じリモコンコードを送信するマイコン実行と、送信後にそれぞれのマイコンから返信データを受取るマイコン制御、および受信したデータを2つの表示デバイスに分けて送信し、実マイコンと仮想マイコンの動作比較を表示イメージにて行うようにしても良い。
また、本発明にかかるプログラム検証システムにおいて、前記仮想マイコンおよびマイコン制御部のそれぞれが単独実行可能なアプリケーションとして実装され、前記仮想マイコンと前記マイコン制御部とが仮想配線を介して接続され、前記マイコン制御部の指示により前記仮想マイコンの実行を終了させ、再起動を行うリスタート指示部と、前記リスタート指示部から仮想配線を経由して前記仮想マイコンのプロセスを終了および再起動するリスタート実行部とを備えたことが好ましい。さらに、この構成において、前記リスタート指示部が、前記仮想配線に接続された全ての単独実行可能なアプリケーション内に組み込まれ、前記リスタート実行部は、仮想配線に接続された単独実行可能な全てのアプリケーションデバイスに対して、終了および再起動を行う態様としても良い。
また、本発明にかかるプログラム検証システムにおいて、前記実マイコンおよび仮想マイコンを用いたプログラム検証テストの手順を記録したシナリオファイルを参照し、前記シナリオファイルの内容に応じた指示を前記マイコン制御部へ渡す自動検証部をさらに備え、前記シナリオファイルには、検証手順毎に実行すべき仮想マイコンおよび実マイコンの少なくとも一方が指定され、前記自動検証部は、前記シナリオファイルに従って、各検証手順において実行すべきマイコンを選択し、前記仮想マイコンおよび前記実マイコンが用いるRAMの読み書きおよび前記仮想マイコンおよび前記実マイコンの作動/停止を行うマイコン選択実行部を備えたことが好ましい。さらに、この構成において、仮想マイコンおよび実マイコンがそれぞれ複数設けられ、前記マイコン選択実行部が、前記複数の仮想マイコンまたは複数の実マイコンから、実行すべきマイコンを選択し、選択された仮想マイコンおよび実マイコンが用いるRAMの読み書きおよび前記仮想マイコンおよび前記実マイコンの作動/停止を行う態様としても良い。
また、前記自動検証部で、前記シナリオファイルに従って、実行した結果を検証結果ファイルに記録するデータとして、RAMデータおよび信号値および画像データを複数記録することで、検証するプログラムの動作が時系列で把握できるため、検証精度を向上させることができる。RAMデータおよび信号値および画像データを記録するときに、プログラム検証するテスト項目に合わせて、記録する数(回数)や、記録時間を設定することで検証時間の短縮を行う。
また、本発明にかかるプログラム検証システムにおいて、前記実マイコンおよび仮想マイコンを用いたプログラム検証テストの手順を記録したシナリオファイルを参照し、前記シナリオファイルの内容に応じた指示を前記マイコン制御部へ渡す自動検証部をさらに備え、前記シナリオファイルには、検証手順毎に実行すべき仮想マイコンおよび実マイコンの少なくとも一方が指定され、前記シナリオファイルで定義した1または複数の出力データを記録する手順に従って、前記周辺出力デバイスにおけるデータの変化を検出し前記自動検証部に返信するデータ比較検出部と、前記データ比較検出部の検出結果に基づいて、前記データおよび前記データに基づく出力画像の少なくとも一方を検証結果ファイルへ記録する画像データ記録部とを備えたことが好ましい。
また、本発明にかかるプログラム検証システムにおいて、前記実マイコンおよび仮想マイコンを用いたプログラム検証テストの手順を記録したシナリオファイルを参照し、前記シナリオファイルの内容に応じた指示を前記マイコン制御部へ渡す自動検証部をさらに備え、前記シナリオファイルには、検証手順毎に実行すべき仮想マイコンおよび実マイコンの少なくとも一方が指定され、前記シナリオファイルで定義した1または複数の出力データを記録する手順に従って、前記周辺出力デバイスにおける信号の変化を検出し前記自動検証部に返信する信号比較検出部と、前記信号比較検出部の検出結果に基づいて、前記データおよび前記データに基づく出力画像の少なくとも一方を検証結果ファイルへ記録する画像データ記録部とを備えたことが好ましい。
また、本発明にかかるプログラム検証システムにおいて、前記データおよび前記データに基づく出力画像の少なくとも一方について、記録回数を制限する回数制限部をさらに備えたことが好ましい。
また、本発明にかかるプログラム検証システムにおいて、前記データおよび前記データに基づく出力画像の少なくとも一方について、記録時間を制限する時間制限部をさらに備えたことが好ましい。
また、本発明にかかるプログラム検証システムにおいて、画像記録を開始する最初の画像と、実行経過で変化する2枚目以降の画像とを比較する比較部をさらに備え、前記比較部による比較結果が同じであれば、前記自動検証部による画像記録を終了することが好ましい。
また、本発明にかかるプログラム検証システムにおいて、前記実マイコンおよび仮想マイコンを用いたプログラム検証テストの手順を記録したシナリオファイルを参照し、前記シナリオファイルの内容に応じた指示を前記マイコン制御部へ渡す自動検証部をさらに備え、前記シナリオファイルには、検証手順毎に実行すべき仮想マイコンおよび実マイコンの少なくとも一方が指定され、前記シナリオファイルで定義した1または複数の出力データを記録する手順に従って、前記周辺出力デバイスにおけるRAMデータの変化を検出し前記自動検証部に返信するデータ比較検出部と、前記データに基づく画像データを前記自動検証部へ返信する画像データ転送部と、前記自動検証部で画像データを表示し検証結果ファイルへ記憶する表示記憶部とを備えたことが好ましい。
また、本発明にかかるプログラム検証システムにおいて、前記検証結果ファイルに、画像記録の終了条件を記録する画像条件記録部をさらに備えたことが好ましい。
また、本発明にかかるプログラム検証システムにおいて、複数のデータまたは画像を記録する際の時間間隔に関する情報を記録する画像時間記録部を備えたことが好ましい。
さらに、単独実行可能な仮想マイコン・マイコンコントローラ一体部内のマイコンコントローラが、仮想マイコンのリセットスタート(以下リスタート)を行う際に、マイコンコントローラのスレッドから仮想マイコンのスレッドを終了し、再度仮想マイコンのスレッドを起動することで仮想マイコン内のプログラムを強制終了し、初期化処理から再実行をさせることで、リスタートと同様な動作をさせていた。しかし、この方法では、ユーザRAMおよびデバッグRAMの初期化はできなかった。そこで、仮想マイコンとマイコン制御部とを分離し、それぞれを単独実行可能なアプリケーションにすることで、マイコン制御部から仮想マイコンに対してリスタート要求を出して、仮想マイコンのアプリケーションを終了し、再起動させる。これにより、ユーザRAMおよびデバッグRAMの初期化ができる。このため、仮想マイコンとマイコン制御部に仮想バススロットを付け、マイコン制御部から仮想配線マネージャに仮想マイコンのアプリケーション終了・起動コマンドを発行し、仮想配線マネージャが仮想マイコンのアプリケーションを終了した後、再起動させることで実マイコン同等のリスタートを実現することもできる。
以下、本発明のより具体的な実施形態について、図面を参照しながら説明する。
(用語説明)
最初に、以下の各実施形態で用いる用語を説明する。
VC++とは、Microsoft社のVisual Studio Ver.6または、Visual Studio.net Professional VisualC++等のC言語コンパイラである。
プログラムとは、ユーザが開発するデバッグ対象プログラム(以下プログラムと称する)であり、仮想マイコン上で実行される形式(例えばプログラム102)と、実マイコン上で実行される形式(例えばプログラム202)がある。
周辺デバイス部とは、仮想マイコン100および実マイコン200の動作検証に必要なデバイスであり、実機入出力デバイスと仮想入出力デバイスがある。例えば、仮想入力デバイスとしては仮想リモコン300、仮想出力デバイスとしては仮想LCD(液晶ディスプレイ)320、実機入力デバイスとしては実リモコン330、実機出力デバイスとしては実LCD310がある。ただし、周辺デバイスはこれらの具体例のみに限定されない。
デバッガとは、実マイコン200をデバッグするための実エミュレータ210を制御する実デバッガ212と、仮想マイコン100および仮想マイコン120を制御する擬似エミュレータ110を制御する擬似デバッガ112である。
実エミュレータとは、プログラム202を実行するために、実機の組込みマイコンをエミュレートするインサーキットエミュレータである。
擬似エミュレータとは、プログラム102を実行するために、実機の組込みマイコンに搭載されている機能(割込み、タイマ、タスク等)をシミュレーションするための、マイコンのシミュレータである。
仮想配線とは、仮想マイコン・マイコンコントローラ一体部50と実マイコン200と周辺デバイス部30と自動検証部40等を仮想的に接続する配線である。なお、仮想マイコン・マイコンコントローラ一体部50と実マイコン200と周辺デバイス部30と自動検証部40等を複数のパーソナルコンピュータで実現した場合は、この仮想配線12として、無線LAN、有線LAN等のネットワーク、USB、RS232C、IEEE1394等のパソコン間を接続する実配線を利用できる。また、仮想マイコン・マイコンコントローラ一体部50と実マイコン200と周辺デバイス部30と自動検証部40等を一台のパーソナルコンピュータ内で複数の単独実行可能なアプリケーションとして実現した場合は、仮想配線12は、アプリケーション間にて通信可能なDDE、COM等のデータ通信機能を利用して実現できる。本実施形態では、仮想配線を、本願の出願人による先の特許出願(特願2002−207884号)にて出願されているバス擬似化装置を用いて実施している。
成りすましとは、一例として、図2に示す通り、入力デバイスとして仮想リモコン300と実リモコン330とマイコンコントロール520が、仮想配線12に接続する場合のデバイス名を仮想リモコン300は、「REMO」とし、実リモコン330は「REMO1」とし、マイコンコントロール520は、「CTL」として接続する。マイコンコントロール520は、仮想リモコン300からの受信を許可する設定にした場合に、仮想リモコン300から送信先デバイス名「CTL」を指定するだけで、マイコンコントロール520は、仮想リモコン300からデータを受信できる。しかし、実リモコン330からマイコンコントロール520に送信先デバイス名を「CTL」として送信しても、マイコンコントロール520は受信しない。そこで、図32に示す通り、実リモコン330が、送信デバイス先名の指定時に「CTL.REMO」と指定すると、マイコンコントロール520は、仮想リモコン300からの受信と判断して受信する。これを成りすまし機能という。この成りすまし機能を使えは、入力デバイスを増やした場合でも、マイコンコントロール520が受信を許可する設定にするためのプログラム修正は不要になる。
同報通信とは、一例として、図2に示す通り、出力デバイスとして仮想LCD320と実LCD310とマイコンコントローラ520が仮想配線12に接続する場合のデバイス名を仮想LCD320は「LCD」とし、実LCD310は、「LCD1」とし、マイコンコントローラ520は、「CTL」として接続する。マイコンコントロール520が、LCD表示データを仮想LCD320に転送するプログラムにしていた場合、実LCD310に転送する場合は、マイコンコントロール520に実LCD310にも転送するプログラムを作成する必要がある。また逆に、仮想LCD320と実LCD310に送るプログラムにした状態で、仮想LCD320が不要になったので外す場合も同様に、マイコンコントロール520は仮想LCD320に転送しないプログラムを作成する必要がある。そこで、仮想LCD320と実LCD310の変更をせずに、それぞれのLCD表示デバイスに転送を制御する機能が、同報通信である。同報通信は、図2の通信定義データa15および通信定義データb17の設定により、仮想配線バスマネージャが、1つまたは、複数のデバイスに対して転送先を設定できる。この同報通信機能を使えば、出力デバイスを増減したい場合でも、マイコンコントロール520が送信を行うためのプログラム修正は不要になる。
通信定義データa15および通信定義データb17に設定するデータ内容を、LCD:”LCD”,”LCD1”とすれば、マイコンコントロール520が「LCD」に送信した場合に、仮想配線バスマネージャが「LCD」と「LCD1」の両方に転送する。また、通信定義データa15および通信定義データb17に設定するデータ内容を、LCD:”LCD1”とすれば、マイコンコントロール520が「LCD」に送信した場合は、仮想配線バスマネージャが「LCD1」のみ転送する。
非同期送信とは、仮想配線12を利用して通信する手段であるが、データを通信相手に一方的に送信するだけで返信がない通信方法である。
同期送信とは、仮想配線12を利用して通信する手段であるが、データを通信相手に送信した後、通信相手から返信データが返ってくるまで次の処理に進まず、待っている通信方法である。
ハイブリッドマイコンエンジンとは、実マイコン200と仮想マイコン100を複数混載して、目的に応じてマイコンを切換えて一つまたは複数で実行可能なマイコンである。
ハイブリッド入力デバイスとは、仮想マイコン100または仮想マイコン120または実マイコン200に入力するデバイスを、通信データフォーマットが同じであれば、仮想リモコン300または実リモコン330から成りすまし機能を使って、自動検証部40のシナリオファイルに定義した内容に従い、何れからでも入力可能である。
ハイブリッド出力デバイスとは、仮想マイコン100または仮想マイコン120または実マイコン200が出力するデバイスを、通信データフォーマットが同じであれば、仮想LCD320または実LCD310へ同報通信機能を使って、自動検証部40のシナリオファイルに定義した内容に従い、何れかに出力可能である。
マルチスレッドとは、プログラム動作を軽くするために、プロセス(例えば1つのWindowsアプリケーション、なお、「Windows」はマイクロソフト社の登録商標である。)を複数のスレッドに分割し、別々に実行できるようにする機能をいう。
(第1実施形態)
<第1実施形態の構成>
以下、本発明の第1実施形態について、図を用いて説明する。
本実施形態にかかるハイブリッドプログラム検証システムは、図3に示す通り、マイコン周辺の入出力デバイスとしての周辺デバイス部30と、実マイコン200と、仮想マイコン・マイコンコントローラ一体部50と、自動検証部40とが、仮想配線マネージャ10により制御される仮想配線12を介して相互に接続された構成である。
周辺デバイス部30は、(1)仮想入力デバイスとしての単独実行可能な仮想リモコン300と、(2)仮想出力デバイスとしての単独実行可能な仮想LCD320と、(3)実機入力デバイスとしての単独実行可能な実リモコン330と、(4)実機出力デバイスとしての単独実行可能な実LCD310とを備えている。これらの入出力デバイスは、仮想配線スロット14を介してそれぞれ仮想配線12に接続されている。なお、実リモコン330は、上記の仮想配線スロット14とRS232Cブリッジ332を含むリモコンブリッジ334により仮想配線12に接続されている。また、実LCD310は、その内部のRS232Cデバイスドライバ314を介してLCDブリッジ318に接続されている。LCDブリッジ318は、上記の仮想配線スロット14およびRS232Cブリッジ316から構成される。
実マイコン200は、テスト/デバッグの対象となるプログラム(プログラム202)とそのエミュレータ(実エミュレータ210)を実機マイコンに組み込んだ実機デバッグセットであり、単独で実行可能である。実エミュレータ210には、実デバッガ212が接続されている。また、プログラム202は、テスト/デバッグの対象プログラムを実エミュレータ210上での実行形式にしたものである。また、実マイコン200は、さらに、プログラム202の実行を制御するユーザRAM204のデータを仮想配線12経由で他のデバイスと通信するために、プログラム202の実行状態に同期化してユーザRAM204とデータ転送するデバッグRAM208に読書きを行うSim・ICE兼用デバッグプログラム206と、仮想配線スロット14とを備えている。ただし、プログラム202の実行状態に同期化してユーザRAM204の読書きが不要な場合は、Sim・ICE兼用デバッグプログラム206は、直接ユーザRAM204を読書きする。
仮想マイコン・マイコンコントローラ一体部50は、実マイコンのシミュレータである仮想マイコン100とマイコンコントローラ500とを備え、単独実行可能なアプリケーションプログラムである。仮想マイコン100は、疑似エミュレータ110と、疑似エミュレータ110上での実行形式にされたデバッグ対象プログラム(プログラム102)と、プログラム102の実行を制御するユーザRAM104のデータを仮想配線12経由で他のデバイスと通信するために、プログラム102の実行状態に同期化してユーザRAM104とデータ転送するデバッグRAM108に読書きを行うSim用デバッグプログラム106と、ユーザRAM104と、デバッグRAM108と、疑似デバッガ112とを備えている。ただし、プログラム102の実行状態に同期化してユーザRAM104の読書きが不要な場合は、Sim用デバッグプログラム106は、直接ユーザRAM104を読書きする。
マイコンコントローラ500は、データ解析・実行部506と、マイコン制御部504と、マイコン実行部502と、ICE制御部508と、比較分析部509と、RAMサンプリング部507と、仮想配線スロット14とを備えている。
以上の構成により、本実施形態のハイブリッドプログラム検証システムは、テスト項目に合わせて作動させるマイコンを切換えることが可能となっている。また、本ハイブリッドプログラム検証システムは、手動によるプログラム検証(周辺入力デバイスを作業者が操作して行うプログラム検証)の他に、自動によるプログラム検証(自動検証部40のシナリオファイル412に検証手順を登録して自動的に実行させるプログラム検証)も可能である。
手動によるプログラム検証では、周辺入力デバイスである仮想リモコン300または実リモコン330等の何れか1つから操作者がデータ入力を行う。入力したデータは、マイコンコントローラ500により、テスト項目が論理テストまたはタイミングテストであるかに応じて、論理テストを行う仮想マイコン100またはタイミングテストを行う実マイコン200の少なくとも一方へ選択的に転送される。そして、選択されたマイコンが実行
した出力データを、マイコンコントローラ500が取得し、周辺デバイス部30へ転送して画像イメージまたはデータ表示を行う。画像イメージを表示する場合は、周辺デバイス部30内の仮想LCD320または実LCD310等の複数の出力デバイスに表示することが好ましい。
実マイコン200または仮想マイコン100による実行結果は、マイコンコントローラ500内の比較分析部509で分析・比較される。例えば、実マイコン200および仮想マイコン100の両方で同じ入力データを処理させた結果を、比較分析部509で比較するようにしても良い。比較結果の出力形式は任意であるが、例えば図4に示す通り、1つの入力データを2つのマイコンに入力した結果として得られた出力RAMデータおよび表示デバイス画像を、入力データと並べて表示または印刷出力することで、2つのマイコンの動作に差異がある場合に検出が容易になる。
自動によるプログラム検証では、自動検証部40において、シナリオファイル412内に記述された自動テストの手順(シナリオ)を自動検証制御部400が入力し、そのシナリオで指定されたテスト項目の指示に従って、マイコンコントローラ500が、仮想マイコン100または実マイコン200の少なくとも一方を選択して、入力データを転送する。
実マイコン200または仮想マイコン100による実行結果は、シナリオファイル412で指定された出力デバイスに対して転送され、画像イメージまたはデータとして表示される。シナリオファイル412で設定された、実行すべきマイコンおよび出力表示すべきデバイスは、自動検証制御部400からマイコンコントローラ500へ、図5に示すようなメッセージデータとして送信される。例えば、図5のメッセージ項目No.8について説明すると、自動検証メッセージで、出力表示デバイス指定のパラメータはOUTdeviceの項目でRE_LCDと指定されている。このRE_LCDは、実機LCD表示デバイスを表す。ここで、VH_LCDを指定すると、仮想LCD表示デバイスを指定したこととなる。
画像イメージを表示する場合は、周辺デバイス部30内の仮想LCD320または実LCD310等の複数の出力デバイスに表示する。自動プログラム検証の場合、マイコンコントローラ500内の比較分析部509でデータ分析またはデータ比較(複数マイコンで実行した場合)を行った結果を、例えばマイクロソフト社のExcel(登録商標)等の表計算アプリケーションプログラムを利用して、画像イメージあるいはデータとして自動記録するようになっている。あるいは、比較分析部509が、過去に記録した検証結果と比較するようにしても良い。比較分析部509による出力例は、図4に示したとおりである。図4に示すように、2つのマイコンで実行された結果として得られる出力RAMデータと表示デバイスの画像とを、入力データと共に並べて出力することで、2つのマイコンの動作の差異がある場合に、容易に検出可能になる。
<シンボル定義>
VC++を実行するVCコンパイラ600でコンパイルした後、出力されるRAM変数のアドレス番地等のシンボル情報ファイルを元に、シンボル変換部602で、擬似デバッガ112が利用可能なC言語プログラムのシンボル定義部604を作成し、仮想マイコン100内のプログラムソースファイルを一緒にコンパイルする。VC++が出力するシンボル情報からシンボル定義部604に変換する内容の一例は、図6に示す通りである。
<各デバイスを自動的に仮想配線に接続する初期化処理>
図3に示す単独実行可能な仮想リモコン300を起動すると、仮想配線マネージャ10が既に起動していなければ、自動的にこれを起動し、仮想リモコン300内の仮想配線ス
ロット14と仮想配線マネージャ10が自動配線され、仮想配線12ができる。
次にRS232C通信が可能な実機である実リモコン330を起動した後、単独実行可能なリモコンブリッジ334を起動し、リモコンブリッジ334内のRS232Cブリッジ332と実リモコン330をRS232Cにて接続すると同時に、リモコンブリッジ334内の仮想配線スロット14と仮想配線マネージャ10が自動配線される。
次に、単独実行可能な仮想LCD320を起動し、仮想LCD320内の仮想配線スロット14と仮想配線マネージャ10が自動配線される。また、仮想LCD320は、マイコンコントローラ500からのLCD表示データを受信する許可を行う。
次にRS232C通信が可能な実機である実LCD320を起動した後、単独実行可能なLCDブリッジ318を起動し、LCDブリッジ318内のRS232Cブリッジ316と実LCD310内のRS232Cデバイスドライバ314とをRS232Cで接続し、LCDブリッジ318内の仮想配線スロット14と仮想配線マネージャ10が自動配線される。これで、周辺デバイス部30の入出力デバイスの、仮想配線12への接続が完了する。
次に、実マイコン200内のプログラム202を実行可能な実機である実エミュレータ210を起動し、実マイコン内の単独実行可能な実デバッガ212を起動し、実エミュレータ210と実デバッガ212を接続する。実デバッガ212は、仮想配線スロット14経由で仮想バスマネージャ10と自動配線する。また、実デバッガ212は、仮想マイコン・マイコンコントローラ一体部50から、実デバッガ212を制御するコマンドの受信を許可する。
次に、単独実行可能な仮想マイコン・マイコンコントローラ一体部50を起動し、仮想マイコン100内のプログラム102を実行可能な擬似エミュレータ110を動作させる。仮想マイコン・マイコンコントローラ一体部50内の仮想配線スロット14は、仮想配線マネージャ10と自動配線される。また、仮想マイコン・マイコンコントローラ一体部50が、仮想配線12経由で仮想リモコン300の受信を許可する。実リモコン330が仮想マイコン・マイコンコントローラ一体部50にリモコンコードを送信する場合は、ハイブリッド入力デバイスの機能により仮想リモコン300に成りすまして送信する。
次に、単独実行可能な自動検証部40を起動し、自動検証制御部400内の仮想配線スロット14を仮想配線バスマネージャ10に自動配線する。
以上により、実リモコン330、仮想リモコン300、実LCD310、仮想LCD320、実マイコン200、仮想マイコン・マイコンコントローラ一体部50、および、自動検証部40が、仮想配線マネージャ10により仮想配線12で接続され、ハイブリッドプログラム検証システムが起動したことになる。
<手動モードを選択してマイコンを実行>
前述の手動によるプログラム検証を行う場合、各マイコンを実行する前に、図7に示すマイコンコントローラ500内のCPU切換部515により、本プログラム検証システムの動作モードを、手動モード(作動させるマイコンの切換えを手動で行うモード)に設定する。
手動モード設定後、周辺デバイス部30内の入力デバイスである実リモコン330または仮想リモコン300において操作者によりクリックされたキーコードのデータと、各マイコンを制御するため、図5に示すメッセージ一覧表の項目No.1〜5の手動操作によ
るデータとを、仮想配線12からマイコンコントローラ500に渡す。マイコンコントローラ500は、図5の「選択CPU」項目に指示されているとおり、仮想マイコン100(図5ではVH_CPU1と表記)または実マイコン200(図5ではRE_CPU1と表記)の何れか1つまたは両方のマイコンに、キーコードを転送する。転送されたキーコードに従って選択されたマイコンが実行した結果のLCD表示データ等を、マイコンコントローラ500が取得し、画像イメージの表示とデータ表示を行う。
画像イメージの表示は、図5の「OUTdevice」項目に指示された出力デバイスに対して、マイコンコントローラ500のデータ解析・実行部506内の出力分配部536(図7参照)が、仮想LCD320または実LCD310の一方または両方に、表示データを転送して表示させる。これらの表示デバイスに表示データを転送する場合、CPU切換部515でハイブリッド出力デバイスにした場合は、仮想配線マネージャ10の同報通信機能を使って仮想LCD320だけに転送し、図2の仮想配線マネージャ10内の通信定義データa15および通信定義データb17に設定されたデータに従って、仮想LCD320または実LCD310、あるいは、仮想LCD320と実LCD310の両方に、LCD表示データを転送して表示する。
データ表示は、16進数ダンプ表示、10進数ダンプ表示、テキスト表示、バイト型表示、ワード型表示、ロング型表示、構造体表示等のいずれであっても良く、複数のマイコンデータ比較等のデータ分析を行う。
<自動モード選択してマイコンを実行>
各マイコンを実行する前に、図7に示すマイコンコントローラ500のマイコン実行部502内のCPU切換部515で、自動モードに切換えて、仮想マイコン100または実マイコン200の何れか1つまたは両方のマイコンを選択可能な設定にする。
自動モードは、図8に示すシナリオファイル412からテスト項目ごとに検証するマイコンおよびリモコンコードを取得し、図5に示すメッセージ一覧表の項目No.6〜11の自動操作によるデータを、ハイブリッド入力デバイスの機能により仮想リモコン300に成りすまして、仮想配線12からマイコンコントローラ500に渡す。
マイコンコントローラ500は、自動モードで、図5の「選択CPU」項目に指定されたマイコンとして、仮想マイコン100または実マイコン200の何れか1つまたは両方に、キーコードを転送する。
キーコードが転送されたマイコンは、キーコードに従って実行されるが、自動モードの場合は、手動モードの場合と違い、自動で検証するために、プログラム102またはプログラム202に確実にキーを渡し、キー処理の完了を自動で判断し、プログラム102またはプログラム202の実行結果を記録するために、図8に示すリセットスタート発行または、シーケンス発行または、イベント発行の完了を確認した後、次のシーケンスを実行するために同期通信を利用して実行する。
自動で検証するテストの一例として状態遷移表を使った検証の場合は、自動検証制御部400がシナリオファイル412から検証するデバイス選択データを取得する。
次に、プログラム102またはプログラム202を検証する状態にするために、シーケンスデータを取得し、状態遷移表の中のテストしたい状態にする。シーケンスデータとしてリセットを取得した場合は、自動検証制御部400からデバイス選択データとリセットをマイコンコントローラ500に同期送信する。マイコンコントローラ500は、デバイス選択データに従って、仮想マイコン100または実マイコン200がリセット完了した
ことを確認する。次に、マイコンコントローラ500は、プログラムGO実行を仮想マイコン100または実マイコン200に転送し、プログラムGO実行したことを確認する。これによりリセットスタートが完了し、マイコンコントローラ500を経由して自動検証制御部400に返信する。
リセットスタートの完了を確認した後、シナリオファイル412から取得したシーケンスがリモコンキーの場合は、シーケンスキーを実行するため、自動検証制御部400からマイコンコントローラ500にデバイス選択データとシーケンスキーを同期送信する。マイコンコントローラ500は、仮想マイコン100または実マイコン200がキー処理を完了したことを確認し、マイコンコントローラ500から自動検証制御部400に返信する。
シーケンス動作により、プログラム102またはプログラム202が目的の状態になったと想定して、シナリオファイル412から取得したイベントとなるリモコンキーでイベント実行するため、自動検証制御部400からマイコンコントローラ500にデバイス選択データとイベントキーを同期送信する。マイコンコントローラ500は、仮想マイコン100または実マイコン200がイベントキー処理を完了したことを確認し、仮想マイコン100または実マイコン200が実行した結果のLCD表示データを取得し、マイコンコントローラ500にLCD表示データを返信し、画像イメージの表示とデータの表示を行う。
画像イメージの表示は、図5のOUTdevice項目に指示された出力デバイスに対して、マイコンコントローラ500内の出力分配部536が、仮想LCD320または実LCD310、あるいは、仮想LCD320と実LCD310の両方に、LCD表示データを転送し表示する。表示デバイスに表示データを転送する場合、CPU切換部515でハイブリッド出力デバイス指定にした場合は、仮想配線マネージャ10の同報通信機能を使って仮想LCD320だけに転送し、図2の仮想配線マネージャ10内の通信定義データa15および通信定義データb17に設定されたデータに従って、仮想LCD320または実LCD310、あるいは仮想LCD320と実LCD310の両方に、LCD表示データを転送し表示する。
データ表示は、比較分析部509で、16進数ダンプ表示、10進数ダンプ表示、テキスト表示、バイト型表示、ワード型表示、ロング型表示、構造体表示等の表示および複数のマイコンデータ比較表示等をすることでデータ分析を行う。
マイコンコントローラ500は、画像イメージの表示とデータの表示を完了すると、自動検証制御部400にLCD表示データを返信し、LCD表示データを検証結果ファイル410に記録する。合わせて、仮想LCD320または実LCD310の画像を検証結果ファイル410に記録する。仮想LCD320に表示した画像を検証結果ファイル410に記録する場合は、自動検証制御部400がクリップボードにキャプチャ指示し、自動検証制御部400がクリップボードの画像を検証結果ファイル410に記録する。
実LCD310に表示した画像を検証結果ファイル410に記録する場合は、実LCD310の画像をPCカメラで撮影し、USBケーブル等でパソコンと接続し、パソコン上に表示した画像を自動検証制御部400がクリップボードにキャプチャ指示し、自動検証制御部400がクリップボードの画像を検証結果ファイル410に記録する。
仮想LCD320と実LCD310の両方の画像を記録する場合は、仮想LCD320に表示した画像を自動検証制御部400がクリップボードにキャプチャ指示し、自動検証制御部400がクリップボードの画像を検証結果ファイル410に記録した後、実LCD310に表示
した画像をPCカメラで撮影しUSBケーブル等でパソコンと接続し、パソコン上に表示した画像を自動検証制御部400がクリップボードにキャプチャ指示し、自動検証制御部400がクリップボードの画像を検証結果ファイル410に記録する。
<仮想リモコンからマイコンコントローラへキーコードを転送する>
仮想リモコン300のボタンをクリックすると、キーコードを、図5に示す項目No.1のデータフォーマットで、仮想リモコン300内の仮想配線スロット14から仮想マイコン・マイコンコントローラ一体部50に非同期送信する。送信したキーコードは、仮想配線12を経由して仮想マイコン・マイコンコントローラ一体部50内の仮想配線スロット14にて受信する。
<実リモコンからマイコンコントローラへキーコードを転送する>
実機の実リモコン330のボタンをクリックすると、リモコンコードをRS232C経由で送信し、リモコンブリッジ334内のRS232Cブリッジ332で受信する。RS232Cブリッジ332は、受信したキーコードを仮想リモコン300と同じ図5に示す項目No.1のデータフォーマットで、ハイブリッド入力デバイスの機能により仮想リモコン300に成りすまして、仮想マイコン・マイコンコントローラ一体部50にリモコンブリッジ334内の仮想配線スロット14から非同期送信する。送信したキーコードは仮想配線12を経由して仮想マイコン・マイコンコントローラ一体部50内の仮想配線スロット14で仮想リモコンから受信したことになる。
<自動検証からマイコンコントローラへキーコードを転送する>
自動検証制御部400内のシナリオ制御部404が、シナリオファイル412から取得するキーには、マイコンのリセットスタートとシーケンスキーとイベントキーがある。
リセットスタートは、擬似エミュレータ110または実エミュレータ210をリセットスタートすることで、プログラム102またはプログラム202の実行を中断し、初期処理から実行させるため、デバイス選択部406で図5の項目No.4のデータフォーマットに変換する。
シーケンスキーは、状態遷移表の中のテストする状態にキー操作をするため、デバイス選択部406で図5の項目No.7または項目No.10のデータフォーマットに変換する。
イベントキーは、テストする状態になった時点で、キーを発行し、状態の変化を見ることで、キーの有効・無効および状態の変化を確認するため、デバイス選択部406で図5の項目No.8または項目No.11のデータフォーマットに変換する。
リセットスタートとシーケンスキーとイベントキーのそれぞれに変換したデータを自動検証制御部400内の仮想配線スロット14から仮想配線12を経由して仮想マイコン・マイコンコントローラ一体部50内の仮想配線スロット14へ同期送信する。
<手動操作でマイコンコントローラが仮想マイコンを制御>
仮想リモコン300または、実リモコン330から図5に示すメッセージ一覧表の項目No.1のデータをマイコンコントローラ500内の仮想配線スロット14で受信する。受信したデータは、図7に示すマイコンコントローラ500内の並列実効部532で、図5の選択CPU項目に示すマイコンの選択に従って、リモコンキーを書込むマイコンを選択する。図5の選択CPU項目に複数のマイコンを設定した場合は、設定したマイコン順に順次実行を繰返す。
マイコンを選択した後、図5の操作項目の自動または手動の指定を手動と確認した後、自動・手動指示部530にて選択したマイコンに対して手動実行を行う。
[手動操作でマイコンコントローラが仮想マイコンへリモコンキー転送]
マイコンパラメータ作成部514から、仮想マイコン実行部510にて、仮想マイコン100へリモコンコードを転送する。マイコンパラメータ作成部514は、リモコンコードを送信するパラメータを、図9に示す項目No.12のリモコンコードのRAMシンボ
ルを指定して書込みするラッパー関数を作成する。なお、手動実行する内容にはリセットスタートとRAM書込みとRAM読込みがあり、それぞれの動作は次の通りである。
[手動操作でマイコンコントローラが仮想マイコンをリセットスタート]
手動実行する内容が、リセットスタートの場合は、手動処理部526、マイコン制御指示部516、およびマイコン実行パラメータ作成部514で、図9に示す項目No.2のマイコンリセット関数を作成し、仮想マイコン実行部510から仮想マイコン100をリセットした後、続いて、図9に示す項目No.1のマイコン実行に対応するラッパー関数を作成し、仮想マイコン実行部510から仮想マイコン100を実行することで、仮想マイコン100のリセットスタートを行う。
[手動操作でマイコンコントローラが仮想マイコンにRAM書込み]
手動実行によるRAMデータの書込みの場合は、RAM書込み部518およびマイコン実行パラメータ作成部514で、図9に示す項目No.10〜15の関数を使ってRAM書込みを行う。
[手動操作でマイコンコントローラが仮想マイコンにRAM読込み]
手動実行によるRAMデータの読込みの場合は、出力データ取得部522からRAM読込み部520を経由してマイコン実行パラメータ作成部514で、図9に示す項目No.4〜9の関数を使って、仮想マイコン実行部510および仮想マイコン100からRAM読込みを行う。読込んだデータは、出力データ取得部522で取得したRAMを比較分析部509にて表示させると同時に、出力分配部536からRAM読込みを要求したデバイスに、仮想配線12経由でRAMデータを返信する。
比較分析部509にて表示する一例として、図4に示す通り1つの入力データを2つのマイコンに入力した結果を、入力データの横に出力RAMデータと表示デバイスの画像を並べることで、2つのCPUの動作に差異がある場合、容易に検出可能になる。
<手動操作でマイコンコントローラが実マイコンを制御>
仮想リモコン300または実リモコン330から、図5に示すメッセージ一覧表の項目No.1のデータを、マイコンコントローラ500内の仮想配線スロット14で受信する。受信したデータは、図7に示すマイコンコントローラ500内の並列実行部532で、図5の選択CPU項目に示すマイコンの選択に従って、リモコンキーを書込むマイコンを選択する。図5の選択CPU項目に複数のマイコンを設定した場合は、設定したマイコン順に順次実行を繰返す。マイコンを選択した後、図5の操作項目の自動または手動の指定を手動と確認した後、自動・手動指示部530にて選択したマイコンに対して手動実行を行う。
[手動操作でマイコンコントローラが実マイコンへリモコンキー転送]
手動実行によるリモコンコードを送信する場合は、図9に示す項目No.12に示す「RAMシンボルから1Byte書込み」のラッパー関数を使って、ユーザRAM204内のリモコンコード格納RAMシンボル名を指定してリモコンコードを書込むため、マイコン実行パラメータ作成部514とマイコン共通実行部544から仮想配線12を経由して
、図10に示す項目No.5のコマンドに変換して実マイコン200にリモコンコードを同期送信し、マイコン共通実行部544が同期返信を受けることで、実マイコン200がリモコンコード受付を完了する。
なお、手動実行する内容には、リセットスタートとRAM書込みとRAM読込みがあり、それぞれの動作は次の通りである。
[手動操作でマイコンコントローラが実マイコンをリセットスタート]
手動実行によるリセットスタートの場合は、手動処理部526からマイコン制御指示部516を経由して送信するパラメータは、図9に示す項目No.2に示す「マイコンリセット」ラッパー関数を使って、マイコン共通実行部544でラッパー関数を図10に示す項目No.11のリセットコマンドに変換して仮想配線12を経由で実マイコン200をリセットさせるために同期送信する。マイコン共通実行部544が同期返信を受けることでリセット完了を確認後、プログラム実行するために、手動処理部526からマイコン制御指示部516を経由して送信するパラメータは、図9に示す項目No.1に示す「マイコン実行」ラッパー関数を使って、マイコン共通実行部544でラッパー関数を図10に示す項目No.12のプログラムGOコマンドに変換し、実マイコン200を実行させるために同期送信する。マイコン共通実行部544が同期返信を受けることでプログラムスタートを確認し、リセットスタートを完了する。
[手動操作でマイコンコントローラが実マイコンにRAM書込み]
手動実行によるRAM書込みの場合は、手動処理部526およびRAM書込みデータ518から、RAM書込みコマンドをマイコン実行パラメータ作成部514でRAM書込み要求に合わせて、図9に示す項目No.10〜15に示すRAM書込みのラッパー関数を使って、マイコン共通実行部544でラッパー関数を図10に示す項目No.1,2,5,6のRAM書込みコマンドに変換して実マイコン200がRAM書込みを行うため同期送信する。マイコン共通実行部544が同期返信を受けることでRAM書込みの完了を確認する。また出力RAMの比較し分析を行うために、実マイコンに書込んだRAMデータによる実行結果の出力RAMの変化を見るために、書込みするデータを出力データ取得部522に渡し、実マイコンから読込んだデータをRAMサンプリング部507で表示する。
[手動操作でマイコンコントローラが実マイコンにRAM読込み]
手動実行によるRAM読込みの場合は、手動処理部526からRAM読込みデータ520からRAM書込みコマンドをマイコン実行パラメータ作成部514でRAM読込み要求に合わせて、図9に示す項目No.4〜9に示すRAM読込みのラッパー関数を作成し、実マイコン実行部512からICE制御部508でラッパー関数を図10に示す項目No.3,4,7,8のRAM読込みコマンドに変換して、実マイコン200がRAM読込みを行うため同期送信する。ICE制御部508が同期返信を受けることでRAM読込み、出力データ取得部522で取得したRAMを比較分析部509にて表示させると同時に、出力分配部536からRAM読込みを要求したデバイスに、RAMデータを仮想配線12経由で返信する。比較分析部509にて表示する一例として、図4に示す通り1つの入力データを2つのマイコンに入力した結果を入力データの横に出力RAMデータと表示デバイスの画像を並べることで、2つのCPUの動作に差異がある場合に、容易に検出可能になる。
<自動操作でマイコンコントローラが仮想マイコンを制御>
自動検証制御部400から発行するリモコンコードを仮想リモコン300または実リモコン330が発行する同じフォーマットのデータにて仮想バスマネージャのハイブリッド入力デバイス機能である成りすましを使ってマイコンコントローラ500に同期送信する
。マイコンコントローラ500は、図5に示すメッセージ一覧表のデータをマイコンコントローラ500内の仮想配線スロット14で受信する。受信したデータは、図7に示すマイコンコントローラ500内の並列実行部532で、図5の選択CPU項目に示すマイコンの選択に従って、リモコンキーを書込むマイコンを選択する。図5の選択CPU項目に複数のマイコンを設定した場合は、設定したマイコン順に順次実行を繰返す。マイコンを選択した後、図5の操作項目の自動または手動の指定を自動と確認した後、自動・手動指示部530で選択した仮想マイコン100に対して自動実行を行う。
[自動操作でマイコンコントローラが仮想マイコンへリモコンキー転送]
自動・手動指示部530から自動でリモコンコードを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、仮想マイコンのRAM読書き制御の処理が完了するまで待つ。リモコンコードを送信するパラメータは、図9の項目No.12に示すリモコンコードのRAMシンボルを指定して書込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514から、仮想マイコン実行部510を経由して仮想マイコン100にリモコンコードを渡し、仮想マイコン100がリモコンキー受付を完了するまで待つ。
リモコンキー受付処理が完了すると、仮想マイコン実行部510から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、リモコンコード書込み指示をしたデバイスに対して、仮想バス12経由でリモコンコード受付処理完了を返信する。
なお、手動実行する内容にはリセットスタートとRAM書込みとRAM読込みがあり、それぞれの動作は次の通りである。
[自動操作でマイコンコントローラが仮想マイコンをリセットスタート]
自動・手動指示部530から自動でリセットスタートを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、仮想マイコン100のリセットスタート制御の処理が完了するまで待つ。
実行・完了待ち部524からマイコン制御指示部516を経由してマイコン実行パラメータ作成部514で図9に示す項目No.2のマイコンリセット関数を作成し、仮想マイコン実行部510から仮想マイコン100をリセットした後、続いて、図9に示す項目No.1のマイコンが実行するラッパー関数を作成し、仮想マイコン実行部510から仮想マイコン100を実行し、仮想マイコン100がリセットスタートを完了するまで待つ。
リセットスタート処理が完了すると、仮想マイコン実行部510から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、リセットスタートを指示したデバイスに対して、仮想バス12経由で処理完了を返信する。
[自動操作でマイコンコントローラが仮想マイコンにRAM書込み]
自動・手動指示部530から自動でRAM書込みを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、仮想マイコン100のRAM書込み制御の処理が完了するまで待つ。
実行・完了待ち部524からRAM書込みデータ518を経由してマイコン実行パラメータ作成部514で図9に示す項目No.10〜15の関数を使ってRAM書込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514から、仮想マイコン実行部510を経由して仮想マイコン100にRAMデータを渡し、仮想マイコン100がRAM書込み完了するまで待つ。
RAM書込み処理が完了すると、仮想マイコン実行部510から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、RAM書込みを指示したデバイスに対して、仮想バス12経由でRAMデータ書込み処理完了を返信する。
[自動操作でマイコンコントローラが仮想マイコンにRAM読込み]
自動・手動指示部530から自動でRAM読込みを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、仮想マイコン100のRAM読込み制御の処理が完了するまで待つ。
実行・完了待ち部524からRAM読込みデータ520を経由してマイコン実行パラメータ作成部514で図9に示す項目No.4〜9の関数を使ってRAM読込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514から仮想マイコン実行部510を経由して仮想マイコン100にリモコンコードを渡し、仮想マイコンがRAM読込み完了するまで待つ。
RAM読込み処理が完了すると、仮想マイコン実行部510から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、RAM読込みを指示したデバイスに対して、仮想バス12経由でRAM読込み処理完了を返信する。また、読込んだデータは、出力データ取得部522で取得したRAMを比較分析部509にて表示させる。比較分析部509で表示する一例として、図4に示す通り1つの入力データを2つのマイコンに入力した結果を入力データの横に出力RAMデータと表示デバイスの画像を並べることで、2つのCPUの動作に差異がある場合に、容易に検出可能になる。
<自動操作でマイコンコントローラが実マイコンを制御>
自動検証制御部400から発行するリモコンコードを仮想リモコン300または実リモコン330が発行する同じフォーマットのデータにて仮想バスマネージャのハイブリッド入力デバイス機能である成りすましを使ってマイコンコントローラ500に同期送信する。マイコンコントローラ500は、図5に示すメッセージ一覧表のデータをマイコンコントローラ500内の仮想配線スロット14で受信する。受信したデータは、図7に示すマイコンコントローラ500内の並列実行部532で図5の選択CPU項目に示すマイコンの選択に従って、リモコンキーを書込むマイコンを選択する。図5の選択CPU項目に複数のマイコンを設定した場合は、設定したマイコン順に順次実行を繰返す。
マイコンを選択した後、図5の操作項目の自動または手動の指定を自動と確認した後、自動・手動指示部530で選択した実マイコン200に対して自動実行を行う。
[自動操作でマイコンコントローラが実マイコンへリモコンキー転送]
自動・手動指示部530から自動でリモコンコードを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、実マイコン200のRAM読書き制御の処理が完了するまで待つ。リモコンコードを送信するパラメータは、図9の項目No.12に示すリモコンコードのRAMシンボルを指定して書込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514から実マイコン実行部512を経由してICE制御部508でラッパー関数を図10に示す項目No.5のRAMシンボル書込みコマンドに変換し、実マイコン200にリモコンコードを渡し、実マイコン200がリモコンキー受付完了するまで待つ。
リモコンキー受付処理が完了すると、実マイコン実行部512から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、リモコンコード書込み指示をしたデバイスに対して、仮想バス12経由でリモコンコード受付処理完了を返信する。
なお、手動実行する内容にはリセットスタートとRAM書込みとRAM読込みがあり、それぞれの動作は次の通りである。
[自動操作でマイコンコントローラが実マイコンをリセットスタート]
自動・手動指示部530から自動でリセットスタートを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、実マイコン200のリセットスタート制御の処理が完了するまで待つ。
実行・完了待ち部524からマイコン制御指示部516を経由してマイコン実行パラメータ作成部514で図9に示す項目No.2のマイコンリセット関数を作成し、実マイコン実行部512からICE制御部508でラッパー関数を図10に示す項目No.11のリセットコマンドに変換して、実マイコン200をリセットした後、続いて、図9に示す項目No.1のマイコンが実行するラッパー関数を作成し、実マイコン実行部512からICE制御部508でラッパー関数を図10に示す項目No.12のプログラムGOコマンドに変換して実マイコン200を実行し、実マイコン200がリセットスタート完了するまで待つ。
リセットスタート処理が完了すると、実マイコン実行部512から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、リセットスタートを指示したデバイスに対して仮想バス12経由で処理完了を返信する。
[自動操作でマイコンコントローラが実マイコンにRAM書込み]
自動・手動指示部530から自動でRAM書込みを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、実マイコン200のRAM書込み制御の処理が完了するまで待つ。
実行・完了待ち部524からRAM書込みデータ518を経由してマイコン実行パラメータ作成部514で図9に示す項目No.10〜15の関数を使ってRAM書込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514から実マイコン実行部512を経由してICE制御部508でラッパー関数を図10に示す項目No.1,2,5,6のRAM書込みコマンドに変換し、実マイコン200にRAMデータを渡し、実マイコン200がRAM書込み完了するまで待つ。
RAM書込み処理が完了すると、実マイコン実行部512から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、RAM書込みを指示したデバイスに対して、仮想バス12経由でRAM書込み処理完了を返信する。
[自動操作でマイコンコントローラが実マイコンにRAM読込み]
自動・手動指示部530から自動でRAM読込みを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、実マイコン200のRAM読込み制御の処理が完了するまで待つ。
実行・完了待ち部524からRAM読込みデータ520を経由してマイコン実行パラメータ作成部514で図9に示す項目No.4〜9の関数を使ってRAM読込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514から実マイコン実行部512を経由して、ICE制御部508でラッパー関数を図10に示す項目No.3,4,7,8のRAMシンボル読込みコマンドに変換し、実マイコン200にRAMデータを渡し、実マイコン200がRAM読込み完了するまで待つ。
RAM読込み処理が完了すると、実マイコン実行部512から実行・完了待ち部524
に完了通知する。実行・完了待ち部524から、RAM読込みを指示したデバイスに対して仮想バス12経由でRAM読込み処理完了を返信する。また、読込んだデータは、出力データ取得部522で取得したRAMを比較分析部509にて表示させる。比較分析部509にて表示する一例として、図4に示す通り1つの入力データを2つのマイコンに入力した結果を入力データの横に出力RAMデータと表示デバイスの画像を並べることで、2つのCPUの動作に差異がある場合に、容易に検出可能になる。
<仮想マイコンの制御処理>
マイコンコントローラ500から発行した図10に示すマイコン制御コマンドの解析を、仮想マイコン100内のコマンド解析部134で行い、擬似エミュレータ110の実行と、擬似エミュレータ110のリセットと、デバッグRAM108またはユーザRAM104内のRAM読書きする各コマンドに対応する仮想マイコン100の制御を行う。なお、仮想マイコン100の制御にあたり、手動制御と自動制御は同じ動作になる。
[仮想マイコン内にリモコンコード書込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたリモコンコードは、マイコンコントローラ500で図10の項目No.5の1バイトシンボルライトコマンドをコマンド解析部134で解析し、RAMシンボル指定部130に渡す。RAMシンボル指定部130は、図6のシンボル定義ファイルに示すシンボル定義部604とコマンド解析部134から送られてきたリモコンコードのRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換し、RAM読書き識別部128からRAM書込み部124に渡す。RAM書込み部124は、デバッグRAM108に書込み、Simデバッグプログラム106およびプログラム102をリモコン入力により動作する。
Simデバッグプログラム106およびプログラム102の動作は、図11に示す通り、マイコンコントローラ500内の仮想Remo(S106)からのVHRemo(S140)へのRAM書込みを、Simデバッグプログラム106プログラムがVHRemo処理(S152)にて確認した後、Remo(S160)にリモコンコードを書込むことで、プログラム102は、リモコンコードが入力されたと判断して、Remo(S160)に書込まれたリモコンコードに対応した動作を行う。
なお、上記のRemoとは、図3のユーザRAM104で使うデータにより、実リモコンから受信したコードを実行するRAMである。このリモコンコードを実行するのはプログラム104である。VHRemoとは、図3のデバッグRAM108で使う、仮想リモコン300からの受信コードを一旦格納するRAMである。受信コードを一旦格納した後、プログラムが実機リモコン受信処理を行った後に、VHRemoデータに仮想リモコンコードがあれば、ユーザRAM104内のRemoにVHRemoコードを上書きし、実リモコンの代わりに仮想リモコンコードを実行する。VHRemoコードを上書きした後、VHremoは無効キーを設定する。このようにするのは、Remoに仮想リモコンコードを直接書き込むと、プログラム102がRemoコード生成中に仮想リモコンコードを上書きするタイミングもあり、システムが矛盾した動きをする可能性があるからである。この問題を避けるために、上述のとおり、仮想リモコンコードを一旦VHRemoに格納した後、プログラム102の動作にあわせて、前記仮想リモコンコードをVHRemoからRemoへコピーする同期化処理を行っている。
なお、仮想マイコン100を制御する内容には、擬似エミュレータのリセットと擬似エミュレータの実行開始とRAM書込みとRAM読込みがあり、それぞれの動作は次の通りである。
[擬似エミュレータをリセット]
擬似エミュレータ110のリセットは、仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたリセットコマンドで行われる。リセットスタートコマンドは、マイコンコントローラ500で図10に示す通り、項目No.11のリセットコマンドをコマンド解析部134に渡す。コマンド解析部134で解析し、リセット122に渡す。リセット122は、擬似エミュレータ110を強制停止させるために、Simデバッグプログラム106およびプログラム102を動作させる擬似エミュレータのスレッドを削除する。
[擬似エミュレータでプログラム実行開始]
Simデバッグプログラム106およびプログラム102の実行は、仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたプログラム実行コマンドで開始される。プログラム実行コマンドは、マイコンコントローラ500から、図10に示す項目No.12のプログラムGO実行コマンドのデータフォーマットで、コマンド解析部134に渡される。コマンド解析部134は、プログラムGO実行コマンドを解析し、実行部120に渡す。実行部120は、擬似エミュレータ110のスレッドを起動することで、Simデバッグプログラム106およびプログラム102を最初から実行させる。
Simデバッグプログラム106およびプログラム102の擬似エミュレータのリセット実行と、擬似エミュレータでのプログラム実行開始を連続して行うことで、実機セットのプログラムと同様にリセットスタート動作が実現出来る。
[仮想マイコン内のRAMに書込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたRAMデータ書込みRAMアドレス指定の場合は、マイコンコントローラ500で図10の項目No.1,2のRAMアドレスライトコマンドをコマンド解析部134で解析し、RAMアドレス指定部132に渡す。RAMアドレス指定部132は、RAM読書き識別部128からRAM書込み部124に渡す。RAM書込み部124は、デバッグRAM108またはユーザRAM104に書込みSimデバッグプログラム106およびプログラム102をRAMに書込んだデータにより動作させる。
また仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたRAMデータ書込みRAMシンボル指定の場合は、マイコンコントローラ500で図10の項目No.5,6のRAMシンボルライトコマンドをコマンド解析部134で解析し、RAMシンボル指定部130に渡す。RAMシンボル指定部130は、図6のシンボル定義ファイルに示すシンボル定義部604とコマンド解析部134から送られてきたRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換してRAM読書き識別部128からRAM書込み部124に渡す。RAM書込み部124は、デバッグRAM108に書込みSimデバッグプログラム106およびプログラム102をリモコン入力により動作させる。
Simデバッグプログラム106およびプログラム102の動作の一例は、図11に示す通り、マイコンコントローラ500内の仮想Remo(S106)からVHRemo(S140)にRAMを書込みSimデバッグプログラム106プログラムがVHRemo処理(S152)にて確認した後、Remo(S160)にリモコンコードを書込むことで、プログラム102は、リモコンコードが入力されたと判断して、Remo(S160)に書込まれたリモコンコードに対応した動作を行う。
[仮想マイコン内のRAMに読込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたRAMデータ読込みRAMアドレス指定の場合は、マイコンコントローラ500で図10の項目No.3,4のRAMアドレスリードコマンドをコマンド解析部134で解析し、RAMアドレス指定部132に渡す。RAMアドレス指定部132からRAM読書き識別部128を経由してRAM読込み部126に渡す。RAM読込み部126は、デバッグRAM108またはユーザRAM104から読込んだRAMデータは、RAM読込み部126からコマンド解析部134を経由してマイコンコントローラ500に返信する。
また、仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたRAMデータ読込みRAMシンボル指定の場合は、マイコンコントローラ500で図10の項目No.7,8のRAMシンボルリードコマンドをコマンド解析部134で解析し、RAMシンボル指定部130に渡す。RAMシンボル指定部130は、図6のシンボル定義ファイルに示すシンボル定義部604とコマンド解析部134から送られてきたRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換してRAM読書き識別部128からRAM読込み部126に渡す。RAM読込み部126は、デバッグRAM108またはユーザRAM104から読込んだRAMデータを、RAM読込み部126からコマンド解析部134を経由してマイコンコントローラ500に返信する。
<実マイコンの制御処理>
図10に示すマイコン制御コマンドをマイコンコントローラ500が発行し、仮想配線12から仮想配線スロット14を経由して、図3に示す実マイコン200内の実デバッガに渡す。実デバッガ212がコマンドを解析し、実エミュレータ210の実行と実エミュレータ210のリセットとデバッグRAM208またはユーザRAM204内のRAM読書きする各コマンドに対応する実マイコン200の制御を行う。
なお、マイコン200の制御にあたり、手動制御と自動制御は同じ動作になる。
[実マイコン内にリモコンコード書込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたリモコンコードは、図10の項目No.5の1バイトシンボルライトコマンドをマイコンコントローラ500が発行し、仮想配線12から仮想配線スロット14を経由して図3に示す実マイコン200内の実デバッガに渡す。図10の項目No.5の1バイトシンボルライトコマンドを実デバッガ212で解析し、PXsymbol222のシンボル定義ファイルとマイコンコントローラ500から送られてきたリモコンコードのRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換し、デバッグRAM208に書込みSim・ICE兼用デバッグプログラム106およびプログラム102をリモコン入力により動作する。
Sim・ICE兼用デバッグプログラム206およびプログラム202の動作は、図11に示す通り、マイコンコントローラ500内のICE_Remo(S104)からデバッグRAM208にRAMデータを書込み、Sim・ICE兼用デバッグプログラム206プログラムがリモコンコード書込みを確認した後、ユーザRAM204にリモコンコードを書込むことで、プログラム202は、リモコンコードが入力されたと判断して、リモコンコードに対応した動作を行う。
なお、実マイコン200を制御する内容には、実エミュレータ210のリセットと実エミュレータ210の実行開始とRAM書込みとRAM読込みがあり、それぞれの動作は次の通りである。
[実エミュレータをリセット]
実エミュレータ210のリセットは、仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたリセットコマンドにより開始される。マイコンコントローラ500は、図10に示す項目No.11のリセットコマンドのデータフォーマットで、リセットコマンドを仮想配線12から仮想配線バススロット経由で実デバッガ212に渡す。実デバッガ212は、リセットコマンドに従って、実エミュレータ210をリセットすることで、Sim・ICE兼用デバッグプログラム106およびプログラム102の動作を強制停止し、擬似エミュレータ110をリセットする。
[実エミュレータでプログラム実行開始]
実エミュレータ210のプログラムGO実行は、仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたプログラム実行コマンドにより開始される。マイコンコントローラ500は、図10に示す項目No.12のプログラムGO実行コマンドのデータフォーマットで、プログラムGO実行コマンドを仮想配線12から仮想配線バススロット14経由で実デバッガ212に渡す。実デバッガ212は、プログラムGO実行コマンドに従って、実エミュレータ210をリセットすることで、Sim・ICE兼用デバッグプログラム106およびプログラム102の動作を起動し、実エミュレータ210の実行を開始する。
Sim・ICE兼用デバッグプログラム206およびプログラム202のリセット実行とプログラム実行を連続して行うことで、リセットスタート動作が実現出来る。
[実マイコン内のRAMに書込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から、RAMデータ書込みRAMアドレス指定が発行された場合は、マイコンコントローラ500は、図10の項目No.1,2のRAMアドレスライトコマンドを仮想配線12から仮想配線バススロット14経由で実デバッガ212に渡す。実デバッガ212は、コマンドを解析し、デバッグRAM208またはユーザRAM204に書込み、Sim・ICE兼用デバッグプログラム206およびプログラム202をRAMに書込んだデータにより動作させる。
また、仮想リモコン300、実リモコン330、または自動検証制御部400から、RAMデータ書込みRAMシンボル指定が発行された場合は、マイコンコントローラ500は、図10の項目No.5,6のRAMシンボルライトコマンドを仮想配線12から仮想配線バススロット14経由で実デバッガ212に渡す。実デバッガ212は、PXsymbol222のシンボル定義ファイルとマイコンコントローラ500から送られてきたRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換し、デバッグRAM208に書込み、Sim・ICE兼用デバッグプログラム106およびプログラム102を書込んだRMデータにより動作する。
Sim・ICE兼用デバッグプログラム206およびプログラム202の動作は、図11に示す通り、マイコンコントローラ500内のICE_Remo(S104)からデバッグRAM208または、ユーザRAM204にRAMデータを書込み、Sim・ICE兼用デバッグプログラム206プログラムまたはプログラム202が書込んだRAMデータを確認した後、ユーザRAM204にリモコンコードを書込むことで、プログラム202は、Sim・ICE兼用デバッグプログラム106およびプログラム102を書込んだRAMデータにより動作する。
[実マイコン内のRAMに読込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から、RAMデータ読込みRAMアドレス指定が発行された場合は、マイコンコントローラ500は、図
10の項目No.3,4のRAMアドレスリードコマンドを仮想配線12から仮想配線バススロット14経由で実デバッガ212に渡す。実デバッガ212は、実エミュレータ210からデバッグRAM208またはユーザRAM204から読込んだRAMデータを仮想配線12からマイコンコントローラ500に返信する。
また、仮想リモコン300、実リモコン330、または自動検証制御部400から、RAMデータ読込みRAMシンボル指定が発行された場合は、マイコンコントローラ500は、図10の項目No.7,8のRAMシンボルリードコマンドを仮想配線12から仮想配線バススロット14経由で実デバッガ212に渡す。実デバッガ212は、PXsymbol222のシンボル定義ファイルとマイコンコントローラ500から送られてきたRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換し、実デバッガに渡す。実デバッガ212は、実エミュレータ210からデバッグRAM208またはユーザRAM204から読込んだRAMデータを仮想配線12からマイコンコントローラ500に返信する。
<各マイコンの出力RAMデータの取得処理>
仮想マイコン100または実マイコン200内のRAMデータの取得・表示等の処理は、マイコンコントローラ500のRAMサンプリング部507内のサンプリング定義501として予め読込みたいRAMを指定したマイコン名とRAM名を複数指定し、定常的なRAMサンプリングを行う周期タイマを設定した後、RAMサンプリング部507にて定常的なRAMデータの取得を行い、定義データで指定された周辺デバイス部30内の仮想LCD320または実LCD310等に表示する。
また、仮想マイコン100または実マイコン200または仮想マイコン100と実マイコン200を同時に動作させて、それぞれのRAMデータを取得し、比較分析部509にてRAMデータ並びに仮想LCD320または実LCD310等に表示した出力画像を記録し分析を行う。
サンプリング定義501は、図12のRAMサンプリング定義データに示す通り、定義可能な設定データは、1つのCPUから読込んだRAMデータを複数の表示デバイスに同じRAMデータを送信する設定およびサンプルリング周期を読込む個々のRAMに設定することも可能になっている。
[定常的な各マイコンの出力RAMデータの取得処理]
仮想マイコン100内のプログラム102が、仮想リモコン300または、実リモコン330から入力したリモコンコードに従って作成したLCD表示データ等のRAMデータを、仮想LCD320または実LCD310の表示デバイスに表示するための処理を、RAMサンプリング部507で行う。
RAMサンプリング部507は、予め読込みたいマイコン名として仮想マイコン102内のユーザRAM104、デバッグRAM108または、実マイコン200内のユーザRAM204、デバッグRAM208を指定する。合わせて、指定したRAMデータを一定周期で読込むため、サンプリングタイマを付ける。
RAMの読込みは、サンプリングタイマのオーバーフロー毎に読込みたいマイコン名とRAM名としてRAMシンボル名またはRAMアドレス値と読込みたいデータサイズを出力データ取得部522に渡す。出力データ取得部522は、RAMデータを取得するため、RAM読込みデータ520からマイコン実行パラメータ作成部514にて読込むマイコンを選択する。マイコン実行パラメータで、マイコンを選択し、仮想マイコン100の場合は、仮想マイコン実行部510にて仮想マイコン102内のRAMを込む。実マイコン
200の場合は、実マイコン実行部512からICE制御部508にて実マイコン内のRAMを読込む。読込んだRAMは、出力データ取得部522からRAMサンプリング部507に渡す。RAMサンプリング部507は、予め読込んだRAMを表示指定した周辺デバイス内の仮想LCD310または実LCD320等の表示デバイスに読込んだRAMデータを仮想配線12経由で転送する。
仮想LCD320に転送する場合は、仮想LCD320で受信したデータを解析してLCD表示する。
実LCD310に転送する場合は、LCDブリッジ318で受信して、LCDブリッジ318内のRS232C316にて実LCD表示可能なデータに変換して、実機セットである実LCD310にRS232C経由にてデータを転送し表示する。
複数の表示デバイスに表示する場合は、表示するRAMデータを仮想LCD320に仮想配線12を経由して転送した後、同じRAMデータを仮想配線12から実LCD310に転送し、それぞれの表示デバイスで表示する。
なお、データ変化直後のデータを取得する方法の一例として、図11に示すユーザRAM104がプログラム102の実行により変化した直後のデータを取得する場合は、予めSimデバッグプログラム106内のVHLCDbuf処理(S156)にてプログラム102がリモコンコードを受付けてLCD表示データを作成した直後のデータを取得する条件のプログラムを組込み、条件一致時にLCDbuf(S164)のRAMデータをVHLCDbuf(S144)のRAMに書込む。これにより、変化直後のRAMデータを取得することができ、VHLCDbuf(S144)のRAMに書込まれたデータを別のデバイスから低速度で読んだ場合でも、変化直後のデータを確実に取得することが可能になる。
また、ユーザRAM104またはデバッグRAM108またはユーザRAM204または、デバッグRAM208の指定したRAMの変化の直後に仮想配線12に接続してある各デバイス内の指定関数を実行する条件をSim用デバッグプログラム106またはSim・ICE兼用デバッグプログラム内に組込む。条件一致時に、マイコンコントローラ520が、仮想配線12に接続してある各デバイス内の指定関数を実行するため、仮想配線バスマネージャ10のハイブリッド入力デバイス機能である成りすましで、指定したデバイス内の指定したコールバック関数を実行することができる。これにより、変化直後に各種のプログラムを実行することが可能となる。
以上のように、プログラムテストを行うデバッグシステムに実マイコン200と仮想マイコン100を同時に起動しテストを行うことで、論理検証またはタイミング検証に合わせて実マイコン100または仮想マイコン200の切換えを瞬時に行える。
また、自動検証時にテスト項目に合わせて実マイコン200と仮想マイコン100を自動で切換えることにより、プログラム機能の視点から作成した論理テストとタイミングテストをテスト内容中に混在させることが可能となり、最適な評価を効率よく行える。
また、仮想マイコンを使ってデバッグ対象プログラムを開発した後、新規に作成した実マイコンを利用した実機デバッグセットで動作テストを行う場合に、仮想マイコンと実マイコンの動作をマイコン周辺の出力デバイスに表示し、合わせて比較したデータを表示することで実マイコン動作と仮想マイコン動作の差異が発生した場合に、効率よく差異を検出することで実マイコンデバッグセットの早期立上げが行える。
(第2実施形態)
以下、本発明の第2実施形態について、図を用いて説明する。
本発明にかかるハイブリッドプログラム検証システムでは、図13に示す通り、仮想マイコン120とマイコンコントローラ520とが単独実行可能なアプリケーションとして実装されている点において、第1実施形態と異なっている。
<第2実施形態の構成>
本発明の第2実施形態にかかるハイブリッドプログラム検証装置は、図13等に示す通り、手動によるプログラム検証と自動によるプログラム検証を行う。
手動によるプログラム検証では、周辺入力デバイスである仮想リモコン300または、実リモコン330等の何れか1つから入力したデータをテスト項目である論理テストまたは、タイミングテストに合わせてマイコンコントローラ520が、論理テストを行う仮想マイコン120または、タイミングテストを行う実マイコン200の何れか1つあるいは複数のマイコンを選択してデータを転送し、選択したマイコンが実行した出力データをマイコンコントローラ520が取得し、画像イメージまたはデータ表示を行う。画像イメージを表示する場合は、周辺デバイス部30内の仮想LCD320または実LCD310等の複数の出力デバイスに表示する。データ表示は、マイコンコントローラ500内の比較分析部509で、多彩な表示形式によりデータ分析および複数マイコンを実行した場合のデータ比較が可能なシステム構成となっている。多彩な表示形式の一例として、図4に示す通り、1つの入力データを2つのマイコンに入力した結果を、入力データと共に、出力RAMデータと表示デバイスの画像を並べて表示することで、2つのCPUの動作に差異がある場合に、検出が容易になる。
自動によるプログラム検証では、自動テストを行うシナリオであるシナリオファイル412のデータを自動検証制御部400が入力し、テスト項目の指示に従って、マイコンコントローラ520が、仮想マイコン120または、実マイコン200の何れか1つあるいは複数のマイコンを選択して、データを転送し、選択したマイコンが実行した出力データをマイコンコントローラ520が取得し自動テストのシナリオファイル412に指定された内容を取得して図5のメッセージに変換したOUTdevice項目の出力デバイスに、画像イメージまたはデータ表示を行う。画像イメージを表示する場合は、周辺デバイス部30内の仮想LCD320または実LCD310等の複数の出力デバイスに表示する。データ表示は、マイコンコントローラ520内の比較分析部509で、多彩な表示形式によりデータ分析および複数マイコンを実行した場合のデータ比較を行った結果をExcel等に各マイコン実行結果の画像イメージおよびデータを自動記録あるいは、過去に記録した検証結果と比較する自動検証が可能なシステム構成となっている。多彩な表示形式の一例として、図4に示す通り、1つの入力データを2つのマイコンに入力した結果を、入力データと共に、出力RAMデータと表示デバイスの画像を並べて表示することで、2つのCPUの動作に差異がある場合に、容易に検出可能になる。
<シンボル定義>
VC++を実行するVCコンパイラ600でコンパイルした後、出力されるRAM変数のアドレス番地等のシンボル情報ファイルを元にシンボル変換部602で擬似デバッガ112が利用可能なC言語プログラムのシンボル定義部604作成し、仮想マイコン120内のプログラムソースファイルを一緒にコンパイルする。VC++が出力するシンボル情報からシンボル定義部604に変換する内容の一例は、図6に示す通り。
<各デバイスを自動的に仮想配線接続する初期化処理>
図13に示す単独実行可能な仮想リモコン300を起動すると、仮想配線マネージャ10が既に起動していなければ、自動的に起動し、仮想リモコン300内の仮想配線スロッ
ト14と仮想配線マネージャ10が自動配線され仮想配線12ができる。
次にRS232C通信可能な実機である実リモコン330を起動した後、単独実行可能なリモコンブリッジ334を起動し、リモコンブリッジ334内のRS232Cブリッジ332と実リモコン330をRS232Cにて接続すると同時に、リモコンブリッジ334内の仮想配線スロット14と仮想配線マネージャ10が自動配線される。
次に、単独実行可能な仮想LCD320を起動し、仮想LCD320内の仮想配線スロット14と仮想配線マネージャ10が自動配線される。また、仮想LCD320は、マイコンコントローラ520からのLCD表示データを受信する許可を行う。
次にRS232C通信可能な実機である実LCD320を起動した後、単独実行可能なLCDブリッジ318を起動し、LCDブリッジ318内のRS232Cブリッジ316と実LCD310内のRS232Cデバドラ314とRS232Cで接続し、LCDブリッジ318内の仮想配線スロット14と仮想配線マネージャ10が自動配線される。これで、周辺デバイス部30の入出力デバイスを仮想配線12へ接続を完了する。
次に、実マイコン200内のプログラム202を実行可能な実機である実エミュレータ210を起動し、実マイコン内の単独実行可能な実デバッガ212を起動し、実エミュレータ210と実デバッガ212を接続する。実デバッガ212は、仮想配線スロット14経由で仮想バスマネージャ10と自動配線する。また、実デバッガは、マイコンコントローラ520から実デバッガ212を制御するコマンドの受信を許可する。また、単独実行可能な仮想マイコン120を起動し、仮想マイコン120内のプログラム102を実行可能な擬似エミュレータ110を動作させる。仮想マイコン120内の仮想配線スロット14は、仮想配線マネージャ10と自動配線される。これで、2つのマイコンエンジンの起動を完了する。
次に、単独実行可能なマイコンコントローラ520が仮想配線12経由で仮想リモコン300の受信を許可する。実リモコン330がマイコンコントローラ一520にリモコンコードを送信する場合は、仮想リモコン300にハイブリッド入力デバイス機能である成りすましにて送信する。
次に、単独実行可能な自動検証制御部400を起動し、自動検証制御部400内の仮想配線スロット14を仮想配線バスマネージャ10に自動配線する。
以上により、実リモコン330と仮想リモコン300と実LCD310と仮想LCD320と実マイコン200と仮想マイコン120とマイコンコントローラ520と自動検証制御部400は、仮想配線マネージャ10により仮想配線12で接続し、ハイブリッドプログラム検証システムが起動したことになる。
<手動モード選択してマイコンを実行>
各マイコンを実行する前に、図14に示すマイコンコントローラ520内の実行するマイコンを自動切換えと手動切換えが可能なCPU切換え515で、手動モードに切換えて仮想マイコン120または実マイコン200の何れか1つまたは複数のマイコンを選択可能な設定にする。
手動モードを選択後、周辺デバイス部30内の入力デバイスである実リモコン330または仮想リモコン300がクリックされたキーコードデータと、各マイコンを制御するため、図5に示すメッセージ一覧表の項目No.1から5の手動操作によるデータを仮想配線12からマイコンコントローラ520に渡す。マイコンコントローラ520は、手動モ
ードで、図5の選択CPU項目に指示されたマイコンとして仮想マイコン120または実マイコン200の何れか1つまたは複数のマイコンにキーコードを転送する。
キーコードに従って、選択したマイコンを実行し、実行結果のLCD表示データ等をマイコンコントローラ520が取得し、画像イメージの表示とデータ表示を行う。
画像イメージの表示は、図5のOUTdevice項目に指示された出力デバイスに対して、マイコンコントローラ520内の出力分配部536が仮想LCD320または、実LCD310または、仮想LCD320と実LCD310の両方にLCD表示データを転送しLCD表示する。表示デバイスに表示データを転送する場合、CPU切換え515でハイブリッド出力デバイス指定にした場合は、仮想配線マネージャ10の同報通信機能を使って仮想LCD320だけに転送し、図2の仮想配線マネージャ10内の通信定義データa15および通信定義データb17に設定データに従って、仮想LCD320または、実LCD310または、仮想LCD320と実LCD310の両方にLCD表示データを転送しLCD表示する。
データ表示は、16進数ダンプ表示、10進数ダンプ表示、テキスト表示、バイト型表示、ワード型表示、ロング型表示、構造体表示等の表示を行い、複数のマイコンデータ比較等のデータ分析を行う。
<自動モード選択してマイコンを実行>
各マイコンを実行する前に、図14に示すマイコンコントローラ520内の実行するマイコンを自動切換えと手動切換えが可能なCPU切換え515で、自動モードに切換えて仮想マイコン120または実マイコン200の何れか1つまたは複数のマイコンを選択可能な設定にする。
自動モードは、図8に示すシナリオファイル412からテスト項目ごとに検証するマイコンおよびリモコンコードを取得し、図5に示すメッセージ一覧表の項目No.6〜11の自動操作によるデータを仮想リモコン300にハイブリッド入力デバイス機能である成りすましで、仮想配線12からマイコンコントローラ520に渡す。
マイコンコントローラ520は、自動モードで、図5の選択CPU項目に指定されたマイコンとして仮想マイコン120または実マイコン200の何れか1つまたは複数のマイコンにキーコードを転送する。
キーコードに従って、選択したマイコンを実行するが、手動との違いは、自動で検証するために、プログラム102またはプログラム202に確実にキーを渡し、キー処理の完了を自動で判断し、プログラム102またはプログラム202の実行結果を記録するために、図8に示すリセットスタート発行または、シーケンス発行または、イベント発行の完了を確認した後、次のシーケンスを実行するために同期通信を利用して実行する。
自動で検証するテストの一例として図23に示すシナリオファイル412の状態遷移表を使った検証の場合は、自動検証制御部400がシナリオファイル412のシーケンスイベントに定義したマイコンを選択するデバイス選択データを取得する。
次に、プログラム102またはプログラム202を検証する状態にするために、シーケンスデータを取得し状態遷移表の中のテストしたい状態にする。シーケンスデータとしてリセットスタートを取得した場合は、自動検証制御部400からデバイス選択データとリセットをマイコンコントローラ520に同期送信する。マイコンコントローラ520は、デバイス選択データに従って、仮想マイコン120または実マイコン200がリセット完了したことを確認し、次にマイコンコントローラ520は、プログラムGO実行を仮想マイコン120または実マイコン200に転送し、プログラムGO実行したことを確認し、これによりリセットスタート完了し、マイコンコントローラ520を経由して自動検証制御部400に返信する。
リセットスタートの完了を確認した後、シナリオファイル412から取得したシーケンスがリモコンキーの場合は、シーケンスキーを実行するため、自動検証制御部400からマイコンコントローラ520にデバイス選択データとシーケンスキーを同期送信する。マイコンコントローラ520は、仮想マイコン120または実マイコン200がキー処理を完了したことを確認し、マイコンコントローラ520から自動検証制御部400に返信する。
シーケンス動作により、プログラム102またはプログラム202が目的の状態になったと想定して、シナリオファイル412から取得したイベントとなるリモコンキーでイベント実行するため、自動検証制御部400からマイコンコントローラ520にデバイス選択データとイベントキーを同期送信する。マイコンコントローラは、仮想マイコン120または実マイコン200がイベントキー処理を完了したことを確認し、仮想マイコン120または実マイコン200が実行した結果のLCD表示データを取得し、マイコンコントローラ520にLCD表示データを返信し、画像イメージの表示とデータの表示を行う。
画像イメージの表示は、図5のOUTdevice項目に指示された出力デバイスに対して、マイコンコントローラ520内の出力分配部536が仮想LCD320または、実LCD310または、仮想LCD320と実LCD310の両方にLCD表示データを転送しLCD表示する。
画像イメージの表示は、図5のOUTdevice項目に指示された出力デバイスに対して、マイコンコントローラ520内の出力分配部536が仮想LCD320または、実LCD310または、仮想LCD320と実LCD310の両方にLCD表示データを転送しLCD表示する。表示デバイスに表示データを転送する場合、CPU切換え515でハイブリッド出力デバイス指定にした場合は、仮想配線マネージャ10の同報通信機能を使って仮想LCD320だけに転送し、図2の仮想配線マネージャ10内の通信定義データa15および通信定義データb17に設定データに従って、仮想LCD320または、実LCD310または、仮想LCD320と実LCD310の両方にLCD表示データを転送しLCD表示する。
データ表示は、比較分析部509で16進数ダンプ表示、10進数ダンプ表示、テキスト表示、バイト型表示、ワード型表示、ロング型表示、構造体表示等の表示および複数のマイコンデータ比較表示等をすることでデータ分析を行う。
マイコンコントローラ520が画像イメージの表示とデータの表示を完了すると、自動検証制御部400にLCD表示データを返信し、LCD表示データを検証結果ファイル410(例えばExcelファイル)に記録する。合わせて、仮想LCD320または、実LCD310の画像を検証結果ファイル(Excelファイル)に記録する。以下、それらの処理の詳細についてそれぞれ説明する。
(1)仮想LCD320の表示画像の記録
仮想LCD320に表示した画像を検証結果ファイル410(例えばExcelファイル)に記録する場合は、図20に示すシナリオ読込み部1444が、図28に示すシナリオファイル412のマルチ画面記録引数412bを取得し、マルチ画面記録とシングル画像記録による画像記録を行う。なお、図28に示すシナリオファイル412は、シーケンスイベント412a、マルチ画面記録引数412b、状態412c、テストイベント412d、アクション412eから構成されている。シーケンスイベント412aは、テストする状態へ移行させるシーケンスイベントの定義である。マルチ画面記録引数412bは、マルチ画面を記録する条件を記述したものであり、記録枚数制限値または記録時間制限値あるいは記録時間間隔として記述される。状態412cは、テスト状態に関する条件を記述する。テストイベント412dは、テスト状態にした後、テストイベントを発行して実行結果を確認するための定義である。アクション412eには、テストイベントを発行した時に変化した状態を記録する。
<シングル画面記録>
シングル画像記録の場合は、シナリオ読込み部1444で読込んだマルチ画面記録引数412bをテスト部1438に渡し、シングル画像記録部1436を通して、仮想LCD320に対して画像を転送する。画像転送には、2通りある。仮想LCD320と自動検証部40が同じパソコンで実行されるときは、クリップボード経由で画像を転送する(以下、「パソコン内転送」と称する)。一方、仮想LCD320と自動検証部40が別個のパソコンで起動されているときは、仮想LCD320を起動したパソコンから自動検証部40を起動しているパソコンに画像データを転送して自動検証部40に仮想ウィンドウを作成し、その仮想ウィンドウに画像データを表示させ、クリップボードにコピーすることができる(以下、「パソコン間転送」と称する)。以下、それぞれの場合のシングル画面記録動作について説明する。
[パソコン内転送]
画像の転送の指示を受けたときに、パソコン内転送の指示の時は、クリップボードに仮想LCD表示画像をキャプチャ指示する。仮想LCD320は、図21に示す画像コピー部1302で、仮想LCD表示画像をクリップボードにキャプチャする。キャプチャが完了すると、図20に示すダンプデータ取得部1406からキャプチャ画像記録部1414を経由して検証結果ファイル410に記録する。
[パソコン間転送]
画像の転送の指示を受けたときに、パソコン間転送の指示の時は、予め自動検証制御部400内に仮想ウィンドウを作成するために、仮想LCD320内の画像サイズAT連絡部1310から、仮想ウィンドウサイズを、仮想ウィンドウ作成部1402に転送する。次に、画像データ転送部1306から画像データ取得部1404に画像を転送して、仮想ウィンドウ描画部1408で仮想表示した後、仮想表示画像を仮想ウィンドウキャプチャ1410でクリップボードにコピーし、キャプチャ画像記録部1414を経由して検証結果ファイル410に記録する。
<マルチ画面記録>
マルチ画像記録の場合は、シナリオ読込み部1444で読込んだマルチ画面記録引数412bをテスト部1438に渡し、マルチ画像記録部1434で記録する際の枚数制限と時間制限データを解析する。記録枚数制限値は枚数カウンタ1432へ、時間制限値は時間カウンタ1430へそれぞれ渡される。仮想LCD320に対して、マルチ画像記録開始の指示を、マルチ画像記録部1434から通知する。
仮想LCD320は、マルチ画像記録開始の指示を受けると、画像の変化を検出するために、1stデータ比較部1320で最初の画像データを確保すると同時に、最初の画像を自動検証制御部400に転送する。
画像転送には、2通りある。仮想LCD320と自動検証部40が同じパソコンで実行されるときは、クリップボード経由で画像を転送する(以下、「パソコン内転送」と称する)。一方、仮想LCD320と自動検証部40が別個のパソコンで起動されているときは、仮想LCD320を起動したパソコンから自動検証部40を起動しているパソコンに画像データを転送して自動検証部40に仮想ウィンドウを作成し、その仮想ウィンドウに画像データを表示させ、クリップボードにコピーすることができる(以下、「パソコン間転送」と称する)。以下、それぞれの場合のマルチ画面記録動作について説明する。
[パソコン内転送]
1枚目の画像の転送指示を受けたときに、パソコン内転送の指示の時は、クリップボードに仮想LCD表示画像をキャプチャするよう指示する。仮想LCD320は、図21に示す画像コピー部1302で仮想LCD表示画像をクリップボードにキャプチャする。キャプチャが完了すると、図20に示すダンプデータ取得部1406からキャプチャ画像記録部1414を経由して、キャプチャした仮想LCD表示画像を検証結果ファイル410に記録する。
[パソコン間転送]
1枚目の画像の転送指示を受けたときに、パソコン間転送の指示の時は、予め自動検証制御部400内に仮想ウィンドウを作成するために、仮想LCD320内の画像サイズAT連絡部1310から仮想ウィンドウ作成1402へ、仮想ウィンドウサイズを転送する。次に、画像データ転送部1306から画像データ取得部1404へ画像データを転送して、仮想ウィンドウ描画部1408で仮想表示した後、その仮想表示画像を仮想ウィンドウキャプチャ1410でクリップボードにコピーし、キャプチャ画像記録部1414を経由して検証結果ファイル410に記録する。また、2枚目以降の画像記録については、仮想LCDに描画するタイミングで、前回の画像データとの比較をデータ比較部1316で行い、違いがあれば自動検証制御部400に画像を転送する。
[2枚目画像のパソコン内転送]
2枚目の画像の転送指示を受けたときに、パソコン内転送の指示の時は、ダンプデータ転送部1308から画像コピー部1320を経由して、さらに、図20に示すダンプデータ取得部1406からキャプチャ画像記録部1414を経由して、検証結果ファイル410に画像データを記録する。
[2枚目画像のパソコン間転送]
2枚目の画像の転送指示を受けたときに、パソコン間転送の指示の時は、画像データ転送部1306から画像データ取得部1404に画像を転送して、仮想ウィンドウ描画部1408で仮想表示した後、仮想表示画像を仮想ウィンドウキャプチャ1410でクリップボードにコピーし、キャプチャ画像記録部1414を経由して検証結果ファイル410に記録する。
キャプチャ画像記録部1414は、マルチ画像記録の時は、記録が完了する度に、その旨をマルチ画像記録部1434に渡す。
マルチ画像記録部1434は、枚数制限の時は、枚数カウンタ1432により記録画像の枚数をカウントし、カウント値が、枚数カウンタ1432に予め渡されている枚数制限値になると、仮想LCD320に記録終了を指示する。これにより、自動検証制御部400は、次のテストに移行する。
一方、マルチ画像記録部1434は、時間制限の時は、時間カウンタ1430により記録時間を計測し、カウント値が、時間カウンタ1430に予め渡されている記録制限値になると、仮想LCD320に記録終了を指示する。これにより、自動検証400は、次のテストに移行する。
さらに、1stデータ比較部1320が、2枚目以降の記録画像が最初の画像と同じであるかの比較を行い、同じであれば、仮想LCD表示内容が点滅等の繰返し表示であるため、図20の画像記録終了部1412からマルチ画像記録部1434に記録終了を通知し、自動検証制御部400は、次のテストに移行する。
なお、マルチ画像記録の変化を、データの代わりに、仮想LCD320内の信号の変化を検出する1st信号比較部1318を利用して検出することもできる。
(2)実LCDの表示画像の記録
実LCD310に表示した画像を検証結果ファイル410(例えばExcelファイル)に記録する場合は、図20に示すシナリオ読込み部1444が、図28に示すシナリオファイル412のマルチ画面記録引数412bを取得し、マルチ画面記録とシングル画像記録による画像記録を行う。
<シングル画面記録>
シングル画像記録の場合は、シナリオ読込み部1444で読込んだマルチ画面記録引数412bをテスト部1438に渡し、シングル画像記録部1436を通して、実LCD310の画像をPCカメラ1326(図22参照)で撮影し、USBケーブル等でパソコンと接続し、パソコン上のカメラモニタ1322で表示した画像を転送する。画像転送には、2通りある。実LCD310と自動検証部40が同じパソコンで実行されるときは、クリップボード経由で画像を転送する(以下、「パソコン内転送」と称する)。一方、実LCD310と自動検証部40が別個のパソコンで起動されているときは、実LCD310を起動したパソコンから自動検証部40を起動しているパソコンに画像データを転送して自動検証部40に仮想ウィンドウを作成し、その仮想ウィンドウに画像データを表示させ、クリップボードにコピーすることができる(以下、「パソコン間転送」と称する)。以下、それぞれの場合のシングル画面記録動作について説明する。
[パソコン内転送]
画像の転送の指示を受けたときに、パソコン内転送の指示の時は、画像コピー1328からカメラモニタ1322に表示した画像をクリップボードにキャプチャするよう指示する。キャプチャが完了すると、図20に示すダンプデータ取得部1406からキャプチャ画像記録部1414を経由して、検証結果ファイル410に画像を記録する。
[パソコン間転送]
画像の転送の指示を受けたときに、パソコン間転送の指示の時は、予め自動検証制御部400内に仮想ウィンドウを作成するために、実LCD310の画像サイズを画像サイズAT連絡部1310から仮想ウィンドウ作成1402へ、仮想ウィンドウサイズを転送する。次に、画像データ転送部1306から画像データ取得部1404に画像を転送して、仮想ウィンドウ描画1408で仮想表示した後、仮想表示画像を仮想ウィンドウキャプチャ1410でクリップボードにコピーし、キャプチャ画像記録部1414を経由して検証結果ファイル410に記録する。
<マルチ画面記録>
マルチ画像記録の場合は、シナリオ読込み部1444で読込んだマルチ画面記録引数412bをテスト部1438に渡し、マルチ画像記録部1434で記録する枚数制限と時間制限データを解析する。記録枚数制限値は枚数カウンタ1432に渡し、時間制限値は時間カウンタ1430へ渡される。RS232Cブリッジ316に対して、マルチ画像記録開始の指示を、マルチ画像記録1434から通知する。RS232Cブリッジ316は、マルチ画像記録開始の指示を受けると、画像の変化を検出するために、1stデータ比較部1320で最初の画像データを確保すると同時に、最初の画像を自動検証制御部400に転送する。
画像転送には、2通りある。実LCD310と自動検証部40が同じパソコンで実行されるときは、クリップボード経由で画像を転送する(以下、「パソコン内転送」と称する)。一方、実LCD310と自動検証部40が別個のパソコンで起動されているときは、実LCD310を起動したパソコンから自動検証部40を起動しているパソコンに画像データを転送して自動検証部40に仮想ウィンドウを作成し、その仮想ウィンドウに画像データを表示させ、クリップボードにコピーすることができる(以下、「パソコン間転送」と称する)。以下、それぞれの場合のシングル画面記録動作について説明する。
[パソコン内転送]
画像の転送の指示を受けたときに、パソコン内転送の指示の時は、画像コピー部1328から、カメラモニタ1322に表示した画像をクリップボードにキャプチャ指示する。キャプチャが完了すると、図20に示すダンプデータ取得部1406からキャプチャ画像記録部1414を経由して検証結果ファイル410に記録する。
[パソコン間転送]
画像の転送の指示を受けたときに、パソコン間転送の指示の時は、予め自動検証制御部400内に仮想ウィンドウを作成するために、実LCD310の画像サイズを画像サイズAT連絡部1310から仮想ウィンドウサイズを仮想ウィンドウ作成1402に転送する。次に、画像データ転送部1306から画像データ取得1404部に画像を転送して、仮想ウィンドウ描画部1408で仮想表示した後、仮想表示画像を仮想ウィンドウキャプチャ1410でクリップボードにコピーし、キャプチャ画像記録部1414を経由して検証結果ファイル410に記録する。
また、2枚目以降の画像記録については、実LCD310に描画するタイミングで、前回の画像データとの比較をデータ比較部1316で行い、違いがあれば画像を自動検証制御部400に転送する。
[2枚目画像のパソコン内転送]
2枚目の画像の転送指示を受けたときに、パソコン内転送の指示の時は、ダンプデータ転送部1308から画像コピー部1328を経由して、図20に示すダンプデータ取得部1406からキャプチャ画像記録部1414を経由して検証結果ファイル410に記録する。
[2枚目画像のパソコン間転送]
2枚目の画像の転送指示を受けたときに、パソコン間転送の指示の時は、画像データ転送部1306から画像データ取得部1404に転送して、仮想ウィンドウ描画部1408で仮想表示した後、仮想表示画像を仮想ウィンドウキャプチャ1410でクリップボードにコピーし、キャプチャ画像記録部1414を経由して検証結果ファイル410に記録する。
キャプチャ画像記録部1414は、マルチ画像記録の時は、記録が終了するたびに、その旨をマルチ画像記録部1434に通知する。
マルチ画像記録部1434は、枚数制限の時は、枚数カウンタ1432により記録画像の枚数をカウントし、カウント値が、枚数カウンタ1432に予め渡されている枚数制限値になると、RS232Cブリッジ316に記録終了を指示する。これにより、自動検証制御部400は、次のテストに移行する。
一方、マルチ画像記録部1434は、時間制限の時は、時間カウンタ1430により記録時間を計測し、カウント値が、時間カウンタ1430に予め渡されている記録制限値になると、RS232Cブリッジ316に記録終了を指示する。これにより、自動検証400は、次のテストに移行する。
さらに、1stデータ比較部1320が、2枚目以降の記録画像が最初の画像と同じであるかの比較を行い、同じであれば、実LCD表示内容が点滅等の繰返し表示であるため、図20の画像記録終了部1412からマルチ画像記録部1434に記録終了を通知し、自動検証制御部400は、次のテストに移行する。
なお、マルチ画像記録の変化を、データの代わりに、RS232Cブリッジ316内の信号の変化を検出する1st信号比較部1318を利用して検出することもできる。
<マルチ画面記録の動作フロー>
[自動検証制御部から表示デバイスへの指示]
図25に示すとおり、自動検証制御部400は、シナリオ読込み部1444がシナリオファイル412から読込んだマルチ画面記録引数412bの値により、SendDisp()(S800)でマルチ画像キャプチャ指示(S804)とシングル画像キャプチャ指示(S806)により、仮想LCD320または実LCD310に対して、図26に示す「自動検証デバイス → 出力表示デバイス送信コマンド」を示すメッセージを、仮想配線12経由で送信する。また、マルチ画面記録のときは、マルチ画像記録指示(S808)で仮想LCD320または実LCD310に対して、マルチ画面記録指示を送信する。
[表示デバイスの処理と自動検証への通知]
図23に示すとおり、仮想LCD320または実LCD310の処理は、LCD_Disp()(S600)で、自動検証制御部400とマイコンコントローラ520から受信したメッセージにより振り分けて動作する。
iMsg1LCD(S602)では、通常処理を行う。具体的には、信号変化(S606)でデータ変化と信号変化を区別し、それぞれの処理を行う。次に、画面キャプチャの処理中であった場合は、表示変化させる画面キャプチャが正常に出来ないために、fKeepフラッグをS601で判定し、fKeepフラッグが立っていなければ、LCD表示要求(S612)を行う。なお、ここではまだ表示しない。次に、2枚目以降の画面が1st画面と同じか否かをS614で判断し、同じであれば、自動検証制御部400に対してマルチ画面記録の終了指示を行う。
iMsg120LCD(S622)では、マルチ画面記録時の初期設定を行う。
iMsg110LCD(S628)では、最初の画面記録処理の場合は、1st画像記録初期設定(S632)で初期化の処理を行う。合わせて自動検証制御部400で画像を仮想表示させるために、仮想表示のウィンドウサイズを通知する。
iMsg111LCD(S638)では、自動検証制御部400にクリップボード経由で画像データを転送するか、画像データを仮想配線12経由で転送し、自動検証400の仮想ウィンドウに表示するかの判断をS640で行いそれぞれの処理を実行する。
[表示デバイスから自動検証デバイスに通知]
自動検証制御部400が仮想LCD320または実LCD310から受信したメッセージに従って実行する処理は、図24に示すとおり、LCD_Disp()(S700)で行う。
iMsg113AT(S702)は、自動検証400内に仮想ウィンドウを作成し、仮想LCD320または実LCD310から受信した表示データを表示するウィンドウを作成する。
iMsg113AT(S706)は、仮想LCD320または実LCD310から画像をクリップボード経由で送ってきたか、画像データを仮想配線12経由で送ってきたか判断して、仮想配線12経由で送ってきた場合は、S712で仮想ウィンドウに画像を描画し、キャプチャ(S714)でクリップボードにコピーする。次に、クリップボードにコピーした画像を検証結果ファイル410に記録し、合わせて画像記録時の条件として、時間を記録する画像タイムスタンプ記録(S718)を行い、画像記録制限値になれば停止する処理を行う。
iMsg112AT(S706)は、マルチ画像の記録終了の処理になる。記録を終了する処理には、画像記録時間の制限と画像記録数の制限と繰り返し表示の場合の3通りがあり、どの条件で終了したかを記録するために、画像条件記録(S728)で処理する。
仮想LCD320と実LCD310の両方の画像を記録する場合は、仮想LCD320に表示した画像を自動検証制御部400がクリップボードにキャプチャ指示し、自動検証制御部400がクリップボードの画像を検証結果ファイル410に記録した後、実LCD310に表示した画像をPCカメラで撮影しUSBケーブル等でパソコンと接続し、パソコン上に表示した画像を自動検証制御部400がクリップボードにキャプチャ指示し、自動検証制御部400がクリップボードの画像を検証結果ファイル410に記録する。また、仮想LCD320と実LCD310の画像を複数枚記録するマルチ画像記録を行うこともできる。
図29に、マルチ画像記録を行った結果として得られる検証結果ファイル410の内容の一例を示す。図29において、Aは、新規記録を実行したときのマルチ画面および画面のダンプデータである。なお、画面変化がないモードの場合は、1枚の画像のみが記録される。Bは比較検証時の実行モードである。Cは比較検証を実行したときのマルチ画面および画面のダンプデータである。
<仮想リモコンからマイコンコントローラへキーコードを転送する>
仮想リモコン300のボタンをクリックすると、キーコードを図5に示す項目No.1のデータフォーマットでマイコンコントローラ520に仮想リモコン300内の仮想配線スロット14から非同期送信する。送信したキーコードは仮想配線12を経由してマイコンコントローラ520内の仮想配線スロット14にて受信する。
<実リモコンからマイコンコントローラへキーコードを転送する>
実機の実リモコン330のボタンをクリックすると、リモコンコードをRS232C経由で送信し、リモコンブリッジ334内のRS232Cブリッジ332で受信する。RS232Cブリッジ332は、受信したキーコードを仮想リモコン300と同じ図5に示す項目No.1のデータフォーマットで、仮想リモコン300にハイブリッド入力デバイス機能である成りすまして、マイコンコントローラ520にリモコンブリッジ334内の仮想配線スロット14から非同期送信する。送信したキーコードは仮想配線12を経由してマイコンコントローラ520内の仮想配線スロット14で仮想リモコンから受信したことになる。
<自動検証からマイコンコントローラへキーコードを転送する>
自動検証制御部400内のシナリオ制御部404が、シナリオファイル412から取得するキーには、マイコンのリセットスタートとシーケンスキーとイベントキーがある。
リセットスタートは、擬似エミュレータ110または、実エミュレータ210をリセットスタートすることで、プログラム102またはプログラム202の実行を中断し、初期処理から実行させるため、デバイス選択部406で図5の項目No.4のデータフォーマットに変換する。
シーケンスキーは、状態遷移表の中のテストする状態にキー操作をするため、デバイス選択部406で図5の項目No.7または項目No.10のデータフォーマットに変換する。
イベントキーは、テストする状態になった時点で、キーを発行し、状態の変化を見ることで、キーの有効・無効および状態の変化を確認するため、デバイス選択部406で図5の項目No.8または項目No.11のデータフォーマットに変換する。
リセットスタートとシーケンスキーとイベントキーのそれぞれに変換したデータを自動検証制御部400内の仮想配線スロット14から仮想配線12を経由してマイコンコントローラ520内の仮想配線スロット14へ同期送信する。
<手動操作でマイコンコントローラが仮想マイコンを制御>
仮想リモコン300または、実リモコン330から図5に示すメッセージ一覧表の項目No.1のデータをマイコンコントローラ520内の仮想配線スロット14で受信する。受信したデータは、図14に示すマイコンコントローラ520内の並列実効532で図5
の選択CPU項目に示すマイコンの選択に従って、リモコンキーを書込むマイコンを選択する。図5の選択CPU項目に複数のマイコンを設定した場合は、設定したマイコン順に順次実行を繰返す。
マイコンを選択した後、図5の操作項目の自動または手動の指定を手動と確認した後、自動・手動指示部530にて選択したマイコンに対して手動実行を行う。
[手動操作でマイコンコントローラが仮想マイコンへリモコンキー転送]
リモコンコードを送信するパラメータを図9に示す項目No.12のリモコンコードのRAMシンボルを指定して書込みするラッパー関数を作成するマイコンパラメータ作成部514からマイコン共通実行部544で図10に示す項目No.5のコマンドに変換して仮想配線12を経由して仮想マイコン120にリモコンコードを転送する。
なお、手動実行する内容にはリセットスタートとRAM書込みとRAM読込みがあり、それぞれの動作は次の通りである。
[手動操作でマイコンコントローラが仮想マイコンをリセットスタート]
手動実行する内容が、リセットスターの場合は、手動処理部526からマイコン制御指示部516からマイコン実行パラメータ作成部514で図9に示す項目No.2のマイコンリセット関数を作成し、マイコン共通実行部544で図10に示す項目No.11のコマンドに変換して仮想配線12を経由して仮想マイコン120をリセットした後、続いて、図9に示す項目No.1のマイコン実行するラッパー関数を作成し、マイコン共通実行部544で図10に示す項目No.12のコマンドに変換して仮想配線12を経由して仮想マイコン120を実行することで、仮想マイコンのリセットスタートを行う。
[手動操作でマイコンコントローラが仮想マイコンにRAM書込み]
手動実行によるRAMデータの書込みの場合は、RAM書込み518からマイコン実行パラメータ作成部514で図9に示す項目No.10から項目No.15の関数を作成し、マイコン共通実行部544で図10に示す項目No.1,3,5,6のコマンドに変換して仮想配線12を経由して仮想マイコン120にRAM書込みを行う。
[手動操作でマイコンコントローラが仮想マイコンにRAM読込み]
手動実行によるRAMデータの読込みの場合は、出力データ取得部522からRAM読込み520を経由してマイコン実行パラメータ作成部514で図9に示す項目No.4〜9の関数を使ってマイコン共通実行部544から仮想配線12を経由で仮想マイコン120からRAM読込みを行う。読込んだデータは、出力データ取得部522で取得したRAMを比較分析部509にて表示させると同時に、出力分配部536からRAM読込みを要求したデバイスにRAMデータをデバイスへ仮想配線12経由で返信する。
比較分析部509にて表示する一例として、図4に示す通り1つの入力データを2つのマイコンに入力した結果を、入力データと共に、出力RAMデータと表示デバイスの画像を並べて表示することで、2つのCPUの動作に差異がある場合に、容易に検出可能になる。
<手動操作でマイコンコントローラが実マイコンを制御>
仮想リモコン300または、実リモコン330から図5に示すメッセージ一覧表の項目No.1のデータをマイコンコントローラ520内の仮想配線スロット14で受信する。受信したデータは、図14に示すマイコンコントローラ520内の並列実効532で図5の選択CPU項目に示すマイコンの選択に従って、リモコンキーを書込むマイコンを選択する。図5の選択CPU項目に複数のマイコンを設定した場合は、設定したマイコン順に
順次実行を繰返す。
マイコンを選択した後、図5の操作項目の自動または手動の指定を手動と確認した後、自動・手動指示部530にて選択したマイコンに対して手動実行を行う。
[手動操作でマイコンコントローラが実マイコンへリモコンキー転送]
手動実行によるリモコンコードを送信する場合は、図9に示す項目No.12に示す「RAMシンボルから1Byte書込み」のラッパー関数を使って、ユーザRAM204内のリモコンコード格納RAMシンボル名を指定してリモコンコードを書込むため、マイコン実行パラメータ作成部514とマイコン共通実行部544から仮想配線12を経由して、図10に示す項目No.5のコマンドに変換して実マイコン200にリモコンコードを同期送信し、マイコン共通実行部544が同期返信を受けることで、実マイコン200がリモコンコード受付を完了する。
なお、手動実行する内容には、リセットスタートとRAM書込みとRAM読込みがあり、それぞれの動作は次の通りである。
[手動操作でマイコンコントローラが実マイコンをリセットスタート]
手動実行によるリセットスタートの場合は、手動処理部526からマイコン制御指示部516を経由して送信するパラメータは、図9に示す項目No.2に示す「マイコンリセット」ラッパー関数を使って、マイコン共通実行部544でラッパー関数を図10に示す項目No.11のリセットコマンドに変換して仮想配線12を経由で実マイコン200をリセットさせるために同期送信する。マイコン共通実行部544が同期返信を受けることでリセット完了を確認後、プログラム実行するために、手動処理部526からマイコン制御指示部516を経由して送信するパラメータは、図9に示す項目No.1に示す「マイコン実行」ラッパー関数を使って、マイコン共通実行部544でラッパー関数を図10に示す項目No.12のプログラムGOコマンドに変換し、実マイコン200を実行させるために同期送信する。マイコン共通実行部544が同期返信を受けることでプログラムスタートを確認し、リセットスタートを完了する。
[手動操作でマイコンコントローラが実マイコンにRAM書込み]
手動実行によるRAM書込みの場合は、手動処理部526およびRAM書込みデータ518から、RAM書込みコマンドをマイコン実行パラメータ作成部514でRAM書込み要求に合わせて、図9に示す項目No.10〜15に示すRAM書込みのラッパー関数を使って、マイコン共通実行部544でラッパー関数を図10に示す項目No.1,2,5,6のRAM書込みコマンドに変換して実マイコン200がRAM書込みを行うため同期送信する。マイコン共通実行部544が同期返信を受けることでRAM書込みの完了を確認する。また出力RAMの比較し分析を行うために、実マイコンに書込んだRAMデータによる実行結果の出力RAMの変化を見るために、書込みするデータを出力データ取得部522に渡し、実マイコンから読込んだデータをRAMサンプリング部507で表示する。
[手動操作でマイコンコントローラが実マイコンにRAM読込み]
手動実行によるRAM読込みの場合は、手動処理部526からRAM読込みデータ520からRAM書込みコマンドをマイコン実行パラメータ作成部514でRAM読込み要求に合わせて、図9に示す項目No.4から項目No.9に示すRAM読込みのラッパー関数を作成し、マイコン共通実行部544でラッパー関数を図10に示す項目No.3,4,7,8のRAM読込みコマンドに変換して実マイコン200がRAM読込みを行うため同期送信する。マイコン共通実行部544が同期返信を受けることでRAM読込み、出力データ取得部522で取得したRAMを比較分析部509にて表示させると同時に、出力
分配部536からRAM読込みを要求したデバイスにRAMデータをデバイスへ仮想配線12経由で返信する。比較分析部509にて表示する一例として、図4に示す通り1つの入力データを2つのマイコンに入力した結果を、入力データと共に、出力RAMデータと表示デバイスの画像を並べて表示することで、2つのCPUの動作に差異がある場合に、容易に検出可能になる。
<自動操作でマイコンコントローラが仮想マイコンを制御>
自動検証制御部400から発行するリモコンコードを仮想リモコン300または、実リモコン330が発行する同じフォーマットのデータにて仮想バスマネージャのハイブリッド入力デバイス機能である成りすましを使ってマイコンコントローラ520に同期送信する。マイコンコントローラ520は、図5に示すメッセージ一覧表のデータをマイコンコントローラ520内の仮想配線スロット14で受信する。受信したデータは、図14に示すマイコンコントローラ520内の並列実効532で図5の選択CPU項目に示すマイコンの選択に従って、リモコンキーを書込むマイコンを選択する。図5の選択CPU項目に複数のマイコンを設定した場合は、設定したマイコン順に順次実行を繰返す。
マイコンを選択した後、図5の操作項目の自動または手動の指定を自動と確認した後、自動・手動指示部530で選択した仮想マイコン120に対して自動実行を行う。
[自動操作でマイコンコントローラが仮想マイコンへリモコンキー転送]
自動・手動指示部530から自動でリモコンコードを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、仮想マイコンのRAM読書き制御の処理が完了するまで待つ。リモコンコードを送信するパラメータは、図9の項目No.12に示すリモコンコードのRAMシンボルを指定して書込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514からマイコン共通実行部544で図10に示す項目No.5のコマンドに変換して仮想マイコン120にリモコンコードを同期送信し、マイコン共通実行部544が同期返信を受けることで、仮想マイコン120がリモコンキー受付完了するまで待つ。
リモコンキー受付処理が完了すると、マイコン共通実行部544から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、リモコンコード書込み指示をしたデバイスに対して仮想バス12経由でリモコンコード受付処理完了を返信する。
なお、手動実行する内容にはリセットスタートとRAM書込みとRAM読込みがあり、それぞれの動作は次の通りである。
[自動操作でマイコンコントローラが仮想マイコンをリセットスタート]
自動・手動指示部530から自動でリセットスタートを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、仮想マイコン120のリセットスタート制御の処理が完了するまで待つ。
実行・完了待ち部524からマイコン制御指示部516を経由してマイコン実行パラメータ作成部514で図9に示す項目No.2のマイコンリセット関数を作成し、マイコン共通実行部544から仮想マイコン120をリセットした後、続いて、図9に示す項目No.1のマイコン実行するラッパー関数を作成し、マイコン共通実行部544から仮想マイコン120を実行し、仮想マイコン120がリセットスタート完了するまで待つ。
リセットスタート処理が完了すると、マイコン共通実行部544から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、リセットスタートを指示したデバイスに対して仮想バス12経由で処理完了を返信する。
[自動操作でマイコンコントローラが仮想マイコンにRAM書込み]
自動・手動指示部530から自動でRAM書込みを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、仮想マイコン120のRAM書込み制御の処理が完了するまで待つ。
実行・完了待ち部524からRAM書込みデータ518を経由してマイコン実行パラメータ作成部514で図9に示す項目No.10から項目15の関数を使ってRAM書込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514からマイコン共通実行部544から仮想マイコン120にRAMデータを渡し、仮想マイコン120がRAM書込み完了するまで待つ。
RAM書込み処理が完了すると、マイコン共通実行部544から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、RAM書込みを指示したデバイスに対して仮想バス12経由でRAMデータ書込み処理完了を返信する。
[自動操作でマイコンコントローラが仮想マイコンにRAM読込み]
自動・手動指示部530から自動でRAM読込みを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、仮想マイコン120のRAM読込み制御の処理が完了するまで待つ。
実行・完了待ち部524からRAM読込みデータ520を経由してマイコン実行パラメータ作成部514で図9に示す項目No.4から項目No.9の関数を使ってRAM読込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514からマイコン共通実行部544から仮想マイコン120にリモコンコードを渡し、仮想マイコンがRAM読込み完了するまで待つ。
RAM読込み処理が完了すると、マイコン共通実行部544から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、RAM読込みを指示したデバイスに対して仮想バス12経由でRAM読込み処理完了を返信する。また、読込んだデータは、出力データ取得部522で取得したRAMを比較分析部509にて表示させる。比較分析部509で表示する一例として、図4に示す通り、1つの入力データを2つのマイコンに入力した結果を、入力データの横に出力RAMデータと表示デバイスの画像を並べることで、2つのCPUの動作に差異がある場合に容易に検出可能になる。
<自動操作でマイコンコントローラが実マイコンを制御>
自動検証制御部400から発行するリモコンコードを仮想リモコン300または、実リモコン330が発行する同じフォーマットのデータにて仮想バスマネージャのハイブリッド入力デバイス機能である成りすましを使ってマイコンコントローラ520に同期送信する。マイコンコントローラ520は、図5に示すメッセージ一覧表のデータをマイコンコントローラ520内の仮想配線スロット14で受信する。受信したデータは、図14に示すマイコンコントローラ520内の並列実効532で図5の選択CPU項目に示すマイコンの選択に従って、リモコンキーを書込むマイコンを選択する。図5の選択CPU項目に複数のマイコンを設定した場合は、設定したマイコン順に順次実行を繰返す。
マイコンを選択した後、図5の操作項目の自動または手動の指定を自動と確認した後、自動・手動指示部530で選択した実マイコン200に対して自動実行を行う。
[自動操作でマイコンコントローラが実マイコンへリモコンキー転送]
自動・手動指示部530から自動でリモコンコードを送信する指示をうけた自動処理部
528は、実行・完了待ち部524にて同期送信の設定を行うことで、実マイコン200のRAM読書き制御の処理が完了するまで待つ。リモコンコードを送信するパラメータは、図9の項目No.12に示すリモコンコードのRAMシンボルを指定して書込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514からマイコン共通実行部544でラッパー関数を図10に示す項目No.5のRAMシンボル書込みコマンドに変換して実マイコン200にリモコンコードを渡し、実マイコン200がリモコンキー受付完了するまで待つ。
リモコンキー受付処理が完了すると、マイコン共通実行部544から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、リモコンコード書込み指示をしたデバイスに対して仮想バス12経由でリモコンコード受付処理完了を返信する。
なお、手動実行する内容にはリセットスタートとRAM書込みとRAM読込みがあり、それぞれの動作は次の通りである。
[自動操作でマイコンコントローラが実マイコンをリセットスタート]
自動・手動指示部530から自動でリセットスタートを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、実マイコン200のリセットスタート制御の処理が完了するまで待つ。
実行・完了待ち部524からマイコン制御指示部516を経由してマイコン実行パラメータ作成部514で図9に示す項目No.2のマイコンリセット関数を作成し、マイコン共通実行部544でラッパー関数を図10に示す項目No.11のリセットコマンドに変換して実マイコン200をリセットした後、続いて、図9に示す項目No.1のマイコン実行するラッパー関数を作成し、マイコン共通実行部544でラッパー関数を図10に示す項目No.12のプログラムGOコマンドに変換して実マイコン200を実行し、実マイコン200がリセットスタート完了するまで待つ。
リセットスタート処理が完了すると、マイコン共通実行部544から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、リセットスタートを指示したデバイスに対して仮想バス12経由で処理完了を返信する。
[自動操作でマイコンコントローラが実マイコンにRAM書込み]
自動・手動指示部530から自動でRAM書込みを送信する指示をうけた自動処理部528は、実行・完了待ち部524にて同期送信の設定を行うことで、実マイコン200のRAM書込み制御の処理が完了するまで待つ。
実行・完了待ち部524からRAM書込みデータ518を経由してマイコン実行パラメータ作成部514で図9に示す項目No.10〜15の関数を使ってRAM書込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514からマイコン共通実行部544でラッパー関数を図10に示す項目No.1,2,5,6のRAM書込みコマンドに変換して実マイコン200にRAMデータを渡し、実マイコン200がRAM書込み完了するまで待つ。
RAM書込み処理が完了すると、マイコン共通実行部544から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、RAM書込みを指示したデバイスに対して仮想バス12経由でRAM書込み処理完了を返信する。
[自動操作でマイコンコントローラが実マイコンにRAM読込み]
自動・手動指示部530から自動でRAM読込みを送信する指示をうけた自動処理部5
28は、実行・完了待ち部524にて同期送信の設定を行うことで、実マイコン200のRAM読込み制御の処理が完了するまで待つ。
実行・完了待ち部524からRAM読込みデータ520を経由してマイコン実行パラメータ作成部514で図9に示す項目No.4〜9の関数を使ってRAM読込みを行うプログラムであるラッパー関数を作成するマイコンパラメータ作成部514からマイコン共通実行部544でラッパー関数を図10に示す項目No.3,4,7,8のRAMシンボル読込みコマンドに変換して実マイコン200にRAMデータを渡し、実マイコン200がRAM読込み完了するまで待つ。
RAM読込み処理が完了すると、マイコン共通実行部544から実行・完了待ち部524に完了通知する。実行・完了待ち部524から、RAM読込みを指示したデバイスに対して仮想バス12経由でRAM読込み処理完了を返信する。また、読込んだデータは、出力データ取得部522で取得したRAMを比較分析部509にて表示させる。比較分析部509にて表示する一例として、図4に示す通り、1つの入力データを2つのマイコンに入力した結果を、入力データと共に出力RAMデータと表示デバイスの画像を並べることで、2つのCPUの動作に差異がある場合に容易に検出可能になる。
<仮想マイコンの制御処理>
マイコンコントローラ520から発行した図10に示すマイコン制御コマンドの解析を仮想マイコン120内のコマンド解析部134で行い、擬似エミュレータ110の実行と擬似エミュレータ110のリセットとデバッグRAM108またはユーザRAM104内のRAM読書きする各コマンドに対応する仮想マイコン120の制御を行う。
なお、仮想マイコン120の制御にあたり、手動制御と自動制御は同じ動作になる。
[仮想マイコン内にリモコンコード書込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたリモコンコードは、マイコンコントローラ520で図10の項目No.5の1バイトシンボルライトコマンドをコマンド解析部134で解析し、RAMシンボル指定130に渡す。RAMシンボル指定130は、図6のシンボル定義ファイルに示すシンボル定義部604とコマンド解析部134から送られてきたリモコンコードのRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換してRAM読書き識別128からRAM書込み124に渡す。RAM書込み124は、デバッグRAM108に書込みSimデバッグプログラム106およびプログラム102をリモコン入力により動作する。
Simデバッグプログラム106およびプログラム102の動作は、図11に示す通り、マイコンコントローラ520内の仮想RemoS106からVHRemoS140にRAMを書込みをSimデバッグプログラム106プログラムがVHRemo処理S152にて確認した後、RemoS160にリモコンコードを書込むことで、プログラム102は、リモコンコードが入力されたと判断して、RemoS160に書込まれたリモコンコードに対応した動作を行う。
なお、仮想マイコン120を制御する内容には、擬似エミュレータのリセットと、擬似エミュレータの実行開始と、RAM書込みと、RAM読込みとがあり、それぞれの動作は次の通りである。
[擬似エミュレータをリセット]
擬似エミュレータ110のリセットは、仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたリセットコマンドにより開始される。マイコンコントローラ520は、図15に示す通り、項目No.11のリセットコマンドのデータフ
ォーマットで、リセットコマンドをコマンド解析部134に渡す。コマンド解析部134はリセットコマンドを解析し、リセット部122に渡す。
次に、マイコンコントローラ520から、マイコンコントローラ520内の仮想配線スロット14に対して、仮想マイコンのリセット要求を行う。マイコンコントローラ520内の仮想配線スロット14は、同期通信にて仮想配線マネージャ10内のリスタート実行部16に対してリセット要求し、リスタート完了まで同期返信待ちする。仮想配線マネージャ10は、仮想マイコン120のウィンドウハンドラを取得し、そのウィンドウハンドラを使って仮想マイコン120のアプリケーションを強制終了する。仮想マイコン120のウィンドウハンドラの取得が不可になることで、仮想マイコン120はアプリケーションの終了を確認し、マイコンコントローラ520にリセット完了を返信する。
[擬似エミュレータでプログラム実行開始]
擬似エミュレータ110の動作開始により、Simデバッグプログラム106およびプログラム102の実行開始が開始される。仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたプログラム実行コマンドは、マイコンコントローラ520により、図10に示す項目No.12のプログラムGO実行コマンドのデータフォーマットで、コマンド解析部134に渡される。コマンド解析部134は、プログラム実行コマンドを解析し、実行部120に渡す。
次に、マイコンコントローラ520からマイコンコントローラ520内の仮想配線スロット14に対して、仮想マイコン120のスタート要求を行う。マイコンコントローラ520内の仮想配線スロット14は、同期通信にて仮想配線マネージャ10内のリスタート実行部16に対してスタート要求する。仮想配線マネージャ10は、先に終了した仮想マイコン120のアプリケーション名を記憶しておき、そのアプリケーションを再起動する。仮想配線マネージャ10は、仮想マイコン120から仮想配線12への接続要求待ちを行う。仮想マイコン120は、起動すると、仮想配線マネージャ10に対して仮想配線接続要求を出す。仮想配線マネージャ10は、この要求を受けて、仮想マイコン120が起動したことを確認すると、マイコンコントローラ520に対して、仮想マイコン120が起動完了したことを返信する。
実マイコンのリセットスタート時に全てのRAMをゼロクリアするのと同様な動作を、仮想マイコン・マイコンコントローラ一体部50のアプリケーションでは、マイコンコントローラのスレッドから仮想マイコンのスレッドを終了させ、再び仮想マイコンスレッドを起動する方法により行う。この場合、プログラムは初期化処理から実行するが、全てのRAMのゼロクリアは、仮想マイコン・マイコンコントローラ一体部50のアプリケーションが終了してないため、ゼロクリアされない。もしこの状態でゼロクリアする場合は、全てのグローバル変数のRAMを抽出し、クリアするプログラムをSimデバッグプログラム106内に組込む必要がある。そこで、仮想マイコン120とマイコンコントローラ520のそれぞれ別々のアプリケーションとし、マイコンコントローラ520から仮想マイコン120アプリケーションを強制終了し、再起動させることで、RAMは全てゼロクリアされる。このため、全てのグローバル変数のRAMを抽出し、クリアするプログラムをSimデバッグプログラム106内に組込む必要はなくなる。
[仮想マイコン内のRAMに書込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたRAMデータ書込みRAMアドレス指定の場合は、マイコンコントローラ520で図10の項目No.1,2のRAMアドレスライトコマンドをコマンド解析部134で解析し、RAMアドレス指定132に渡す。RAMアドレス指定132は、RAM読書き識別128からRAM書込み124に渡す。RAM書込み124は、デバッグRAM108または
ユーザRAM104に書込みSimデバッグプログラム106およびプログラム102をRAMに書込んだデータにより動作させる。
また仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたRAMデータ書込みRAMシンボル指定の場合は、マイコンコントローラ520で図10の項目No.5,6のRAMシンボルライトコマンドをコマンド解析部134で解析し、RAMシンボル指定130に渡す。RAMシンボル指定130は、図6のシンボル定義ファイルに示すシンボル定義部604とコマンド解析部134から送られてきたRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換してRAM読書き識別128からRAM書込み124に渡す。RAM書込み124は、デバッグRAM108に書込みSimデバッグプログラム106およびプログラム102をリモコン入力により動作させる。
Simデバッグプログラム106およびプログラム102の動作の一例は、図11に示す通り、マイコンコントローラ520内の仮想RemoS106からVHRemoS140にRAMを書込みSimデバッグプログラム106プログラムがVHRemo処理S152にて確認した後、RemoS160にリモコンコードを書込むことで、プログラム102は、リモコンコードが入力されたと判断して、RemoS160に書込まれたリモコンコードに対応した動作を行う。
[仮想マイコン内のRAMに読込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたRAMデータ読込みRAMアドレス指定の場合は、マイコンコントローラ520で図10の項目No.3,4のRAMアドレスリードコマンドをコマンド解析部134で解析し、RAMアドレス指定132に渡す。RAMアドレス指定132からRAM読書き識別128を経由してRAM読込み126に渡す。RAM読込み126は、デバッグRAM108またはユーザRAM104から読込んだRAMデータは、RAM読込み126からコマンド解析部134を経由してマイコンコントローラ520に返信する。
また、また仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたRAMデータ読込みRAMシンボル指定の場合は、マイコンコントローラ520で図10の項目No.7,8のRAMシンボルリードコマンドをコマンド解析部134で解析し、RAMシンボル指定130に渡す。RAMシンボル指定130は、図6のシンボル定義ファイルに示すシンボル定義部604とコマンド解析部134から送られてきたRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換してRAM読書き識別128からRAM読込み126に渡す。RAM読込み126は、デバッグRAM108またはユーザRAM104から読込んだRAMデータは、RAM読込み126からコマンド解析部134を経由してマイコンコントローラ520に返信する。
<実マイコンの制御処理>
図10に示すマイコン制御コマンドをマイコンコントローラ520が発行し、仮想配線12から仮想配線スロット14を経由して図3に示す実マイコン200内の実デバッガに渡す。実デバッガ212がコマンドを解析し、実エミュレータ210の実行と実エミュレータ210のリセットとデバッグRAMs208またはユーザRAM204内のRAM読書きする各コマンドに対応する実マイコン200の制御を行う。
なお、マイコン200の制御にあたり、手動制御と自動制御は同じ動作になる。
[実マイコン内にリモコンコード書込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたリモコンコードは、図10の項目No.5の1バイトシンボルライトコマンドをマイコン
コントローラ520が発行し、仮想配線12から仮想配線スロット14経由して図3に示す実マイコン200内の実デバッガに渡す。図10の項目No.5の1バイトシンボルライトコマンドを実デバッガ212で解析し、PXsymbol222のシンボル定義ファイルとマイコンコントローラ520から送られてきたリモコンコードのRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換し、デバッグRAM208に書込みSim・ICE兼用デバッグプログラム106およびプログラム102をリモコン入力により動作する。
Sim・ICE兼用デバッグプログラム206およびプログラム202の動作は、図11に示す通り、マイコンコントローラ520内のICE_RemoS104からデバッグRAM208にRAMデータを書込みSim・ICE兼用デバッグプログラム206プログラムがリモコンコード書込みを確認した後、ユーザRAM204にリモコンコードを書込むことで、プログラム202は、リモコンコードが入力されたと判断して、リモコンコードに対応した動作を行う。
なお、実マイコン200を制御する内容には、実エミュレータ210のリセットと実エミュレータ210の実行開始とRAM書込みとRAM読込みがあり、それぞれの動作は次の通りである。
[実エミュレータをリセット]
実エミュレータ210のリセットは、仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたリセットコマンドにより開始される。マイコンコントローラ520は、図10に示す項目No.11のリセットコマンドのデータフォーマットで、リセットコマンドを仮想配線12から仮想配線バススロット経由で実デバッガ212に渡す。実デバッガ212は、リセットコマンドに従って、実エミュレータ210をリセットすることで、Sim・ICE兼用デバッグプログラム106およびプログラム102の動作を強制停止し、擬似エミュレータ110をリセットする。
[実エミュレータでプログラム実行開始]
実エミュレータ210のプログラムGO実行は、仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたプログラム実行コマンドにより開始される。マイコンコントローラ520は、図10に示す項目No.12のプログラムGO実行コマンドのデータフォーマットで、プログラムGO実行コマンドを仮想配線12から仮想配線バススロット14経由で実デバッガ212に渡す。実デバッガ212は、プログラムGO実行コマンドに従って、実エミュレータ210をリセットすることで、Sim・ICE兼用デバッグプログラム106およびプログラム102の動作を起動し、実エミュレータの実行を開始する。
Sim・ICE兼用デバッグプログラム206およびプログラム202のリセット実行とプログラム実行を連続して行うことで、リセットスタート動作が実現出来る。
[実マイコン内のRAMに書込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたRAMデータ書込みRAMアドレス指定の場合は、マイコンコントローラ520で図10の項目No.1,2のRAMアドレスライトコマンドを仮想配線12から仮想配線バススロット14経由で実デバッガ212に渡す。実デバッガ212は、コマンドを解析し、デバッグRAM208またはユーザRAM204に書込みSim・ICE兼用デバッグプログラム206およびプログラム202をRAMに書込んだデータにより動作させる。
また仮想リモコン300、実リモコン330、または自動検証制御部400から発行さ
れたRAMデータ書込みRAMシンボル指定の場合は、マイコンコントローラ520で図10の項目No.5,6のRAMシンボルライトコマンドを仮想配線12から仮想配線バススロット14経由で実デバッガ212に渡す。実デバッガ212は、PXsymbol222のシンボル定義ファイルとマイコンコントローラ520から送られてきたRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換し、デバッグRAM208に書込みSim・ICE兼用デバッグプログラム106およびプログラム102を書込んだRMデータにより動作する。
Sim・ICE兼用デバッグプログラム206およびプログラム202の動作は、図11に示す通り、マイコンコントローラ520内のICE_RemoS104からデバッグRAM208または、ユーザRAM204にRAMデータを書込みSim・ICE兼用デバッグプログラム206プログラムまたは、プログラム202が書込んだRAMデータを確認した後、ユーザRAM204にリモコンコードを書込むことで、プログラム202はSim・ICE兼用デバッグプログラム106およびプログラム102を書込んだRAMデータにより動作する。
[実マイコン内のRAMに読込み]
仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたRAMデータ読込みRAMアドレス指定の場合は、マイコンコントローラ520で図10の項目No.3,4のRAMアドレスリードコマンドを仮想配線12から仮想配線バススロット14経由で実デバッガ212に渡す。実デバッガ212は、実エミュレータ210からデバッグRAM208またはユーザRAM204から読込んだRAMデータを仮想配線12からマイコンコントローラ520に返信する。
また、また仮想リモコン300、実リモコン330、または自動検証制御部400から発行されたRAMデータ読込みRAMシンボル指定の場合は、マイコンコントローラ520で図10の項目No.7,8のRAMシンボルリードコマンドを仮想配線12から仮想配線バススロット14経由で実デバッガ212に渡す。実デバッガ212は、PXsymbol222のシンボル定義ファイルとマイコンコントローラ520から送られてきたRAMシンボル名を比較し、一致したRAMシンボル名に対応するRAMアドレスに変換し、実デバッガに渡す。実デバッガ212は、実エミュレータ210からデバッグRAM208またはユーザRAM204から読込んだRAMデータを仮想配線12からマイコンコントローラ520に返信する。
<各マイコンの出力RAMデータの取得処理>
仮想マイコン120または実マイコン200内のRAMデータを取得し表示等の処理は、マイコンコントローラ520内のRAMサンプリング部507内のサンプリング定義501として予め読込みたいRAMを指定したマイコン名とRAM名を複数指定し、定常的なRAMサンプリングを行う周期タイマを設定した後、RAMサンプリング部507にて定常的なRAMデータの取得を行い、定義データで指定された周辺デバイス部30内の仮想LCD320または実LCD310等に表示する。
また、仮想マイコン120または実マイコン200または仮想マイコン120と実マイコン200を同時に動作させて、それぞれのRAMデータ取得し、比較分析部509にてRAMデータ並びに仮想LCD320または実LCD310等に表示した出力画像を記録し分析を行う。
サンプリング定義501は、図12のRAMサンプリング定義データ示す通り、定義可能な設定データは、1つのCPUから読込んだRAMデータを複数の表示デバイスに同じRAMデータを送信する設定およびサンプルリング周期を読込む個々のRAMに設定する
ことも可能になっている。
[定常的な各マイコンの出力RAMデータの取得処理]
仮想マイコン120内のプログラム102が、仮想リモコン300または、実リモコン330から入力したリモコンコードに従って、プログラム102が実行し、作成したLCD表示データ等のRAMデータを仮想LCD320または実LCD310の表示デバイスに表示するための処理をRAMサンプリング部507で行う。
RAMサンプリング部507は、予め読込みたいマイコン名として仮想マイコン102内のユーザRAM104、デバッグRAM108または、実マイコン200内のユーザRAM204、デバッグRAM208を指定する。合わせて、指定したRAMデータを一定周期で読込むため、サンプリングタイマを付ける。
RAMの読込みは、サンプリングタイマのオーバーフロー毎に読込みたいマイコン名とRAM名としてRAMシンボル名またはRAMアドレス値と読込みたいデータサイズを出力データ取得部522に渡す。出力データ取得部522は、RAMデータ取得するため、RAM読込みデータ520からマイコン実行パラメータ作成部514にて読込むマイコンを選択する。マイコン実行パラメータで、マイコンを選択し、仮想マイコン120の場合は、仮想マイコン実行部510にて仮想マイコン102内のRAMを込む。実マイコン200の場合は、マイコン共通実行部544にて実マイコン内のRAMを読込む。読込んだRAMは、出力データ取得部522からRAMサンプリング部507に渡す。RAMサンプリング部507は、予め読込んだRAMを表示指定した周辺デバイス内の仮想LCD310または実LCD320等の表示デバイスに読込んだRAMデータを仮想配線12経由で転送する。
仮想LCD320に転送する場合は、仮想LCD320で受信したデータを解析してLCD表示する。
実LCD310に転送する場合は、LCDブリッジ318で受信して、LCDブリッジ318内のRS232C316にて実LCD表示可能なデータに変換して実機セットである実LCD310にRS232C経由にてデータを転送し表示する。
複数の表示デバイスに表示する場合は、表示するRAMデータを仮想LCD320に仮想配線12を経由して転送した後、同じRAMデータを仮想配線12から実LCD310に転送し、それぞれの表示デバイスで表示する。
なお、データ変化直後のデータを取得する方法の一例として、図11に示すユーザRAM104がプログラム102の実行により、変化した直後のデータを取得する場合は、予めSimデバッグプログラム106内のVHLCDbuf処理(S156)にてプログラム102がリモコンコードを受付けてLCD表示データを作成した直後のデータを取得する条件のプログラムを組込み、条件一致時にLCDbuf(S164)のRAMデータをVHLCDbuf(S144)のRAMに書込む。これにより、変化直後のRAMデータを取得することができ、VHLCDbuf(S144)のRAMに書込まれたデータを別のデバイスから低速度で読んだ場合でも、変化直後のデータを確実に取得することが可能になる。
また、ユーザRAM104またはデバッグRAM108またはユーザRAM204または、デバッグRAM208の指定したRAMの変化の直後に仮想配線12に接続してある各デバイス内の指定関数を実行する条件をSim用デバッグプログラム106またはSim・ICE兼用デバッグプログラム内に組込む。条件一致時に、マイコンコントローラ5
20が、仮想配線12に接続してある各デバイス内の指定関数を実行するため、仮想配線バスマネージャ10の機能であるハイブリッド入力デバイス機能である成りすましで、指定したデバイス内の指定したコールバック関数を実行することができる。これにより、変化直後に各種のプログラムを実行することが可能となる。
マイコンコントローラ520から各種マイコンを制御可能にするため、図1に示すオンボードデバッガブリッジ950と仮想配線12を接続し、オンボードデバッガブリッジ950とからオンボードデバッグセット940をRS232C等で接続する。また、ROMブリッジ930と仮想配線12を接続し、ROMブリッジ930からROMエミュレータデバッグセットとRS232C等で接続する。また、実機デバッグブリッジ910と仮想配線12を接続し、実機デバッグブリッジ910から実機デバッグセット900とRS232C等で接続し、マイコンコントローラ520から制御するマイコンの通信データフォーマットを図10に示す仮想マイコンおよび実マイコンを制御するコマンドの通りにすることで、自動検証等のデバッグする対象マイコンの選択肢を広げることが可能になる。
また、図19に示すように、マイコンコントローラ521と自動検証制御部400とを、一つの仮想配線スロット14を共有する一体型として構成することも可能である。
以上のように、マイコンコントローラ520から仮想マイコン120をリセットスタートさせる場合に、実マイコンにより近いリセットスタートのシミュレーション動作が可能になる。
上述したように、プログラムテストを行うデバッグシステムに実マイコンと仮想マイコンを同時に起動しテストを行うことで、論理検証またはタイミング検証に合わせて実マイコンまたは仮想マイコンを切換えるための停止・再起動を行うことなく、マイコンコントローラ内のボタンにて瞬時に切換えることが可能となり、効率よくデバッグができる。
また、マイコンコントローラ内のマイコン制御の共通化により2度手間がなくなり生産性が向上する。また、自動検証時にテスト項目に合わせて実マイコンと仮想マイコンを自動で切換えることで、テスト内容は、プログラム機能の視点から作成した論理テストとタイミングテストを混在が可能となり最適な評価を効率よく行える。
また、仮想マイコンを使ってデバッグ対象プログラムを開発した後、新規に作成した実マイコンを利用した実機デバッグセットで動作テストを行う場合に、仮想マイコンと実マイコンの動作をマイコン周辺の出力デバイスに表示し、合わせて比較したデータを表示することで実マイコン動作と仮想マイコン動作の差異が発生した場合に、効率よく差異を検出することで実マイコンデバッグセットの早期立上げが行える。
また、仮想マイコン・マイコンコントローラ一体部を仮想マイコンとマイコンコントローラとして単独実行可能なアプリケーションに分離することで、実マイコンにより近いリスタートのシミュレーション動作が可能になる。
更に、図1に示す通り、全てデバイスである仮想LCD320と実LCDと実機デバッグセットと仮想マイコンと実マイコンとROMエミュレータデバッグセットとオンボードデバッグセットと仮想リモコンと実リモコンの全てが、単独実行可能なアプリケーションとして分散化している。また、マイコンコントローラが全てのデバイスの通信切換え制御を行えるため、デバッグ対象プログラムのテスト内容に従って、周辺入力デバイス部と各種マイコン部と周辺出力デバイス部間の通信するデバイス構成を変更することで、テスト内容がシミュレーションが効率よい、実機が効率よい、実機とシミュレータを組合せた方がよい等の多様化するテストに柔軟に対応が可能になる。
本発明は、仮想マイコンおよび実マイコンを有し、プログラム検証時に仮想マイコンと実マイコンを瞬時に自動切換えしてテストできるため、自動的にプログラム検証を行うプログラム検証システムとして有用である。また、マイコンを複数実行し、RAMデータおよび画像イメージの動作記録が可能なため、1つのリモコンから複数のマイコンを制御し、それぞれのマイコンの動作の差異を見れば、バラツキの検証等にも応用できる。
各マイコンと各入出力デバイス接続する論理的な配線のブロック図 仮想配線マネージャの成りすまし通信機能の説明図 本発明の一実施形態にかかるプログラム検証システムのブロック図 RAM分析で表示するデータ例を示す説明図 周辺デバイスから受信したマイコンコントローラの通信メッセージの一例を示す説明図 シンボル定義データの一例を示す説明図 マイコンコントローラの構成を示すブロック図 自動検証システムの動作シーケンスおよびマイコン自動選択方法を示す説明図 マイコン実行パラメータ作成で作成する関数の例を示す説明図 仮想マイコンおよび実マイコンを制御するコマンドの例を示す説明図 RAMデータ流れおよびリセットスタートのフローチャート RAMサンプリング定義データの例を示す説明図 仮想マイコンとマイコンコントローラ分離型のプログラム検証システムのブロック図 マイコンコントローラの構成を示すブロック図 マイコンコントローラから仮想マイコンの終了・起動をする方法を示す説明図 擬似デバッガの構成を示すブロック図 API共通化されたマイコンコントローラの一例を示す説明図 仮想配線の接続例を示す説明図 本発明の他の実施形態にかかるプログラム検証システムのブロック図 マルチ画像記録が可能な自動検証部の構成を示すブロック図 マルチ画像記録が可能な仮想LCD表示部の構成を示すブロック図 マルチ画像記録が可能な実LCD表示部の構成を示すブロック図 マルチ画像記録が可能なLCD表示のフローチャート マルチ画像記録が可能なLCDから自動検証デバイスへ受信する状態のフローチャート マルチ画像記録が可能な自動検証デバイスのLCD画像記録指示のフローチャート マルチ画像記録が可能な仮想マイコンおよび実マイコンを制御するコマンドを示す説明図 マルチ画像記録が可能な自動検証システムの構成図 マルチ画像記録が可能なシナリオファイルの説明図 マルチ画像記録を実行した結果を示す説明図 従来の実機デバッグセットを用いたプログラム検証方法 従来のシステムシミュレータセットを用いたプログラム検証方法 従来の実マイコンと仮想入出力デバイスを組合せたプログラム検証方式
符号の説明
10 仮想配線マネージャ
14 仮想配線スロット
12 仮想配線
30 周辺デバイス部
40 自動検証部
50 仮想マイコン・マイコンコントローラ一体部
100 仮想マイコン
120 仮想マイコン
200 実マイコン
300 仮想リモコン
310 実LCD
320 仮想LCD
330 実リモコン
400 自動検証制御部
500 マイコンコントローラ
520 マイコンコントローラ

Claims (12)

  1. シングルチップマイコンのデバッグ対象プログラムを動作させる、単独実行可能な実マイコンと、
    前記実マイコンによる前記デバック対象プログラムの実行動作をシミュレーションする、単独実行可能な仮想マイコンと、
    前記実マイコンおよび前記仮想マイコンを動作させるために必要なデータ入力を行う周辺入力デバイスと、
    前記周辺入力デバイスと前記実マイコンおよび仮想マイコンとの間に設けられ、前記周辺入力デバイスから前記実マイコンおよび仮想マイコンへのデータ転送制御と、前記実マイコンおよび仮想マイコンの作動/停止制御とを行うマイコン制御部とを備え、
    前記マイコン制御部が、前記実マイコンおよび仮想マイコンの両方を選択して、両方の実行状態を確認して同期を取り、前記周辺入力デバイスからの入力データを転送すると共に、転送先のマイコンを作動させることにより、前記実マイコンおよび前記仮想マイコンにおいて同一のデバック対象プログラムを実行可能であることを特徴とするプログラム検証システム。
  2. 前記周辺入力デバイスを複数備え、
    前記マイコン制御部が、データ入力を行うべき周辺入力デバイスを前記複数の周辺入力デバイスから選択する、請求項1に記載のプログラム検証システム。
  3. 前記実マイコンまたは仮想マイコンの実行結果を出力する周辺出力デバイスをさらに備え、
    前記マイコン制御部が、前記実マイコンまたは仮想マイコンからの出力データを前記周辺出力デバイスへ転送する、請求項1に記載のプログラム検証システム。
  4. 前記周辺出力デバイスを複数備え、
    前記マイコン制御部が、出力データを転送すべき周辺出力デバイスを前記複数の周辺出力デバイス部から選択する、請求項3に記載のプログラム検証システム。
  5. 前記実マイコンおよび仮想マイコンを用いたプログラム検証テストの手順を記録したシナリオファイルを参照し、前記シナリオファイルの内容に応じた指示を前記マイコン制御部へ渡す自動検証部をさらに備え、
    前記シナリオファイルには、検証手順毎に実行すべき仮想マイコンおよび実マイコンの少なくとも一方が指定され、
    前記自動検証部は、前記シナリオファイルに従って、各検証手順において実行すべきマイコンを選択し、選択結果を前記マイコン制御部へ渡すデバイス選択部を備え、
    前記マイコン制御部は、前記デバイス選択部の指示に従って、前記仮想マイコンおよび前記実マイコンの一方または両方を選択し作動させるマイコン実行部を備えた、請求項1に記載のプログラム検証システム。
  6. 前記マイコン制御部が、
    前記周辺入力デバイスから前記仮想マイコンと前記実マイコンに同じ入力データを送る並列実行部と、
    前記仮想マイコンと前記実マイコンから実行結果をそれぞれ取得し、取得したデータを周辺出力デバイスに転送する出力分配部とを備え、
    前記周辺出力デバイスが、前記仮想マイコンの実行結果と前記実マイコンの実行結果とを対比可能な状態に表示する、請求項3または4に記載のプログラム検証システム。
  7. 前記マイコン制御部が、
    前記周辺入力デバイスから前記仮想マイコンと前記実マイコンに同じ入力データを送る並列実行部と、
    前記仮想マイコンと前記実マイコンから実行結果をそれぞれ取得し、取得したデータの差異を求めて前記周辺出力デバイスへ出力する比較分析部とを備えた、請求項3または4に記載のプログラム検証システム。
  8. 前記実マイコンおよび仮想マイコンを用いたプログラム検証テストの手順を記録したシナリオファイルを参照し、前記シナリオファイルの内容に応じた指示を前記マイコン制御部へ渡す自動検証部をさらに備え、
    前記シナリオファイルには、検証手順毎に実行すべき仮想マイコンおよび実マイコンの少なくとも一方が指定され、
    前記自動検証部は、前記シナリオファイルに従って、各検証手順において実行すべきマイコンを選択し、前記仮想マイコンおよび前記実マイコンが用いるRAMの読み書きおよび前記仮想マイコンおよび前記実マイコンの作動/停止を行うマイコン選択実行部を備えた、請求項1に記載のプログラム検証システム。
  9. 前記仮想マイコンおよび実マイコンがそれぞれ複数設けられ、前記マイコン選択実行部が、前記複数の仮想マイコンまたは複数の実マイコンから、実行すべきマイコンを選択し、選択された仮想マイコンおよび実マイコンが用いるRAMの読み書きおよび前記仮想マイコンおよび前記実マイコンの作動/停止を行う、請求項8に記載のプログラム検証システム。
  10. 前記実マイコンおよび仮想マイコンを用いたプログラム検証テストの手順を記録したシナリオファイルを参照し、前記シナリオファイルの内容に応じた指示を前記マイコン制御部へ渡す自動検証部をさらに備え、
    前記シナリオファイルには、検証手順毎に実行すべき仮想マイコンおよび実マイコンの少なくとも一方が指定され、
    前記シナリオファイルで定義した1または複数の出力データを記録する手順に従って、前記周辺出力デバイスにおけるデータの変化を検出し前記自動検証部に返信するデータ比較検出部と、
    前記データ比較検出部の検出結果に基づいて、前記データおよび前記データに基づく出力画像の少なくとも一方を検証結果ファイルへ記録する画像データ記録部とを備えた、請求項3に記載のプログラム検証システム。
  11. 前記実マイコンおよび仮想マイコンを用いたプログラム検証テストの手順を記録したシナリオファイルを参照し、前記シナリオファイルの内容に応じた指示を前記マイコン制御部へ渡す自動検証部をさらに備え、
    前記シナリオファイルには、検証手順毎に実行すべき仮想マイコンおよび実マイコンの少なくとも一方が指定され、
    前記シナリオファイルで定義した1または複数の出力データを記録する手順に従って、前記周辺出力デバイスにおける信号の変化を検出し前記自動検証部に返信する信号比較検出部と、
    前記信号比較検出部の検出結果に基づいて、前記データおよび前記データに基づく出力画像の少なくとも一方を検証結果ファイルへ記録する画像データ記録部とを備えた、請求項3に記載のプログラム検証システム。
  12. シングルチップマイコンのデバッグ対象プログラムを動作させる単独実行可能な実マイコンと、前記実マイコンによる前記デバック対象プログラムの実行動作をシミュレーションする単独実行可能な仮想マイコンと、前記実マイコンおよび前記仮想マイコンを動作させるために必要なデータ入力を行う周辺入力デバイスとを有するプログラム検証システムにおいて、前記周辺入力デバイスと前記実マイコンおよび仮想マイコンとの間に設けられるコンピュータ、あるいは、前記仮想マイコンを具現化するコンピュータのいずれかに読み込まれて実行されるプログラム検証システム制御用コンピュータプログラムであって、
    前記コンピュータに、前記周辺入力デバイスから前記実マイコンおよび仮想マイコンの両方を選択して、両方の実行状態を確認して同期を取り、前記周辺入力デバイスからの入力データを転送する処理と、前記実マイコンおよび仮想マイコンの作動/停止を制御することにより、前記実マイコンおよび前記仮想マイコンにおいて同一のデバッグ対象プログラムとを行わせる命令を含むことを特徴とするプログラム検証システム制御用コンピュータプログラム。
JP2004201031A 2003-11-11 2004-07-07 プログラム検証システムおよびプログラム検証システム制御用コンピュータプログラム Expired - Fee Related JP4562439B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004201031A JP4562439B2 (ja) 2003-11-11 2004-07-07 プログラム検証システムおよびプログラム検証システム制御用コンピュータプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003381478 2003-11-11
JP2004201031A JP4562439B2 (ja) 2003-11-11 2004-07-07 プログラム検証システムおよびプログラム検証システム制御用コンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2005166010A JP2005166010A (ja) 2005-06-23
JP4562439B2 true JP4562439B2 (ja) 2010-10-13

Family

ID=34741641

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004201031A Expired - Fee Related JP4562439B2 (ja) 2003-11-11 2004-07-07 プログラム検証システムおよびプログラム検証システム制御用コンピュータプログラム

Country Status (1)

Country Link
JP (1) JP4562439B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4747060B2 (ja) * 2006-09-20 2011-08-10 株式会社アイ・エル・シー 検証装置、検証プログラム、および検証方法
JPWO2008099931A1 (ja) 2007-02-15 2010-05-27 富士通テン株式会社 マイクロコンピュータの模擬装置
US20090203368A1 (en) * 2008-02-11 2009-08-13 Mobile Complete, Inc. Automated recording of virtual device interface

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001216176A (ja) * 2000-02-04 2001-08-10 Seiko Epson Corp デバッグ装置およびデバッグ方法ならびにデバッグプログラムを記憶した記憶媒体
JP2003316603A (ja) * 2002-04-24 2003-11-07 Matsushita Electric Ind Co Ltd プログラム検証システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001216176A (ja) * 2000-02-04 2001-08-10 Seiko Epson Corp デバッグ装置およびデバッグ方法ならびにデバッグプログラムを記憶した記憶媒体
JP2003316603A (ja) * 2002-04-24 2003-11-07 Matsushita Electric Ind Co Ltd プログラム検証システム

Also Published As

Publication number Publication date
JP2005166010A (ja) 2005-06-23

Similar Documents

Publication Publication Date Title
EP0471924A2 (en) Automated function testing of application programs
WO2012077704A1 (ja) デバッグスタブサーバ、デバッグ方法およびプログラム
JP4562439B2 (ja) プログラム検証システムおよびプログラム検証システム制御用コンピュータプログラム
JP4171240B2 (ja) プログラム検証システム
JP2004252585A (ja) プログラム検証システム
JPH11194960A (ja) ソフトウェア試験装置
EP1224551A1 (en) Protocol acknowledgment between homogeneous systems
Kline et al. The in-circuit approach to the development of microcomputer-based products
JPS6310456B2 (ja)
JPH11272494A (ja) ワイドバンドスイッチファームウエアのデバック/コシミュレーション方式
KR100200712B1 (ko) 노-타겟 시스템의 프로그램 디버깅 장치
JPH05128079A (ja) マルチプロセツサシステムにおけるトレース方式
JP2002189617A (ja) 評価システム、及び評価方法
JP3085730B2 (ja) 複合cpuシステムの並列シミュレーション方式
JP4494329B2 (ja) 情報処理装置
JP2004157787A (ja) プログラム検証システム
JP2007141139A (ja) 情報処理装置
JP2887515B2 (ja) 記録装置のシミュレータ
JP2004046716A (ja) デバッグ装置
JPH0520122A (ja) リモートデバツグ方法
JP2000215079A (ja) Cpuデバッガ
JPH1115690A (ja) 画像処理装置及び画像処理装置とコンピュータ間の通信確立方法
JPH1153219A (ja) ソフトウェア検証装置
JPH11161514A (ja) デバッガ装置、デバッガ方法、およびデバッガプログラムを記録した記録媒体
JP2002288003A (ja) シミュレーション方法およびシミュレーションプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070427

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100415

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100614

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100706

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100727

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130806

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4562439

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees