(57)【特許請求の範囲】
【請求項１】
ＡＲＭプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するエミュレーション装置であって、
前記組み込みプログラムを記憶するプログラム記憶領域、および前記ＡＲＭプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置と、
前記組み込みプログラムを受け付けるプログラム受付手段と、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させる実行手段と、を備え、
前記組み込みプログラムは、前記ＡＲＭプロセッサと前記周辺装置を動作させる命令を含む実行形式のプログラムであり、
前記疑似デバイスレジスタ領域は、前記組み込みプログラムの各命令の実行時にアクセスすべき、前記周辺装置の動作を模擬する処理がそれぞれ割り当てられるレジスタビットを有し、
前記実行手段は、前記組み込みプログラムから順次前記命令を読み出し、各命令を、割り当てられた前記疑似デバイスレジスタの前記レジスタビットに変換し、当該レジスタビットにアクセスし、前記アクセスされた前記レジスタビットに応じた前記周辺装置の動作を疑似する処理を実行させるエミュレーション装置。
【請求項２】
請求項１に記載のエミュレーション装置において、
前記記憶装置は、前記組み込み機器に組み込み可能な複数種類の周辺装置毎に、前記周辺装置の動作を疑似する処理をそれぞれ割り当てた複数の前記疑似デバイスレジスタ領域を有し、
エミュレーション対象の前記組み込み機器に組み込む周辺装置の構成を受け付ける構成受付手段をさらに備え、
前記構成受付手段が受け付けた前記周辺装置の構成に従って、前記実行手段が、該当する前記周辺装置の前記疑似デバイスレジスタ領域を、前記組み込みプログラムの実行時に使用し、前記周辺装置の構成をカスタマイズした前記組み込み機器をエミュレーションするエミュレーション装置。
【請求項３】
請求項１または２に記載のエミュレーション装置において、
前記疑似デバイスレジスタ領域に割り当てられた前記周辺装置の動作を疑似する前記処理は、前記周辺装置の操作または動作に対応する入力または出力を模擬する処理を含み、
前記周辺装置の入力または出力を模擬する処理の結果に基づいて前記周辺装置の操作または動作を確認できるユーザインタフェースを前記周辺装置毎に提供する入出力模擬手段をさらに備え、
前記入出力模擬手段が、前記周辺装置の構成に従って、前記ユーザインタフェースを組み合わせ、前記組み込み機器の各前記周辺装置の入力または出力を模擬し、前記組み込み機器の前記周辺装置の操作または動作を確認できるユーザインタフェースを提供するエミュレーション装置。
【請求項４】
請求項１乃至３いずれか一項に記載のエミュレーション装置において、
パーソナルコンピュータ、サーバコンピュータ、またはタブレット端末を用いて実現されるエミュレーション装置。
【請求項５】
請求項１乃至４いずれか一項に記載のエミュレーション装置を用いた組み込み機器の開発支援システム。
【請求項６】
ＡＲＭプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するコンピュータを用いたエミュレーション方法であって、
前記コンピュータは、前記組み込みプログラムを記憶する組み込みプログラム記憶領域、および前記ＡＲＭプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置を備え、
前記組み込みプログラムが、前記ＡＲＭプロセッサと前記周辺装置を動作させる命令を含む実行形式のプログラムであり、
前記疑似デバイスレジスタ領域が、前記組み込みプログラムの各命令の実行時にアクセスすべき、前記周辺装置の動作を模擬する処理がそれぞれ割り当てられるレジスタビットを有し、
前記コンピュータが、
前記組み込みプログラムを受け付け、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させ、
前記組み込みプログラムから順次前記命令を読み出し、各命令を、割り当てられた前記疑似デバイスレジスタの前記レジスタビットに変換し、当該レジスタビットにアクセスし、前記アクセスされた前記レジスタビットに応じた前記周辺装置の動作を疑似する処理を実行させるエミュレーション方法。
【請求項７】
請求項６に記載のエミュレーション方法において、
前記記憶装置は、前記組み込み機器に組み込み可能な複数種類の周辺装置毎に、前記周辺装置の動作を疑似する処理をそれぞれ割り当てた複数の前記疑似デバイスレジスタ領域を有し、
前記コンピュータが、さらに、
エミュレーション対象の前記組み込み機器に組み込む周辺装置の構成を受け付け、
受け付けた前記周辺装置の構成に従って、該当する前記周辺装置の前記疑似デバイスレジスタ領域を、前記組み込みプログラムの実行時に使用し、前記周辺装置の構成をカスタマイズした前記組み込み機器をエミュレーションするエミュレーション方法。
【請求項８】
請求項６または７に記載のエミュレーション方法において、
前記疑似デバイスレジスタ領域に割り当てられた前記周辺装置の動作を疑似する前記処理は、前記周辺装置の操作または動作に対応する入力または出力を模擬する処理を含み、
前記コンピュータが、
前記周辺装置の入力または出力を模擬する処理の結果に基づいて前記周辺装置の操作または動作を確認できるユーザインタフェースを前記周辺装置毎に提供し、
前記周辺装置の構成に従って、前記ユーザインタフェースを組み合わせ、前記組み込み機器の各前記周辺装置の入力または出力を模擬し、前記組み込み機器の前記周辺装置の操作または動作を確認できるユーザインタフェースを提供するエミュレーション方法。
【請求項９】
ＡＲＭプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するエミュレーション装置を実現するコンピュータが実行するプログラムであって、
前記コンピュータは、前記組み込みプログラムを記憶する組み込みプログラム記憶領域、および前記ＡＲＭプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置を備え、
前記組み込みプログラムは、前記ＡＲＭプロセッサと前記周辺装置を動作させる命令を含む実行形式のプログラムであり、
前記疑似デバイスレジスタ領域は、前記組み込みプログラムの各命令の実行時にアクセスすべき、前記周辺装置の動作を模擬する処理がそれぞれ割り当てられるレジスタビットを有し、
前記コンピュータに、
前記組み込みプログラムを受け付ける手順、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させる手順、
前記組み込みプログラムから順次前記命令を読み出し、各命令を、割り当てられた前記疑似デバイスレジスタの前記レジスタビットに変換し、当該レジスタビットにアクセスし、前記アクセスされた前記レジスタビットに応じた前記周辺装置の動作を疑似する処理を実行させる手順を実行させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムにおいて、
前記記憶装置は、前記組み込み機器が組み込み可能な複数種類の周辺装置毎に、前記周辺装置の動作を疑似する処理をそれぞれ割り当てた複数の前記疑似デバイスレジスタ領域を有し、
前記コンピュータに、さらに、
エミュレーション対象の前記組み込み機器に組み込む周辺装置の構成を受け付ける手順、
受け付けた前記周辺装置の構成に従って、該当する前記周辺装置の前記疑似デバイスレジスタ領域を、前記組み込みプログラムの実行時に使用し、前記周辺装置の構成をカスタマイズした前記組み込み機器をエミュレーションする手順を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレーション装置、エミュレーション方法、プログラム、および組み込み機器の開発支援システムに関し、特に、ＡＲＭ（Advanced RISC（Reduced Instruction Set Computer） Machines）プロセッサのエミュレーション装置、エミュレーション方法、プログラム、および組み込み機器の開発支援システムに関する。
【背景技術】
【０００２】
ＡＲＭプロセッサを組み込んだ組み込み機器は、様々な分野において開発され実用化されている。組み込み機器は、クロス開発が主流であり、開発環境と実行環境が異なる。組み込み機器に搭載されるプログラムは、開発環境では、たとえば、パーソナルコンピュータ（Personal Computer：ＰＣ）上でプログラミングされ、実行ファイル形式に変換された後、実際の組み込み機器で実行されることとなる。
開発環境においては、実際の組み込み機器の代わりに、専用のエミュレータを使用してソフトウェアの検証や試験（デバッグ）を行う。
【０００３】
デバッグ装置の一例が特許文献１に記載されている。特許文献１のデバッグ装置は、組み込みマイコンのエミュレータとユーザインタフェースを持つエミュレータ制御ソフトで構成され、エミュレーション中のプログラムを止めることなく、ユーザが指定したアドレスの変数の値をモニタリングできる機能を有する。
【０００４】
また、特許文献２には、第１システムと異なる第２システム上で、第１システムのプログラムを実行する方法および装置が記載されている。特許文献２の装置は、エミュレータ監視レベルが、第１システムの命令に相当する第２システムの命令として解釈することにより、第２システムのＣＰＵ、メモリ、および第２システムの他の要素に、第１システムの対応する要素の動作をエミュレートさせるインタプリタを有する。
【０００５】
さらに、特許文献３には、仮想マシンの入出力エミュレーション機構が記載されている。特許文献３の仮想マシンの入出力エミュレーション機構は、仮想マシンのアプリケーションからのデバイス操作要求に対応する、仮想デバイスに対するデバイス操作命令を、一連の操作命令毎にまとめて受け付けて、実デバイスに対する入出力コマンドに変換する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−５９９９号公報
【特許文献２】特開平７−１８２１８０号公報
【特許文献３】特開２００９−２８８８６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述した各特許文献に記載された装置においては、実際の組み込み機器の代わりに、装置構成に依存した専用のエミュレータを準備する必要があったため、汎用性がなくコストがかかるという問題点があった。
【０００８】
本発明の目的は、上述した課題である汎用性がなくコストがかかるという問題点を解決するエミュレーション装置、エミュレーション方法、プログラム、および組み込み機器の開発支援システムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明のエミュレーション装置は、
ＡＲＭプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するエミュレーション装置であって、
前記組み込みプログラムを記憶するプログラム記憶領域、および前記ＡＲＭプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置と、
前記組み込みプログラムを受け付けるプログラム受付手段と、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させる実行手段と、を備え、
前記組み込みプログラムは、前記ＡＲＭプロセッサと前記周辺装置を動作させる命令を含む実行形式のプログラムであり、
前記疑似デバイスレジスタ領域は、前記組み込みプログラムの各命令の実行時にアクセスすべき、前記周辺装置の動作を模擬する処理がそれぞれ割り当てられるレジスタビットを有し、
前記実行手段は、前記組み込みプログラムから順次前記命令を読み出し、各命令を、割り当てられた前記疑似デバイスレジスタの前記レジスタビットに変換し、当該レジスタビットにアクセスし、前記アクセスされた前記レジスタビットに応じた前記周辺装置の動作を疑似する処理を実行させる。
【００１０】
本発明の組み込み機器の開発支援システムは、上記エミュレーション装置を備える。
【００１１】
本発明のエミュレーション方法は、
ＡＲＭプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するコンピュータを用いたエミュレーション方法であって、
前記コンピュータは、前記組み込みプログラムを記憶する組み込みプログラム記憶領域、および前記ＡＲＭプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置を備え、
前記組み込みプログラムが、前記ＡＲＭプロセッサと前記周辺装置を動作させる命令を含む実行形式のプログラムであり、
前記疑似デバイスレジスタ領域が、前記組み込みプログラムの各命令の実行時にアクセスすべき、前記周辺装置の動作を模擬する処理がそれぞれ割り当てられるレジスタビットを有し、
前記コンピュータが、
前記組み込みプログラムを受け付け、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させ、
前記組み込みプログラムから順次前記命令を読み出し、各命令を、割り当てられた前記疑似デバイスレジスタの前記レジスタビットに変換し、当該レジスタビットにアクセスし、前記アクセスされた前記レジスタビットに応じた前記周辺装置の動作を疑似する処理を実行させる。
【００１２】
本発明のコンピュータプログラムは、
ＡＲＭプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するエミュレーション装置を実現するコンピュータが実行するプログラムであって、
前記コンピュータは、前記組み込みプログラムを記憶する組み込みプログラム記憶領域、および前記ＡＲＭプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置を備え、
前記組み込みプログラムは、前記ＡＲＭプロセッサと前記周辺装置を動作させる命令を含む実行形式のプログラムであり、
前記疑似デバイスレジスタ領域は、前記組み込みプログラムの各命令の実行時にアクセスすべき、前記周辺装置の動作を模擬する処理がそれぞれ割り当てられるレジスタビットを有し、
前記コンピュータに、
前記組み込みプログラムを受け付ける手順、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させる手順、
前記組み込みプログラムから順次前記命令を読み出し、各命令を、割り当てられた前記疑似デバイスレジスタの前記レジスタビットに変換し、当該レジスタビットにアクセスし、前記アクセスされた前記レジスタビットに応じた前記周辺装置の動作を疑似する処理を実行させる手順を実行させるためのものである。
【００１３】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００１４】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【００１５】
また、本発明の方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明の方法およびコンピュータプログラムを実施するときには、その複数の手順の順番は内容的に支障のない範囲で変更することができる。
【００１６】
さらに、本発明の方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【発明の効果】
【００１７】
本発明によれば、汎用性があり、コストを抑えられるエミュレーション装置、エミュレーション方法、プログラム、および組み込み機器の開発支援システムが提供される。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態に係るエミュレーション装置の構成を示す機能ブロック図である。
【図２】本発明の実施の形態に係るエミュレーション装置の構成を示すブロック図である。
【図３】本発明の実施の形態に係るエミュレーション装置の概要を説明するための図である。
【図４】本発明の実施の形態に係るエミュレーション装置の疑似デバイスエミュレーション用のメモリ領域の構造を示すメモリマップ図である。
【図５】本発明の実施の形態に係るエミュレーション装置の動作の一例を示すフローチャートである。
【図６】本発明の実施の形態に係るエミュレーション装置の構成を示す機能ブロック図である。
【図７】本発明の実施の形態に係るエミュレーション装置の動作の一例を示すフローチャートである。
【図８】本発明の実施の形態に係るエミュレーション装置の構成を示す機能ブロック図である。
【図９】本発明の実施の形態に係るエミュレーション装置の画面の一例を示す図である。
【図１０】本発明の実施の形態に係るエミュレーション装置の画面の一例を示す図である。
【図１１】本発明の実施例に係るエミュレーション装置がエミュレートする組み込み機器の構成を示す機能ブロック図である。
【図１２】本発明の実施例に係るエミュレーション装置の画面の一例を示す図である。
【図１３】本発明の実施例に係るエミュレーション装置の疑似デバイスエミュレーション用のメモリ領域のベクタ・テーブル領域を説明するための図である。
【図１４】本発明の実施例に係るエミュレーション装置の疑似デバイスエミュレーション用のメモリ領域のデバイス領域を説明するための図である。
【図１５】本発明の実施例に係るエミュレーション装置の疑似チップへ供給するクロック一覧を説明するための図である。
【図１６】本発明の実施例に係るエミュレーション装置の割込み要求フラグ・レジスタを説明するための図である。
【図１７】本発明の実施例に係るエミュレーション装置の割込み要因フラグ・レジスタを説明するための図である。
【図１８】本発明の実施例に係るエミュレーション装置の割込みイネーブル・フラグ・レジスタを説明するための図である。
【図１９】本発明の実施例に係るエミュレーション装置の割込みクリア・レジスタを説明するための図である。
【図２０】本発明の実施例に係るエミュレーション装置のステータスレジスタとステータスフラグを説明するための図である。
【図２１】本発明の実施例に係るエミュレーション装置のカウンタ・レジスタを説明するための図である。
【図２２】本発明の実施例に係るエミュレーション装置のインターバル設定レジスタを説明するための図である。
【図２３】本発明の実施例に係るエミュレーション装置のインターバル・タイマ制御レジスタを説明するための図である。
【図２４】本発明の実施例に係るエミュレーション装置の入出力ポート制御レジスタを説明するための図である。
【図２５】本発明の実施例に係るエミュレーション装置の割込み制御レジスタを説明するための図である。
【図２６】本発明の実施例に係るエミュレーション装置の入力ポート状態レジスタを説明するための図である。
【図２７】本発明の実施例に係るエミュレーション装置の出力ポート設定レジスタを説明するための図である。
【図２８】本発明の実施例に係るエミュレーション装置のＬＣＤ表示モードレジスタを説明するための図である。
【図２９】本発明の実施例に係るエミュレーション装置のＬＣＤ表示データ・メモリレジスタを説明するための図である。
【図３０】本発明の実施例に係るエミュレーション装置のＬＣＤ表示データ・メモリレジスタとＣＯＭ信号／ＳＥＧ信号の関係を説明するための図である。
【図３１】本発明の実施例に係るエミュレーション装置のＬＣＤパネルの一例を示す図である。
【図３２】本発明の実施例に係るエミュレーション装置の動作の一例を示すフローチャートである。
【図３３】本発明の実施例に係るエミュレーション装置の画面の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００２０】
（第１の実施の形態）
図１は、本発明の実施の形態に係るエミュレーション装置１００の構成を示す機能ブロック図である。
本発明の実施の形態に係るエミュレーション装置１００は、ＡＲＭプロセッサをＰＣ等のコンピュータ上でエミュレーションし、開発対象のＡＲＭプロセッサの組み込み機器をＰＣ上で疑似的に実現させる。開発対象の組み込み機器は、表示器、操作スイッチ、通信装置、またはセンサ等、様々な周辺ハードウェアを組み込むことが想定される。本発明の実施の形態に係るエミュレーション装置１００は、ＡＲＭプロセッサ、メモリ、そして、各種周辺ハードウェアをソフトウェアで構築する。これにより、開発対象の各種組込み機器を、ＰＣ上でソフトウェアとして扱い、簡易に再現し、デバッグすることが可能になる。
【００２１】
ＡＲＭプロセッサは、ＲＩＳＣ（Reduced Instruction Set Computer）で設計するマイクロプロセッサである。ＲＩＳＣは、マイクロプロセッサへの命令を簡略化し、パイプライン処理の効率を高め、処理性能を向上させることができる。このようにＡＲＭプロセッサは、そのプログラムサイズが小さく、プロセッサの実装面積も電力消費量も小さいので、組み込み機器を小型化でき、コストも削減できるので、様々な分野で多岐にわたり利用されている。
【００２２】
組み込み機器の例としては、たとえば、携帯電話などの端末機器をはじめ、携帯情報端末、電子機器、音響機器、家電製品、遊技機、自動販売機、計測機器、昇降機、車輌関連機器等がある。
【００２３】
本発明の実施の形態に係るエミュレーション装置１００は、ＡＲＭプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するエミュレーション装置１００であって、組み込みプログラムを記憶する組み込みプログラム記憶領域１１２、およびＡＲＭプロセッサと周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域１１４を有する記憶装置１１０と、組み込みプログラムを受け付けるプログラム受付部１０２と、組み込みプログラムの命令を組み込みプログラム記憶領域１１２から読み出し、命令の実行時に実行すべき処理が割り当てられた疑似デバイスレジスタ領域１１４にアクセスして、周辺装置の動作を疑似する処理を実行させる実行部１０６と、を備える。
【００２４】
エミュレーション装置１００は、図２に示すように、たとえば、ＣＰＵ（Central Processing Unit）１２０、ＲＡＭ（Random Access Memory）等のメモリ１２２、ハードディスク１２４、およびネットワーク通信部１２６を備え、キーボードやマウス等の入力装置１５０やディスプレイなどの表示装置１５２やプリンタ等の出力装置（不図示）と接続されるサーバコンピュータやパーソナルコンピュータ、またはタブレット端末などのコンピュータ１０（以下、「ＰＣ１０」とも呼ぶ）により実現することができる。エミュレーション装置１００は、入力装置１５０の入力を受け付ける操作受付部１２８と、表示装置１５２の表示制御を行う表示制御部１３０と、をさらに備える。ここで、ネットワーク通信部１２６、操作受付部１２８、および表示制御部１３０は、コンピュータ１０の入出力を制御するＩ／Ｏ部に含まれる。本実施形態のＩ／Ｏ部は、この他に図示されない様々な装置との入出力を制御するＩ／Ｏ部を含んでもよい。また、入力装置１５０および表示装置１５２が一体となったタッチパネル等も備えてもよい。
【００２５】
コンピュータ１０のこれらの各要素は、バス１３４を介して互いに接続され、ＣＰＵ１２０により各要素とともにエミュレーション装置１００全体が制御される。ＣＰＵ１２０が、ハードディスク１２４に記憶されるプログラムをメモリ１２２に読み出して実行することにより、エミュレーション装置１００の図１の各ユニットの各機能を実現することができる。
【００２６】
このように、本実施形態のエミュレーション装置１００の各構成要素は、ＣＰＵ１２０、メモリ１２２、メモリ１２２にロードされた図１の構成要素を実現するプログラム、そのプログラムを格納するハードディスク１２４などの記憶ユニット、ネットワーク接続用インタフェース（ネットワーク通信部１２６）を有する任意のコンピュータ１０のハードウェアとソフトウェアの任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。以下に説明する各図は、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
また、各図において、本発明の本質に関わらない部分の構成については省略してあり、図示されていない。
また、エミュレーション装置１００は、仮想サーバなどにより構成されてもよい。
【００２７】
本実施形態のコンピュータプログラムは、コンピュータ（ＰＣ１０）に、組み込みプログラムを受け付ける手順、組み込みプログラムの命令を組み込みプログラム記憶領域１１２から読み出し、命令の実行時に実行すべき処理が割り当てられた疑似デバイスレジスタ領域１１４にアクセスして、周辺装置（図３の疑似チップ１４または疑似デバイス１６）の動作を疑似する処理を実行させる手順、を実行させるように記述されている。
【００２８】
本実施形態のコンピュータプログラムは、コンピュータで読み取り可能な記録媒体に記録されてもよい。記録媒体は特に限定されず、様々な形態のものが考えられる。また、プログラムは、記録媒体からコンピュータのメモリにロードされてもよいし、ネットワークを通じてコンピュータにダウンロードされ、メモリにロードされてもよい。
【００２９】
本発明の実施の形態に係るエミュレーション装置１００は、上記構成により、ＡＲＭプロセッサをＰＣ１０上でエミュレーションできる。以下、エミュレーションしたＡＲＭプロセッサを図３に示すように、「疑似ＡＲＭ  ＣＰＵ１２」とも呼ぶものとする。そして、開発対象の実機器の組み込みプログラムの動作をＰＣ１０上で再現できるようになっている。
併せて、エミュレーション対象の実機器の周辺ハードウェアを疑似化した、対応する疑似チップ１４または疑似デバイス１６を構成し、ＡＲＭプロセッサの組込み機器の動作をＰＣ１０上で再現して確認できるようにしている。
【００３０】
疑似チップ１４とは、疑似デバイス１６を動作させるために必要なコントローラなどを含む。疑似デバイス１６とは、たとえば、７セグメント、ＬＥＤ、ＬＣＤ等の表示器、メーター、操作スイッチ、キーパッド、ボタン、レバー、ランプ、ブザー、スピーカ、各種センサ、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）、モータ等、組み込み機器に組み込まれるべき様々なデバイスを含むことができる。
【００３１】
このように、本発明のエミュレーション装置１００は様々な構成の組み込み機器を実機に替えてＰＣ１０上で再現できるので、各種組み込み機器の開発ツールとしてだけでなく、組み込みシステムの開発技術の教育ツールとしても利用できる。
【００３２】
図１のプログラム受付部１０２は、ＰＣ１０のＩ／Ｏ部を介して開発対象の組み込みプログラムを受け付ける。開発対象の組み込みプログラムは、ＰＣ１０または他のコンピュータ上で所定の言語（たとえば、Ｃ言語等）で記述され、コンパイルされた後の実行形式のプログラムである。実際の組み込み機器では、組み込みプログラムは、ＥＰＲＯＭ（Erasable Programmable Read Only Memory）などに書き込まれて機器に組み込まれ、機器のＲＡＭ（Random Access Memory）にロードされた後、ＡＲＭプロセッサにより実行される。
【００３３】
本実施形態では、この組み込みプログラムの開発作成途中または動作試験時などに、プログラム受付部１０２が、組み込みプログラムをＰＣ１０に取り込む。プログラムの取り込み方法は、特に限定されず、たとえば、ＵＳＢメモリなどの記録媒体に書き込んだものを読み込んでもよいし、ネットワーク３（図２）を介して他の記憶装置などから読み込んでもよい。
【００３４】
プログラム受付部１０２が読み込んだ組み込みプログラムは、記憶装置１１０の組み込みプログラム記憶領域１１２に格納される。記憶装置１１０は、図２のメモリ１２２に相当する。プログラム受付部１０２が読み込んだ組み込みプログラムは、一旦、図２のハードディスク１２４に格納されてもよい。そして、本発明の実施の形態のプログラムがエミュレーション装置１００を実現する時に、図２のハードディスク１２４から組み込みプログラムを、図２のメモリ１２２にロードすることができる。
【００３５】
上述したように、開発対象の組み込み機器は、ＡＲＭプロセッサと、メモリと、各種周辺ハードウェアとを備える。
エミュレーション装置１００の記憶装置１１０の疑似デバイスレジスタ領域１１４には、ＡＲＭプロセッサと周辺装置の動作を疑似する処理が割り当てられる。
【００３６】
本実施形態では、ＰＣ１０上で、組み込み機器をエミュレーションするために、組み込み機器のメモリを疑似する疑似メモリ２０の領域をＰＣ１０上に確保する。図４にこの疑似メモリ２０のメモリマップの一例を示す。
【００３７】
図４によれば、疑似メモリ２０は、ベクタ・テーブル領域２２と、デバイス領域２４と、プログラム領域２６と、を有する。図４のメモリマップは一例であり、これに限定されるものではない。
ベクタ・テーブル領域２２は、疑似ＡＲＭ  ＣＰＵ１２において、例外発生により分岐するときのプログラムのスタートアドレスを格納する。
【００３８】
デバイス領域２４は、疑似デバイス１６または疑似チップ１４等の疑似周辺ハードウェア毎に、命令実行時の動作を模擬する処理がレジスタビットにそれぞれ割り当てられたレジスタの領域を含む。レジスタ毎に、各ビットの動作を模擬する処理が予め定義される。たとえば、表示器への表示命令が実行された時、実行部１０６が命令に対応するレジスタビットにアクセスすることで、ＰＣ１０で命令に対応する表示処理を再現するようになっている。このデバイス領域２４は、図１の疑似デバイスレジスタ領域１１４に相当する。
【００３９】
本実施形態では、疑似ＡＲＭ  ＣＰＵ１２が直接アクセス（メモリのＲｅａｄ／Ｗｒｉｔｅ）するメモリを模擬するデバイス領域を、疑似チップ・レジスタと呼ぶ。疑似チップ・レジスタは、図４の疑似メモリ２０のデバイス領域２４に配置される。
なお、本実施形態では、この疑似チップ・レジスタを保持するチップを疑似チップ１４（図３）と呼び、その他のデバイス（疑似デバイス１６（図３）と呼称）と区別している。
【００４０】
プログラム領域２６は、組み込みプログラムがロードされる領域を含む。このプログラム領域２６は、図１の組み込みプログラム記憶領域１１２に相当する。
【００４１】
上述のような構成において、本発明の実施の形態に係るエミュレーション方法を以下に説明する。図５は、本実施形態のエミュレーション装置１００の動作の一例を示すフローチャートである。
【００４２】
本発明の実施の形態に係るエミュレーション方法は、コンピュータ（図３のＰＣ１０）が、組み込みプログラムを受け付け（図５のステップＳ１１）、組み込みプログラムをプログラム記憶領域（図１の組み込みプログラム記憶領域１１２）から命令を読み出し（図５のステップＳ１３）、命令の実行時に実行すべき処理が割り当てられた疑似デバイスレジスタ領域１１４（図１）にアクセスして（図５のステップＳ１５）、周辺装置（図３の疑似デバイス１６または疑似チップ１４）の動作を疑似する処理を実行させる（図５のステップＳ１７）。
【００４３】
具体的には、まず、プログラム受付部１０２が組み込みプログラムを受け付け、組み込みプログラム記憶領域１１２にロードし展開する（ステップＳ１１）。
そして、実行部１０６が、組み込みプログラムの命令を組み込みプログラム記憶領域１１２から読み出して順に実行することとなる（ステップＳ１３）。
その際、実行部１０６は、命令を、その命令の実行時にアクセスすべき、周辺装置の動作を模擬する処理が割り当てられた疑似デバイスレジスタ領域１１４のレジスタビットに変換し、そのレジスタビットにアクセスする（ステップＳ１５）。そして、実行部１０６は、アクセスされたレジスタビットに応じて、周辺装置（図３の疑似デバイス１６または疑似チップ１４）の動作を疑似する処理を実行して、組み込み機器の動作を再現する（ステップＳ１７）。
なお、ステップＳ１３およびステップＳ１５は、組み込みプログラムの命令や割り込み発生毎に繰り返し行うことができる。
【００４４】
本発明のエミュレーション装置１００は、組み込みプログラムの命令は、１ステップずつ実行したり、ステップを指定して実行したり、途中で停止させたりしながら、実行状態を確認することができるユーザインタフェース部を備えることができる。たとえば、疑似デバイスレジスタ領域１１４のレジスタのビットの値を提示したり、組み込みプログラムの各ステップを確認しながら、その実行結果の応答を確認できるように提示したりしてもよい。
【００４５】
また、本発明の実施の形態に係るエミュレーション装置１００は、ＡＲＭプロセッサを組み込んだ機器の開発技術の教育ツールに適用してもよい。すなわち、組み込み機器の開発支援システムは、エミュレーション装置１００を備えることができる。
【００４６】
以上説明したように、本発明によれば、組み込み機器の周辺装置のハードウェアを疑似チップ１４または疑似デバイス１６に対する組み込みプログラムの命令実行時に、疑似デバイスレジスタ領域１１４の該当レジスタビットにアクセスすることで、命令による組み込み機器の動作をＰＣ１０上で再現させることができる。このように、ソフトウェアで周辺装置のハードウェアの動作を再現できるので、様々な周辺装置を組み合わせた組み込み機器を再現できる。組み込み機器の開発時には、組み込みプログラムのデバッグを、実機を用いずに行うことができるので、作業効率が向上するとともに、コストを抑えることができる。また、組み込みシステムの開発技術の教育時にも、実機に対応する専用の機器を準備する必要がなく、ＰＣ１０のみで様々な種類の組み込み機器をエミュレーションできる。
【００４７】
（第２の実施の形態）
図６は、本発明の実施の形態に係るエミュレーション装置２００の構成を示す機能ブロック図である。
本実施形態のエミュレーション装置２００は、上記実施の形態とは、周辺装置の入出力を模擬し、周辺装置の動作を確認可能なユーザインタフェースを提供する点で相違する。
【００４８】
図６に示すように、本実施形態のエミュレーション装置２００は、図１の上記実施形態のエミュレーション装置１００と同様な構成を有するとともに、さらに、入出力模擬部２０２を備える。
疑似デバイスレジスタ領域１１４に割り当てられた周辺装置（図３の疑似チップ１４または疑似デバイス１６）の動作を疑似する処理は、周辺装置（図３の疑似チップ１４または疑似デバイス１６）の操作または動作に対応する入力または出力を模擬する処理を含む。
入出力模擬部２０２は、周辺装置（図３の疑似チップ１４または疑似デバイス１６）の入力または出力の模擬結果を、周辺装置（図３の疑似チップ１４または疑似デバイス１６）の操作または動作として確認可能なユーザインタフェースを周辺装置（図３の疑似チップ１４または疑似デバイス１６）毎に提供する。
入出力模擬部２０２が、周辺装置（図３の疑似チップ１４または疑似デバイス１６）の構成に従って、ユーザインタフェースを組み合わせ、組み込み機器の各周辺装置（図３の疑似チップ１４または疑似デバイス１６）の入力または出力を模擬し、組み込み機器の周辺装置（図３の疑似チップ１４または疑似デバイス１６）の操作または動作を確認できるユーザインタフェースを提供する。
【００４９】
入出力模擬部２０２は、図２のＰＣ１０のディスプレイ装置などの表示装置１５２に、組み込み機器に組み込まれる周辺装置（図３の疑似チップ１４または疑似デバイス１６）を模擬する画像を形成して画面に表示してもよい。組み込み機器の周辺装置（図３の疑似チップ１４または疑似デバイス１６）を模擬する画像は、たとえば、組み込み機器の外観を描画し、組み込み機器に備わっている表示器、操作スイッチなどの周辺装置のハードウェアを再現させる画像でもよい。組み込み機器の各周辺装置のハードウェアの動作状態が分かればよく、特に、外観を再現しなくてもよい。
【００５０】
さらに、入出力模擬部２０２は、組み込み機器の操作スイッチの操作を図２のＰＣ１０のキーボードやマウスなどから模擬操作できるようになっている。たとえば、組み込み機器の操作スイッチに対応する操作ボタンの画像を図２の表示装置１５２の画面に表示し、図２の入力装置１５０を用いた操作を図２の操作受付部１２８が受け付ける。操作受付部１２８が受け付ける操作は、疑似デバイス１６または疑似チップ１４への操作に対応付けることができる。これらの操作は、実行部１０６により、疑似ＡＲＭ  ＣＰＵ１２への割り込みや命令に対応する図３のデバイス領域２４またはベクタ・テーブル領域２２の所定のビットへのアクセスに変換される。そして、実行部１０６が、アクセスされたビット毎に定義された処理を実行して疑似デバイス１６または疑似チップ１４の入力または出力を模擬する。この実行結果に基づいて、入出力模擬部２０２がさらに、表示装置１５２の画面に再現して提示する。
【００５１】
このように構成された本発明の実施の形態に係るエミュレーション装置２００の動作について、以下説明する。
図７は、本実施形態のエミュレーション装置２００の動作の一例を示すフローチャートである。
図７に示すように、本実施形態のエミュレーション装置２００は、図５の上記実施形態のエミュレーション装置１００のフローチャートと同様なステップＳ１１〜ステップＳ１７を有するとともに、さらに、ステップＳ２１およびステップＳ２３を有する。
【００５２】
上記実施形態と同様のステップＳ１７の後、コンピュータ（エミュレーション装置２００（図３のＰＣ１０））が、周辺装置（図３の疑似デバイス１６または疑似チップ１４）の入力または出力を模擬する処理の結果に基づいて、周辺装置（図３の疑似デバイス１６または疑似チップ１４）の操作または動作を確認できるユーザインタフェースを周辺装置（図３の疑似デバイス１６または疑似チップ１４）毎に提供し（ステップＳ２１）、周辺装置（図３の疑似デバイス１６または疑似チップ１４）の構成に従って、ユーザインタフェースを組み合わせ、組み込み機器の各周辺装置（図３の疑似デバイス１６または疑似チップ１４）の入力または出力を模擬し、組み込み機器の周辺装置（図３の疑似デバイス１６または疑似チップ１４）の操作または動作を確認できるユーザインタフェースを提供する（ステップＳ２３）。
【００５３】
具体的には、組み込みプログラムを実行したときの、疑似デバイスレジスタ領域１１４へのアクセス結果に基づいて、入出力模擬部２０２が、周辺装置の操作または動作に対応する入力または出力を模擬し、ユーザインタフェース部、すなわち、表示装置１５２の画面等に提示する（ステップＳ２１）。たとえば、入出力模擬部２０２は、組み込み機器に操作スイッチやＬＣＤなどの周辺装置が組み込まれる構成を有する例の場合、操作スイッチやＬＣＤの画像等を表示装置１５２の画面に表示する。そして、入力装置１５０を用いて画面上で操作した、組み込み機器の操作スイッチの操作を操作受付部１２８が受け付け、組み込み機器への入力とする。そして、入力に対し、実行部１０６が、組み込みプログラムに従い、該当する疑似デバイスレジスタ領域１１４にアクセスし（ステップＳ１５）、周辺装置の動作が模擬され、たとえば、その結果、組み込み機器のＬＣＤに画面が表示される（ステップＳ１７）。このとき、入出力模擬部２０２が、表示させるべき画面を組み込み機器のＬＣＤに表示させた画像を、表示装置１５２に表示させること等で、周辺装置の入出力を模擬して提示することができる（ステップＳ２３）。
なお、ステップＳ１３、ステップＳ１５、およびステップＳ２１、ステップＳ２３等は、命令や割り込み発生毎に繰り返し行うことができる。
また、入出力模擬部２０２は、上述したように、ユーザの操作を受け付けることで発生する割り込みに従い、組み込みプログラムが実行する命令に対しても、ステップＳ１３、ステップＳ１５、およびステップＳ２１、ステップＳ２３等の動作を行うことができる。
【００５４】
以上説明したように、本発明の実施の形態によれば、上記実施形態と同様な効果を奏するとともに、さらに、エミュレーション対象の組み込み機器を構成する周辺機器の動作をシミュレーションしてユーザに提示できるので、組み込み機器の動作確認の効率がより向上する。また、組み込み機器の教育ツールとしても、技術理解をより促進できる。
【００５５】
（第３の実施の形態）
図８は、本発明の実施の形態に係るエミュレーション装置２５０の構成を示す機能ブロック図である。
本実施形態のエミュレーション装置２５０は、上記実施の形態とは、組み込み機器の搭載可能な予め複数種類の周辺装置を疑似デバイスレジスタ領域に割り当て、周辺装置を選択して組み込み機器をカスタマイズしてエミュレーションできる点で相違する。本実施形態のエミュレーション装置２５０は、図６の実施形態のエミュレーション装置２００の構成に加え、さらに、構成受付部２５２を備える。なお、本実施形態のエミュレーション装置２５０は、図１の上記実施形態のエミュレーション装置１００の構成に、さらに、構成受付部２５２を備えた構成としてもよい。
【００５６】
本実施形態において、記憶装置１１０は、組み込み機器に組み込み可能な複数種類の周辺装置毎に、周辺装置（疑似チップ１４または疑似デバイス１６）の動作を疑似する処理をそれぞれ割り当てた複数の疑似デバイスレジスタ領域１１４ａ、１１４ｂ、および１１４ｃを有し、エミュレーション対象の組み込み機器に組み込む周辺装置の構成を受け付ける構成受付部２５２をさらに備える。
なお、図では、３つの周辺装置に対応する３つの疑似デバイスレジスタ領域１１４ａ、１１４ｂ、および１１４ｃを示しているが、これに限定されるものではない。少なくとも１つの周辺装置に対応する疑似デバイスレジスタ領域１１４を含むことができる。また、本実施形態では、特に区別する必要がない場合、疑似デバイスレジスタ領域１１４と呼ぶものとする。
受け付けた周辺装置の構成に従って、実行部１０６が、該当する周辺装置の疑似デバイスレジスタ領域１１４を、組み込みプログラムの実行時に使用し、周辺装置の構成をカスタマイズした前記組み込み機器をエミュレーションする。
【００５７】
すなわち、本実施形態のエミュレーション装置２５０では、図３のデバイス領域２４に、各種の周辺装置（疑似チップ１４または疑似デバイス１６）毎に、複数のレジスタ領域を予め確保しておく。そして、構成受付部２５２が受け付けた組み込み機器の周辺装置の構成に基づいて、実行部１０６は、組み込む周辺装置に対応するレジスタ領域のみを使用するように制御する。
【００５８】
構成受付部２５２は、たとえば、図９（ａ）に示すような、周辺装置構成選択画面２６０に提示される複数の周辺装置（疑似ハードウェア）の中から選択することができる。図９（ａ）に示すように、周辺機器リスト２６２の中から周辺装置を選択した時（図中、反転表示部２６４）、選択された周辺装置に対応する疑似チップ１４と疑似デバイス１６がさらに疑似デバイス確認画面２７２に表示されてもよい。また、このとき、図９（ｂ）に示すように、選択された周辺装置の外観を示す周辺装置画像２８０を画面上に表示してもよい。
さらに、図１０に示すように、本実施形態のエミュレーション装置２５０において、構成受付部２５２は、組み込み機器の構成を編集する編集画面２９０を表示し、編集画面２９０上で周辺装置の構成の編集を受け付けることができる。
【００５９】
このように構成された本実施形態のエミュレーション装置２５０では、エミュレーション対象の組み込み機器の周辺装置の構成を選択して動作を確認することができる。
すなわち、構成受付部２５２が受け付けた周辺装置の構成に従って、予め定義されている疑似デバイスレジスタ領域１１４の中から、選択された周辺装置に対応する疑似デバイスレジスタ領域１１４を使用して、実行部１０６が組み込み機器をエミュレーションすることができる。
ユーザは、周辺装置の構成を編集しながら、組み込み機器の構成をカスタマイズして、組み込み機器のエミュレーションを行うことができる。そして、カスタマイズした組み込み機器の周辺装置は、画面上にその入出力を模擬するユーザインタフェースを表示できるので、組み込み機器を疑似的に操作したり、動作させたりすることができる。
【００６０】
以上説明したように、本実施形態のエミュレーション装置２５０によれば、上記実施形態と同様な効果を奏するとともに、さらに、実機や専用の装置を用いずに、ＰＣ１０のみで様々な周辺装置を組み合わせながら、組み込み機器のエミュレーションを行うことが可能になる。効率よく低コストで組み込み機器のエミュレーションを実現できる。
ＡＲＭプロセッサを利用した組み込みシステムの開発支援システムとして、効率よく低コストで組み込み機器のエミュレーションを実現できる。または、本発明は、組み込み機器の教育支援システムとして、操作性もよく、組み込み機器の開発技術の習得に大きく貢献でき得る。
【００６１】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【００６２】
たとえば、上記各実施形態において、エミュレーション装置は、さらに、組み込みプログラムの命令と、実行部１０６による命令の実行結果をモニタする画面を図２の表示装置１５２に表示させる表示部をさらに備えてもよい。表示部は、さらに、疑似メモリ２０をモニタする画面を図２の表示装置１５２に表示させてもよい。特に、疑似チップ１４または疑似デバイス１６の疑似デバイスレジスタ領域１１４の状態をそれぞれモニタする画面を図２の表示装置１５２に表示させてもよい。
【００６３】
また、上記各実施形態において、エミュレーション装置は、さらに、組み込みプログラムの命令と、実行部１０６による命令の実行結果、または、疑似デバイス１６の疑似メモリ２０の情報を出力する出力部をさらに備えてもよい。これらの情報は、たとえば、所定の形式のファイルとしてＰＣ１０のハードディスク１２４またはＰＣ１０に接続された他の記憶装置に出力してもよいし、ＰＣ１０に接続されたプリンタなどの印字出力装置に出力され、印字されてもよい。
【実施例】
【００６４】
（実施例１）
上記説明した本発明の実施の形態に係るエミュレーション装置の実施例として、組み込み機器としてストップウォッチを例に、以下、図８〜図３２を用いて説明する。
本実施例では、図８の上記実施形態のエミュレーション装置２５０を用いて、組み込み機器のストップウォッチ３００をエミュレートするものとする。本実施例では、エミュレーション装置２５０は、図２で説明したコンピュータ１０として、汎用のパーソナルコンピュータを用いる。
【００６５】
図１１は、本実施例のエミュレーション装置２５０のエミュレーション対象として、ストップウォッチ３００を組み込み機器の例とした時の構成を示すブロック図である。
図１１に示すように、ストップウォッチ３００は、疑似ＡＲＭ  ＣＰＵ１２と、ＲＡＭ（Random Access Memory）３０４と、割込みコントローラ３０６と、インターバル・タイマ３０８と、ＩＮＰＵＴコントローラ３１０と、ＬＣＤ（Liquid Crystal Display）コントローラ３１２と、ＬＣＤ３１４と、を備える。図では、ストップウォッチ３００の各構成要素は、バス３１６を介して接続される。
【００６６】
本実施例のエミュレーション装置２５０において、実行部１０６は、疑似ＡＲＭ  ＣＰＵ１２により実行される組み込みプログラムの周辺装置（図１１のＲＡＭ３０４、割込みコントローラ３０６、インターバル・タイマ３０８、ＩＮＰＵＴコントローラ３１０、ＬＣＤコントローラ３１２等）への制御を、エミュレーション装置２５０のメモリ（図４の疑似メモリ２０）へのアクセスにて実現する。
【００６７】
図１２は、本実施例のエミュレーション装置２５０の表示装置１５２（図２）に表示される組み込み機器エミュレート中の画面を示す図である。本図では、組み込み機器がストップウォッチ３００の場合の例を示している。
本実施例では、エミュレーションを操作し、その結果を表示するエミュレーション画面４００と、エミュレーション対象のストップウォッチ３００の状態を表示する組み込み機器操作画面４１０と、を画面表示できるものとする。画面構成や表示内容は、一例であり、これに限定されるものではない。たとえば、組み込み機器操作画面４１０では、ストップウォッチ外観図４１２として、実機を模擬した画像を表示しているが、外観は必ずしも必要ではなく、各種操作ボタンと表示器を模擬する画像が表示されればよい。
【００６８】
具体的には、エミュレーション画面４００は、レジスタ状態欄４０２と、メモリ状態欄４０４と、ＣＰＵ状態欄４０６と、を有する。さらに、エミュレーション画面４００は、エミュレーション操作を受け付ける各種操作ボタンや、各種メッセージを表示する表示部を設けることができる。特に、警告メッセージ表示等は、ユーザに注意喚起を促すために、別ウインドウでポップアップ表示するなどしてもよい。
【００６９】
レジスタ状態欄４０２は、エミュレート中の疑似デバイス１６のレジスタの値を表示する。メモリ状態欄４０４は、エミュレート中の疑似デバイス１６のＲＡＭ３０４の状態を表示する。ＣＰＵ状態欄４０６は、疑似ＡＲＭ  ＣＰＵ１２の状態を表示する。
【００７０】
組み込み機器操作画面４１０は、ストップウォッチ３００のストップウォッチ外観図４１２の画像が表示され、実機のストップウォッチ３００の各種操作ボタンに対応するＬＡＰボタン４１４、スタート／ストップボタン４１６、リセットボタン４２０、およびモードボタン４２２、さらに、ＬＣＤ４１８の画像が表示される。
ＰＣ１０の入力装置１５０を用いて、これらの各種操作ボタンに対応する画像を操作すると、操作を受け付け、ストップウォッチ３００の動作をエミュレートすることができるようになっている。
【００７１】
さらに、ＬＣＤ４１８には、エミュレートされたストップウォッチ３００の動作結果が表示されるようになっている。このように、組み込み機器操作画面４１０上で、ストップウォッチ３００の各種ボタンを操作でき、かつ、操作に基づくストップウォッチ３００の動作をＬＣＤ４１８の表示で確認することができる。
【００７２】
さらに、エミュレーション画面４００では、疑似デバイス１６の疑似ＡＲＭ  ＣＰＵ１２、ＲＡＭ３０４、さらに、疑似デバイスレジスタ領域１１４の状態を、ストップウォッチ３００の動作に応じて確認できる。
【００７３】
本実施例では、図４で説明した疑似メモリ２０を予め定義する。
疑似メモリ２０のメモリ構成は、図４で説明したように、ベクタ・テーブル領域２２と、デバイス領域２４と、プログラム領域２６と、を含む。
【００７４】
図１３に、本実施例のベクタ・テーブル領域２２の構成を示す。
本実施例では、図４で示した疑似メモリ２０の００００００００Ｈ〜００００００３ＦＨ番地の６４バイト領域は、ベクタ・テーブル領域２２として予約される。ベクタ・テーブル領域２２は、疑似ＡＲＭ  ＣＰＵ１２における例外発生により分岐するときのプログラム・スタート・アドレスを格納する。
ベクタ・テーブルには、３２ビットアドレスで設定する。
【００７５】
図１４に、本実施例のデバイス領域２４の構成を一覧で示す。
本実施例では、図４で示した疑似メモリ２０の０００１００００Ｈ〜０００１ＦＦＦＦＨ番地の６４Ｋバイト領域はデバイス領域２４として予約されている。この領域にはチップ・レジスタが配置される。チップ・レジスタは、３２ビット境界で整列され配置される。アクセスサイズ等の詳細は、図１６〜図２９を用いてチップ・レジスタ毎に後述する。
【００７６】
図１４に示すように、デバイス領域２４には、疑似チップ１４または疑似デバイス１６のレジスタ領域が予約される。たとえば、周辺装置（周辺機器）として、ＬＣＤコントローラ、ランプ、ブザー、ＬＥＤ、７セグメント表示器（図中、「７セグ表示器」と示す）が予約されている。その他、データ収集の疑似チップ１４として、Ｄ／ＡコントローラやＡ／Ｄコントローラ、入出力ポートとして、ＵＡＲＴや割り込み対応の入出力ポート、タイマ、割り込みコントローラ等が予約されている。
【００７７】
本実施例では、図４の疑似メモリ２０の０８００００００Ｈ〜０８ＦＦＦＦＦＦＨ番地の１２８Ｍバイト領域を、プログラム領域２６として使用する。
【００７８】
本実施例のエミュレーション装置２５０において、ストップウォッチ３００内、疑似ＡＲＭ  ＣＰＵ１２におけるクロックは仮想的に定義する。
本実施例において、図４のデバイス領域２４は、クロック制御レジスタは含まない。クロック周波数は、組み込み機器の初期設定により決定する。
疑似チップ１４または疑似デバイス１６は、エミュレーション装置２５０のＰＣ１０から疑似ＡＲＭ  ＣＰＵ１２に供給されるクロックを基準として、クロック分周して動作する。
【００７９】
以下、各疑似チップ１４または疑似デバイス１６の詳細について説明する。
（割込みコントローラ３０６）
割込みコントローラ３０６について、以下説明する。
＜機能＞
要求された割込みを保持し、疑似ＡＲＭ  ＣＰＵ１２への割り込み（ＩＲＱ）通知を行う。
【００８０】
＜チップ・レジスタ＞
割込みコントローラ３０６は、図４のデバイス領域２４に、割込み要求フラグ・レジスタ、割込み要求フラグ・レジスタ、割込みイネーブル・フラグ・レジスタ、および割込みクリア・レジスタを含むチップレジスタとして割り当てられる。
【００８１】
［割込み要求フラグ・レジスタ］
割込み要求フラグは、割込み要求の状況を保持するフラグである。対応する割込み要求の発生あるいは命令によりセットされ、割込み要求の受付け時、ＲＥＳＥＴ入力時、あるいは命令の実行によりクリアされる。
同時に複数の割込み要求がセットされている場合、ビット番号の小さい要求から受付けられる。
割込み要求フラグ・レジスタの詳細を図１６に示す。
図１６（ａ）は、割込み要求フラグ・レジスタの構成を示す。
図１６（ｂ）は、割込み要求フラグ・レジスタの属性を示す。
図１６（ｃ）は、割込み要求フラグ・レジスタの機能を示す。
【００８２】
［割込み要因フラグ・レジスタ］
割り込み要因フラグは、受付けた割り込み要因を保持するフラグである。割込み受付け時にセットされ、ＲＥＳＥＴ入力時あるいは命令の実行によりクリアされる。割り込み要因がセットされていると以後の割込み受付けは抑制される。
割込み要因フラグ・レジスタの詳細を図１７に示す。
図１７（ａ）は、割込み要因フラグ・レジスタの構成を示す。
図１７（ｂ）は、割込み要因フラグ・レジスタの属性を示す。
図１７（ｃ）は、割込み要因フラグ・レジスタの機能を示す。
【００８３】
［割込みイネーブル・フラグ・レジスタ］
割込みイネーブル・フラグは、対応割込みの許可／禁止をプログラムから設定する。割込み許可する場合にセットし、禁止する場合にクリアする。
割込みイネーブル・フラグ・レジスタの詳細を図１８に示す。
図１８（ａ）は、割込みイネーブル・フラグ・レジスタの構成を示す。
図１８（ｂ）は、割込みイネーブル・フラグ・レジスタの属性を示す。
図１８（ｃ）は、割込みイネーブル・フラグ・レジスタの機能を示す。
【００８４】
［割込みクリア・レジスタ］
割込み要因をプログラムからクリアするレジスタである。このレジスタに書込むことで現在の割込み要因および割り込み要求はクリアされる。
割込みクリア・レジスタの詳細を図１９に示す。
図１９（ａ）は、割込みクリア・レジスタの構成を示す。
図１９（ｂ）は、割込みクリア・レジスタの属性を示す。
図１９（ｃ）は、割込みクリア・レジスタの機能を示す。
【００８５】
＜動作＞
割込みコントローラ３０６の動作を以下に示す。
（１）  割込み対応入力ポートおよびインターバル・タイマの割込み要求（内部ポート）を割込み要求フラグに反映。
割込みイネーブル・フラグがクリアされている要求はセットされない。
この処理で内部ポートは自動的にクリアされる（要求セットの有無は無関係）。
（２）  割込み要求フラグにセットされている要求がある場合疑似ＡＲＭ  ＣＰＵ１２に割り込みを通知。
割込み要求フラグはビット番号が小さい要求から処理する。
割込み許可フラグがクリアされている場合、当該要求は処理せず要求フラグをクリアする。
疑似ＡＲＭ  ＣＰＵ１２が割込みを受付けた場合は割込み要求フラグをクリアし、割込み要因フラグをセットする。
割込み要因フラグがセットされている場合は、疑似ＡＲＭ  ＣＰＵ１２に対する割込み通知は行われない。
【００８６】
＜疑似ＡＲＭ  ＣＰＵ１２の割込み（ＩＲＱ）動作＞
ステータスレジスタ（ＣＰＳＲ）のＩビットがセットされている場合は、割込み（ＩＲＱ）を受付けない。割込みを有効にするには、特権モードでＩビットをクリアする。
疑似ＡＲＭ  ＣＰＵ１２のステータスレジスタと、ステータスフラグの構成を図２０に示す。
図２０（ａ）は、疑似ＡＲＭ  ＣＰＵ１２のステータスレジスタ構成を示す。
図２０（ｂ）は、疑似ＡＲＭ  ＣＰＵ１２のステータスフラグ構成を示す。
図２０（ｃ）は、疑似ＡＲＭ  ＣＰＵ１２のステータスフラグの説明を示す。
【００８７】
ＩＲＱを受付けた場合のＣＰＵ動作を以下に示す。
（１）  Ｒ１４＿ｉｒｑ  に次実行命令アドレス＋４をセット
（２）  ＳＰＳＲ＿ｉｒｑ  に現ステータスレジスタ（ＣＰＳＲ）をコピー
（３）  ステータスレジスタ（ＣＰＳＲ）  のＣＰＵモードにＩＲＱモードをセット
（４）  ステータスレジスタ（ＣＰＳＲ）  のＴビットをクリア（ＡＲＭ命令セット）
（５）  ステータスレジスタ（ＣＰＳＲ）  のＩビットをセット（ＩＲＱ禁止）
（６）  ステータスレジスタ（ＣＰＳＲ）  の  Ａビットをセット（データアボート禁止）
（７）  ベクタアドレス（０ｘ００００００１８）へジャンプ
【００８８】
ここで、ＩＲＱ処理を行う。
次の割込みを受付けるためには、割込みコントローラの割込み要因をクリアする必要がある。
割込み要因がセットされていると、次の割込みが抑制される。
【００８９】
＜割込み要因＞
割込み要因には、デジタル信号入力ポート（８点）およびインターバル・タイマの２種類がある。
【００９０】
（インターバル・タイマ３０８）
インターバル・タイマ３０８について、以下説明する。
＜機能＞
設定した周期で割込み要求をセットする。
【００９１】
＜チップ・レジスタ＞
インターバル・タイマ３０８は、図４のデバイス領域２４に、カウンタ・レジスタ、インターバル設定レジスタ、およびインターバル・タイマ制御レジスタを含むチップレジスタとして割り当てられる。
【００９２】
［カウンタ・レジスタ］
カウンタ・レジスタは、インターバル・タイマ３０８のカウント値を保持する１６ビットのレジスタである。
カウンタ・レジスタの詳細を図２１に示す。
図２１（ａ）は、カウンタ・レジスタの構成を示す。
図２１（ｂ）は、カウンタ・レジスタの属性を示す。
図２１（ｃ）は、カウンタ・レジスタの機能を示す。
【００９３】
［インターバル設定レジスタ］
インターバル設定レジスタは、インターバル・タイマ３０８のインターバルを設定する１６ビットのレジスタである。
インターバル設定レジスタの詳細を図２２に示す。
図２２（ａ）は、インターバル設定レジスタの構成を示す。
図２２（ｂ）は、インターバル設定レジスタの属性を示す。
図２２（ｃ）は、インターバル設定レジスタの機能を示す。
【００９４】
［インターバル・タイマ制御レジスタ］
インターバル・タイマ制御レジスタは、インターバル・タイマ３０８のインターバル・タイマを制御する１６ビットのレジスタである。
インターバル・タイマ制御レジスタの詳細を図２３に示す。
図２３（ａ）は、インターバル・タイマ制御レジスタの構成を示す。
図２３（ｂ）は、インターバル・タイマ制御レジスタの属性を示す。
図２３（ｃ）は、インターバル・タイマ制御レジスタの機能を示す。
【００９５】
＜動作＞
インターバル・タイマ３０８の動作を以下に示す。
クロックでタイマをカウントアップし、設定インターバルと比較する。設定インターバルよりタイマが等しいか大きくなったら割込み要求をセットする。このときタイマは自動的に０に戻る。
タイマ動作制御ビットに０を設定するとカウントを一時停止する。
タイマ動作制御ビットに１を設定するとカウントを開始する。このときカウンタはクリアされない。
タイマ・クリアを１に設定すると、カウンタを０にクリアする。カウンタを０にクリアしたタイミングで、チップがレジスタ値を０に書き換える。したがって、タイマ・クリアが１のときはレジスタにＷｒｉｔｅアクセスをしないようにする。
【００９６】
（デジタル信号入出力（ＩＮＰＵＴコントローラ３１０））
ＩＮＰＵＴコントローラ３１０（デジタル信号入出力）について、以下説明する。
＜機能＞
入出力信号８点の状態を保持する。
入力あるいは出力を切り替えることができる。入力として使用する場合、割込みを有効に設定すると、割込みコントローラに割込み要求を出力する。
【００９７】
＜チップ・レジスタ＞
ＩＮＰＵＴコントローラ３１０は、図４のデバイス領域２４に、入出力ポート制御レジスタ、割込み制御レジスタ、入力ポート状態レジスタ、および出力ポート状態レジスタを含むチップレジスタとして割り当てられる。
【００９８】
［入出力ポート制御レジスタ］
入出力ポート制御レジスタは、入出力ポートの有効／無効を設定する１６ビットのレジスタである。
入出力ポート制御レジスタの詳細を図２４に示す。
図２４（ａ）は、入出力ポート制御レジスタの構成を示す。
図２４（ｂ）は、入出力ポート制御レジスタの属性を示す。
図２４（ｃ）は、入出力ポート制御レジスタの機能を示す。
【００９９】
［割込み制御レジスタ］
割込み制御レジスタは、入力ポートの割り込みモードを設定する１６ビットのレジスタである。
出力ポートとして使用する場合は、設定は無視される。
割込み制御レジスタの詳細を図２５に示す。
図２５（ａ）は、割込み制御レジスタの構成を示す。
図２５（ｂ）は、割込み制御レジスタの属性を示す。
図２５（ｃ）は、割込み制御レジスタの機能を示す。
【０１００】
［入力ポート状態レジスタ］
入力ポート状態レジスタは、入力ポートの状態を保持する１６ビットのレジスタである。
入力ポート状態レジスタの詳細を図２６に示す。
図２６（ａ）は、入力ポート状態レジスタの構成を示す。
図２６（ｂ）は、入力ポート状態レジスタの属性を示す。
図２６（ｃ）は、入力ポート状態レジスタの機能を示す。
【０１０１】
［出力ポート設定レジスタ］
出力ポート設定レジスタは、出力ポートの状態を設定する１６ビットのレジスタである。
出力ポート設定レジスタの詳細を図２７に示す。
図２７（ａ）は、出力ポート設定レジスタの構成を示す。
図２７（ｂ）は、出力ポート設定レジスタの属性を示す。
図２７（ｃ）は、出力ポート設定レジスタの機能を示す。
【０１０２】
＜動作＞
ＩＮＰＵＴコントローラ３１０の動作を以下に示す。
入力として使用するポートは以下のように動作する。
システムクロックに同期して、外部入力ポートの状態を入力ポート状態レジスタに保持する。入力ポート制御レジスタで無効と設定されているポートの状態は常に０となる。
割込みが有効な場合、入力ポートの状態が変化したタイミング（立ち上がり、立ち下がり、あるいは両エッジ）で割込みコントローラに割込み要求を通知する。
出力として使用するポートは以下のように動作する。
システムクロックに同期して、出力ポート制御レジスタで有効（出力ポートとして使用する）と設定された出力ポート設定レジスタの設定値を外部ポートに出力する。
【０１０３】
（スイッチ）
疑似デバイス１６として、ストップウォッチ３００は、上述したように、３つのスイッチを有する。しかし、これらのスイッチには、チップレジスタは割り当てない。スイッチが接続されるデジタル信号入力ポート（上記ＩＮＰＵＴコントローラ３１０参照）を対応付ける。
＜機能＞
押している間のみＯＮ状態を保持するスイッチである。離すとＯＦＦ状態に戻る。
【０１０４】
＜チップ・レジスタ＞
上述したとおり、スイッチ自体のデバイス領域２４への割り当てはない。
デジタル信号入力ポートと接続して使用する。
ここでは、３つのスイッチを３つのデジタル信号入力ポートＩＮ０〜ＩＮ３にそれぞれ接続する。
＜動作＞
たとえば、図２６の入力ポート状態レジスタに、スイッチの状態を保持する。接続されているデジタル信号入力ポート経由で、プログラムからスイッチの状態を参照することができる。
【０１０５】
（ＬＣＤ３１４、ＬＣＤコントローラ３１２）
ＬＣＤコントローラ３１２およびＬＣＤ３１４について、以下説明する。
＜機能＞
図１２のＬＣＤ４１８の表示機能を提供する。
【０１０６】
＜チップ・レジスタ＞
ＬＣＤコントローラ３１２およびＬＣＤ３１４は、図４のデバイス領域２４に、ＬＣＤ表示モードレジスタ、およびＬＣＤ表示データ・メモリレジスタを含むチップレジスタとして割り当てられる。
【０１０７】
［ＬＣＤ表示モードレジスタ］
ＬＣＤ表示モードレジスタは、ＬＣＤの表示モードを制御する１６ビットのレジスタである。
ＬＣＤ表示モードレジスタの詳細を図２８に示す。
図２８（ａ）は、ＬＣＤ表示モードレジスタの構成を示す。
図２８（ｂ）は、ＬＣＤ表示モードレジスタの属性を示す。
図２８（ｃ）は、ＬＣＤ表示モードレジスタの機能を示す。
【０１０８】
［ＬＣＤ表示データ・メモリレジスタ］
ＬＣＤ表示データ・メモリレジスタは、ＬＣＤへ表示する内容を格納する１６ビットのレジスタである。
ＬＣＤ表示データ・メモリレジスタの詳細を図２９に示す。
図２９（ａ）は、ＬＣＤ表示データ・メモリレジスタ（０〜１２７）の構成を示す。
図２９（ｂ）は、ＬＣＤ表示データ・メモリレジスタの属性を示す。
図２９（ｃ）は、ＬＣＤ表示データ・メモリレジスタの機能を示す。
【０１０９】
選択されているＣＯＭとセグメントの交点が点灯しＬＣＤ表示を行う。
表示データ・メモリレジスタとＣＯＭ信号／ＳＥＧ信号の関係を、図３０のＬＣＤ表示データ・メモリレジスタとＣＯＭ信号／ＳＥＧ信号の関係に示す。ＣＯＭ信号は表示データ・メモリレジスタのビット（＃０〜＃１５）に接続されている。表示データ・メモリレジスタ０〜１２７のビットにひとつでも‘１’が書き込まれていれば、対応するＣＯＭ信号が選択状態になる。ＳＥＧ信号は表示データ・メモリレジスタ０〜１２７に接続されている。表示データ・メモリレジスタの＃０〜＃１５にひとつでも‘１’が書き込まれていれば、対応するＳＥＧ信号が選択状態となる。
【０１１０】
＜動作＞
ＬＣＤコントローラ３１２およびＬＣＤ３１４の動作を以下に示す。
ＬＣＤ表示モードレジスタのＬＣＤＰに１を設定し、ＬＣＤ表示をＯＮにし、ＬＣＤＳおよびＬＣＤＣを表示領域に合わせて設定する。
設定が完了したら、表示データ・メモリレジスタの点灯したいビットに１を書き込む。
図３１に、ＬＣＤパネルの例（８×１５のＬＣＤパネル）を示す。
【０１１１】
このように構成されたストップウォッチ３００の動作について、以下説明する。
図３２に、ストップウォッチ３００の基本動作シーケンスを示す。
＜ループｌｏｏｐ［常時］＞
まず、アクターとして、オペレータ５００（図中、「Operator」と示す）が、エミュレーション装置２５０を起動し、エミュレーションを開始する（ステップＳ１００）と、ループ［常時］が開始される。
図１２の疑似ＡＲＭ  ＣＰＵ１２のエミュレーション画面４００において、ストップウォッチ３００の処理を記載したロードモジュールをロードし疑似メモリ２０上に命令を展開する。
疑似ＡＲＭ  ＣＰＵ５０４が、疑似メモリ５０６上の命令をフェッチし、デコードする（ステップＳ１１０）。
疑似ＡＲＭ  ＣＰＵ５０４が、疑似メモリ５０６に命令コードを要求し（ステップＳ１１１）、デコードした命令を実行し（ステップＳ１２０）、ロード／ストア命令であれば（ステップＳ１１３）、疑似メモリ５０６にアクセス（Ｒｅａｄ／Ｗｒｉｔｅ）する（ステップＳ１２１）。
疑似メモリ５０６は、疑似チップ５０８へのアクセスであれば（ステップＳ１１５）、該当する疑似チップ５０８に通知する（ステップＳ１２３）。
【０１１２】
そして、疑似メモリ５０６または疑似チップ５０８から疑似ＡＲＭ  ＣＰＵ５０４に、応答が返された後、疑似ＡＲＭ  ＣＰＵ５０４からクロック管理５０２にクロックが通知される（ステップＳ１３０）。通知に従い、クロック管理５０２は、クロック管理を開始する。
【０１１３】
＜タイミング通知（オペレーションｏｐｔ［イベント発生］）＞
クロック管理５０２は、イベント登録されている疑似チップ５０８にタイミングを通知する（ステップＳ２００）。
疑似チップ５０８は、レジスタの内容を解釈して所定の動作（疑似メモリ５０６へのアクセス（Ｒｅａｄ／Ｗｒｉｔｅ）（ステップＳ２１０）や疑似デバイス５１０への通知（ステップＳ２２０）など）を行う。
疑似デバイス５１０は、通知された指令内容を実行し、疑似デバイス５０８に応答を返す（ステップＳ２２１）。
疑似デバイス５０８は、イベント（応答時間）をクロック管理５０２に登録する（ステップＳ２３０）。
【０１１４】
＜タイミング通知（オペレーションｏｐｔ［イベント発生］）＞
クロック管理５０２は、応答時間に達したことを疑似チップ５０８に通知する（ステップＳ３００）。
疑似チップ５０８は、応答内容を解釈し疑似メモリ５０６にアクセス（Ｒｅａｄ／Ｗｒｉｔｅ）する（ステップＳ３１０）。
【０１１５】
（実施例２）
図３３に示すように、疑似デバイス１６または疑似チップ１４を、図１０の編集画面２９０で選択し、編集することで、他の組み込み機器として動作させることができる。
たとえば、ここでは、ＬＣＤ、ボリュームスピーカなどを選択することで、図３３のミュージックプレーヤ３５０をエミュレーションすることが可能になる。
このように、組み込み機器の周辺装置として、疑似チップ１４または疑似デバイス１６を選択して組み込み機器の構成を編集することで、様々な組み込み機器のエミュレーションを行うことが可能になる。
【０１１６】
以上説明したように、本発明によれば、周辺デバイスの動作コードおよび周辺デバイスのカスタマイズにより、別の組み込み機器（別システム）として動作することが可能である。
このことにより、多種に亘る教育が可能であり、組込みシステム開発の理解に効果があると考えられる。
また、実機で動作させる前に、動作確認が可能になり、実機のハードウェアの不具合による動作不良と、ソフトウェアのバグによる動作不良を見極め易くなる。
【０１１７】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１１８】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
ＡＲＭプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するエミュレーション装置を実現するコンピュータが実行するプログラムであって、
前記コンピュータは、前記組み込みプログラムを記憶する組み込みプログラム記憶領域、および前記ＡＲＭプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置を備え、
前記コンピュータに、
前記組み込みプログラムを受け付ける手順、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させる手順を実行させるためのプログラム。
（付記２）
付記１に記載のプログラムにおいて、
前記記憶装置は、前記組み込み機器が組み込み可能な複数種類の周辺装置毎に、前記周辺装置の動作を疑似する処理をそれぞれ割り当てた複数の前記疑似デバイスレジスタ領域を有し、
前記コンピュータに、さらに、
エミュレーション対象の前記組み込み機器に組み込む周辺装置の構成を受け付ける手順、
受け付けた前記周辺装置の構成に従って、該当する前記周辺装置の前記疑似デバイスレジスタ領域を、前記組み込みプログラムの実行時に使用し、前記周辺装置の構成をカスタマイズした前記組み込み機器をエミュレーションする手順を実行させるためのプログラム。
（付記３）
付記１または２に記載のプログラムにおいて、
前記疑似デバイスレジスタ領域に割り当てられた前記周辺装置の動作を疑似する前記処理は、前記周辺装置の操作または動作に対応する入力または出力を模擬する処理を含み、
前記コンピュータに、
前記周辺装置の入力または出力を模擬する処理の結果に基づいて前記周辺装置の操作または動作を確認できるユーザインタフェースを前記周辺装置毎に提供する手順をさらに実行させ、
前記周辺装置の構成に従って、前記ユーザインタフェースを組み合わせ、前記組み込み機器の各前記周辺装置の入力または出力を模擬し、前記組み込み機器の前記周辺装置の操作または動作を確認できるユーザインタフェースを提供するプログラム。
（付記４）
ＡＲＭプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するエミュレーション装置であって、
前記組み込みプログラムを記憶するプログラム記憶領域、および前記ＡＲＭプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置と、
前記組み込みプログラムを受け付けるプログラム受付手段と、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させる実行手段と、を備えるエミュレーション装置。
（付記５）
付記４に記載のエミュレーション装置において、
前記記憶装置は、前記組み込み機器に組み込み可能な複数種類の周辺装置毎に、前記周辺装置の動作を疑似する処理をそれぞれ割り当てた複数の前記疑似デバイスレジスタ領域を有し、
エミュレーション対象の前記組み込み機器に組み込む周辺装置の構成を受け付ける構成受付手段をさらに備え、
前記構成受付手段が受け付けた前記周辺装置の構成に従って、前記実行手段が、該当する前記周辺装置の前記疑似デバイスレジスタ領域を、前記組み込みプログラムの実行時に使用し、前記周辺装置の構成をカスタマイズした前記組み込み機器をエミュレーションするエミュレーション装置。
（付記６）
付記４または５に記載のエミュレーション装置において、
前記疑似デバイスレジスタ領域に割り当てられた前記周辺装置の動作を疑似する前記処理は、前記周辺装置の操作または動作に対応する入力または出力を模擬する処理を含み、
前記周辺装置の入力または出力を模擬する処理の結果に基づいて前記周辺装置の操作または動作を確認できるユーザインタフェースを前記周辺装置毎に提供する入出力模擬手段をさらに備え、
前記入出力模擬手段が、前記周辺装置の構成に従って、前記ユーザインタフェースを組み合わせ、前記組み込み機器の各前記周辺装置の入力または出力を模擬し、前記組み込み機器の前記周辺装置の操作または動作を確認できるユーザインタフェースを提供するエミュレーション装置。
（付記７）
付記４乃至６いずれか一項に記載のエミュレーション装置において、
パーソナルコンピュータ、サーバコンピュータ、またはタブレット端末を用いて実現されるエミュレーション装置。
（付記８）
付記４乃至７いずれか一項に記載のエミュレーション装置を用いた組み込み機器の開発支援システム。
（付記９）
ＡＲＭプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するコンピュータを用いたエミュレーション方法であって、
前記コンピュータは、前記組み込みプログラムを記憶する組み込みプログラム記憶領域、および前記ＡＲＭプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置を備え、
前記コンピュータが、
前記組み込みプログラムを受け付け、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させるエミュレーション方法。
（付記１０）
付記９に記載のエミュレーション方法において、
前記記憶装置は、前記組み込み機器に組み込み可能な複数種類の周辺装置毎に、前記周辺装置の動作を疑似する処理をそれぞれ割り当てた複数の前記疑似デバイスレジスタ領域を有し、
前記コンピュータが、さらに、
エミュレーション対象の前記組み込み機器に組み込む周辺装置の構成を受け付け、
受け付けた前記周辺装置の構成に従って、該当する前記周辺装置の前記疑似デバイスレジスタ領域を、前記組み込みプログラムの実行時に使用し、前記周辺装置の構成をカスタマイズした前記組み込み機器をエミュレーションするエミュレーション方法。
（付記１１）
付記９または１０に記載のエミュレーション方法において、
前記疑似デバイスレジスタ領域に割り当てられた前記周辺装置の動作を疑似する前記処理は、前記周辺装置の操作または動作に対応する入力または出力を模擬する処理を含み、
前記コンピュータが、
前記周辺装置の入力または出力を模擬する処理の結果に基づいて前記周辺装置の操作または動作を確認できるユーザインタフェースを前記周辺装置毎に提供し、
前記周辺装置の構成に従って、前記ユーザインタフェースを組み合わせ、前記組み込み機器の各前記周辺装置の入力または出力を模擬し、前記組み込み機器の前記周辺装置の操作または動作を確認できるユーザインタフェースを提供するエミュレーション方法。
【符号の説明】
【０１１９】
３  ネットワーク
１０  コンピュータ（ＰＣ）
１２  疑似ＡＲＭ  ＣＰＵ
１４  疑似チップ
１６  疑似デバイス
２０  疑似メモリ
２２  ベクタ・テーブル領域
２４  デバイス領域
２６  プログラム領域
１００  エミュレーション装置
１０２  プログラム受付部
１０６  実行部
１１０  記憶装置
１１２  組み込みプログラム記憶領域
１１４  疑似デバイスレジスタ領域
１２０  ＣＰＵ
１２２  メモリ
１２４  ハードディスク
１２６  ネットワーク通信部
１２８  操作受付部
１３０  表示制御部
１３４  バス
１５０  入力装置
１５２  表示装置
２００  エミュレーション装置
２０２  入出力模擬部
２５０  エミュレーション装置
２５２  構成受付部
２６０  周辺装置構成選択画面
２６２  周辺機器リスト
２６４  反転表示部
２７２  疑似デバイス確認画面
２８０  周辺装置画像
２９０  編集画面
３００  ストップウォッチ
３０４  ＲＡＭ
３０６  割込みコントローラ
３０８  インターバル・タイマ
３１０  ＩＮＰＵＴコントローラ
３１２  ＬＣＤコントローラ
３１４  ＬＣＤ
３１６  バス
３５０  ミュージックプレーヤ
４００  エミュレーション画面
４０２  レジスタ状態欄
４０４  メモリ状態欄
４０６  ＣＰＵ状態欄
４１０  組み込み機器操作画面
４１２  ストップウォッチ外観図
４１４  ＬＡＰボタン
４１６  スタート／ストップボタン
４１８  ＬＣＤ
４２０  リセットボタン
４２２  モードボタン
５００  オペレータ
５０２  クロック管理
５０４  疑似ＡＲＭ  ＣＰＵ
５０６  疑似メモリ
５０８  疑似チップ
５１０  疑似デバイス
【図１】
0005979709.tif 000002
【図２】
0005979709.tif 000003
【図３】
0005979709.tif 000004
【図４】
0005979709.tif 000005
【図５】
0005979709.tif 000006
【図６】
0005979709.tif 000007
【図７】
0005979709.tif 000008
【図８】
0005979709.tif 000009
【図９】
0005979709.tif 000010
【図１０】
0005979709.tif 000011
【図１１】
0005979709.tif 000012
【図１２】
0005979709.tif 000013
【図１３】
0005979709.tif 000014
【図１４】
0005979709.tif 000015
【図１５】
0005979709.tif 000016
【図１６】
0005979709.tif 000017
【図１７】
0005979709.tif 000018
【図１８】
0005979709.tif 000019
【図１９】
0005979709.tif 000020
【図２０】
0005979709.tif 000021
【図２１】
0005979709.tif 000022
【図２２】
0005979709.tif 000023
【図２３】
0005979709.tif 000024
【図２４】
0005979709.tif 000025
【図２５】
0005979709.tif 000026
【図２６】
0005979709.tif 000027
【図２７】
0005979709.tif 000028
【図２８】
0005979709.tif 000029
【図２９】
0005979709.tif 000030
【図３０】
0005979709.tif 000031
【図３１】
0005979709.tif 000032
【図３２】
0005979709.tif 000033
【図３３】
0005979709.tif 000034