(57)【要約】【課題】複数のＣＰＵシミュレータ間の切り替えを迅速に行うことができる情報処理装置を提供する。【解決手段】情報処理装置は、ターゲットコードを実行するターゲットＣＰＵの動作を模擬する複数のＣＰＵシミュレータ１０１、１０４と、ターゲットＣＰＵの制御対象装置の動作を模擬する装置シミュレータ１０３と、ターゲットＣＰＵで動作するオペレーティングシステムの動作を模擬し、装置シミュレータ１０３の模擬動作に応じて、複数のＣＰＵシミュレータ１０１、１０４からターゲットＣＰＵの模擬動作を行わせるＣＰＵシミュレータを選択する管理部１０２と、を備えており、管理部１０２は、選択したＣＰＵシミュレータへの切り替えを、オペレーティングシステムへのシステムコールが発生したタイミングで行う。【選択図】図１
2012226445.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットコードを実行するターゲットＣＰＵの動作を模擬する複数のＣＰＵシミュレータと、
前記ターゲットＣＰＵの制御対象装置の動作を模擬する装置シミュレータと、
前記ターゲットＣＰＵで動作するオペレーティングシステムの動作を模擬し、前記装置シミュレータの模擬動作に応じて、前記複数のＣＰＵシミュレータから前記ターゲットＣＰＵの模擬動作を行わせるＣＰＵシミュレータを選択する選択手段と、
を備えており、
前記選択手段は、前記選択したＣＰＵシミュレータへの切り替えを、前記オペレーティングシステムへのシステムコールが発生したタイミングで行うことを特徴とする情報処理装置。
【請求項２】
タイマイベントの発生を判定する基準となる時刻を保持する基準タイマを、さらに、備えており、
前記選択手段は、前記選択したＣＰＵシミュレータへの切り替え時、前記基準タイマの値を、前記選択したＣＰＵシミュレータが使用している時間基準による値に換算して、前記基準タイマに設定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ターゲットＣＰＵの模擬動作で確定したタイマイベントを管理するタイマイベント管理テーブルが、各ＣＰＵシミュレータに対応して設けられ、
前記選択手段は、前記選択したＣＰＵシミュレータへの切り替え時、切り替え前のＣＰＵシミュレータに対応するタイマイベント管理テーブルに含まれるタイマイベントのうち、切り替え時に発生していないものを特定し、前記選択したＣＰＵシミュレータに対応するタイマイベント管理テーブルに前記特定したタイマイベントを設定することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記複数のＣＰＵシミュレータは、第１のＣＰＵシミュレータと、第２のＣＰＵシミュレータを含み、
前記第１のＣＰＵシミュレータは、前記ターゲットコードを、前記第１のＣＰＵシミュレータが有するＣＰＵの機械語命令に変換して実行し、
前記第２のＣＰＵシミュレータは、前記ターゲットコードを、前記ターゲットＣＰＵの機械語命令に変換して実行し、
前記第１のＣＰＵシミュレータから前記第２のＣＰＵシミュレータへの切り替えは、前記装置シミュレータが出力する所定の信号の変化により行われ、前記第２のＣＰＵシミュレータから前記第１のＣＰＵシミュレータへの切り替えは、前記第２のＣＰＵシミュレータが模擬動作を行った模擬時間により行われることを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記制御対象装置は、シート材を搬送する装置であり、
前記所定の信号は、搬送されるシート材を検出するセンサが出力する信号であることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
請求項１から５のいずれか１項に記載の情報処理装置としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置への組込みソフトウェアの検証をコンピュータ上で行うためのシミュレーション技術に関する。
【背景技術】
【０００２】
装置への組込みソフトウェア（ターゲットコード）の検証のため、コンピュータ上でのシミュレーションが用いられている。コンピュータによるシミュレーションは、システム開発時におけるシステム構成の妥当性確認、実行速度の見積にも用いられる。さらに、システム開発完了後においては、システム利用者のための操作・運用訓練などにも用いられる。以下、シミュレーションを実行するコンピュータをホストＰＣと呼ぶ。
【０００３】
検証対象のターゲットコードをターゲットＣＰＵの命令セット・アーキテクチャ（ＩＳＡ）レベルでシミュレーションする必要がある場合、ＣＰＵシミュレータは、構成要素として命令セット・シミュレータ（ＩＳＳ）を通常備えている。なお、ターゲットＣＰＵとは、検証対象の装置に組み込まれており、ターゲットコードを実行して、検証対象の装置を制御するＣＰＵである。しかしながら、ＩＳＳは、ターゲットコードの１命令を実行するために、ホストＰＣの複数の命令を実行する必要があるためシミュレーション速度の低下が問題となる。
【０００４】
そこで、特許文献１は、ターゲットコードの検証を総てＩＳＳで実行するのではなく、ホストネイティブでのシミュレーションと、ＩＳＳでのシミュレーションを切り替えて動作させる構成を開示している。特許文献１によると、ホストネイティブでは実行できないハードウェアに密接したシミュレーションをＩＳＳで実行している。なお、ホストネイティブでのシミュレーションとは、ターゲットコードをホストＰＣの機械語命令に変換して実行するシミュレーションである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２５９４４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ネイティブシミュレータによる模擬動作の進行は、模擬時間とは無関係である。ここで、模擬時間とは、ターゲットＣＰＵ及びターゲットＣＰＵの制御対象装置での模擬動作に応じて進行している時間を意味する。つまり、例えば、ターゲットＣＰＵの制御対象装置の動作を模擬する装置シミュレータが、制御対象装置のＡミリ秒間の動作を模擬したとすると、この模擬動作に実際にかかった時間に拘わらず、Ａミリ秒が模擬時間である。
【０００７】
ネイティブシミュレータは、この模擬時間を認識しないため、ネイティブシミュレータによる模擬動作は、制御対象装置の動作を模擬する装置シミュレータにおける模擬時間とは非同期になる。このため、プログラム命令の実行量に基づき制御対象装置の動作を制御するような処理については、ネイティブシミュレータを使用することはできない。なお、プログラム命令の実行量に基づく制御とは、ラウンドロビン処理の様な、ターゲットＣＰＵの速度に依存して制御間隔を管理しているような処理である。
【０００８】
よって、例えば、プログラム命令の実行量により制御を行う処理については、ＣＰＵシミュレータとしてＩＳＳを使用し、それ以外の場合には、ネイティブシミュレータを使用してシミュレーションを行うことを考えることができる。しかしながら、ネイティブシミュレータとＩＳＳの切り替えには、ＣＰＵシミュレータ間において以下の情報の受け渡しを行う必要がある。
・記憶部（ＲＡＭ）情報
・プログラムカウンタ情報
・ＣＰＵレジスタ情報
・周辺回路情報
・割り込み情報
ＣＰＵシミュレータの切り替え時に、上記総ての情報の受け渡しをＣＰＵシミュレータ間で行うと、切り替え時の処理負荷が大きくなる。これは、切り替え時間が長くなることを意味し、よって、シミュレーション効率が低下することになる。
【０００９】
本発明は、複数のＣＰＵシミュレータ間の切り替えを迅速に行うことができる情報処理装置を提供するものである。
【課題を解決するための手段】
【００１０】
本発明による情報処理装置は、ターゲットコードを実行するターゲットＣＰＵの動作を模擬する複数のＣＰＵシミュレータと、ターゲットＣＰＵの制御対象装置の動作を模擬する装置シミュレータと、ターゲットＣＰＵで動作するオペレーティングシステムの動作を模擬し、装置シミュレータの模擬動作に応じて、複数のＣＰＵシミュレータからターゲットＣＰＵの模擬動作を行わせるＣＰＵシミュレータを選択する選択手段と、を備えており、選択手段は、前記選択したＣＰＵシミュレータへの切り替えを、前記オペレーティングシステムのシステムコールが発生したタイミングで行うことを特徴とする。
【発明の効果】
【００１１】
オペレーティングシステムのシステムコールが発生したタイミングでＣＰＵシミュレータの切り替えを行うことで、切り替えによりＣＰＵシミュレータ間で受け渡す情報を削減でき、よって、ＣＰＵシミュレータ間の切り替えを迅速に行うことができる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態における情報処理装置の構成図。
【図２】情報処理装置の実行環境であるホストＰＣのブロック図。
【図３】情報処理装置のシミュレーション対象装置となり得る画像形成装置の断面図。
【図４】一実施形態における装置シミュレータの模擬動作処理のフローチャート。
【図５】一実施形態における組み込みＯＳシミュレーション部の動作の説明図。
【図６】一実施形態におけるタイマイベント管理テーブルを示す図。
【図７】一実施形態における装置シミュレータ管理部での処理のフローチャート。
【図８】情報処理装置のシミュレーション対象となる画像形成装置の給紙搬送制御機能の説明図。
【図９】情報処理装置のシミュレーション対象となる画像形成装置の給紙搬送制御機能の説明図。
【図１０】画像形成装置のソフトウェアのタスク構成の一部を示す図。
【図１１】画像形成装置のソフトウェアの動作のタイミングチャート。
【図１２】画像形成装置のタスク切り替え処理を示すフローチャート。
【図１３】画像形成制御タスクへの切り替え処理のフローチャート。
【図１４】タスク管理処理への切り替え処理のフローチャート。
【図１５】一実施形態におけるソフトウェアのタスク構成の一部を示す図。
【図１６】一実施形態におけるソフトウェアのタスクの切り替え動作を示すタイミングチャート。
【図１７】一実施形態における切り替え制御部でのタスク復帰時の制御処理を示すフローチャート。
【図１８】一実施形態における切り替え制御部での切り替え処理を示すフローチャート。
【図１９】残留イベントの引き継ぎを行う場合における、切り替え制御部の切り替え処理を示すフローチャート。
【図２０】チャタリング発生時の処理の説明図。
【発明を実施するための形態】
【００１３】
（第一実施形態）本発明の第一実施形態について、以下では図面を用いて詳細に説明する。なお、以下の説明において、特に明記しない限り、或いは、文脈から明らかである場合を除き、時間とは模擬時間を意味するものとする。
【００１４】
本実施形態における情報処理装置は、装置に組み込まれたターゲットＣＰＵで動作するプログラムであるターゲットコードを検証するものである。情報処理装置は、パーソナルコンピュータ、ワークステーション等（以下、ホストＰＣと記す）で実行されるプログラムとして実現され得る。
【００１５】
図２は、ホストＰＣのハードウェア構成の概略図である。図２のホストＰＣ２００のＣＰＵ２０１は、バス２１０を介して、ＲＯＭ２０２、ＲＡＭ２０３、入力インタフェース２０４、出力インタフェース２０６、外部記憶装置インタフェース２０８と接続されている。ＣＰＵ２０１は、ＲＯＭ２０２、ＲＡＭ２０３に記憶されたプログラムに従い動作する。また、ＣＰＵ２０１は、入力インタフェース２０４、外部記憶装置インタフェース２０８経由で受け取る外部入力に対する情報処理を行い、結果を出力インタフェース２０６、外部記憶装置インタフェース２０８経由で出力する。入力インタフェース２０４は、キーボード、マウス等の入力装置２０５を介してユーザからの入力を受け取る。出力インタフェース２０６は、ＬＣＤや、プリンタ、プロッタ等の出力装置２０７に対しデータの表示や出力を行う。外部記憶装置インタフェース２０８は、ハードディスクやＣＤ−ＲＯＭ等の外部記憶装置２０９に対するデータの入出力を行う。
【００１６】
ＣＰＵ２０１は、外部記憶装置２０９に保存される設定データ２０９ｂ内のデータを使用して、処理プログラム２０９ａを実行することで、本実施形態による情報処理装置として機能する。なお、検証対象のプログラムであるターゲットコード２０９ｃも外部記憶装置２０９に保存される。なお、外部記憶装置２０９は、図示しないが、ＣＰＵ２０１で動作する基本ソフトウェアであるオペレーティングシステム（以下、ホストＯＳと記す）を保存している。なお、処理プログラム２０９ａは、ホストＯＳ上で動作する。
【００１７】
続いて、本実施形態における情報処理装置について、図１を用いて説明する。図１において、ネイティブシミュレータ１０１（第１のＣＰＵシミュレータ）及び命令セットシミュレータ（ＩＳＳ）１０４（第２のＣＰＵシミュレータ）は、それぞれ、制御対象装置に組み込まれたターゲットＣＰＵの動作を模擬するものである。なお、以下の説明において、ネイティブシミュレータ１０１及びＩＳＳ１０４を区別する必要がないときには、単にＣＰＵシミュレータと呼ぶ。
【００１８】
なお、ＣＰＵ周辺回路シミュレータ１０５は、ターゲットＣＰＵの周辺回路の動作を模擬する。また、装置シミュレータ１０３は、ターゲットＣＰＵが制御する制御対象装置の動作を模擬する。情報処理装置は、さらに、上記各シミュレータ間を接続し、上記各シミュレータ間の動作を協調させる管理部１０２を備えている。なお、管理部１０２は、各ＣＰＵシミュレータからターゲットＣＰＵの模擬動作を行わせるＣＰＵシミュレータを選択する、ＣＰＵシミュレータの選択部として機能する。
【００１９】
まず、ネイティブシミュレータ１０１について説明する。ターゲット命令実行部１０８は、ターゲットコードの実行を模擬するものであり、ターゲットコード２０９ｃのソースコードをホストＰＣの機械語命令に変換して実行する。また、ターゲット命令実行部１０８は、ＣＰＵ周辺回路シミュレータ１０５のタイマシミュレータ１１１及びＩ／Ｏシミュレータ１１２へのアクセスを行う。具体的には、例えば、ターゲット命令実行部１０８は、制御対象装置への出力信号の状態をＩ／Ｏシミュレータ１１２に通知する。また、ターゲット命令実行部１０８は、装置シミュレータ１０３が模擬する制御対象装置の例えばセンサ出力の状態等をＩ／Ｏシミュレータ１１２から取得する。さらに、ターゲット命令実行部１０８は、タイマイベントを発生させる必要が有る場合、タイマシミュレータ１１１に必要な通知を行う。つまり、例えば、制御対象装置の所定のセンサ出力の状態が変化したことに応じて所定の時間後に出力信号を変化させなければならない場合、この所定の時間後のタイマイベントをタイマシミュレータ１１１に通知する。割込み制御部１０９は、ＣＰＵ周辺回路シミュレータ１０５からの割込み要求を受けて、ターゲットＣＰＵの割込み処理を模擬する。すなわち、割込み制御部１０９は、ＣＰＵ周辺回路シミュレータ１０５から要求を受けた割込み番号に応じてターゲットコード上の割込みベクタを参照する。そして、ターゲット命令実行部１０８によるターゲットコード上の命令参照位置を、所定の割込み処理の位置に移行させる。また、割込み制御部１０９は、必要に応じて割込み禁止設定への対応、割込み優先度設定への対応、レジスタバンクの切り替え等、ターゲットＣＰＵの割込み動作仕様に準じた処理を行う。
【００２０】
続いて、ＩＳＳ１０４について説明する。ターゲット命令実行部１１８は、ターゲットプログラムの実行を模擬するものであり、ターゲットコード２０９ｃのターゲットＣＰＵの機械語命令をソフトウェアで解釈して実行する。また、ターゲット命令実行部１１８は、ターゲット命令実行部１０８と同様に、ＣＰＵ周辺回路シミュレータ１０５のタイマシミュレータ１１１及びＩ／Ｏシミュレータ１１２へのアクセスを行う。割込み制御部１１９は、ＣＰＵ周辺回路シミュレータ１０５からの割込み要求を受けて、ターゲットＣＰＵの割込み処理を模擬する。すなわち、割込み制御部１１９は、ＣＰＵ周辺回路シミュレータ１０５から要求を受けた割込み番号に応じてターゲットコード上の割込みベクタを参照する。そして、ターゲット命令実行部１１８によるターゲットコード上の命令参照位置を、所定の割込み処理の位置に移行させる。また、割込み制御部１１９は、必要に応じて割込み禁止設定への対応、割込み優先度設定への対応、レジスタバンクの切り替え等、ターゲットＣＰＵの割込み動作仕様に準じた処理を行う。さらに、実行サイクル数計測部１３３は、ターゲット命令実行部１１８による模擬動作の実行サイクルを計数する。つまり、ターゲット命令実行部１１８における模擬時間の進行を管理する。
【００２１】
続いて、ＣＰＵ周辺回路シミュレータ１０５について説明する。ＣＰＵ周辺回路シミュレータ１０５は、タイマ、入出力ポート、アナログデジタル変換器（以下、ＡＤＣと記す。）、シリアル通信機能といったＣＰＵ周辺回路の動作を模擬するものである。基準タイマ１０６は、タイマシミュレータ１１１をはじめとするＣＰＵ周辺回路シミュレータ１０５における時間進行の基準となるタイマである。なお、基準タイマ１０６の値はネイティブシミュレータ１０１の動作時は、管理部１０２からの設定のみによって値が更新される。一方、ＩＳＳ１０４の動作時は、管理部１０２及びＩＳＳ１０４からの設定によって値が更新される。
【００２２】
Ｉ／Ｏシミュレータ１１２は、ターゲットＣＰＵへの入出力ポートを模擬するものである。タイマシミュレータ１１１は、ターゲットＣＰＵの各タイマユニットの設定に応じた個々のタイマの動作を模擬する。さらに、タイマシミュレータ１１１は、各タイマユニットに対する割込み発生条件を監視し、割込み発生条件が成立した場合、割り込要求を、ネイティブシミュレータ１０１又はＩＳＳ１０４に通知する。なお、タイマシミュレータ１１１の模擬動作における時間進行は基準タイマ１０６の値に従う。なお、タイマイベント管理テーブル１５８については後述する。
【００２３】
続いて、装置シミュレータ１０３の説明を行う。なお、本実施形態において、装置シミュレータ１０３は、画像形成装置を模擬するものとする。まず、模擬対象の画像形成装置３０１の概略について、図３を用いて説明する。
【００２４】
カセット３０２に収容されている記録材（シート材）は、ピックアップローラ３０３によりピックアップされ、給紙ローラ３０４により搬送路に送り出される。給紙ローラ３０４の搬送路下流側には、記録材の存在を検出する給紙センサ３０５が設けられている。給紙センサ３０５の下流には、搬送ローラ３０６が配置され、さらにその下流にはレジストローラ３０７が配置されている。レジストローラ３０７は、搬送される記録材の斜行を矯正するものである。レジストローラ３０７の下流には、画像形成前の記録材の位置を確定するため、レジストセンサ３０８が設けられている。レジストセンサ３０８の下流には、レーザスキャナ部３１０からのレーザ光により感光ドラム上にトナー像を形成する画像形成部３０９が配置されている。また、画像形成部３０９の感光ドラムは、通過する記録材にトナー像を転写する。画像形成部３０９の下流には定着器３１１が配置されており、定着器３１１の下流には複数の排紙搬送ローラ３１２が配置されており、その下流に排紙トレイ３１６が配置されている。
【００２５】
装置シミュレータ１０３は、ネイティブシミュレータ１０１及びＩＳＳ１０４が出力する仮想信号、つまり、模擬上の信号に応じて用紙搬送、画像形成の状況を解析し、図示しない表示部に表示する。また、装置シミュレータ１０３は、ネイティブシミュレータ１０１及びＩＳＳ１０４に、解析した状況を通知する仮想信号を出力する。なお、装置シミュレータ１０３とネイティブシミュレータ１０１及びＩＳＳ１０４の仮想信号の交換は、管理部１０２の仮想信号伝達部１５４、１５７が、ＣＰＵ周辺回路シミュレータ１０５のＩ／Ｏシミュレータ１１２経由で行う。ここで、仮想信号伝達部１５４がネイティブシミュレータ１０１に対する仮想信号の処理を行い、仮想信号伝達部１５７がＩＳＳ１０４に対する仮想信号の処理を行う。
【００２６】
装置シミュレータ１０３のシミュレーション実行部１４０は、管理部１０２から、時間指定と共にシミュレーションの実行指示を受けると、指定された時間分の模擬動作を実行する。そして、指定された時間の模擬が終了すると、管理部１０２に対して、模擬の終了と、その時点の模擬時間を通知する。また、シミュレーション実行部１４０は、指定された時間の到達前に仮想信号の変化があった場合、その時点でシミュレーションを終了する。そして、終了時点の模擬時間、変化があった信号の種別及びその値の情報と共にシミュレーション終了を管理部１０２に通知する。その後、シミュレーション実行部１４０は、管理部１０２からシミュレーションの実行指示を受けると、前回の模擬動作が終了した時点における模擬時間から模擬動作を開始する。
【００２７】
シミュレーション実行部１４０による模擬は、模擬時間軸において、単位時間毎の画像形成装置３０１の動作状態の解析を繰り返すことで行われる。すなわち、シミュレーション実行部１４０は、画像形成装置３０１のある時点の状態から１単位時間後の状態を解析し、その結果を図示しない表示部に画面表示し、ＣＰＵシミュレータへの仮想信号に反映させ、模擬時間を１単位時間進行させる。シミュレーション実行部１４０は、この単位時間毎の解析処理を指定された時間分だけ実行することで、画像形成装置３０１の動作を模擬する。なお、シミュレーション時間管理部１４１は、装置シミュレータ１０３の模擬時間を管理する。
【００２８】
続いて、シミュレーション実行部１４０の模擬処理の詳細について、図４のフローチャートを用いて説明する。模擬処理は、管理部１０２からの実行指示により開始する。Ｓ５０１において、シミュレーション実行部１４０は、管理部１０２からの実行指示に含まれている時間を、シミュレーション時間管理部１４１が保持する現在時刻に加えて終了時刻を設定する。Ｓ５０２において、シミュレーション実行部１４０は、現在時刻と終了時刻を比較する。現在時刻が終了時刻と同じか、終了時刻より後であれば、シミュレーション実行部１４０は、Ｓ５０７において、シミュレーション時間管理部１４１が保持する現在時刻と共に模擬動作の終了を管理部１０２に通知する。Ｓ５０２において、現在時刻が終了時刻に達していなければ、シミュレーション実行部１４０は、Ｓ５０３において、１単位時間後の画像形成装置３０１の状態を解析し、図示しない表示装置への出力画像を更新すると共に、仮想信号値の変化を設定する。解析終了後、シミュレーション実行部１４０は、Ｓ５０４において、シミュレーション時間管理部１４１が保持する時刻を１単位時間だけ進める。その後、Ｓ５０５において、シミュレーション実行部１４０は、仮想信号に変化があったかどうかを判定する。仮想信号に変化がなければ、シミュレーション実行部１４０は、Ｓ５０２に戻って処理を繰り返す。一方、Ｓ５０５において、仮想信号に変化があると、シミュレーション実行部１４０は、Ｓ５０６において、模擬動作の終了を、シミュレーション時間管理部１４１が保持する現在時刻、変化した信号種別及びその値と共に管理部１０２に通知する。
【００２９】
次に、管理部１０２の組み込みＯＳシミュレーション部１の動作概要について図５を用いて説明する。本実施形態において、組み込みＯＳシミュレーション部１は、ターゲットＣＰＵで動作するオペレーティングシステム（ＯＳ）の動作を模擬するものである。組み込みＯＳシミュレーション部１は、ターゲットＣＰＵの模擬を行うＣＰＵシミュレータを選択し、切り替える切り替え制御部１５２を備えている。本実施形態においては、通常は、ネイティブシミュレータ１０１でターゲットＣＰＵの模擬動作を行い、プログラム命令の実行量により制御を行う処理についてはＩＳＳ１０４でターゲットＣＰＵの模擬動作を行う。具体的には、装置シミュレータ１０３から通知される、プログラム命令の実行量により制御を行う処理のトリガとなる特定の信号の変化や記憶領域の変化が発生すると、ネイティブシミュレータ１０１からＩＳＳ１０４への切り替えを行う。このため、切り替えトリガ生成部１６１が、装置シミュレータ１０３から通知される、これら信号の変化等を判定して組み込みＯＳシミュレーション部１に通知する。なお、ＩＳＳ１０４は、それぞれの処理により決まる模擬時間分の模擬動作を行うものであり、切り替えトリガ生成部１６１は、所定の模擬時間が経過後、ネイティブシミュレータ１０１に再び切り替えるためのトリガを発生する。図５においては、当初、ネイティブシミュレータ１０１が模擬を行い、その後、ＩＳＳ１０４に切り替えられ、さらに、その後、ネイティブシミュレータ１０１に再び切り替えされている状態が示されている。なお、切り替えは、組み込みＯＳシミュレーション部１において、ＯＳへのシステムコールが発生するタイミングで行う。ＯＳへのシステムコールが発生するタイミングでＣＰＵシミュレータを切り替えることで、ＯＳが管理するＲＡＭ情報、プログラムカウンタ情報、ＣＰＵレジスタ情報、周辺回路情報、割り込み情報については、ＣＰＵシミュレータ間で受け渡す必要がなくなる。よって、ＣＰＵシミュレータの切り替えを迅速に行うことができる。
【００３０】
続いて、図６及び７を用いてネイティブシミュレータ１０１が動作時の装置シミュレータ管理部１６０及びシミュレータ接続部１５０における処理を説明する。ＣＰＵタイマ管理部１１７は、タイマイベント管理テーブル１５５の生成及び更新を行う。タイマイベント管理テーブル１５５とは、ネイティブシミュレータ１０１の模擬動作における確定したタイマイベントの発生タイミングを発生順に保存したものであり、その概要を図６に示す。なお、タイマイベントとは、ＣＰＵ周辺回路によって実行される特定のタイミング（時刻）に対応した処理である。つまり、例えば、タイマユニットによるタイマ割り込み、パルスジェネレータによる指定されたタイミングにおける信号出力、複数チャネルのアナログデジタル変換器の一巡の変換処理終了後の割り込み等である。
【００３１】
なお、タイマイベントの発生有無、及び、その時刻については、ＣＰＵシミュレータのタイマシミュレータ１１１へのアクセス内容により判断できる。ＣＰＵタイマ管理部１１７は、ネイティブシミュレータ１０１に対してタイマイベントが発生する場合、そのタイマイベントをタイマイベント管理テーブル１５５に登録する。なお、ＣＰＵタイマ管理部１１７は、新たなタイマイベントの時刻と、既に登録されているタイマイベントの時刻を比較しタイマイベント管理テーブル１５５への登録イベントが発生時間順に並ぶように登録する。
【００３２】
また、ＣＰＵタイマ管理部１１７は、装置シミュレータ１０３が模擬動作の終了を通知した場合、その通知に含まれる時刻を取得する。そして、ＣＰＵタイマ管理部１１７は、取得した時刻と、タイマイベント管理テーブル１５５の先頭のタイマイベントの時刻とを比較する。取得した時刻が、先頭のタイマイベントの時刻より早い場合、ＣＰＵタイマ管理部１１７は、取得した時刻を、基準タイマ１０６に設定する。一方、取得した時刻が、先頭のタイマイベントの時刻以後の時刻である場合、先頭のタイマイベントの時刻を基準タイマ１０６に設定し、先頭のイベントを消去する。このとき、２番目以降のタイマイベントがあれば順次繰り上げる。ＣＰＵタイマ管理部１１７によって基準タイマ１０６の値が更新されると、タイマシミュレータ１１１は、基準タイマ１０６の変化に応じた模擬動作を行う。
【００３３】
装置シミュレータ管理部１６０は、タイマイベント管理テーブル１５５に応じて、装置シミュレータ１０３の模擬動作を管理する。また、装置シミュレータ管理部１６０は、装置シミュレータ１０３からのイベント通知に含まれる、あらかじめ決められた、特定の信号の状態を切り替えトリガ生成部１６１に通知する。切り替えトリガ生成部１６１は、あらかじめ決められた、特定の信号の状態の変化を検出した場合、切り替えのトリガ信号を組み込みＯＳシミュレーション部１に通知する。
【００３４】
図７は、ネイティブシミュレータ１０１動作時の、装置シミュレータ管理部１６０の処理を示すフローチャートである。なお、装置シミュレータ管理部１６０は、ネイティブシミュレータ１０１からの命令実行イベントの通知をトリガに処理を開始する。ネイティブシミュレータ１０１は、この命令実行イベントを適当な間隔で繰り返し実行する。なお、命令実行イベントの間隔は一定である必要はない。処理が開始されると、装置シミュレータ管理部１６０は、Ｓ７０１でタイマイベント管理テーブル１５５の先頭のタイマイベントの時刻（以下、対象時刻と記す。）と、装置シミュレータ１０３のその時点の時刻（以下、装置時刻と記す。）を比較する。対象時刻が装置時刻以下（より早い）の場合、装置シミュレータ管理部１６０は、Ｓ７０９において、装置時刻と共に、装置シミュレータの模擬処理の終了をＣＰＵタイマ管理部１１７に通知して処理を終了する。
【００３５】
一方、Ｓ７０１で対象時刻が装置時刻よりも大きい場合、装置シミュレータ管理部１６０は、Ｓ７０２において、現在の装置時刻と対象時刻との差から装置シミュレータの模擬動作の時間を求める。そして、装置シミュレータ管理部１６０は、Ｓ７０３で装置シミュレータ１０３に求めた時間分の模擬動作の実行を指示し、Ｓ７０４において、装置シミュレータ１０３からの終了通知を待つ。
【００３６】
装置シミュレータ管理部１６０は、装置シミュレータ１０３から終了通知を受けると、Ｓ７０５において、装置シミュレータ１０３の時刻を通知された時刻に更新する。さらに、装置シミュレータ管理部１６０は、Ｓ７０６において、装置シミュレータ１０３の出力信号変化の有無を確認する。Ｓ７０６で出力信号の変化がない場合、Ｓ７０９に進む。一方、Ｓ７０６で出力信号の変化がある場合、装置シミュレータ管理部１６０は、Ｓ７０７で仮想信号伝達部１５４に発生した信号種別及びその値を通知し、Ｓ７０８で仮想信号伝達部１５４の応答を待つ。装置シミュレータ管理部１６０は、Ｓ７０８において、仮想信号伝達部１５４からの応答を受けた後にＳ７０９に進む。装置シミュレータ管理部１６０は、Ｓ７０９において、ＣＰＵタイマ管理部１１７に装置シミュレータ１０３の時刻と共に、装置シミュレータ１０３の模擬処理の終了を通知して処理を終了する。
【００３７】
続いて、ＩＳＳ１０４動作時の装置シミュレータ管理部１６０及びシミュレータ接続部１５１における処理を説明する。時間同期部１５６は、同期単位時間を保持している。装置シミュレータ管理部１６０は、ＩＳＳ１０４の動作時、ＩＳＳ１０４及び装置シミュレータ１０３に対して、同期単位時間を単位とした処理を実行させる。つまり、ネイティブシミュレータ１０１が動作しているときとは異なり、ＩＳＳ１０４は、模擬時間を認識しているため装置シミュレータ１０３と時間同期で動作する。
【００３８】
また、ＩＳＳ１０４は時間同期で動作するため、シミュレータ接続部１５１には、シミュレータ接続部１５１のＣＰＵタイマ管理部１１７に相当するものを設ける必要がない。よって、本実施形態においては、ＩＳＳ１０４の模擬動作における確定したタイマイベントの発生タイミングについては、ＣＰＵ周辺回路シミュレータ１０５のタイマイベント管理テーブル１５８で管理する。タイマイベント管理テーブル１５８は、タイマイベント管理テーブル１５５と同様に、ＩＳＳ１０４の模擬動作における確定したタイマイベントの発生タイミングを発生順に保存したものである。なお、タイマイベント管理テーブル１５８は、ＩＳＳ１０４のターゲット命令実行部１１８が更新する。なお、タイマイベント管理テーブル１５８の生成、更新等は、タイマイベント管理テーブル１５５と同様である。また、基準タイマ１０６の値は、実行サイクル数計測部１３３の値に基づきターゲット命令実行部１１８が設定する。
【００３９】
続いて、情報処理装置が模擬対象とする画像形成装置３０１におけるカセット３０２からレジストセンサ３０８までの記録材の搬送（以下、給紙搬送と記す。）制御について説明する。
【００４０】
まず、図８及び図９を用いて、画像形成装置３０１の給紙搬送制御に関する制御機能を説明する。図８は、ターゲットＣＰＵ側のＯＳと、各タスクと、各ＣＰＵ周辺回路の関係を示す図である。また、図９は、ターゲットＣＰＵ側の各タスクと、画像形成装置３０１の給紙搬送に係る機構との関係を示す図である。なお、図９において、太破線は駆動力の伝達関係を示している。
【００４１】
図９において、メインモータ８０２は、レジストローラ３０７や、搬送経路においてその下流にある図示しない各要素の駆動源である。メインモータ８０２の駆動力は、レジストローラクラッチ８０４を介してレジストローラ３０７へ伝達される。給紙モータ８０３は、ピックアップローラ３０３、給紙ローラ３０４、給紙センサ３０５、搬送ローラ３０６の駆動源である。給紙モータ８０３の駆動力は、搬送ローラ３０６へは直接伝達され、給紙ローラ３０４へは給紙クラッチ８０５を介して伝達される。また、給紙ローラ３０４に伝達された給紙モータ８０３の回転力は、ベルト８１０を介してピックアップローラ３０３に伝達される。
【００４２】
ピックアップソレノイド８０６は、ピックアップローラ３０３をカセット３０２上に積載された用紙の表面と接離させるためのピックアップ機構を駆動するものである。ピックアップ機構は、ピックアップレバー８０７、ピックアップロッド８０８、ばね８０９から構成されている。ピックアップソレノイド８０６が非通電状態のときは、ばね８０９の力によりピックアップロッド８０８が上方に引っ張られ、ピックアップローラ３０３は用紙と離間する。ピックアップソレノイド８０６が通電状態になると、ピックアップレバー８０７を介してピックアップロッド８０８が下方に引っ張られ、ピックアップローラ３０３が用紙の最上面に接する。
【００４３】
従って、給紙モータ８０３が回転状態で、給紙クラッチ８０５が連結態の時に、ピックアップソレノイド８０６を作動させることにより、カセット３０２から、ピックアップローラ３０３によって給紙ローラ３０４まで用紙が繰り出される。この用紙は、レジストローラ３０７方向に向かって搬送される。
【００４４】
画像形成装置３０１の制御は、画像形成装置３０１に搭載されたターゲットＣＰＵによって行われる。ターゲットＣＰＵの給紙搬送制御に関連する機能として、画像形成制御タスク、搬送停止処理、給紙搬送制御タスク、給紙モータ停止処理、システムタイマ生成処理、ラウンドロビン処理がある。
【００４５】
画像形成制御タスクは、画像形成装置３０１への画像形成指示に応じて画像形成を行うものである。メインモータ８０２は、画像形成部や定着器の駆動源となっているため、画像形成制御タスクは、メインモータ８０２を画像形成開始時に起動し、画像形成終了時に停止する。また、画像形成制御タスクは、１ページの画像形成処理毎に給紙搬送制御タスクに画像形成ジョブ発生を通知する。
【００４６】
給紙搬送制御タスクは、画像形成制御タスクからの画像形成ジョブに応じて、先行紙との紙間をとりながら１枚の用紙に対する給紙搬送制御を行う。給紙搬送制御タスクは、給紙モータ８０３、給紙クラッチ８０５、ピックアップソレノイド８０６を制御してカセット３０２から用紙を送りだす。その後、給紙搬送制御タスクは、給紙センサ３０５で用紙先端が検知された時点でピックアップソレノイドを停止しピックアップローラ３０３を用紙表面から離間させる。その後、給紙搬送制御タスクは、所定の先行紙との紙間調整処理を行いつつレジストセンサ３０８までの用紙搬送を制御し、搬送停止処理を介してレジストセンサ３０８による用紙先端検知によって用紙搬送を停止し、給紙搬送処理を完了する。
【００４７】
ラウンドロビン処理は、タスク管理部（組み込みＯＳ）のタスク１周期に１度実行される処理であり、給紙センサ３０５のチャタリング除去処理などに使用されている。給紙搬送制御タスクは、給紙センサ３０５のチャタリング除去処理を行った結果により動作を決定する。なお、チャタリングとは、センサがオンからオフや、オフからオンに変化するタイミングにおいて、機械的又は電気的なばらつきにより、センサの値が確定しない現象である。ターゲットコードは、このチャタリングを除去するために、ラウンドロビン処理により、センサ値を複数回検出し、所定の回数だけ同じ信号値であれば、センサの値を確定する処理を行っている。
【００４８】
搬送停止処理は、レジストセンサ３０８による用紙先端検知に応じて給紙搬送を停止する機能で、外部割込み生成機能に対する割込み設定機能と、外部割込み生成機能からの割込み要求に応じて実行される割込み処理とで構成される。給紙搬送制御タスクは、給紙開始後の所定タイミングにおいて搬送停止処理に対して、処理実行許可通知を出す。これに応じて、搬送停止処理は外部割込み生成機能に対してレジストセンサ３０８の信号入力を外部入力とし、レジストセンサ３０８の信号の紙無しレベルから紙有りレベルへの変化をトリガとする外部割込みを有効とする設定を行う。給紙搬送中の用紙先端がレジストセンサ３０８に到達し、レジストセンサ３０８の信号が紙無しレベルから紙有りレベルに変化すると、外部割込み生成機能は、搬送停止処理の指定に基づき割込み要求を発生させる。この割込み要求に応じて、搬送停止処理の割込み処理が起動される。搬送停止処理の割込み処理では、クラッチ８０４の連結解除と共に給紙モータ停止処理の起動処理を行う。
【００４９】
給紙モータ停止処理は、レジストローラクラッチ８０４の連結解除から所定時間後に給紙モータを停止する処理を行う機能である。具体的には、給紙モータ停止処理は、搬送停止処理から呼び出され、タイマＡに対する割込み設定をおこなう機能と、タイマＡからの割込み要求に応じて実行される割込み処理とで構成される。給紙モータ停止処理は、搬送停止処理から呼び出されるとタイマＡに対して所定時間後に割込みを発生させる設定を行う。そして、タイマＡによる設定時間後の割込み要求に対応する割込み処理において、給紙モータ８０３の停止処理を行った後に、給紙搬送制御タスク８１３に停止処理終了を通知する。
【００５０】
給紙搬送制御タスクは、停止処理終了通知を所定時間以内に受けた場合、正常に給紙搬送が完了したと判断し、画像形成制御タスクに給紙搬送終了を通知する。一方、給紙搬送制御タスクは、所定時間経過までに停止処理終了通知がない場合、ジャム発生と判断し、不図示の状態管理タスクに給紙遅延ジャム発生を通知する。
【００５１】
画像形成制御タスクは、給紙搬送制御タスクからの給紙搬送終了通知を受けた後、所定の画像形成準備が完了した時点で給紙モータを駆動し、クラッチ８０４を連結して用紙に画像を形成するための搬送を開始する。画像形成制御タスクは、搬送開始から所定タイミング後に外部装置へＴＯＰ信号を出力する。外部装置はＴＯＰ信号に同期して画像データを出力するため、ＴＯＰ信号の出力タイミングに対する用紙の搬送位置の精度が用紙上への画像形成位置精度に影響する。従って、搬送開始時の用紙先端位置、すなわち、給紙搬送終了時の用紙の一時停止位置の精度が重要になる。給紙搬送終了時の一時停止処理をレジストセンサ３０８信号に応じた外部割込みで処理するのはこのためである。
【００５２】
また、搬送を開始するため画像形成制御タスクによって給紙モータ８０３が駆動される際に、クラッチ８０５の連結よりも給紙モータ８０３の立ち上がりが遅いと搬送ローラ３０６による用紙の引っ張りが発生し、用紙搬送にずれが生じる恐れがある。給紙搬送終了時にクラッチ８０４の連結解除から時間差をつけて給紙モータ８０３の停止を行うのは、これにより搬送ローラ３０６とレジストローラ３０７の間に用紙のたるみを持たせて、搬送開始時に引っ張りが生じないようにするためである。
【００５３】
システムタイマ生成処理は、ファームウェアの制御において各種タイミングで制御を行うための基準となるシステムタイマを生成する機能で、機能の大部分はタイマＢからの割込み要求によって実行されるタイマ割込み処理として構成される。システムタイマ生成処理はタイマＢに対してシステムタイマの単位時間の間隔でタイマ割込みが発生するように設定し、タイマ割込みの発生毎にシステムタイマをカウントアップする。
【００５４】
タスクタイマ管理部は、タスク毎に割り当てられるタイマの管理を行い、タスクからの指示に応じてタイマのカウント開始、停止、クリア、タスクタイマイベントの発生通知、タイマカウント値の通知などを行う。タスクタイマ管理部によるタスク毎のタイマ管理はシステムタイマを基準として行われる。給紙搬送制御タスクによる搬送停止処理に対する処理実行許可の通知、給紙遅延ジャム検出は、タスクタイマ管理部に登録した各々のタスクタイマイベントに応じて行っている。
【００５５】
図８の制御構成において、タイマイベントを発生させるＣＰＵ周辺回路の機能はタイマＡとタイマＢである。よって、本実施形態による情報処理装置は、タイマＡ及びＢの制御レジスタに対するアクセスイベントに応じてタイマイベント管理テーブル１５５や、タイマイベント管理テーブル１５８を更新する。
【００５６】
続いて、一般的なマルチタスク処理を行う組み込みＯＳの動作説明を行う。図１０は、タスク管理部と、画像形成制御タスク、給紙搬送制御タスク、ラウンドロビン処理の３つのタスクのソフトウェア構成を示したものである。タスク管理部、つまり、組み込みＯＳが３つのタスクの処理を切り替えながら、処理をすることにより、マルチタスク動作を行う。
【００５７】
図１１は、タスク管理部が、タスクの実行順番・タイミングを管理しながら、タスク実行を行っていることを示したものである。なお、上段がタスク管理部の動作、下段が各タスクの動作タイミングを示している。続いて、タスク管理部の処理について、図１２を用いて説明する。タスク管理部は、Ｓ９０１において、ラウンドロビン処理への切り替えを行い、Ｓ９０２において、ラウンドロビンからの復帰処理を行う。続いて、タスク管理部は、Ｓ９０３において、画像形成タスク切り替えタイミングであるかを判断する。切り替えタイミングである場合、タスク管理部は、Ｓ９０４において、画像形成制御タスクへの切り替えを行い、Ｓ９０５において画像形成制御タスクからの復帰処理を行う。一方、Ｓ９０３において、切り替えタイミングでは無い場合、タスク管理部は、Ｓ９０４及びＳ９０５の処理を省略する。続いて、タスク管理部は、Ｓ９０６において、給紙搬送タスク切り替えタイミングかを判断する。切り替えタイミングである場合、タスク管理部は、Ｓ９０７において、給紙搬送制御タスクへの切り替えを行い、Ｓ９０８において給紙搬送制御タスクからの復帰処理を行う。一方、Ｓ９０６において、切り替えタイミングでは無い場合、タスク管理部は、Ｓ９０７及びＳ９０８の処理を省略する。その後、タスク管理部は、Ｓ９０１から処理を繰り返す。
【００５８】
図１３は、タスク管理部の処理から、画像形成制御タスクへの切り替え時の処理フローを示した例である。タスク管理部は、Ｓ９１１で、組み込みＯＳのレジスタ領域を保持し、Ｓ９１２で組み込みＯＳプログラムカウンタを保持する。そして、タスク管理部は、Ｓ９１３で組み込みＯＳ管理の記憶領域の保持を行い、Ｓ９１４でプログラムカウンタを書き換えることにより、画像形成タスクに実行権を移す。
【００５９】
図１４は、画像形成制御タスクからタスク管理部に処理を引き渡すときのタスク管理部のフローチャートである。タスク管理部は、Ｓ９１５で画像形成タスクのレジスタ領域を保持し、Ｓ９１６で画像形成タスクのプログラムカウンタを保持する。そして、タスク管理部は、Ｓ９１７で画像形成タスクのタスク管理記憶領域を保持し、Ｓ９１８で画像形成タスクの次回実行タイミングを保持する。このように、装置の制御においては、マルチタスク構成を使用し、処理を行っている。
【００６０】
従来、組込みＯＳのシミュレータは、ネイティブシミュレータの機能としてネイティブシミュレータ１０１内に設けられていた。なお、ＩＳＳ１０４に関しては、ＯＳの機械語命令をそのまま実行することで組込みＯＳの機能を模擬している。しかしながら、本実施形態においては、組み込みＯＳシミュレーション部１を、ネイティブシミュレータ１０１ではなく管理部１０２に配置する。
【００６１】
続いて、図１５を用いて、本実施形態の制御構成を示す。なお、図１５も、ＯＳの模擬動作を行う組み込みＯＳシミュレーション部１と、画像形成制御タスク、給紙搬送制御タスク、ラウンドロビン処理の３つのタスクのソフトウェア構成を示している。組み込みＯＳシミュレーション部１は、ネイティブシミュレータ１０１の動作時には、ネイティブシミュレータ１０１で、画像形成制御タスク、給紙搬送制御タスク、ラウンドロビン処理をコールする。一方、組み込みＯＳシミュレーション部１は、ＩＳＳ１０４の動作時には、ＩＳＳ１０４で、画像形成制御タスク、給紙搬送制御タスク、ラウンドロビン処理をコールする。
【００６２】
続いて、本実施形態におけるタスク切り替えを、図１６を用いて説明する。なお、図１６においては、まず、ネイティブシミュレータ１０１が動作しているものとする。切り替え制御部１５２は、切り替えトリガ生成部１６１からのトリガ信号を監視しており、トリガ信号が切り替えを示すと、ＣＰＵシミュレータの切り替え、つまり本例では、ネイティブシミュレータ１０１からＩＳＳ１０４への切り替えを行う。なお、切り替え制御部１５２は、ＣＰＵシミュレータが処理を組み込みＯＳシミュレーション部１に処理を戻したタイミング、つまり、システムコールのタイミングで切り替えを行う。図１６においては、ネイティブシミュレータ１０１が実行中の画像形成制御タスクを終了して、組み込みＯＳシミュレーション部１に処理を戻したタイミングで切り替え処理を行っている。その後、組み込みＯＳシミュレーション部１は、例えば、次の給紙搬送制御タスク処理をＩＳＳ１０４対して指示する。
【００６３】
本実施形態において、ＣＰＵシミュレータから、組み込みＯＳシミュレーション部１に処理を引き渡す際の処理を、図１７を用いて説明する。組み込みＯＳシミュレーション部１は、処理を行っていたタスクのレジスタ領域を保持し、Ｓ９２２でタスクのプログラムカウンタを保持する。続いて、組み込みＯＳシミュレーション部１は、Ｓ９２３でタスクのタスク管理記憶領域を保持し、Ｓ９２４でタスクの次回実行タイミングを保持する。その後、組み込みＯＳシミュレーション部１は、切り替えトリガ生成部１６１からのトリガ信号を確認する。トリガ信号が切り替えを示していた場合、Ｓ９２６において、切り替え制御部１５２は、ＣＰＵシミュレータ、つまり、ネイティブシミュレータ１０１とＩＳＳ１０４との切り替え処理を行う。
【００６４】
続いて、図１８を用いて、図１７のＳ９２６における切り替え制御部１５２による切り替え処理の説明を行う。切り替え制御部１５２は、Ｓ９３１で、基準タイマ１０６の値を、切り替え後のＣＰＵシミュレータが使用する値に変更する。つまり、ネイティブシミュレータ１０１と、ＩＳＳ１０４では時間の表現方法が異なるため、表現している時間そのものを変更することなく、切り替え後のＣＰＵシミュレータが使用している時間基準による値に変更する。その後、切り替え制御部１５２は、Ｓ９３２で実行するシミュレータの切り替え処理を行う。
【００６５】
このように、組み込みＯＳのタスクの切り替えタイミングで、ネイティブシミュレータとＩＳＳを切り替える。これにより、ＯＳが管理するＲＡＭ情報、プログラムカウンタ情報、レジスタ情報、周辺回路情報、割り込み情報については、ＣＰＵシミュレータ間で受け渡す必要がなくなる。よって、ＣＰＵシミュレータの切り替えを迅速に行うことができる。
【００６６】
なお、ＣＰＵシミュレータの切り替え時、切り替え元のＣＰＵシミュレータに対応するタイマ管理テーブルに、未だ発生していないタイマイベント（残留イベント）が含まれている場合がある。この場合、この残留イベントを切り替え先のＣＰＵシミュレータに引き継ぐことにより、切り替え先におけるタイマ管理テーブルの処理を軽減することができる。
【００６７】
図１９に、残留イベントの引き継ぎを行う場合における、切り替え制御部１５２の切り替え処理を示す。図１８のフローチャートとの相違点は、Ｓ９４２におけるタイマ管理テーブルの移行処理のみである。例えば、ネイティブシミュレータ１０１からＩＳＳ１０４に切り替えるものとする。この場合、切り替え制御部１５２は、Ｓ９４２において、タイマイベント管理テーブル１５５の残留イベントを判定し、残留イベントをタイマイベント管理テーブル１５８に登録する。なお、ネイティブシミュレータ１０１とＩＳＳ１０４では時間の計数方法が異なるため、基準タイマ１０６の換算処理と同様に、タイマイベント管理テーブル１５８への登録においては時間の換算を行う。
【００６８】
最後にＣＰＵシミュレータの切り替えトリガについて説明する。図２０に、装置シミュレータ１０３の給紙センサ３０５において、チャタリングが発生した場合のシミュレーション動作を示す。なお、センサ３０５の仮想信号は、ネイティブシミュレータ１０１から、ＩＳＳ１０４への切り替えトリガとして使用する信号の１つである。センサ３０５の変化により、切り替えトリガ生成部１６１は、例えば、ネイティブシミュレータ１０１から、ＩＳＳ１０４への切り替えを指示する。
【００６９】
ここで、センサ３０５にチャタリングが発生すると、切り替えトリガ生成部１６１には、切り替えのトリガとなるイベントが複数回通知されることになる。ここで、組み込みＯＳシミュレーション部１は、最初のトリガの通知に基づき、システムコールのタイミングにてＩＳＳ１０４への切り替えを行う。ＩＳＳ１０４にも、仮想信号伝達部１５７経由でセンサ３０５の変化が複数回入力されるが、ＩＳＳ１０４は、シミュレーション動作によりチャタリング除去を行う。一方、切り替えトリガ生成部１６１は、最後にセンサ３０５の変化が発生してからの模擬時間を監視する。なお、センサ３０５の出力による切り替え時、ＩＳＳ１０４は模擬時間ｔｘの模擬動作を行うものと予め定義されているものとする。この場合、切り替えトリガ生成部１６１は、最後にセンサ３０５の変化が発生してからの模擬時間がｔｘを経過した場合、組み込みＯＳシミュレーション部１に対し、ＩＳＳ１０４から、ネイティブシミュレータ１０１へ切り替えトリガを出力する。この動作により、センサのチャタリング除去のシミュレーションを正確に行うことが可能となる。
【００７０】
以上、複数のＣＰＵシミュレータ間の切り替えをオペレーティングシステムへのシステムコールが発生したタイミングで行う。この構成により、切り替え先のＣＰＵシミュレータに引き渡す必要がある情報を、それ以外のタイミングで切り替える場合と比較して削減することができる。また、切り替え先のＣＰＵシミュレータに対して切り替え前のＣＰＵにおいて確定したタイマイベントを引き渡すことで、切り替え後における処理を減らし、速やかに切り替え処理を行うことが可能になる。
【００７１】
以上の構成により、例えば、模擬時間とは非同期であるネイティブシミュレータ１０１と、模擬時間と同期するＩＳＳ１０４間を切り替えながら模擬動作を行うことができる。この組み合わせにより、シミュレーションを効率よく行うことができる。
【図１】
2012226445.tif 000003
【図２】
2012226445.tif 000004
【図３】
2012226445.tif 000005
【図４】
2012226445.tif 000006
【図５】
2012226445.tif 000007
【図６】
2012226445.tif 000008
【図７】
2012226445.tif 000009
【図８】
2012226445.tif 000010
【図９】
2012226445.tif 000011
【図１０】
2012226445.tif 000012
【図１１】
2012226445.tif 000013
【図１２】
2012226445.tif 000014
【図１３】
2012226445.tif 000015
【図１４】
2012226445.tif 000016
【図１５】
2012226445.tif 000017
【図１６】
2012226445.tif 000018
【図１７】
2012226445.tif 000019
【図１８】
2012226445.tif 000020
【図１９】
2012226445.tif 000021
【図２０】
2012226445.tif 000022