【実施例】
【0064】
(実施例1)
上記説明した本発明の実施の形態に係るエミュレーション装置の実施例として、組み込み機器としてストップウォッチを例に、以下、
図8〜
図32を用いて説明する。
本実施例では、
図8の上記実施形態のエミュレーション装置250を用いて、組み込み機器のストップウォッチ300をエミュレートするものとする。本実施例では、エミュレーション装置250は、
図2で説明したコンピュータ10として、汎用のパーソナルコンピュータを用いる。
【0065】
図11は、本実施例のエミュレーション装置250のエミュレーション対象として、ストップウォッチ300を組み込み機器の例とした時の構成を示すブロック図である。
図11に示すように、ストップウォッチ300は、疑似ARM CPU12と、RAM(Random Access Memory)304と、割込みコントローラ306と、インターバル・タイマ308と、INPUTコントローラ310と、LCD(Liquid Crystal Display)コントローラ312と、LCD314と、を備える。図では、ストップウォッチ300の各構成要素は、バス316を介して接続される。
【0066】
本実施例のエミュレーション装置250において、実行部106は、疑似ARM CPU12により実行される組み込みプログラムの周辺装置(
図11のRAM304、割込みコントローラ306、インターバル・タイマ308、INPUTコントローラ310、LCDコントローラ312等)への制御を、エミュレーション装置250のメモリ(
図4の疑似メモリ20)へのアクセスにて実現する。
【0067】
図12は、本実施例のエミュレーション装置250の表示装置152(
図2)に表示される組み込み機器エミュレート中の画面を示す図である。本図では、組み込み機器がストップウォッチ300の場合の例を示している。
本実施例では、エミュレーションを操作し、その結果を表示するエミュレーション画面400と、エミュレーション対象のストップウォッチ300の状態を表示する組み込み機器操作画面410と、を画面表示できるものとする。画面構成や表示内容は、一例であり、これに限定されるものではない。たとえば、組み込み機器操作画面410では、ストップウォッチ外観
図412として、実機を模擬した画像を表示しているが、外観は必ずしも必要ではなく、各種操作ボタンと表示器を模擬する画像が表示されればよい。
【0068】
具体的には、エミュレーション画面400は、レジスタ状態欄402と、メモリ状態欄404と、CPU状態欄406と、を有する。さらに、エミュレーション画面400は、エミュレーション操作を受け付ける各種操作ボタンや、各種メッセージを表示する表示部を設けることができる。特に、警告メッセージ表示等は、ユーザに注意喚起を促すために、別ウインドウでポップアップ表示するなどしてもよい。
【0069】
レジスタ状態欄402は、エミュレート中の疑似デバイス16のレジスタの値を表示する。メモリ状態欄404は、エミュレート中の疑似デバイス16のRAM304の状態を表示する。CPU状態欄406は、疑似ARM CPU12の状態を表示する。
【0070】
組み込み機器操作画面410は、ストップウォッチ300のストップウォッチ外観
図412の画像が表示され、実機のストップウォッチ300の各種操作ボタンに対応するLAPボタン414、スタート/ストップボタン416、リセットボタン420、およびモードボタン422、さらに、LCD418の画像が表示される。
PC10の入力装置150を用いて、これらの各種操作ボタンに対応する画像を操作すると、操作を受け付け、ストップウォッチ300の動作をエミュレートすることができるようになっている。
【0071】
さらに、LCD418には、エミュレートされたストップウォッチ300の動作結果が表示されるようになっている。このように、組み込み機器操作画面410上で、ストップウォッチ300の各種ボタンを操作でき、かつ、操作に基づくストップウォッチ300の動作をLCD418の表示で確認することができる。
【0072】
さらに、エミュレーション画面400では、疑似デバイス16の疑似ARM CPU12、RAM304、さらに、疑似デバイスレジスタ領域114の状態を、ストップウォッチ300の動作に応じて確認できる。
【0073】
本実施例では、
図4で説明した疑似メモリ20を予め定義する。
疑似メモリ20のメモリ構成は、
図4で説明したように、ベクタ・テーブル領域22と、デバイス領域24と、プログラム領域26と、を含む。
【0074】
図13に、本実施例のベクタ・テーブル領域22の構成を示す。
本実施例では、
図4で示した疑似メモリ20の00000000H〜0000003FH番地の64バイト領域は、ベクタ・テーブル領域22として予約される。ベクタ・テーブル領域22は、疑似ARM CPU12における例外発生により分岐するときのプログラム・スタート・アドレスを格納する。
ベクタ・テーブルには、32ビットアドレスで設定する。
【0075】
図14に、本実施例のデバイス領域24の構成を一覧で示す。
本実施例では、
図4で示した疑似メモリ20の00010000H〜0001FFFFH番地の64Kバイト領域はデバイス領域24として予約されている。この領域にはチップ・レジスタが配置される。チップ・レジスタは、32ビット境界で整列され配置される。アクセスサイズ等の詳細は、
図16〜
図29を用いてチップ・レジスタ毎に後述する。
【0076】
図14に示すように、デバイス領域24には、疑似チップ14または疑似デバイス16のレジスタ領域が予約される。たとえば、周辺装置(周辺機器)として、LCDコントローラ、ランプ、ブザー、LED、7セグメント表示器(図中、「7セグ表示器」と示す)が予約されている。その他、データ収集の疑似チップ14として、D/AコントローラやA/Dコントローラ、入出力ポートとして、UARTや割り込み対応の入出力ポート、タイマ、割り込みコントローラ等が予約されている。
【0077】
本実施例では、
図4の疑似メモリ20の08000000H〜08FFFFFFH番地の128Mバイト領域を、プログラム領域26として使用する。
【0078】
本実施例のエミュレーション装置250において、ストップウォッチ300内、疑似ARM CPU12におけるクロックは仮想的に定義する。
本実施例において、
図4のデバイス領域24は、クロック制御レジスタは含まない。クロック周波数は、組み込み機器の初期設定により決定する。
疑似チップ14または疑似デバイス16は、エミュレーション装置250のPC10から疑似ARM CPU12に供給されるクロックを基準として、クロック分周して動作する。
【0079】
以下、各疑似チップ14または疑似デバイス16の詳細について説明する。
(割込みコントローラ306)
割込みコントローラ306について、以下説明する。
<機能>
要求された割込みを保持し、疑似ARM CPU12への割り込み(IRQ)通知を行う。
【0080】
<チップ・レジスタ>
割込みコントローラ306は、
図4のデバイス領域24に、割込み要求フラグ・レジスタ、割込み要求フラグ・レジスタ、割込みイネーブル・フラグ・レジスタ、および割込みクリア・レジスタを含むチップレジスタとして割り当てられる。
【0081】
[割込み要求フラグ・レジスタ]
割込み要求フラグは、割込み要求の状況を保持するフラグである。対応する割込み要求の発生あるいは命令によりセットされ、割込み要求の受付け時、RESET入力時、あるいは命令の実行によりクリアされる。
同時に複数の割込み要求がセットされている場合、ビット番号の小さい要求から受付けられる。
割込み要求フラグ・レジスタの詳細を
図16に示す。
図16(a)は、割込み要求フラグ・レジスタの構成を示す。
図16(b)は、割込み要求フラグ・レジスタの属性を示す。
図16(c)は、割込み要求フラグ・レジスタの機能を示す。
【0082】
[割込み要因フラグ・レジスタ]
割り込み要因フラグは、受付けた割り込み要因を保持するフラグである。割込み受付け時にセットされ、RESET入力時あるいは命令の実行によりクリアされる。割り込み要因がセットされていると以後の割込み受付けは抑制される。
割込み要因フラグ・レジスタの詳細を
図17に示す。
図17(a)は、割込み要因フラグ・レジスタの構成を示す。
図17(b)は、割込み要因フラグ・レジスタの属性を示す。
図17(c)は、割込み要因フラグ・レジスタの機能を示す。
【0083】
[割込みイネーブル・フラグ・レジスタ]
割込みイネーブル・フラグは、対応割込みの許可/禁止をプログラムから設定する。割込み許可する場合にセットし、禁止する場合にクリアする。
割込みイネーブル・フラグ・レジスタの詳細を
図18に示す。
図18(a)は、割込みイネーブル・フラグ・レジスタの構成を示す。
図18(b)は、割込みイネーブル・フラグ・レジスタの属性を示す。
図18(c)は、割込みイネーブル・フラグ・レジスタの機能を示す。
【0084】
[割込みクリア・レジスタ]
割込み要因をプログラムからクリアするレジスタである。このレジスタに書込むことで現在の割込み要因および割り込み要求はクリアされる。
割込みクリア・レジスタの詳細を
図19に示す。
図19(a)は、割込みクリア・レジスタの構成を示す。
図19(b)は、割込みクリア・レジスタの属性を示す。
図19(c)は、割込みクリア・レジスタの機能を示す。
【0085】
<動作>
割込みコントローラ306の動作を以下に示す。
(1) 割込み対応入力ポートおよびインターバル・タイマの割込み要求(内部ポート)を割込み要求フラグに反映。
割込みイネーブル・フラグがクリアされている要求はセットされない。
この処理で内部ポートは自動的にクリアされる(要求セットの有無は無関係)。
(2) 割込み要求フラグにセットされている要求がある場合疑似ARM CPU12に割り込みを通知。
割込み要求フラグはビット番号が小さい要求から処理する。
割込み許可フラグがクリアされている場合、当該要求は処理せず要求フラグをクリアする。
疑似ARM CPU12が割込みを受付けた場合は割込み要求フラグをクリアし、割込み要因フラグをセットする。
割込み要因フラグがセットされている場合は、疑似ARM CPU12に対する割込み通知は行われない。
【0086】
<疑似ARM CPU12の割込み(IRQ)動作>
ステータスレジスタ(CPSR)のIビットがセットされている場合は、割込み(IRQ)を受付けない。割込みを有効にするには、特権モードでIビットをクリアする。
疑似ARM CPU12のステータスレジスタと、ステータスフラグの構成を
図20に示す。
図20(a)は、疑似ARM CPU12のステータスレジスタ構成を示す。
図20(b)は、疑似ARM CPU12のステータスフラグ構成を示す。
図20(c)は、疑似ARM CPU12のステータスフラグの説明を示す。
【0087】
IRQを受付けた場合のCPU動作を以下に示す。
(1) R14_irq に次実行命令アドレス+4をセット
(2) SPSR_irq に現ステータスレジスタ(CPSR)をコピー
(3) ステータスレジスタ(CPSR) のCPUモードにIRQモードをセット
(4) ステータスレジスタ(CPSR) のTビットをクリア(ARM命令セット)
(5) ステータスレジスタ(CPSR) のIビットをセット(IRQ禁止)
(6) ステータスレジスタ(CPSR) の Aビットをセット(データアボート禁止)
(7) ベクタアドレス(0x00000018)へジャンプ
【0088】
ここで、IRQ処理を行う。
次の割込みを受付けるためには、割込みコントローラの割込み要因をクリアする必要がある。
割込み要因がセットされていると、次の割込みが抑制される。
【0089】
<割込み要因>
割込み要因には、デジタル信号入力ポート(8点)およびインターバル・タイマの2種類がある。
【0090】
(インターバル・タイマ308)
インターバル・タイマ308について、以下説明する。
<機能>
設定した周期で割込み要求をセットする。
【0091】
<チップ・レジスタ>
インターバル・タイマ308は、
図4のデバイス領域24に、カウンタ・レジスタ、インターバル設定レジスタ、およびインターバル・タイマ制御レジスタを含むチップレジスタとして割り当てられる。
【0092】
[カウンタ・レジスタ]
カウンタ・レジスタは、インターバル・タイマ308のカウント値を保持する16ビットのレジスタである。
カウンタ・レジスタの詳細を
図21に示す。
図21(a)は、カウンタ・レジスタの構成を示す。
図21(b)は、カウンタ・レジスタの属性を示す。
図21(c)は、カウンタ・レジスタの機能を示す。
【0093】
[インターバル設定レジスタ]
インターバル設定レジスタは、インターバル・タイマ308のインターバルを設定する16ビットのレジスタである。
インターバル設定レジスタの詳細を
図22に示す。
図22(a)は、インターバル設定レジスタの構成を示す。
図22(b)は、インターバル設定レジスタの属性を示す。
図22(c)は、インターバル設定レジスタの機能を示す。
【0094】
[インターバル・タイマ制御レジスタ]
インターバル・タイマ制御レジスタは、インターバル・タイマ308のインターバル・タイマを制御する16ビットのレジスタである。
インターバル・タイマ制御レジスタの詳細を
図23に示す。
図23(a)は、インターバル・タイマ制御レジスタの構成を示す。
図23(b)は、インターバル・タイマ制御レジスタの属性を示す。
図23(c)は、インターバル・タイマ制御レジスタの機能を示す。
【0095】
<動作>
インターバル・タイマ308の動作を以下に示す。
クロックでタイマをカウントアップし、設定インターバルと比較する。設定インターバルよりタイマが等しいか大きくなったら割込み要求をセットする。このときタイマは自動的に0に戻る。
タイマ動作制御ビットに0を設定するとカウントを一時停止する。
タイマ動作制御ビットに1を設定するとカウントを開始する。このときカウンタはクリアされない。
タイマ・クリアを1に設定すると、カウンタを0にクリアする。カウンタを0にクリアしたタイミングで、チップがレジスタ値を0に書き換える。したがって、タイマ・クリアが1のときはレジスタにWriteアクセスをしないようにする。
【0096】
(デジタル信号入出力(INPUTコントローラ310))
INPUTコントローラ310(デジタル信号入出力)について、以下説明する。
<機能>
入出力信号8点の状態を保持する。
入力あるいは出力を切り替えることができる。入力として使用する場合、割込みを有効に設定すると、割込みコントローラに割込み要求を出力する。
【0097】
<チップ・レジスタ>
INPUTコントローラ310は、
図4のデバイス領域24に、入出力ポート制御レジスタ、割込み制御レジスタ、入力ポート状態レジスタ、および出力ポート状態レジスタを含むチップレジスタとして割り当てられる。
【0098】
[入出力ポート制御レジスタ]
入出力ポート制御レジスタは、入出力ポートの有効/無効を設定する16ビットのレジスタである。
入出力ポート制御レジスタの詳細を
図24に示す。
図24(a)は、入出力ポート制御レジスタの構成を示す。
図24(b)は、入出力ポート制御レジスタの属性を示す。
図24(c)は、入出力ポート制御レジスタの機能を示す。
【0099】
[割込み制御レジスタ]
割込み制御レジスタは、入力ポートの割り込みモードを設定する16ビットのレジスタである。
出力ポートとして使用する場合は、設定は無視される。
割込み制御レジスタの詳細を
図25に示す。
図25(a)は、割込み制御レジスタの構成を示す。
図25(b)は、割込み制御レジスタの属性を示す。
図25(c)は、割込み制御レジスタの機能を示す。
【0100】
[入力ポート状態レジスタ]
入力ポート状態レジスタは、入力ポートの状態を保持する16ビットのレジスタである。
入力ポート状態レジスタの詳細を
図26に示す。
図26(a)は、入力ポート状態レジスタの構成を示す。
図26(b)は、入力ポート状態レジスタの属性を示す。
図26(c)は、入力ポート状態レジスタの機能を示す。
【0101】
[出力ポート設定レジスタ]
出力ポート設定レジスタは、出力ポートの状態を設定する16ビットのレジスタである。
出力ポート設定レジスタの詳細を
図27に示す。
図27(a)は、出力ポート設定レジスタの構成を示す。
図27(b)は、出力ポート設定レジスタの属性を示す。
図27(c)は、出力ポート設定レジスタの機能を示す。
【0102】
<動作>
INPUTコントローラ310の動作を以下に示す。
入力として使用するポートは以下のように動作する。
システムクロックに同期して、外部入力ポートの状態を入力ポート状態レジスタに保持する。入力ポート制御レジスタで無効と設定されているポートの状態は常に0となる。
割込みが有効な場合、入力ポートの状態が変化したタイミング(立ち上がり、立ち下がり、あるいは両エッジ)で割込みコントローラに割込み要求を通知する。
出力として使用するポートは以下のように動作する。
システムクロックに同期して、出力ポート制御レジスタで有効(出力ポートとして使用する)と設定された出力ポート設定レジスタの設定値を外部ポートに出力する。
【0103】
(スイッチ)
疑似デバイス16として、ストップウォッチ300は、上述したように、3つのスイッチを有する。しかし、これらのスイッチには、チップレジスタは割り当てない。スイッチが接続されるデジタル信号入力ポート(上記INPUTコントローラ310参照)を対応付ける。
<機能>
押している間のみON状態を保持するスイッチである。離すとOFF状態に戻る。
【0104】
<チップ・レジスタ>
上述したとおり、スイッチ自体のデバイス領域24への割り当てはない。
デジタル信号入力ポートと接続して使用する。
ここでは、3つのスイッチを3つのデジタル信号入力ポートIN0〜IN3にそれぞれ接続する。
<動作>
たとえば、
図26の入力ポート状態レジスタに、スイッチの状態を保持する。接続されているデジタル信号入力ポート経由で、プログラムからスイッチの状態を参照することができる。
【0105】
(LCD314、LCDコントローラ312)
LCDコントローラ312およびLCD314について、以下説明する。
<機能>
図12のLCD418の表示機能を提供する。
【0106】
<チップ・レジスタ>
LCDコントローラ312およびLCD314は、
図4のデバイス領域24に、LCD表示モードレジスタ、およびLCD表示データ・メモリレジスタを含むチップレジスタとして割り当てられる。
【0107】
[LCD表示モードレジスタ]
LCD表示モードレジスタは、LCDの表示モードを制御する16ビットのレジスタである。
LCD表示モードレジスタの詳細を
図28に示す。
図28(a)は、LCD表示モードレジスタの構成を示す。
図28(b)は、LCD表示モードレジスタの属性を示す。
図28(c)は、LCD表示モードレジスタの機能を示す。
【0108】
[LCD表示データ・メモリレジスタ]
LCD表示データ・メモリレジスタは、LCDへ表示する内容を格納する16ビットのレジスタである。
LCD表示データ・メモリレジスタの詳細を
図29に示す。
図29(a)は、LCD表示データ・メモリレジスタ(0〜127)の構成を示す。
図29(b)は、LCD表示データ・メモリレジスタの属性を示す。
図29(c)は、LCD表示データ・メモリレジスタの機能を示す。
【0109】
選択されているCOMとセグメントの交点が点灯しLCD表示を行う。
表示データ・メモリレジスタとCOM信号/SEG信号の関係を、
図30のLCD表示データ・メモリレジスタとCOM信号/SEG信号の関係に示す。COM信号は表示データ・メモリレジスタのビット(#0〜#15)に接続されている。表示データ・メモリレジスタ0〜127のビットにひとつでも‘1’が書き込まれていれば、対応するCOM信号が選択状態になる。SEG信号は表示データ・メモリレジスタ0〜127に接続されている。表示データ・メモリレジスタの#0〜#15にひとつでも‘1’が書き込まれていれば、対応するSEG信号が選択状態となる。
【0110】
<動作>
LCDコントローラ312およびLCD314の動作を以下に示す。
LCD表示モードレジスタのLCDPに1を設定し、LCD表示をONにし、LCDSおよびLCDCを表示領域に合わせて設定する。
設定が完了したら、表示データ・メモリレジスタの点灯したいビットに1を書き込む。
図31に、LCDパネルの例(8×15のLCDパネル)を示す。
【0111】
このように構成されたストップウォッチ300の動作について、以下説明する。
図32に、ストップウォッチ300の基本動作シーケンスを示す。
<ループloop[常時]>
まず、アクターとして、オペレータ500(図中、「Operator」と示す)が、エミュレーション装置250を起動し、エミュレーションを開始する(ステップS100)と、ループ[常時]が開始される。
図12の疑似ARM CPU12のエミュレーション画面400において、ストップウォッチ300の処理を記載したロードモジュールをロードし疑似メモリ20上に命令を展開する。
疑似ARM CPU504が、疑似メモリ506上の命令をフェッチし、デコードする(ステップS110)。
疑似ARM CPU504が、疑似メモリ506に命令コードを要求し(ステップS111)、デコードした命令を実行し(ステップS120)、ロード/ストア命令であれば(ステップS113)、疑似メモリ506にアクセス(Read/Write)する(ステップS121)。
疑似メモリ506は、疑似チップ508へのアクセスであれば(ステップS115)、該当する疑似チップ508に通知する(ステップS123)。
【0112】
そして、疑似メモリ506または疑似チップ508から疑似ARM CPU504に、応答が返された後、疑似ARM CPU504からクロック管理502にクロックが通知される(ステップS130)。通知に従い、クロック管理502は、クロック管理を開始する。
【0113】
<タイミング通知(オペレーションopt[イベント発生])>
クロック管理502は、イベント登録されている疑似チップ508にタイミングを通知する(ステップS200)。
疑似チップ508は、レジスタの内容を解釈して所定の動作(疑似メモリ506へのアクセス(Read/Write)(ステップS210)や疑似デバイス510への通知(ステップS220)など)を行う。
疑似デバイス510は、通知された指令内容を実行し、疑似デバイス508に応答を返す(ステップS221)。
疑似デバイス508は、イベント(応答時間)をクロック管理502に登録する(ステップS230)。
【0114】
<タイミング通知(オペレーションopt[イベント発生])>
クロック管理502は、応答時間に達したことを疑似チップ508に通知する(ステップS300)。
疑似チップ508は、応答内容を解釈し疑似メモリ506にアクセス(Read/Write)する(ステップS310)。
【0115】
(実施例2)
図33に示すように、疑似デバイス16または疑似チップ14を、
図10の編集画面290で選択し、編集することで、他の組み込み機器として動作させることができる。
たとえば、ここでは、LCD、ボリュームスピーカなどを選択することで、
図33のミュージックプレーヤ350をエミュレーションすることが可能になる。
このように、組み込み機器の周辺装置として、疑似チップ14または疑似デバイス16を選択して組み込み機器の構成を編集することで、様々な組み込み機器のエミュレーションを行うことが可能になる。
【0116】
以上説明したように、本発明によれば、周辺デバイスの動作コードおよび周辺デバイスのカスタマイズにより、別の組み込み機器(別システム)として動作することが可能である。
このことにより、多種に亘る教育が可能であり、組込みシステム開発の理解に効果があると考えられる。
また、実機で動作させる前に、動作確認が可能になり、実機のハードウェアの不具合による動作不良と、ソフトウェアのバグによる動作不良を見極め易くなる。
【0117】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0118】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
ARMプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するエミュレーション装置を実現するコンピュータが実行するプログラムであって、
前記コンピュータは、前記組み込みプログラムを記憶する組み込みプログラム記憶領域、および前記ARMプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置を備え、
前記コンピュータに、
前記組み込みプログラムを受け付ける手順、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させる手順を実行させるためのプログラム。
(付記2)
付記1に記載のプログラムにおいて、
前記記憶装置は、前記組み込み機器が組み込み可能な複数種類の周辺装置毎に、前記周辺装置の動作を疑似する処理をそれぞれ割り当てた複数の前記疑似デバイスレジスタ領域を有し、
前記コンピュータに、さらに、
エミュレーション対象の前記組み込み機器に組み込む周辺装置の構成を受け付ける手順、
受け付けた前記周辺装置の構成に従って、該当する前記周辺装置の前記疑似デバイスレジスタ領域を、前記組み込みプログラムの実行時に使用し、前記周辺装置の構成をカスタマイズした前記組み込み機器をエミュレーションする手順を実行させるためのプログラム。
(付記3)
付記1または2に記載のプログラムにおいて、
前記疑似デバイスレジスタ領域に割り当てられた前記周辺装置の動作を疑似する前記処理は、前記周辺装置の操作または動作に対応する入力または出力を模擬する処理を含み、
前記コンピュータに、
前記周辺装置の入力または出力を模擬する処理の結果に基づいて前記周辺装置の操作または動作を確認できるユーザインタフェースを前記周辺装置毎に提供する手順をさらに実行させ、
前記周辺装置の構成に従って、前記ユーザインタフェースを組み合わせ、前記組み込み機器の各前記周辺装置の入力または出力を模擬し、前記組み込み機器の前記周辺装置の操作または動作を確認できるユーザインタフェースを提供するプログラム。
(付記4)
ARMプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するエミュレーション装置であって、
前記組み込みプログラムを記憶するプログラム記憶領域、および前記ARMプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置と、
前記組み込みプログラムを受け付けるプログラム受付手段と、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させる実行手段と、を備えるエミュレーション装置。
(付記5)
付記4に記載のエミュレーション装置において、
前記記憶装置は、前記組み込み機器に組み込み可能な複数種類の周辺装置毎に、前記周辺装置の動作を疑似する処理をそれぞれ割り当てた複数の前記疑似デバイスレジスタ領域を有し、
エミュレーション対象の前記組み込み機器に組み込む周辺装置の構成を受け付ける構成受付手段をさらに備え、
前記構成受付手段が受け付けた前記周辺装置の構成に従って、前記実行手段が、該当する前記周辺装置の前記疑似デバイスレジスタ領域を、前記組み込みプログラムの実行時に使用し、前記周辺装置の構成をカスタマイズした前記組み込み機器をエミュレーションするエミュレーション装置。
(付記6)
付記4または5に記載のエミュレーション装置において、
前記疑似デバイスレジスタ領域に割り当てられた前記周辺装置の動作を疑似する前記処理は、前記周辺装置の操作または動作に対応する入力または出力を模擬する処理を含み、
前記周辺装置の入力または出力を模擬する処理の結果に基づいて前記周辺装置の操作または動作を確認できるユーザインタフェースを前記周辺装置毎に提供する入出力模擬手段をさらに備え、
前記入出力模擬手段が、前記周辺装置の構成に従って、前記ユーザインタフェースを組み合わせ、前記組み込み機器の各前記周辺装置の入力または出力を模擬し、前記組み込み機器の前記周辺装置の操作または動作を確認できるユーザインタフェースを提供するエミュレーション装置。
(付記7)
付記4乃至6いずれか一項に記載のエミュレーション装置において、
パーソナルコンピュータ、サーバコンピュータ、またはタブレット端末を用いて実現されるエミュレーション装置。
(付記8)
付記4乃至7いずれか一項に記載のエミュレーション装置を用いた組み込み機器の開発支援システム。
(付記9)
ARMプロセッサと周辺装置が組み込まれ、組み込みプログラムによって動作する組み込み機器を模擬するコンピュータを用いたエミュレーション方法であって、
前記コンピュータは、前記組み込みプログラムを記憶する組み込みプログラム記憶領域、および前記ARMプロセッサと前記周辺装置の動作を疑似する処理を割り当てた疑似デバイスレジスタ領域を有する記憶装置を備え、
前記コンピュータが、
前記組み込みプログラムを受け付け、
前記組み込みプログラムの命令を前記プログラム記憶領域から読み出し、前記命令の実行時に実行すべき処理が割り当てられた前記疑似デバイスレジスタ領域にアクセスして、前記周辺装置の動作を疑似する処理を実行させるエミュレーション方法。
(付記10)
付記9に記載のエミュレーション方法において、
前記記憶装置は、前記組み込み機器に組み込み可能な複数種類の周辺装置毎に、前記周辺装置の動作を疑似する処理をそれぞれ割り当てた複数の前記疑似デバイスレジスタ領域を有し、
前記コンピュータが、さらに、
エミュレーション対象の前記組み込み機器に組み込む周辺装置の構成を受け付け、
受け付けた前記周辺装置の構成に従って、該当する前記周辺装置の前記疑似デバイスレジスタ領域を、前記組み込みプログラムの実行時に使用し、前記周辺装置の構成をカスタマイズした前記組み込み機器をエミュレーションするエミュレーション方法。
(付記11)
付記9または10に記載のエミュレーション方法において、
前記疑似デバイスレジスタ領域に割り当てられた前記周辺装置の動作を疑似する前記処理は、前記周辺装置の操作または動作に対応する入力または出力を模擬する処理を含み、
前記コンピュータが、
前記周辺装置の入力または出力を模擬する処理の結果に基づいて前記周辺装置の操作または動作を確認できるユーザインタフェースを前記周辺装置毎に提供し、
前記周辺装置の構成に従って、前記ユーザインタフェースを組み合わせ、前記組み込み機器の各前記周辺装置の入力または出力を模擬し、前記組み込み機器の前記周辺装置の操作または動作を確認できるユーザインタフェースを提供するエミュレーション方法。