説明

エラー検知方法、情報処理回路及びエラー検知用プログラム

【課題】ハードウェアの動作実行中におけるレジスタ値の変更を容易且つ迅速に認識可能とすること。
【解決手段】専用HW40をレジスタ41によって制御するプログラムのエラー検知方法であって、予め定められた処理の実行中であるか否かを示す信号を出力し、レジスタ41に対して予め定められた処理の制御に関するレジスタ値の変更が加えられたことを検知して検知信号を出力し、予め定められた処理の実行中であるか否かを示す信号及び検知信号に基づき、予め定められた処理の実行中においてレジスタ値の変更が加えられたことが検知された場合にエラーを検知することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、エラー検知方法、情報処理回路及びエラー検知用プログラムに関し、特に、ハードウェアと連動して動作するソフトウェアのエラー検知に関する。
【背景技術】
【0002】
ハードウェアと連動して動作するソフトウェアは、ハードウェアに設けられたレジスタにパラメータを設定することにより、ハードウェアの動作を制御する。例えば、ハードウェアを起動させて処理を実行させる場合、ソフトウェアは、ハードウェアの起動や処理の実行を命令するために割り当てられているレジスタに値を設定する。
【0003】
このようなソフトウェアの開発に際しては、制御対象のハードウェアにおいて動作の不具合が発生しないようにプログラムを構成する必要がある。このようなソフトウェアの作成に用いられるものとして、検証シナリオに基づいたシミュレーションを行うシミュレーション装置が提案されている(例えば、特許文献1参照)。
【0004】
特許文献1に開示された技術においては、ハードウェアを制御するソフトウェアであるドライバからの指示に対する応答を出力すると共に、その際の制御情報を蓄積することにより、ソフトウェア及びハードウェアの検証を高精度に行う事を可能としている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述したように制御対象のハードウェアにおいて動作の不具合が発生する場合とは、例えば、ハードウェアがソフトウェアからの制御に基づいて処理を開始した後、その処理が完了する前に、再度ソフトウェアからハードウェアの起動指示がなされる場合や、パラメータの変更指示がなされる場合である。このような現象はハードウェア内部のレジスタで発生する現象であるため、オペレータがその現象を容易且つ即座に認識することは困難である。
【0006】
また、上述したようなハードウェアの例としては、例えば画像処理装置に搭載される画像処理用の回路や、画像形成出力を実行するプロッタエンジン及び原稿を読み取るスキャナエンジン等である。このような画像処理用のハードウェアをソフトウェアによって制御する際の制御の高速化のため、ドライバを介さずにアプリケーションが直接ハードウェアを制御する、即ち、アプリケーションがハードウェアのレジスタに直接アクセスするような態様が用いられる場合がある。
【0007】
ドライバを介する場合、ドライバに含まれるレジスタ制御機能により、上述したようなエラーの検知を行うことが可能である場合もあるが、ドライバを省略してアプリケーションが直接ハードウェアを制御する場合、エラーの検知は更に困難となる。
【0008】
ハードウェアの動作実行中における起動レジスタ及びパラメータレジスタに対するレジスタ値の変更を防ぐことを容易に実現する機能として、ハードウェア側において、動作実行中におけるレジスタ値の変更をブロックする方法がある。しかしながら、これは応急的な措置であり、ハードウェアが動作実行中であるにも関わらずレジスタ値の変更を行うような誤った処理が含まれるソフトウェアを修正するものではない。
【0009】
尚、上述したような事情は、ハードウェアの開発段階におけるシミュレーションや作成されたハードウェアの動作検証において課題となる他、運用が開始された装置に搭載されているハードウェアであっても同様に課題となり得る。
【0010】
本発明は、上記実情を考慮してなされたものであり、ハードウェアの動作実行中におけるレジスタ値の変更を容易且つ迅速に認識可能とすることを目的とする。
【課題を解決するための手段】
【0011】
上記課題を解決するために、本発明の一態様は、予め定められた処理を行うハードウェアをレジスタによって制御するプログラムのエラー検知方法であって、前記予め定められた処理の実行中であるか否かを示す信号を出力し、前記レジスタに対して前記予め定められた処理の制御に関するレジスタ値の変更が加えられたことを検知して検知信号を出力し、前記予め定められた処理の実行中であるか否かを示す信号及び前記検知信号に基づき、前記予め定められた処理の実行中において前記レジスタ値の変更が加えられたことが検知された場合にエラーを検知することを特徴とする。
【0012】
また、本発明の他の態様は、予め定められた処理を行う情報処理回路であって、前記予め定められた処理を制御するためのプログラムからの制御を受け付けるためのレジスタと、前記予め定められた処理を行う情報処理モジュールと、前記情報処理モジュールの動作を監視し、前記予め定められた処理の実行中であるか否かを示す信号を出力する実行中監視モジュールと、前記レジスタを監視し、前記予め定められた処理の動作に関するレジスタ値の変更が加えられたことを検知して検知信号を出力するレジスタ監視モジュールと、前記予め定められた処理の実行中であるか否かを示す信号及び前記検知信号に基づき、前記予め定められた処理の実行中において前記レジスタ値の変更が加えられたことが検知された場合にエラーを検知するエラー検知モジュールとを含むことを特徴とする。
【0013】
また、本発明の更に他の態様は、予め定められた処理を行うハードウェアをレジスタによって制御するプログラムのエラー検知用プログラムであって、前記ハードウェアによる前記予め定められた処理をシミュレーションするステップと、前記予め定められた処理のシミュレーションが実行中であるか否かを示す信号を出力するステップと、前記レジスタに対して前記予め定められた処理に関するレジスタ値の変更が加えられたことを検知して検知信号を出力するステップと、前記予め定められた処理のシミュレーションが実行中であるか否かを示す信号及び前記検知信号に基づき、前記予め定められた処理のシミュレーションの実行中において前記レジスタ値の変更が加えられたことが検知された場合にエラーを検知するステップとを情報処理装置に実行させることを特徴とする。
【発明の効果】
【0014】
本発明によれば、ハードウェアの動作実行中におけるレジスタ値の変更を容易且つ迅速に認識可能とすることができる。
【図面の簡単な説明】
【0015】
【図1】本発明の実施形態に係る画像形成装置のハードウェア構成を示すブロック図である。
【図2】本発明の実施形態に係る画像形成装置の機能構成を示す図である。
【図3】本発明の実施形態に係る専用HWの制御構成を示す図である。
【図4】本発明の実施形態に係る専用HWの制御態様を示す図である。
【図5】本発明の実施形態に係る仮想プラットフォームの機能構成を示す図である。
【図6】本発明の実施形態に係る専用HWのエラー検知動作を示すフローチャートである。
【図7】本発明の実施形態に係るユーザインタフェースモジュール202によって表示される結果表示画面の例を示す図である。
【図8】本発明の他の実施形態に係る専用HWの機能構成を示すブロック図である。
【図9】本発明の他の実施形態に係る専用HWのエラー検知動作を示すフローチャートである。
【図10】本発明の他の実施形態に係る動作ログを示す図である。
【図11】本発明の他の実施形態に係るアプリケーション及びドライバの動作ログを示す図である。
【発明を実施するための形態】
【0016】
実施の形態1.
以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、プリンタ、スキャナ、複写機等の機能を含む複合機(MFP:Multi Function Peripheral)としての画像処理装置に搭載されるハードウェアのエラー検知を例として説明する。
【0017】
図1は、本実施形態に係る画像形成装置1のハードウェア構成を示すブロック図である。図1に示すように、本実施形態に係る画像形成装置1は、一般的なサーバやPC(Personal Computer)等の情報処理端末と同様の構成に加えて、画像形成出力に係るエンジンを有する。即ち、本実施形態に係る画像形成装置1は、CPU(Central Processing Unit)10、RAM(Random Access Memory)20、ROM(Read Only Memory)30、専用HW(Hard Ware)40、HDD(Hard Disk Drive)50及びI/F60がバス90を介して接続されている。また、I/F60にはLCD(Liquid Crystal Display)70及び操作部80が接続されている。
【0018】
CPU10は演算装置であり、画像形成装置1全体の動作を制御する。RAM20は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、CPU10が情報を処理する際の作業領域として用いられる。ROM30は、読み出し専用の不揮発性記憶媒体であり、ファームウェア等のプログラムが格納されている。
【0019】
専用HW40は、画像形成装置1において予め定められた処理を実行する情報処理回路である。専用HW40には、画像形成出力を実行するためのプリントエンジンや、原稿を読み取るためのスキャナユニットの他、プリントエンジンが画像形成出力を実行するための画像情報を生成するハードウェアアクセラレータが含まれる。専用HW40においてソフトウェア制御を受け付けるために設けられるレジスタに対する処理が、本実施形態において検知するべきエラーの趣旨である。
【0020】
HDD50は、情報の読み書きが可能な不揮発性の記憶媒体であり、OS(Operating System)や各種の制御プログラム、アプリケーション・プログラム等が格納されている。I/F60は、バス90と各種のハードウェアやネットワーク等を接続し制御する。LCD70は、ユーザが画像形成装置1の状態を確認するための視覚的ユーザインタフェースである。操作部80は、キーボードやマウス等、ユーザが画像形成装置1に情報を入力するためのユーザインタフェースである。
【0021】
このようなハードウェア構成において、ROM30やHDD50若しくは図示しない光学ディスク等の記録媒体に格納されたプログラムがRAM20に読み出され、CPU10がそれらのプログラムに従って演算を行うことによりソフトウェア制御部が構成される。このようにして構成されたソフトウェア制御部と、ハードウェアとの組み合わせによって、本実施形態に係る画像形成装置1の機能を実現する機能ブロックが構成される。
【0022】
次に、図2を参照して、本実施形態に係る画像形成装置1の機能構成について説明する。図2は、本実施形態に係る画像形成装置1の機能構成を示すブロック図である。図2に示すように、本実施形態に係る画像形成装置1は、コントローラ100、ADF(Auto Documennt Feeder:原稿自動搬送装置)110、スキャナユニット120、排紙トレイ130、ディスプレイパネル140、給紙テーブル150、プリントエンジン160、排紙トレイ170及びネットワークI/F180を有する。
【0023】
また、コントローラ100は、主制御部101、エンジン制御部102、入出力制御部103、画像処理部104及び操作表示制御部105を有する。図2に示すように、本実施形態に係る画像形成装置1は、スキャナユニット120、プリントエンジン160を有する複合機として構成されている。尚、図2においては、電気的接続を実線の矢印で示しており、用紙の流れを破線の矢印で示している。
【0024】
ディスプレイパネル140は、画像形成装置1の状態を視覚的に表示する出力インタフェースであると共に、タッチパネルとしてユーザが画像形成装置1を直接操作し若しくは画像形成装置1に対して情報を入力する際の入力インタフェース(操作部)でもある。ネットワークI/F180は、画像形成装置1がネットワークを介して他の機器と通信するためのインタフェースであり、Ethernet(登録商標)やUSB(Universal Serial Bus)インタフェースが用いられる。
【0025】
スキャナユニット120は原稿を読み取るための撮像装置であり、プリントエンジン160は、用紙に対して画像形成出力を実行するためのプロッタエンジンであり、いずれも専用HW40によって実現される。コントローラ100がスキャナユニット120及びプリントエンジン160を制御するためにスキャナユニット120及びプリントエンジン160夫々の内部に設けられるレジスタの制御が、本実施形態において検知するべきエラーの1つである。
【0026】
コントローラ100は、ソフトウェアとハードウェアとの組み合わせによって構成される。具体的には、ROM30や不揮発性メモリ並びにHDD50や光学ディスク等の不揮発性記録媒体に格納されたファームウェア等の制御プログラムが、RAM20等の揮発性メモリ(以下、メモリ)にロードされ、CPU10がそれらのプログラムに従って演算を行うことにより構成されるソフトウェア制御部と、集積回路などのハードウェアとによってコントローラ100が構成される。コントローラ100は、画像形成装置1全体を制御する制御部として機能する。
【0027】
主制御部101は、コントローラ100に含まれる各部を制御する役割を担い、コントローラ100の各部に命令を与える。エンジン制御部102は、プリントエンジン160やスキャナユニット120等を制御若しくは駆動する駆動手段としての役割を担う。入出力制御部103は、ネットワークI/F180を介して入力される信号や命令を主制御部101に入力する。また、主制御部101は、入出力制御部103を制御し、ネットワークI/F180を介して他の機器にアクセスする。
【0028】
画像処理部104は、主制御部101の制御に従い、入力された印刷ジョブに含まれる印刷情報に基づいて描画情報を生成する。この描画情報とは、画像形成部であるプリントエンジン160が画像形成動作において形成すべき画像を描画するための情報である。また、印刷ジョブに含まれる印刷情報とは、PC等の情報処理装置にインストールされたプリンタドライバによって画像形成装置1が認識可能な形式に変換された情報であり、本実施形態においては、PDL(Page Description Language)によって記述された情報である。
【0029】
画像処理部104は、CPU10がプログラムに従って演算を行うことにより構成されるソフトウェアによっても実現される他、上述したようなハードウェアアクセラレータによっても実現される。このように画像処理部104として機能する専用HW40内のレジスタの制御が、本実施形態において検知するべきエラーの1つである。操作表示制御部105は、ディスプレイパネル140に情報表示を行い若しくはディスプレイパネル140を介して入力された情報を主制御部101に通知する。
【0030】
画像形成装置1がプリンタとして動作する場合は、まず、入出力制御部103がネットワークI/F180を介して印刷ジョブを受信する。入出力制御部103は、受信した印刷ジョブを主制御部101に転送する。主制御部101は、印刷ジョブを受信すると、画像処理部104を制御して、印刷ジョブに含まれる印刷情報に基づいて描画情報を生成させる。
【0031】
画像処理部104によって描画情報が生成されると、エンジン制御部102は、生成された描画情報に基づき、給紙テーブル150から搬送される用紙に対して画像形成を実行する。即ち、プリントエンジン160が画像形成部として機能する。プリントエンジン160の具体的態様としては、インクジェット方式による画像形成機構や電子写真方式による画像形成機構等を用いることが可能である。プリントエンジン160によって画像形成が施された文書は排紙トレイ170に排紙される。
【0032】
画像形成装置1がスキャナとして動作する場合は、ユーザによるディスプレイパネル140の操作若しくはネットワークI/F180を介して外部のクライアント用の情報処理端末等から入力されるスキャン実行指示に応じて、操作表示制御部105若しくは入出力制御部103が主制御部101にスキャン実行信号を転送する。主制御部101は、受信したスキャン実行信号に基づき、エンジン制御部102を制御する。
【0033】
エンジン制御部102は、ADF110を駆動し、ADF110にセットされた撮像対象原稿をスキャナユニット120に搬送する。また、エンジン制御部102は、スキャナユニット120を駆動し、ADF110から搬送される原稿を撮像する。また、ADF110に原稿がセットされておらず、スキャナユニット120に直接原稿がセットされた場合、スキャナユニット120は、エンジン制御部102の制御に従い、セットされた原稿を撮像する。即ち、スキャナユニット120が撮像部として動作する。
【0034】
撮像動作においては、スキャナユニット120に含まれるCCD等の撮像素子が原稿を光学的に走査し、光学情報に基づいて生成された撮像情報が生成される。エンジン制御部102は、スキャナユニット120が生成した撮像情報を画像処理部104に転送する。画像処理部104は、主制御部101の制御に従い、エンジン制御部102から受信した撮像情報に基づき画像情報を生成する。画像処理部104が生成した画像情報はHDD40等の画像形成装置1に装着された記憶媒体に保存される。
【0035】
画像処理部104によって生成された画像情報は、ユーザの指示に応じてそのままHDD40等に格納され若しくは入出力制御部103及びネットワークI/F180を介して外部の装置に送信される。即ち、スキャナユニット120及びエンジン制御部102が画像入力部として機能する。
【0036】
また、画像形成装置1が複写機として動作する場合は、エンジン制御部102がスキャナユニット120から受信した撮像情報若しくは画像処理部104が生成した画像情報に基づき、画像処理部104が描画情報を生成する。その描画情報に基づいてプリンタ動作の場合と同様に、エンジン制御部102がプリントエンジン160を駆動する。
【0037】
次に、本実施形態に係る専用HW40の制御態様について、図3を参照して説明する。図3に示すように、専用HW40内部には、CPU10との間で情報をやり取りするためのレジスタ41が設けられている。レジスタ41はバス90を介してCPU10と接続されており、バス90を介してレジスタ値の設定を受け付ける。
【0038】
CPU10は、RAM20にロードされたプログラムに従って演算を行うことにより、専用HW40のレジスタにアクセスして専用HW40を制御する。CPU10が専用HW40を制御するためのプログラムは、図3に示すようにドライバ11やアプリケーション12である。尚、図3においては、図示の便宜上CPU10内部にドライバ11及びアプリケーション12を示しているが、実際には、上述したようにRAM20にロードされたドライバ・プログラム及びアプリケーション・プログラムに従って演算を行うことにより、CPU10がドライバ11、アプリケーション12として処理を行う。
【0039】
アプリケーション12は、画像処理装置1において夫々の機能を実行するために構成されるソフトウェアであり、プリントアウト実行用のアプリケーション、スキャン実行用のアプリケーション、コピー実行用のアプリケーション等である。ドライバ11は、アプリケーション12が専用HW40の機能を用いる際に、専用HW40との間でレジスタ41の制御を行うために構成されるソフトウェアであり、スキャナユニット120、プリントエンジン160や、ハードウェアアクセラレータ夫々に対応して構成される。
【0040】
尚、図3においては、アプリケーション12がドライバ11を介して専用HW40を制御する場合を例として示しているが、ドライバ11を省略し、アプリケーション12が専用HW40のレジスタ41に直接アクセスするような構成でも良い。また、図3においては、図示の容易化のためにCPU10がバス90に接続されているように示しているが、実際には、CPU10はチップセット等のブリッジを介してバス90に接続されている。
【0041】
次に、本実施形態におけるCPU10による専用HW40の制御態様及び検知するべきエラーの態様について、図4(a)〜(c)を参照して説明する。図4(a)は、CPU10の制御により専用HW40を起動して動作させる場合の一般的な動作状態を示すタイミングチャートである。以下の説明においては、図3に示すようにアプリケーション12及びドライバ11による制御を、CPU10による制御として説明する。
【0042】
図4(a)に示すように、専用HW40に動作を実行させる場合、CPU10がレジスタ41の起動レジスタにレジスタ値を書き込むことにより、専用HW40を起動させる。図4(a)〜(c)においては、CPU10による起動レジスタ値の設定を“KICK”と示す。
【0043】
CPU10による“KICK1”によって起動された専用HW40は、レジスタ41のうちパラメータ設定用のレジスタに設定さているパラメータ値に従ってハードウェア処理を開始する。これにより、図4(a)に“RUN”と示す期間、ハードウェア処理が実行される。CPU10による“KICK2”についても同様に、“RUN”と示す所定の処理期間、専用HW40はハードウェア処理を実行する。
【0044】
図4(b)は、本実施形態において検知対象となるエラーのうち、専用HW40が処理期間中であるにも関わらず、起動レジスタへのレジスタ値の書込み、即ちKICKが行われた場合を示すタイミングチャートである。“KICK1”によるハードウェア処理の実行期間の“RUN”が終了する前に、CPU10によって“KICK1´”が行われても、“KICK1”に対応するハードウェア処理が実行中であるため、“KICK1´”に対応するハードウェア処理は実行不可能であり、専用HW40やアプリケーション12若しくはドライバ11の動作において不具合の原因となり得る。
【0045】
同様に、図4(c)は、本実施形態に検知対象となるエラーのうち、専用HW40が処理期間中であるにも関わらず、パラメータ設定レジスタへのパラメータ値の書込み、即ちパラメータ変更が行われた場合を示すタイミングチャートである。“KICK1”によるハードウェア処理の実行期間の“RUN”が終了する前に、CPU10によってパラメータ変更が行われると、変更前のパラメータによって“KICK1”に対応するハードウェア処理を開始したにも関わらず、処理の途中でパラメータ値が変更されてしまうこととなり、専用HW40やアプリケーション12若しくはドライバ11の動作において不具合の原因となり得る。
【0046】
このような不正な“KICK1´”及びパラメータ変更は、ドライバ11またはアプリケーション12を構成するためのプログラムに、専用HW40が動作中であるにも関わらず起動レジスタの設定、パラメータ変更等が発生するようなプログラムが含まれることによって生じる。これは即ち、ドライバ11またはアプリケーション12を構成するためのプログラムに含まれるバグである。
【0047】
本実施形態に係る要旨は、このような専用HW40によるハードウェア動作の実行中における起動レジスタ値の設定やパラメータ変更等、専用HW40の動作やアプリケーション12、ドライバ11の動作上において不正なレジスタ41へのアクセスを検知することにある。
【0048】
このようなエラーを検知するため、本実施形態においては、図1に示す構成のうち専用HW40以外の構成を有するPC(Personal Computer)等の情報処理装置上において、専用HW40、バス90、ドライバ11及びアプリケーション12を含む環境をシミュレートして仮想的なプラットフォームを構成し、ドライバ11やアプリケーション12の動作をテストして上述したようなバグを検知する。以下、本実施形態に係る仮想プラットフォームについて説明する。
【0049】
図5は、本実施形態に係る仮想プラットフォーム200の構成を示す図である。仮想プラットフォーム200は、CPU10がRAM20にロードされたプログラムに従って演算を行うことにより構成され、図3において説明したような専用HW40、バス90及びCPU10を含む構成をシミュレーションする。
【0050】
図5に示すように、仮想プラットフォーム200は、ドライバ11、アプリケーション12、仮想バス201、ユーザインタフェースモジュール202及び仮想ハードウェア210を含む。また、仮想ハードウェア210は、レジスタシミュレータモジュール211、HWシミュレータモジュール212、起動レジスタ監視モジュール213、パラメータレジスタ監視モジュール214、実行中監視モジュール215、エラー検知モジュール216及びログ処理モジュール217を含む。
【0051】
ドライバ11及びアプリケーション12は、図3に示すものと同一のものであり、夫々のプログラムに従ってCPU10が演算を行うことにより構成される。仮想バス201は、バス90の機能をシミュレーションするためのものであり、ドライバ11の出力を取得して仮想ハードウェア210内に構成されたレジスタへのレジスタ設定処理等の機能をシミュレーションする。
【0052】
仮想ハードウェア210は、専用HW40の機能をシミュレーションすると共に、図4(a)〜(c)において説明したエラーを検知する機能を有する。レジスタシミュレータモジュール211は、レジスタ41の機能をシミュレーションし、仮想バス201を介してドライバ11によるレジスタ値の設定を受け付ける。HWシミュレータモジュール212は、レジスタシミュレータモジュール211へのレジスタ値の設定に基づき、専用HW40が実行するハードウェア動作、即ち予め定められた処理をシミュレーションする情報処理モジュールである。
【0053】
起動レジスタ監視モジュール213は、レジスタシミュレータモジュール211に対する起動レジスタのレジスタ設定を監視し、起動レジスタ設定がされた場合、即ち予め定められた処理の実行開始の制御に関するレジスタ値の変更が加えられた場合に検知信号を出力する。パラメータレジスタ監視モジュール214は、レジスタシミュレータモジュール211に対するパラメータ設定レジスタのレジスタ設定を監視し、パラメータ変更がされた場合、即ち、予め定められた処理の動作を設定するレジスタ値の変更が加えられた場合に検知信号を出力する。
【0054】
即ち、起動レジスタ監視モジュール213及びパラメータレジスタ監視モジュール214は、HWシミュレータモジュール212による予め定められた処理の制御に関するレジスタ値の変更が加えられた場合に、それを検知して検知信号を出力するレジスタ監視モジュールとして機能する。
【0055】
実行中監視モジュール215は、HWシミュレータモジュール212がレジスタシミュレータモジュール211の起動レジスタに対するレジスタ設定に従ってハードウェア動作のシミュレーションを開始した後、シミュレーション上においてHWシミュレータモジュール212の予め定められた処理が実行されている期間内であるか否かを監視して、実行中であるか否かを示す信号を出力する。
【0056】
実行中監視モジュール215による、HWシミュレータモジュール212がハードウェア動作の実行期間内であるか否かの監視方法は、HWシミュレータモジュール212の仕様により異なる。例えば、HWシミュレータモジュール212が、ハードウェア動作の完了に際して、レジスタシミュレータモジュール211のレジスタに動作終了を示す値を書き込むような仕様の場合、実行中監視モジュール215は、そのレジスタ値を監視することによってハードウェア動作の実行期間内であるか否かを監視することができる。
【0057】
また、HWシミュレータモジュール212が、ハードウェア動作の完了に際して、動作の完了を示す信号を出力するような仕様の場合、実行中監視モジュール215は、その動作の完了を示す信号を検知することによって、ハードウェア動作の実行期間内であるか否かを監視することができる。その他、ハードウェア動作の実行期間が常に一定であるような場合、実行中監視モジュール215は、HWシミュレータモジュール212がハードウェア動作のシミュレーションを開始してからの期間をカウントすることにより、ハードウェア動作の実行期間内であるか否かを監視することができる。
【0058】
ハードウェアシミュレータモジュール212は、シミュレーションする対象のハードウェアによって動作の実行終了を示す信号を出力する場合や、動作の実行終了を示すレジスタ値をレジスタシミュレータモジュール211の専用のレジスタに設定する場合等がある。実行中監視モジュール215は、HWシミュレータ212によるそれらの処理に基づいてHWシミュレータモジュール212がシミュレーション上にハードウェア動作を実行中であるか否か監視し、ハードウェア動作が実行中であることを示す信号を出力する。
【0059】
エラー検知モジュール216は、起動レジスタ監視モジュール213、パラメータレジスタ監視モジュール214及び実行中監視モジュール215が出力する信号に基づき、エラーを検知する。エラー検知モジュール215は、実行中監視モジュール215が出力する信号に基づき、HWシミュレータモジュール212によるシミュレーション上でハードウェア動作が実行中であるか否か判断し、ハードウェア動作が実行中であるにも関わらず、起動レジスタ監視モジュール213またはパラメータレジスタ監視モジュール214から夫々検知信号が出力された場合にエラーを検知する。
【0060】
エラー検知モジュール216は、エラーを検知すると、ログ処理モジュール217及びユーザインタフェースモジュール202に対してエラー検知信号を出力する。ログ処理モジュール217は、HWシミュレータモジュール212の動作ログを取得すると共に、エラー検知モジュール216からエラー検知信号を取得した場合、エラーログを生成する。ログ処理モジュール217は、HWシミュレータ212から取得した動作ログ及び生成したエラーログをHDD50に格納する。
【0061】
ユーザインタフェースモジュール202は、エラー検知モジュール216によるエラー検知に応じて、ログ処理モジュール217からHWシミュレータモジュール212の動作ログを取得すると共に、ドライバ11やアプリケーション12の動作ログを取得し、夫々の動作ログとエラー発生のタイミングとを関連付けて表示するための表示情報を生成して出力する。これにより、エラー発生前後の各部の動作状況がLCD70等の表示装置に表示されるため、オペレータは、ドライバ11やアプリケーション12の処理ステップのどの部分においてエラーが発生したのかを理解することができる。
【0062】
次に、本実施形態に係る仮想プラットフォーム200の動作について、図6のフローチャートを参照して説明する。図6に示すように、仮想プラットフォーム200においては、先ず起動レジスタ監視モジュール213、パラメータレジスタ監視モジュール214及び実行中監視モジュール215が、夫々の監視対象の監視を開始する(S601)。
【0063】
次に、ドライバ11及びアプリケーション12が起動する(S602)。起動したドライバ11及びアプリケーション12の処理により、レジスタシミュレータモジュール211の起動レジスタに“1”が設定されると(S603/YES)、HWシミュレータモジュール212が起動し(S604)、HWシミュレータモジュール212がハードウェア動作のシミュレーションを開始する(S605)。
【0064】
HWシミュレータモジュール212がハードウェア動作のシミュレーションを開始した後、HWシミュレータモジュール212がハードウェア動作の処理を終了する前に(S606/NO)、起動レジスタ監視モジュール213が、レジスタシミュレータモジュール211の起動レジスタに“1”が設定されたことを検知すると(S607/YES)、エラー検知モジュール216には、実行中監視モジュール215及び起動レジスタ監視モジュール213の両方から信号が入力されることとなる。これにより、エラー検知モジュール216は、エラーを検知する(S609)。
【0065】
また、HWシミュレータモジュール212がハードウェア動作の処理を終了する前に(S606/NO)、パラメータレジスタ監視モジュール214が、レジスタシミュレータモジュール211のパラメータ設定レジスタへのパラメータ変更を検知すると(S607/NO、S608/YES)、エラー検知モジュール216には、実行中監視モジュール215及びパラメータレジスタ監視モジュール214の両方から信号が入力されることとなる。これにより、エラー検知モジュール216は、エラーを検知する(S609)。
【0066】
エラー検知モジュール216は、エラーを検知すると、エラー検知信号をログ処理モジュール217及びユーザインタフェースモジュール202に出力する。エラー検知モジュール216からのエラー検知信号に応じて、ログ処理モジュール217は、HWシミュレータ212の動作ログを取得してユーザインタフェースモジュール202に出力するログ処理を行う(S610)。尚、HWシミュレータモジュール212の動作ログは、例えば、仮想ハードウェア210を構成するプログラムがロードされているRAM20内に確保された他の領域に随時記憶され、ログ処理モジュール217はその動作ログの情報を取得する。
【0067】
尚、エラーを検知した場合、エラー検知モジュール216がレジスタシミュレータモジュール211に設けられたエラー検知用のレジスタに値を書き込むようにしても良い。アプリケーション12及びドライバ11に、エラー検知用レジスタの値に応じたブレークポイントを設けておけば、エラー検知に応じてアプリケーション12及びドライバ11の動作を一時停止若しくは強制終了させることができる。これにより、その後のデバッグ処理をスムーズに行うことができると共に、エラー検知後も動作が継続されて不要な動作ログが蓄積されることを避けることができる。尚、エラー検知に応じた値を書き込む先は、レジスタシミュレータモジュール211に設けられたエラー検知用のレジスタに限らず、アプリケーション12及びドライバ11のブレークポイントが対応しているアドレスのメモリであれば、同様に実現可能である。
【0068】
ユーザインタフェースモジュール202は、エラー検知モジュール216からエラー検知信号を取得すると、アプリケーション12及びドライバ11の動作ログを取得する。そして、ユーザインタフェースモジュール202は、アプリケーション12及びドライバ11の動作ログ並びにログ処理モジュール217から取得したHWシミュレータモジュール212に基づき、エラー検知結果を表示するための表示情報を生成して、LCD70等の表示装置にエラー検知結果を表示させる(S611)。
【0069】
尚、アプリケーション12及びドライバ11の動作ログは、ユーザインタフェースモジュール202が取得する場合の他、ログ処理モジュール217がレジスタシミュレータモジュール211を介して取得するようにしても良い。
【0070】
ハードウェア動作のシミュレーションを開始した後、エラーが検知されることなく、HWシミュレータモジュール212がハードウェア動作を完了した場合(S606/YES)、ログ処理モジュール217がHWシミュレータモジュール212の動作ログを取得してユーザインタフェースモジュール202に出力する(S610)。ユーザインタフェースモジュール202は、エラー検知モジュール216からエラー検知信号が入力されていない状態でログ処理モジュール217から動作ログを取得すると、アプリケーション12及びドライバ11から動作ログを取得し、エラー検知ではなく、通常の処理結果を表示するための表示情報を生成してLCD70等の表示装置に検知結果を表示させる(S611)。このような処理により、本実施形態に係る仮想プラットフォーム200の動作が完了する。
【0071】
図7に、S611において表示されるエラー検知結果の表示画面の例を示す。図7に示すように、エラー検知結果の表示画面においては、アプリケーション12の動作ログである“アプリケーション動作ログ”、ドライバ11の動作ログである“ドライバ動作ログ”、HWシミュレータモジュール212の動作ログである“HW動作ログ”が表示されている。
【0072】
上述したように、エラー検知モジュール216においてエラーが検知された場合に、夫々の動作ログが取得されてユーザインタフェースモジュール202に入力される。従って、図7に示す表示画面においては、エラーが発生する前後までの動作ログが夫々表示される。このような表示により、ユーザは、アプリケーション12やドライバ11のどのような処理が、図4(b)、(c)に示すようなエラーの原因となっているのかを容易に確認することが可能となる。
【0073】
以上、説明したように、本実施形態に係る仮想プラットフォーム200において、アプリケーション12やドライバ11の動作をテストすることにより、アプリケーション12及びドライバ11のバグの検知を容易に行うことが可能となる。即ち、ハードウェアの動作実行中におけるレジスタ値の変更を容易且つ迅速に認識可能とすることができる
【0074】
尚、上記実施形態においては、図5に示すように、アプリケーション12及びドライバ11に対して1つの仮想ハードウェア210を構成してバグの検知を行う場合を例として説明した。しかしながら、実際の画像処理装置においては、プリントエンジン、スキャナユニット、画像処理用のハードウェアアクセラレータ等、複数のハードウェアが搭載される。従って、それらのハードウェアを夫々シミュレーションするために仮想ハードウェア210を複数設けることも可能である。
【0075】
また、仮想プラットフォーム200において実行されるアプリケーション12やドライバ11及び仮想バス201は、シミュレーション対象の機器に応じて構成することが好ましい。例えば、シミュレーション対象の機器がマルチコアCPUを含む構成である場合、上記の各構成もマルチコアCPUによる演算によって実現されるように複数設けられる。
【0076】
実施の形態2.
実施の形態1においては、アプリケーション12やドライバ11の開発段階において、仮想プラットフォーム200を用いることによりバグを検知する方法を例として説明した。本実施形態においては、実際に運用される装置に含まれる専用HW40に、図5の仮想ハードウェア210に含まれるような機能を設け、実際に運用されている装置におけるエラー検知を容易化する場合を例として説明する。尚、実施の形態1と同様の符号を付す構成については同一または相当部を示すものとし、詳細な説明を省略する。
【0077】
図8は、本実施形態に係る専用HW40と、バス90を介したCPU10及びHDD50との接続形態を示す図である。図8に示すように、本実施形態に係る専用HW40は、レジスタ41、エンジンモジュール42、起動レジスタ監視モジュール43、パラメータレジスタ監視モジュール44、実行中監視モジュール45、エラー検知モジュール46及びログ処理モジュール47を含む。
【0078】
レジスタ41は、専用HW40がCPU10からの制御を受け付けるための記憶領域である。エンジンモジュール42は、専用HW40において夫々の機能を実現するためのハードウェアであり、実施の形態1のHWシミュレータモジュール212と同様に情報処理モジュールとして機能する。例えば、専用HW40が画像処理を実行するハードウェアアクセラレータであれば、画像処理エンジンモジュール42は、画像処理を実行する回路である。
【0079】
起動レジスタ監視モジュール43、パラメータレジスタ監視モジュール44、実行中監視モジュール45、エラー検知モジュール46及びログ処理モジュール47は、夫々図5において説明した起動レジスタ監視モジュール213、パラメータレジスタ監視モジュール214、実行中監視モジュール215、エラー検知モジュール216及びログ処理モジュール217に対応する機能を実現するハードウェアモジュールである。
【0080】
尚、図8においては、専用HW40に含まれる各部のモジュールが全てハードウェアモジュールである場合を例として説明するが、専用HW40に含まれるマイコンやCPUが、専用HW40に設けられた記憶媒体に格納されているプログラムに従って演算を行うことにより構成されるソフトウェアモジュールとしても実現可能である。
【0081】
次に、本実施形態に係る専用HW40の動作について図9のフローチャートを参照して説明する。図9に示すように、画像処理装置1が動作開始すると(S901)、アプリケーション12及びドライバ11が起動する(S902)。起動したドライバ11及びアプリケーション12の処理により、レジスタ41の起動レジスタに“1”が設定されると(S903/YES)、エンジンモジュール42が起動し(S904)、エンジンモジュール42がハードウェア動作を開始する(S905)。
【0082】
エンジンモジュール42がハードウェア動作のシミュレーションを開始した後、エンジンモジュール42がハードウェア動作の処理を終了する前に(S906/NO)、起動レジスタ監視モジュール43が、レジスタ41の起動レジスタに“1”が設定されたことを検知すると(S907/YES)、エラー検知モジュール46には、実行中監視モジュール45及び起動レジスタ監視モジュール43の両方から信号が入力されることとなる。これにより、エラー検知モジュール46は、エラーを検知する(S909)。
【0083】
また、エンジンモジュール42がハードウェア動作の処理を終了する前に(S906/NO)、パラメータレジスタ監視モジュール44が、レジスタ41のパラメータ設定レジスタへのパラメータ変更を検知すると(S907/NO、S908/YES)、エラー検知モジュール46には、実行中監視モジュール45及びパラメータレジスタ監視モジュール44の両方から信号が入力されることとなる。これにより、エラー検知モジュール46は、エラーを検知する(S909)。
【0084】
エラー検知モジュール46は、エラーを検知すると、エラー検知信号をログ処理モジュール47に出力する。エラー検知モジュール46からのエラー検知信号に応じて、ログ処理モジュール47は、ログ処理を実行する(S910)。ここで、S910のログ処理について説明する。
【0085】
ログ処理モジュール47は、HWシミュレータ42の動作ログを取得すると共に、レジスタ41を介してアプリケーション12及びドライバ11の動作ログを取得する。図8の態様において、アプリケーション12及びドライバ11の動作ログは、例えばRAM20内に確保された記憶領域に格納されており、その記憶領域の先頭アドレス及びアドレス範囲はレジスタ41に設定されている。ログ処理モジュール47は、そのようにレジスタ41に設定された記憶領域のアドレスに基づいてRAM20からアプリケーション12及びドライバ11の動作ログを取得する。
【0086】
ログ処理モジュール47は、エンジンモジュール42から取得した動作ログと、アプリケーション12及びドライバ11から取得した動作ログとを、レジスタ41を介してHDD50に格納する。ここで、本実施形態に係る動作ログの例を図10(a)〜(c)に示す。図10(a)は、エンジンモジュール42から取得された動作ログであり、図10(b)は、アプリケーション12の動作ログであり、図10(c)は、ドライバ11の動作ログである。
【0087】
図10(a)〜(c)に示すように、本実施形態に係る動作ログは、夫々の動作履歴がタイムスタンプと関連付けられている。そのため、ユーザは、夫々の動作履歴のタイムスタンプを比較することにより、アプリケーション12やドライバ11のどのような処理が、図4(b)、(c)に示すようなエラーの原因となっているのかを容易に確認することが可能となる。
【0088】
このように、本実施形態によれば、実際に運用されている装置におけるエラー検知を容易化することが可能となる。画像処理装置1に搭載されるアプリケーション12やドライバ11は、装置が運用開始された後にアップデートされる可能性があり、その都度様々な装置においてバグの検証をすることはオペレータの負担が大きい。これに対して、ある程度までバグの検証がされた上でアップデートされ、更に詳細な検証については装置の運用上で行うことにより、オペレータによる事前のバグの検証の負担を軽減することが可能となる。
【0089】
尚、上記実施形態においては、ログ処理モジュール47が一度全ての動作ログを取得し、HDD50に全ての動作ログを格納する場合を例として説明した。この他、専用HW40内に設けられた記憶媒体に全ての動作ログを格納するようにしても良い。
【0090】
また、ログ処理モジュール47がアプリケーション12及びドライバ11の動作ログを取得した上でHDD50等の記憶媒体に格納するのではなく、アプリケーション12及びドライバ11と、ログ処理モジュール47とが、夫々別個にHDD50等の記憶媒体に動作ログを格納するようにしても良い。この場合であっても、図10(a)〜(c)に示すように、動作履歴がタイムスタンプと関連付けられていることにより、上記と同様にバグの検証を容易に行うことが可能である。
【0091】
また、実施の形態1及び実施の形態2においては、図7及び図10(a)〜(c)に示すように、アプリケーション12及びドライバ11の動作ログと、HW動作ログとを取得対象とする場合を例として説明した。しかしながら、アプリケーション12やドライバ11のどのような処理がバグの原因となっているかを解析することが目的であるため、アプリケーション12及びドライバ11の動作ログにおいてエラーが発生したタイミングが判明すれば目的を達成することができる。
【0092】
そのため、エラー検知モジュール46、216がエラーを検知した場合にレジスタ41、レジスタシミュレータモジュール211を介してアプリケーション12及びドライバ11の動作ログにエラーログを書き込むようにしても良い。レジスタ41、レジスタシミュレータモジュール211を介したエラーログの出力については、上述したように、RAM20におけるアプリケーション12及びドライバ11の動作ログの記憶領域がレジスタ41、レジスタシミュレータモジュール211に設定されており、エラー検知モジュール46、216がエラーを検知してエラー検知レジスタに値を書き込む。アプリケーション12及びドライバ11は、エラー検知レジスタに値が書き込まれた場合に、アプリケーション12及びドライバ11の動作ログの最後尾にエラー検知ログを書き込むことにより実現可能である。
【0093】
図11(a)、(b)に、このようにして生成されたアプリケーション12及びドライバ11の動作ログの例を示す。このような動作ログの態様により、アプリケーション12やドライバ11の動作においてエラーが発生したタイミングを容易に判断することが可能となる。
【0094】
また、実施の形態1、2においては、図3や図5に示すように、アプリケーション12がドライバ11を介して、専用HW40や仮想ハードウェア210を制御する場合を例として説明したが、ドライバ11を介さずにアプリケーションが直接ハードウェアを制御する場合もあり得る。
【符号の説明】
【0095】
1 画像形成装置
10 CPU
11 ドライバ
12 アプリケーション
20 RAM
30 ROM
40 専用HW
41 レジスタ
42 エンジンモジュール
43 起動レジスタ監視モジュール
44 パラメータレジスタ監視モジュール
45 実行中監視モジュール
46 エラー検知モジュール
47 ログ処理モジュール
50 HDD
60 I/F
70 LCD
80 操作部
90 バス
100 コントローラ
101 主制御部
102 エンジン制御部
103 入出力制御部
104 画像処理部
105 操作表示制御部
110 ADF
120 スキャナユニット
130 排紙トレイ
140 ディスプレイパネル
150 給紙テーブル
160 プリントエンジン
170 排紙トレイ
180 ネットワークI/F
200 仮想プラットフォーム
201 仮想バス
202 ユーザインタフェースモジュール
210 仮想ハードウェア
211 レジスタシミュレータモジュール
212 HWシミュレータモジュール
213 起動レジスタ監視モジュール
214 パラメータレジスタ監視モジュール
215 実行中監視モジュール
216 エラー検知モジュール
217 ログ処理モジュール
【先行技術文献】
【特許文献】
【0096】
【特許文献1】特開2008−226207号公報

【特許請求の範囲】
【請求項1】
予め定められた処理を行うハードウェアをレジスタによって制御するプログラムのエラー検知方法であって、
前記予め定められた処理の実行中であるか否かを示す信号を出力し、
前記レジスタに対して前記予め定められた処理の制御に関するレジスタ値の変更が加えられたことを検知して検知信号を出力し、
前記予め定められた処理の実行中であるか否かを示す信号及び前記検知信号に基づき、前記予め定められた処理の実行中において前記レジスタ値の変更が加えられたことが検知された場合にエラーを検知することを特徴とするエラー検知方法。
【請求項2】
前記レジスタに対して、前記予め定められた処理の実行開始の制御に関するレジスタ値の変更が加えられた場合に、前記検知信号を出力することを特徴とする請求項1に記載のエラー検知方法。
【請求項3】
前記レジスタに対して、前記予め定められた処理の動作を設定するレジスタ値の変更が加えられた場合に、前記検知信号を出力することを特徴とする請求項1または2に記載のエラー検知方法。
【請求項4】
前記エラーが検知された場合に、前記プログラムの動作履歴を示す情報を取得して記憶媒体に格納することを特徴とする請求項1乃至3いずれか1項に記載のエラー検知方法。
【請求項5】
前記エラーが検知された場合に、前記プログラムの動作履歴を示す情報を取得し、
前記取得された動作履歴を示す情報を表示するための表示情報を生成して出力することを特徴とする請求項4に記載のエラー検知方法。
【請求項6】
前記エラーが検知された場合に、前記プログラムの動作履歴と前記エラーが検知されたタイミングとを対応させて表示するための表示情報を生成して出力することを特徴とする請求項5に記載のエラー検知方法。
【請求項7】
前記エラーが検知された場合に、前記プログラムの動作履歴にエラーを書き込むことを特徴とする請求項1乃至6いずれか1項に記載のエラー検知方法。
【請求項8】
予め定められた処理を行う情報処理回路であって、
前記予め定められた処理を制御するためのプログラムからの制御を受け付けるためのレジスタと、
前記予め定められた処理を行う情報処理モジュールと、
前記情報処理モジュールの動作を監視し、前記予め定められた処理の実行中であるか否かを示す信号を出力する実行中監視モジュールと、
前記レジスタを監視し、前記予め定められた処理の動作に関するレジスタ値の変更が加えられたことを検知して検知信号を出力するレジスタ監視モジュールと、
前記予め定められた処理の実行中であるか否かを示す信号及び前記検知信号に基づき、前記予め定められた処理の実行中において前記レジスタ値の変更が加えられたことが検知された場合にエラーを検知するエラー検知モジュールとを含むことを特徴とする情報処理回路。
【請求項9】
前記エラーが検知された場合に、タイムスタンプと関連付けられた前記情報処理モジュールの動作履歴を取得して記憶媒体に格納するログ処理モジュールを含むことを特徴とする請求項8に記載の情報処理回路。
【請求項10】
予め定められた処理を行うハードウェアをレジスタによって制御するプログラムのエラー検知用プログラムであって、
前記ハードウェアによる前記予め定められた処理をシミュレーションするステップと、
前記予め定められた処理のシミュレーションが実行中であるか否かを示す信号を出力するステップと、
前記レジスタに対して前記予め定められた処理に関するレジスタ値の変更が加えられたことを検知して検知信号を出力するステップと、
前記予め定められた処理のシミュレーションが実行中であるか否かを示す信号及び前記検知信号に基づき、前記予め定められた処理のシミュレーションの実行中において前記レジスタ値の変更が加えられたことが検知された場合にエラーを検知するステップとを情報処理装置に実行させることを特徴とするエラー検知用プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate