(57)【要約】【課題】  時刻情報を用いずに、いつ異常を検知したかを推測することが可能な情報処理装置、情報処理方法、及びプログラムを提供することを課題とする。【解決手段】  情報処理装置の動作履歴のうち一方向に値が変化する動作履歴を少なくとも保存し、情報処理装置の異常を検知した場合に、一方向に値が変化する動作履歴を取得して異常時動作履歴として保存し（Ｓ４２〜Ｓ４６）、異常情報を確認する際に、前記一方向に値が変化する動作履歴と前記異常時動作履歴を取得する。【選択図】  図４
2014016789.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置の動作履歴のうち一方向に値が変化する動作履歴を少なくとも保存する動作履歴保存手段と、
前記情報処理装置の異常を検知する異常検知手段と、
前記異常検知手段が異常を検知した場合に、前記動作履歴保存手段から前記一方向に値が変化する動作履歴を取得して異常時動作履歴として保存する異常情報保存手段と、
前記動作履歴保存手段から前記一方向に値が変化する動作履歴を取得すると共に前記異常情報保存手段から異常時動作履歴を取得する取得手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記取得手段により取得した動作履歴及び前記異常時動作履歴を通知する通知手段をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記異常情報保存手段は、前記異常検知手段が異常を検知して、前記情報処理装置が再起動した後に、前記異常動作履歴を保存することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記異常情報保存手段は、前記異常検知手段が異常を検知して、前記情報処理装置が再起動する前に、前記異常動作履歴を保存することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
情報処理装置の動作履歴のうち一方向に値が変化する動作履歴を少なくとも保存し、
情報処理装置の異常を検知した場合に、前記一方向に値が変化する動作履歴を取得して異常時動作履歴として保存し、
異常情報を確認する際に、前記一方向に値が変化する動作履歴と前記異常時動作履歴を取得することを特徴とする情報処理方法。
【請求項６】
請求項１〜４のいずれか一項に記載の情報処理装置の各手段としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置の異常を検知したときの動作履歴を保存する機能を備えた情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
従来の情報処理装置は、ファームウェアが暴走又はデッドロックした場合に装置が誤動作して故障しないように、ウォッチドッグタイマー（ＷＤＴ）などの異常を検知する機能を備えている。また、異常の原因調査を行うために、いつ検知したかを知るための異常検知時間情報と、ＣＰＵがファームウェアの何を実行していたかを知るための異常時ファームウェア動作情報と、を異常情報として保存する機能も備えているものが知られている。前記異常検知時間情報には、ＣＰＵ、オペレーティングシステム（ＯＳ）、リアルタイムクロック（ＲＴＣ）などから取得できる時間情報（以後、内部時間情報とする）を使用するものが知られている。また、前記異常時ファームウェア動作情報には、ＣＰＵが実行していたプログラムのアドレス情報や、ＯＳのタスクの状態（実行中や同期待ちなど）に関する情報を保存することが知られている。
【０００３】
特許文献１では、前記異常検知時間情報としてＣＰＵ時刻情報から例外発生時刻情報を、異常時ファームウェア動作情報としてＣＰＵレジスタ情報から例外発生アドレス情報を保存している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３３８４４５号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＡＣ電源ＯＦＦや再起動で内部時間情報がリセットされる情報処理装置では、異常を検知した後で一度でもＡＣ電源がＯＦＦになったり、再起動したりすると、異常検知時間情報からいつ異常を検知したのかを判断することができなくなってしまう。また、内部時間情報を保持又は取得しない情報処理装置においても、いつ異常を検知したのか判断することができないという問題があった。
【０００６】
本発明は、上述した事情に鑑み、時刻情報を用いなくとも、いつ異常を検知したか推測することが可能な情報処理装置、情報処理方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決するための本発明の情報処理装置は、情報処理装置の動作履歴のうち一方向に値が変化する動作履歴を少なくとも保存する動作履歴保存手段と、前記情報処理装置の異常を検知する異常検知手段と、前記異常検知手段が異常を検知した場合に、前記動作履歴保存手段から前記一方向に値が変化する動作履歴を取得して異常時動作履歴として保存する異常情報保存手段と、前記動作履歴保存手段から前記一方向に値が変化する動作履歴を取得すると共に前記異常情報保存手段から異常時動作履歴を取得する取得手段と、
を備える。
【発明の効果】
【０００８】
本発明は、異常を検知したときに異常時動作履歴を保存することで、時刻情報を用いなくとも、いつ異常を検知したか推測することができる情報処理装置、情報処理方法、及びプログラムを提供することができる。したがって、例えば、電源のＯＦＦや再起動により内部時間情報がリセットされても、いつ異常を検知したか推測することができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態１に係る画像形成装置の概略構成を示すブロック図である。
【図２】実施形態１に係る画像形成装置の不揮発性メモリーのデータの配置を表した配置図である。
【図３】実施形態１における正常処理のフローチャートである。
【図４】実施形態１における異常処理のフローチャートである。
【図５】実施形態１における情報取得処理のフローチャートである。
【図６】実施形態２における正常処理のフローチャートである。
【図７】実施形態２における異常処理のフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について説明する。ただし、以下の実施形態に記載されている構成要素はあくまで例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【００１１】
（実施形態１）
図１は、実施形態１に係る情報処理装置の一例である画像形成装置の概略構成を示すブロック図である。
【００１２】
本実施形態に係る画像形成装置は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、Ｉ／Ｆ１０４と、ＥＥＰＲＯＭ１０５と、ウォッチドッグタイマー１０６と、印刷部１０７と、読取り部１０８と、ＵＩ１０９と、ＦＡＸ１１０と、を備えている。そして、これらはそれぞれシステムバスを介して接続されている。
【００１３】
ＣＰＵ１０１は、ＲＯＭ１０２に記憶されているプログラムを読み出して実行することで画像形成装置の制御を行っている。例えば、Ｉ／Ｆ１０４で受信したコマンドやデータの解析、画像データから印刷部１０７で使用する印刷データの生成、印刷部のモーター駆動の制御、印刷部の記録ヘッドの吐出タイミングの制御、ＵＩ１０９からのユーザー入力に応じた各種設定などを行っている。また、ＣＰＵ１０１は、内部にレジスタ（ＣＰＵレジスタ）を持っており、例えば、汎用レジスタ、プログラムカウンタ（ＰＣ）、及びスタックポインタ（ＳＰ）を備えている。汎用レジスタは、演算に必要な値を一時的に格納するＣＰＵレジスタである。ＰＣは、ＣＰＵ１０１が実行しようとしているプログラムのアドレスを格納するＣＰＵレジスタである。ＳＰは、汎用レジスタに入りきらない情報を一時的に退避させる領域（スタック領域）のアドレスを格納するＣＰＵレジスタである。
【００１４】
ＲＯＭ１０２は、オペレーティングシステム（ＯＳ）や、画像形成装置を制御するプログラム、モーターの駆動テーブルやフォントなどの固定データ、プログラムが使用する可変データの初期値を記憶している。本実施形態では、ＯＳとして、マルチタスクＯＳを使用しており、複数のタスクを並行動作させることができる。さらに、マルチタスクＯＳでは、各タスクの状態を管理や、ＯＳが起動してからの時間を管理する。
【００１５】
ＲＡＭ１０３は、プログラム実行に必要なワークメモリーとして使用される。また、ＲＡＭ１０３は、Ｉ／Ｆ１０４や読取り部１０８やＦＡＸ１１０の入力データを一時格納する受信バッファ、生成した印刷データを格納する記録バッファ、ＥＥＰＲＯＭ１０５から読出したデータ格納として使用される。さらに、ＣＰＵ１０１のスタック領域としても使用される。
【００１６】
Ｉ／Ｆ１０４は、不図示のパーソナルコンピュータなどのホスト装置と接続され、記録すべき画像のデータ、各種制御コマンド、ダウンロードされるプログラムデータ等を受信する。Ｉ／Ｆ１０４としては、具体的には、例えば、ＵＳＢ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＩｒＤＡ、無線・有線ＬＡＮなどが挙げられる。
【００１７】
ＥＥＰＲＯＭ１０５は、不揮発性メモリーの１つであり、印刷部１０７や読取り部１０８のモーターを制御するパラメータ、ＵＩ１０９でユーザーが設定したパラメータなどを記憶している。さらに、システム起動回数や印刷回数や読取り回数などのユーザーが画像形成装置を使用した履歴も記憶している。  ウォッチドッグタイマー（ＷＤＴ）１０６は、ハードウェア時間計測器であり、異常検知手段として機能する。ＷＤＴ１０６は、ファームウェアが暴走又はデッドロックしたことでＣＰＵ１０１からのカウンタクリア操作が一定時間ないと、異常があったと判断してＣＰＵ１０１にリセットをかける。本実施形態に係るＷＤＴ１０６は、異常があったと判断する時間、異常を検知した後ＣＰＵ１０１にリセットをかけるまでの時間、異常を検知した後ＣＰＵ１０１に割り込みを発生させるか発生させないかを設定することができる。本実施形態では、異常と判断する時間を１０秒、異常を検知した後リセットをかけるまでの時間を１秒、異常を検知した後にＣＰＵ１０１に割り込みを発生させる設定とし、各種設定をＷＤＴ１０６の起動時に行うものとした。また、ＷＤＴ１０６は、リセットをかけたことを表す異常検知フラグを持っており、リセットをかけた後でも異常検知フラグを取得することでリセットしたか判断することができる。本実施形態では、異常検知フラグはＷＤＴ１０６の起動時にクリアするものとした。
【００１８】
印刷部１０７は、ＣＰＵ１０１で生成された印刷データに基づいて、記録媒体に記録を行う。本実施形態に係る印刷部１０７は、記録ヘッドと、主走査方向に記録ヘッドを移動（走査）させるキャリッジモーターと、記録ヘッドを１回又は複数回の走査する毎に記録媒体を搬送させる搬送モーターと、を有する。この印刷部１０７は、ＣＰＵ１０１の制御で記録媒体を搬送モーターで搬送し、記録ヘッドをキャリッジモーターで動かしながら、記録ヘッドからインクを吐出することで記録媒体に記録する。
【００１９】
読取り部１０８は、読取り媒体の情報を読み取る。本実施形態に係る読取り部１０８は、読取り媒体を乗せる原稿台と、読取り媒体を照らす光源と、光源で照らした読取り媒体の反射光を読取る読取りセンサーと、主走査方向に光源と読取りセンサーを移動させるモーターと、を有する。この読取り部１０８は、ＣＰＵ１０１の制御でモーターを移動させて原稿台に乗せられた読取り媒体を光源で照らしながら読取りセンサーで読み取ることでデータを生成する。
【００２０】
ＵＩ１０９は、ユーザーからの画像形成装置に対する各種指示を受け付け、また、ユーザーに対して各種情報を提供する。本実施形態に係るＵＩ１０９は、電源のＯＮ／ＯＦＦや機能・設定の選択などを行うキーや、現在の動作状況や機能の設定などを表示するＬＣＤなどを有する。ユーザーがＵＩ１０９のＬＣＤを見ながらキーを操作することで画像形成装置に対して指示を出すことができる。
【００２１】
ＦＡＸ１１０は、モデムを通じてＲＡＭ１０３上のＦＡＸデータを送信したり、ＦＡＸデータを受信してＲＡＭ１０３に展開したりできる。
【００２２】
本実施形態に係る画像形成装置は、詳細は後述するが、動作に異常が生じたときにそれを検知し、いつ異常が生じたか推測することができる。この画像形成装置では、不揮発性メモリーであるＥＥＰＲＯＭ１０５に動作履歴及び異常情報を保存している。
【００２３】
ここで、図２を用いてＥＥＰＲＯＭ１０５に保存されている各種データについて説明する。図２は、ＥＥＰＲＯＭ１０５に保存されているデータの配置を表した配置図である。
【００２４】
ＥＥＰＲＯＭ１０５は大きく分けると、異常情報２１０、制御パラメータ２２０、アプリ設定２３０、動作履歴２４０を保存している。
【００２５】
異常情報２１０は、画像形成装置の異常を検知した時に保存されるデータの集まりであり、異常時動作履歴スタンプ情報２１１、異常時間情報２１２、異常時ファームウェア動作情報２１３を有する。
【００２６】
異常時動作履歴スタンプ情報２１１は、異常を検知した時の動作履歴の値、すなわち、異常動作履歴の値に関する情報である。この異常時動作履歴スタンプ情報２１１では、値が一方向に変化する動作履歴の値を用いる。値が一方向に変化する動作履歴とは、例えば、値が増加及び減少のうちいずれか一方に変化する動作の履歴であり、本実施形態では、値が増加する異常時システム起動回数２１４及び異常時印刷回数２１５の履歴を用いた。
【００２７】
異常時システム起動回数２１４は、システム起動回数２４１の値を異常時に取得して保存しており、異常時印刷回数２１５は、印刷回数２４２の値を異常時に取得して保存している。
【００２８】
異常時間情報２１２は、異常を検知したときの時間情報である。本実施形態では、異常を検知した時にＯＳが管理している時間情報をＣＰＵ１０１により取得して、異常時間情報２１２として保存している。ＯＳが管理している時間情報は、ＯＳが起動してからの時間情報である。すなわち、本実施形態では、ＯＳが起動する度に時間情報がリセットされるが、ＯＳが起動した後から異常が発生するまでの時間情報が異常時間情報２１２として保存されている。
【００２９】
異常時ファームウェア動作情報２１３は、異常を検知した時にＣＰＵ１０１が実行していたファームウェアの情報である。本実施形態では、ファームウェアの情報として、異常時実行アドレス情報２１６及び異常時実行タスク情報２１７を保存している。
【００３０】
異常時実行アドレス情報２１６は、異常を検知した時に実行していたプログラムカウンタのアドレス情報であり、ＣＰＵ１０１のＣＰＵレジスタから取得する。
【００３１】
異常時実行タスク情報２１７は、異常を検知した時に実行されていたタスクのＩＤであり、ＯＳが管理しているタスク情報から取得する。
【００３２】
制御パラメータ２２０は、印刷部１０７や読み取り部１０８やＦＡＸ１１０などの画像形成装置の各種制御に使用する制御パラメータである。
【００３３】
アプリ設定２３０は、ユーザーがＵＩ１０９を操作して画像形成装置を使用する時に設定する印刷設定などの項目で構成されている。
【００３４】
動作履歴２４０は、ユーザーが画像形成装置を使用した履歴の集まりであり、本実施形態では、システム起動回数２４１、印刷回数２４２などの各種動作の履歴を動作履歴として保存している。
【００３５】
システム起動回数２４１は、ＣＰＵ１０１がＯＳ起動処理を行った回数を保存している。
【００３６】
印刷回数２４２は、ＵＩ１０９やＩ／Ｆ１０４からユーザーの印刷指示を受信して画像形成装置が印刷した回数を保存している。
【００３７】
図３は、画像形成装置の正常処理のフローチャートである。すなわち、例えば、ユーザーが画像形成装置のＡＣ電源をＯＮした後にファームウェアの暴走やデッドロックが発生しない場合の正常処理のフローチャートである。
【００３８】
Ｓ３０１では、システムを起動させるためにハードウェアの初期化やＯＳの起動処理を行う。ハードウェアの初期化では、ＣＰＵ１０１が、ＣＰＵ１０１のクロック設定、ＲＯＭ１０２やＲＡＭ１０３へのアクセス設定とアクセスチェック、ＲＡＭ１０３の初期化、ＧＰＩＯなどのハードウェアの初期設定とチェックを行う。ＯＳの起動処理では、Ｉ／Ｆ１０４や印刷部１０７や読取り部１０８などのデバイスを制御するためのタスクの生成、時間情報の初期化と時間計測の開始、ＣＰＵ１０１からの割り込みを処理する設定などを行う。
【００３９】
Ｓ３０２では、Ｓ３０１の処理でシステムの起動が終わったので、ＣＰＵ１０１がＥＥＰＲＯＭ１０５のシステム起動回数２４１を更新する。具体的には、システム起動回数２４１の値を１加算する処理を行う。
【００４０】
Ｓ３０３では、ＣＰＵ１０１がＷＤＴ１０６の起動処理を行う。起動処理では、ＷＤＴ１０６の異常検知フラグをクリアし、各種設定を行い、異常検知を開始する。各種設定として、具体的には、異常と判断する時間、異常を検知した後ＣＰＵ１０１にリセットをかけるタイミング、異常を検知した後ＣＰＵ１０１に割り込みを発生させるか発生させないかを設定する。本実施形態では、異常と判断する時間を１０秒、異常を検知した後リセットをかけるタイミングを１秒後、異常を検知した後にＣＰＵ１０１に割り込みを発生させるように設定をし、各種設定はＷＤＴ１０６の起動時に行っている。さらに、ＯＳの周期タイマーを起動させて一定時間毎にＷＤＴ１０６のカウンタクリア操作を実行する。本実施形態では、周期タイマーの周期を１秒に設定する。Ｓ３０３を実行した後は、いずれかのステップでファームウェアが暴走又はデッドロックしたことによりＣＰＵ１０１がカウンタクリア操作を一定時間（本実施形態では１０秒間）できないと、ＷＤＴ１０６が異常と判断して、図４に示す異常処理が実行される。
【００４１】
Ｓ３０４では、ＵＩ１０９やＩ／Ｆ１０４からの電源ＯＮ要求があるかどうかを判断している。電源ＯＮ要求がないと再度Ｓ３０４を実行し、電源ＯＮ要求があるとＳ３０５へ進む。
【００４２】
Ｓ３０５では、電源ＯＮ処理を実行する。具体的には、ＣＰＵ１０１がＵＩ１０９やＩ／Ｆ１０４からの電源ＯＮ要求を受けて、印刷部１０７、読取り部１０８、ＵＩ１０９、ＦＡＸ１１０の起動処理を行い、ユーザーが画像形成装置の印刷や読取りといった各種機能を使用できるようにする。
【００４３】
Ｓ３０６では、動作要求があるか否かを判断する。具体的には、ＣＰＵ１０１がＵＩ１０９からのユーザー入力やＩ／Ｆ１０４からのコマンド受信、ＦＡＸ１１０からのデータ受信など、外部からの動作要求を受けたかどうかを判断する。動作要求がある場合は、Ｓ３０７以降でどの機能を実行するのか判断する。動作要求がない場合は、Ｓ３０６を繰り返し実行する。
【００４４】
Ｓ３０７では、ＣＰＵ１０１がＳ３０６の動作要求が電源ＯＦＦ要求かどうかを判断する。電源ＯＦＦ要求の場合は、Ｓ３０８に進む。電源ＯＦＦ要求でない場合は、Ｓ３０９に進む。
【００４５】
Ｓ３０８では、電源ＯＦＦ処理を実行する。具体的には、ＣＰＵ１０１がＩ／Ｆ１０４、印刷部１０７、読取り部１０８、ＵＩ１０９、ＦＡＸ１１０の停止処理を行い、各デバイスをＳ３０５の電源ＯＮ処理を行う前の状態にする。その後、Ｓ３０４に戻る。
【００４６】
Ｓ３０９では、ＣＰＵ１０１がＳ３０６の動作要求が印刷要求かどうかを判断している。印刷要求の場合はＳ３１０で印刷処理を実行する。印刷要求でない場合は、Ｓ３１２へ進む。
【００４７】
Ｓ３１０では、ＣＰＵ１０１がユーザーの指定した印刷設定と印刷データをもとに印刷部１０７を制御して印刷を実行する。
【００４８】
Ｓ３１１では、Ｓ３１０で印刷処理が終わったのでＣＰＵ１０１がＥＥＰＲＯＭ１０５の印刷回数２４２の値を１加算することにより、印刷回数２４２を更新する。本実施形態では、印刷終了後に印刷回数２４２を加算したがこれに限定されず、例えば、１ページ印刷する度に値を更新するなど、印刷に関する回数を更新するようにすればよい。印刷回数２４２の更新が終わると、再び動作要求を受けるためにＳ３０６へと戻る。
【００４９】
Ｓ３１２では、Ｓ３０７やＳ３０９で行っていたように、Ｓ３０６の動作要求が何かを判断して実行する処理が機能毎に繰り返される。読取り要求であれば読取りを、ＦＡＸ送信要求であればＦＡＸ送信を、ＦＡＸ受信要求であればＦＡＸ受信を、情報取得要求であれば指定された情報の取得を実行する。図５に示すＥＥＰＲＯＭ１０５の情報取得要求もこの部分で実行される。
【００５０】
以上のように、正常時には外部からの動作要求を受けて処理を実行し、動作要求を実行する度に動作要求に対応したＥＥＰＲＯＭ１０５の動作履歴２４０を更新することを行う。本実施形態では、Ｓ３１０の印刷処理を行う度に、ＥＥＰＲＯＭ１０５の印刷回数２４２の更新を行う。
【００５１】
図４は、図３のＳ３０３以降でプログラムの暴走又はデッドロックが発生した等の理由によりＣＰＵ１０１がＷＤＴ１０６のカウンタを１０秒以内にクリアできないため、ＷＤＴ１０６が異常と判断した時に実行する異常処理のフローチャートである。
【００５２】
Ｓ４１では、異常を検知したＷＤＴ１０６がＣＰＵ１０１に割り込みを発生させて異常を検知したことを通知する処理を行う。
【００５３】
Ｓ４２では、ＣＰＵ１０１がＥＥＰＲＯＭ１０５からシステム起動回数２４１と印刷回数２４２の値を取得してＲＡＭ１０３に格納する処理を行う。
【００５４】
Ｓ４３では、ＣＰＵ１０１がＯＳから時間情報を取得してＲＡＭ１０３に格納する処理を行う。本実施形態では、ＯＳから時間情報を取得したが、上述したように、他の時間情報を取得してもよい。
【００５５】
Ｓ４４では、ＣＰＵ１０１のＣＰＵレジスタからＷＤＴ１０６が異常を検知した時に実行していたプログラムのアドレス情報を取得し、ＲＡＭ１０３に格納する処理を行う。
【００５６】
Ｓ４５では、ＣＰＵ１０１がＯＳの管理している各タスクのうち実行状態であるタスクのＩＤを取得し、ＲＡＭ１０３に格納する処理を行う。例えば、Ｓ３１０で印刷処理タスクが実行されているときにファームウェアの暴走またはデッドロックで異常が発生した時は、印刷処理タスクのＩＤを取得することができる。
【００５７】
なお、Ｓ４２〜４５の処理の順序は、これに限定されるものではない。
【００５８】
Ｓ４６では、ＣＰＵ１０１がＳ４２〜Ｓ４５でＲＡＭ１０３に格納した各情報の値をＥＥＰＲＯＭ１０５の異常情報２１０の対応する箇所に互いに関連付けて保存する処理を行う。Ｓ４２で取得したシステム起動回数２４１は異常時システム起動回数２１４、印刷回数２４２は異常時印刷回数２１５に対応する。Ｓ４３で取得したＯＳの時間情報は、異常時間情報２１２に対応する。Ｓ４４で取得した異常が発生した時に実行していたプログラムのアドレス情報は、異常時実行アドレス情報２１６に対応する。Ｓ４５で取得した異常が発生した時に実行していたタスクのＩＤは、異常時実行タスク情報２１７に対応する。
【００５９】
Ｓ４７では、Ｓ４１でＷＤＴ１０６がＣＰＵ１０１に割り込みを発生させてから１秒経過すると、ＷＤＴ１０６がＣＰＵ１０１に対してリセットをかける処理を実行する。
【００６０】
図４に示す以上処理が終了すると、ＣＰＵ１０１の処理が図３のＳ３０１の処理へと戻り、システムが再起動する。ここで、図５を用いて、ＥＥＰＲＯＭ１０５の情報取得処理の流れについて説明する。図５は、図３のＳ３０６においてＥＥＰＲＯＭ１０５の情報を取得するコマンドを受信した時に実行される画像処理装置の処理の流れの説明図である。なお、異常確認をする際には、ユーザー（調査者）は、異常情報２１０と動作履歴２４０を取得して異常の原因を調査するために、例えば、外部端末からＩ／Ｆ１０４を介してＥＥＰＲＯＭ１０５の情報を取得するコマンドを送信する。
【００６１】
Ｓ５１では、ＣＰＵ１０１がＩ／Ｆ１０４で受信したコマンドが異常情報取得コマンドかどうかを判断する。異常情報取得コマンドである場合はＳ５２へ、異常情報取得コマンドでない場合はＳ５４へ進む。
【００６２】
Ｓ５２では、ＣＰＵ１０１がＩ／Ｆ１０４を介して外部端末に異常情報２１０を送信するためにＥＥＰＲＯＭ１０５から異常情報２１０を取得してＲＡＭ１０３に格納する。
【００６３】
Ｓ５４では、ＣＰＵ１０１がＩ／Ｆ１０４で受信したコマンドが動作履歴取得コマンドかどうかを判断する。動作履歴取得コマンドである場合はＳ５５へ、そうでない場合はＳ５６へ進む。
【００６４】
Ｓ５５では、ＣＰＵ１０１がＩ／Ｆ１０４を介して外部端末に動作履歴２４０を送信するためにＥＥＰＲＯＭ１０５から動作履歴２４０を取得してＲＡＭ１０３に格納する。その後、Ｓ５３へ進む。  Ｓ５６では、ＣＰＵ１０１がＩ／Ｆ１０４で受信した受信したコマンドが不揮発性メモリー読み出しコマンドかどうかを判断する。不揮発性メモリー読み出しコマンドの場合はＳ５７へ、そうでない場合はＥＥＰＲＯＭ１０５の情報取得コマンドではないので処理を終了する。
【００６５】
Ｓ５７では、ＣＰＵ１０１がＩ／Ｆ１０４で受信した不揮発性メモリー読み出しコマンドから読み出し開始アドレスと読み出しサイズを取得し、ＥＥＰＲＯＭ１０５の読み出し開始アドレスから読み出しサイズ分のデータをＲＡＭ１０３に格納する。その後、Ｓ５３に進む。
【００６６】
Ｓ５３では、ＣＰＵ１０１がＳ５２、Ｓ５５、Ｓ５７でＲＡＭ１０３に格納された各情報をＩ／Ｆ１０４を介して外部端末に送信する処理を行う。Ｓ５２からの場合は、ＣＰＵ１０１がＲＡＭ１０３に格納した異常情報２１０をＩ／Ｆ１０４を介して外部端末へ送信する。Ｓ５４からの場合は、ＣＰＵ１０１がＲＡＭ１０３に格納した動作履歴２４０をＩ／Ｆ１０４を介して外部端末に送信する。Ｓ５７からの場合は、ＣＰＵ１０１がＲＡＭ１０３に格納したデータをＩ／Ｆ１０４を介して外部端末に送信する。
【００６７】
このように、本実施形態では、図３に示すフローチャートで動作履歴２４０の更新を行い、Ｓ３０３以降でＷＤＴ１０６が異常を検知すると図４に示すフローチャートが実行され、異常情報２１０の更新を行う。さらに、図５に示すフローチャートを実行することで異常情報２１０と動作履歴２４０を取得することができる。本実施形態では、ユーザーが、外部端末からＩ／Ｆ１０４を介して又はＵＩ１０９から、画像形成装置の異常確認の指示を行うと、画像形成装置は、異常情報２１０及び動作履歴２４０をＥＥＰＲＯＭ１０５から取得し、異常情報２１０及び動作履歴２４０をユーザーに通知する。通知の方法は、特に限定されず、印刷部１０７により結果を印刷して出力してもよいし、ＵＩ１０９の表示装置等に結果を表示してもよいし、外部端末の表示部等に結果を表示するようにしてもよい。
【００６８】
ユーザーは、異常情報２１０及び動作履歴２４０から異常発生時を推測することができる。例えば、システム起動回数２４１と異常時システム起動回数２１４の差、及び印刷回数２４２と異常時印刷回数２１５の差を取得することで、何回前のシステム起動時、何回前の印刷時にＷＤＴ１０６が異常を検知したか知ることができる。例えば、システム起動回数２４１が１０回、異常時システム起動回数２１４が６回、印刷回数２４２が４０回、異常時印刷回数２１５が２０回の場合、４回前のシステム起動時、２０回前の印刷時に異常を検知したことが分かる。さらに、異常時間情報２１２から、ＯＳ起動時から異常が発生するまでの時間がわかるため、これを加味することにより、異常発生時の推定の精度がより向上する。
【００６９】
本実施形態では、異常を検知したときの異常情報として、一方向に値が変化する動作履歴の異常時動作履歴を、動作履歴とは別に不揮発性メモリーに記憶している。そして、異常確認を行う際に、この異常時動作履歴と動作履歴を取得することで、これらに基づいて異常の発生時を推測することが可能となる。具体的には、現在の動作履歴と異常時動作履歴の差から、ユーザーは何回前の動作のときに異常が発生したかを推測することができる。
【００７０】
本実施形態では、時刻情報を用いなくとも、いつ異常を検知したか推測することができる。したがって、電源ＯＦＦや再起動により内部時間情報がリセットされたとしても、異常がいつ発生したかを推測することができる。また、内部時間情報を保持又は取得しない場合であっても、異常がいつ発生したかを推測することができる。なお、ＲＴＣを備えている場合であっても、何らかの原因により時刻情報がリセットされてしまった際に異常がいつ発生したかを推測することができる。
【００７１】
（実施形態２）
本実施形態は、異常処理以外は実施形態１と同様であるため、重複する説明は省略する。
すなわち、本実施形態は、異常処理以外は図１、図２と同じ構成であり、図５と同じ情報取得処理を実行する。
【００７２】
図６は、本実施形態のユーザーが画像形成装置の電源をＯＮしてからファームウェアの暴走やデッドロックが発生しない正常処理のフローチャートである。
【００７３】
Ｓ６０１では、システム起動処理を実行する。具体的には、システムを起動させるためにハードウェアの初期化やＯＳの起動処理を行う。ハードウェアの初期化では、ＣＰＵ１０１がＣＰＵ１０１のクロック設定、ＲＯＭ１０２やＲＡＭ１０３へのアクセス設定とアクセスチェック、ＲＡＭ１０３の初期化、ＧＰＩＯなどのハードウェアの初期設定とチェックを行う。ＯＳの起動処理では、Ｉ／Ｆ１０４や印刷部１０７や読取り部１０８などのデバイスを制御するためのタスクの生成、時間情報の初期化と時間計測の開始、ＣＰＵ１０１からの割り込みを処理する設定などを行う。
【００７４】
Ｓ６０２では、Ｓ６０１の処理でシステムの起動が終わったので、ＣＰＵ１０１がＥＥＰＲＯＭ１０５のシステム起動回数２４１を更新する。具体的には、システム起動回数２４１の値を１加算する処理を行う。
【００７５】
Ｓ６０３では、ＣＰＵ１０１がＷＤＴ１０６から異常検知フラグを取得する。
【００７６】
Ｓ６０４では、ＣＰＵ１０１がＳ６０３で取得した異常検知フラグを参照して異常によるシステムが再起動を行ったかどうかを判断する。本実施形態では異常検知フラグが立っている場合は異常によりシステムが再起動したと判断しＳ６０５に進み、立っていない場合はシステムが再起動を行っておらず正常起動だと判断してＳ６０６へ進む。
【００７７】
Ｓ６０５では、ＣＰＵ１０１が後述する図７のＳ７０６でＲＡＭ１０３の異常情報一時格納領域から情報を取得し、各情報の値をＥＥＰＲＯＭ１０５の異常情報２１０の対応した箇所に保存する処理を行う。本実施形態で取得する情報は、システム起動回数２４１、印刷回数２４２、ＯＳの時間情報、異常が発生した時に実行していたプログラムのアドレス情報である。Ｓ７０２で取得するシステム起動回数２４１は異常時システム起動回数２１４、印刷回数２４２は異常時印刷回数２１５に対応する。Ｓ７０３で取得するＯＳの時間情報は、異常時間情報２１２に対応する。Ｓ７０４で取得する異常が発生した時に実行していたプログラムのアドレス情報は、異常時実行アドレス情報２１６に対応する。Ｓ７０５で取得する異常が発生した時に実行していたタスクのＩＤは、異常時実行タスク情報２１７に対応する。
【００７８】
Ｓ６０６では、ＣＰＵ１０１がＷＤＴ１０６の起動処理を行う。起動処理では、ＷＤＴ１０６の異常検知フラグをクリアし、異常と判断する時間、異常を検知した後ＣＰＵ１０１にリセットをかけるタイミング、異常を検知した後ＣＰＵ１０１に割り込みを発生させるか発生させないかを設定し、異常検知を開始する。本実施形態では、異常と判断する時間を１０秒、異常を検知した後リセットをかけるタイミングを１秒後、異常を検知した後にＣＰＵ１０１に割り込みを発生させる設定をし、この設定をＷＤＴ１０６の起動時に行っている。さらに、ＯＳの周期タイマーを起動させて一定時間毎にＷＤＴ１０６のカウンタクリア操作を実行する。本実施形態では、周期タイマーの周期を１秒に設定する。Ｓ６０６を実行した後、どのステップでもファームウェアが暴走又はデッドロックしたことでＣＰＵ１０１がカウンタクリア操作を一定時間（本実施例では１０秒間）できないと、ＷＤＴ１０６が異常と判断して図４に示す異常処理が実行される。
【００７９】
Ｓ６０７では、ＵＩ１０９やＩ／Ｆ１０４からの電源ＯＮ要求があるかどうかを判断する。電源ＯＮ要求がないと再度Ｓ６０７を実行し、電源ＯＮ要求があるとＳ６０８へ進む。
【００８０】
Ｓ６０８では、電源ＯＮ処理を実行する。具体的には、ＣＰＵ１０１がＵＩ１０９やＩ／Ｆ１０４からの電源ＯＮ要求を受けて、印刷部１０７、読取り部１０８、ＵＩ１０９、ＦＡＸ１１０の起動処理を行い、ユーザーが画像形成装置の印刷や読取りといった各種機能を使用できるようにする。
【００８１】
Ｓ６０９では、動作要求があるか否かを判断する。具体的には、ＣＰＵ１０１がＵＩ１０９からのユーザー入力やＩ／Ｆ１０４からのコマンド受信、ＦＡＸ１１０からのデータ受信など、外部からの動作要求を受けたかどうかを判断する。動作要求がある場合は、Ｓ６１０以降でどの機能を実行するのか判断する。動作要求がない場合は、Ｓ６０９を繰り返し実行する。
【００８２】
Ｓ６１０では、ＣＰＵ１０１がＳ６０９の動作要求が電源ＯＦＦ要求かどうかを判断する。電源ＯＦＦ要求の場合は、Ｓ６１１の電源ＯＦＦ処理を実行する。電源ＯＦＦ要求でない場合は、Ｓ６１２に進む。
【００８３】
Ｓ６１１では、電源ＯＦＦ処理を実行する。具体的には、ＣＰＵ１０１がＩ／Ｆ１０４、印刷部１０７、読取り部１０８、ＵＩ１０９、ＦＡＸ１１０の停止処理を行い、各デバイスをＳ６０８の電源ＯＮ処理を行う前の状態にする。その後、Ｓ６０７に戻る。
【００８４】
Ｓ６１２では、ＣＰＵ１０１がＳ６０９の動作要求が印刷要求かどうかを判断する。印刷要求の場合はＳ６１３の印刷処理を実行する。印刷要求でない場合は、Ｓ６１５へ進む。
【００８５】
Ｓ６１３では、ＣＰＵ１０１がユーザーの指定した印刷設定と印刷データをもとに印刷部１０７を制御して印刷を実行する。
【００８６】
Ｓ６１４では、Ｓ６１３で印刷処理が終わったのでＣＰＵ１０１がＥＥＰＲＯＭ１０５の印刷回数２４２の値を１加算することで、印刷回数２４２の更新を行う。本実施形態では、印刷終了後に印刷回数２４２を加算したがこれに限定されず、例えば、１ページ印刷する度に値を更新するなど、印刷に関する回数を更新するようにすればよい。印刷回数２４２の更新が終わると、再び動作要求を受けるためにＳ６０９へと戻る。  Ｓ６１５では、Ｓ６１０やＳ６１２で行っていたようにＳ６０９の動作要求が何かを判断して実行する処理が機能毎に繰り返される。読取り要求であれば読取りを、ＦＡＸ送信要求であればＦＡＸ送信を、ＦＡＸ受信要求であればＦＡＸ受信を、情報取得要求であれば指定された情報の取得を実行する。図５に示すＥＥＰＲＯＭ１０５の情報取得要求もこの部分で実行される。
【００８７】
図７は、図６のＳ６０６以降でプログラムの暴走又はデッドロックの発生などにより、ＣＰＵ１０１がＷＤＴ１０６のカウンタを１０秒以内にクリアできないため、ＷＤＴ１０６が異常と判断した時に実行する異常処理のフローチャートである。
【００８８】
Ｓ７０１では、異常を検知したＷＤＴ１０６がＣＰＵ１０１に割り込みを発生させて異常を検知したことを通知する処理を行う。
【００８９】
Ｓ７０２では、ＣＰＵ１０１がＥＥＰＲＯＭ１０５からシステム起動回数２４１と印刷回数２４２の値を取得して互いに関連付けてＲＡＭ１０３に格納する処理を行う。
【００９０】
Ｓ７０３では、ＣＰＵ１０１がＯＳから時間情報を取得してＲＡＭ１０３に格納する処理を行う。本実施形態では、ＯＳから時間情報を取得したが、同等な時間情報を取得するようにしてもよい。
【００９１】
Ｓ７０４では、ＣＰＵ１０１のＣＰＵレジスタからＷＤＴ１０６が異常を検知した時に実行していたプログラムのアドレス情報を取得し、ＲＡＭ１０３に格納する処理を行う。
【００９２】
Ｓ７０５では、ＣＰＵ１０１がＯＳの管理している各タスクのうち実行状態であるタスクのＩＤを取得し、ＲＡＭ１０３に格納する処理を行う。例えば、Ｓ６１３で印刷処理タスクが実行されているときにファームウェアの暴走又はデッドロックで異常が発生した時は、印刷処理タスクのＩＤを取得する。
【００９３】
なお、Ｓ７０２〜７０５の順は、これに限定されるものではない。
【００９４】
Ｓ７０６では、ＣＰＵ１０１がＳ７０２〜Ｓ７０５でＲＡＭ１０３に格納した各情報の値をＲＡＭ１０３の異常情報一時格納領域に格納する。異常情報一時格納領域は、ＲＡＭ１０３の特定の領域で、システム起動時に値が初期化されないようになっている。
【００９５】
Ｓ７０７では、Ｓ７０１でＷＤＴ１０６がＣＰＵ１０１に割り込みを発生させてから１秒経過すると、ＷＤＴ１０６がＣＰＵ１０１に対してリセットをかける処理を実行する。
【００９６】
図７に示す以上処理が終了すると、ＣＰＵ１０１の処理が図６のＳ６０１の処理へと戻り、システムが再起動する。
【００９７】
上述したように、本実施形態では、異常処理のＳ７０６で異常情報２１０に保存する各情報をＥＥＰＲＯＭ１０５ではなくＲＡＭ１０３に一時保存する。そして、正常処理のＳ６０４で異常による再起動を検知し、Ｓ６０５でＲＡＭ１０３からＥＥＰＲＯＭ１０５に異常情報２１０を保存することで多くの情報を保存することが可能である。
【００９８】
本実施形態でも同様に、ユーザーが、外部端末からＩ／Ｆ１０４を介して又はＵＩ１０９から、画像形成装置の異常確認の指示を行うと、画像形成装置は、異常情報２１０及び動作履歴２４０をＥＥＰＲＯＭ１０５から取得し、異常情報２１０及び動作履歴２４０をユーザーに通知する。通知の方法は、特に限定されず、印刷部１０７により結果を印刷して出力してもよいし、ＵＩ１０９の表示装置等に結果を表示してもよいし、外部端末の表示部等に結果を表示するようにしてもよい。
【００９９】
ユーザーは、取得した異常情報２１０及び動作履歴２４０から異常発生時を推測することができる。例えば、システム起動回数２４１と異常時システム起動回数２１４の差、及び印刷回数２４２と異常時印刷回数２１５の差を取得することで、何回前のシステム起動時、何回前の印刷時にＷＤＴ１０６が異常を検知したか知ることができる。例えば、システム起動回数２４１が１０回、異常時システム起動回数２１４が６回、印刷回数２４２が４０回、異常時印刷回数２１５が２０回の時、４回前のシステム起動時、２０回前の印刷時に異常を検知したことが分かる。さらに、異常時間情報２１２から、ＯＳ起動時から異常が発生するまでの時間がわかるため、これを加味することにより、異常発生時の推定の精度がより向上する。
【０１００】
本実施形態では、異常を検知したときの異常情報として、一方向に値が変化する動作履歴の異常時動作履歴を、動作履歴とは別に不揮発性メモリーに記憶している。そして、異常確認を行う際に、この異常時動作履歴と動作履歴を取得することで、これらに基づいて異常の発生時を推測することが可能となる。具体的には、現在の動作履歴と異常時動作履歴の差から、ユーザーは何回前の動作のときに異常が発生したかを推測することができる。
【０１０１】
本実施形態では、時刻情報を用いずに、いつ異常を検知したか推測することができる。したがって、電源ＯＦＦや再起動により内部時間情報がリセットされたとしても、異常がいつ発生したかを推測することができる。また、内部時間情報を保持又は取得しない場合であっても、異常がいつ発生したかを推測することができる。なお、ＲＴＣを備えている場合であっても、何らかの原因により時刻情報がリセットされた際に異常がいつ発生したかを推測することができる。
【０１０２】
（他の実施形態）
以上、本発明の各実施形態を説明したが、本発明の基本的構成は上述したものに限定されるものではない。例えば、上述した実施形態では、ＥＥＰＲＯＭ１０５を使用したが、ＥＥＰＲＯＭ１０５の代わりに、書き込み可能な不揮発性メモリーを用いてもよい。
【０１０３】
上述した実施形態では、異常検知手段としてＷＤＴ１０６を使用したが、これに限定されるものではなく、ハードウェア・ソフトウェアに関係なく異常を検知してシステムをリセットできる手段を用いることができる。
【０１０４】
上述した実施形態では、異常時間情報２１２として、ＯＳから内部時間を取得したが、これに限定されず、これと同等な時間情報を取得するようにしてもよい。
【０１０５】
上述した実施形態では、ユーザーに現在の動作履歴と異常時動作履歴を通知することで、ユーザーが現在の動作履歴と異常時動作履歴の差から、何回前の動作のときに異常が発生したかを推測することができるものとしたが、これに限定されるものではない。例えば、ユーザーが、画像形成装置の異常確認処理の指示をした場合に、動作履歴と異常時動作履歴との差に基づいて、何回前のシステム起動時、何回前の印刷時に異常を検知したと推測されるかを算出し、この算出結果をユーザーに通知するようにしてもよい。
【０１０６】
また、上述した実施形態では、動作履歴として、システム起動回数と印刷回数を用いたが、これに限定されず、値が一方向に変化する動作の履歴であればよい。値が一方向に変化する動作としては、例えば、ＦＡＸの送信／受信回数等が挙げられる。上述した実施形態では、情報処理装置の異常としてファームウェアの異常を例に挙げて説明したが、これに限定されず、例えば、紙詰まり等の印刷異常などを検知して、上述した処理を行うようにしてもよい。
【０１０７】
上述した実施形態では、画像形成装置のＣＰＵ１０１をリセットする前に、動作履歴を取得して、ＥＥＰＲＯＭ１０５の異常情報２１０に書き込むようにしたが、これに限定されるものではない。すなわち、ＣＰＵ１０１をリセットした後に、動作履歴を取得して、ＥＥＰＲＯＭ１０５の異常情報２１０に書き込むようにしてもよい。
【０１０８】
なお、画像形成装置を例に挙げて説明したが、本発明は、動作履歴を保存する他の各種情報処理装置に適用することができる。
【０１０９】
上述した実施形態では、Ｓ４３やＳ７０３において、ＯＳから時間情報を取得して、異常時間情報２１２として保存するものとしたが、異常時間情報２１２は保存しなくてもよい。異常時間情報２１２を保存することにより、ＯＳ起動から異常が発生するまでの時間がわかるが、上述した実施形態では、異常時間情報２１２を保存しなくても動作の異常がいつ発生したかを推測することができるためである。
【０１１０】
上述した実施形態は、以下の処理を実行することによっても実現される。すなわち、上述した実施形態の機能を実現するソフトウエア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。また、プログラムは、１つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウエアで実現する必要はなく、一部又は全部をハードウェアによって実現するようにしてもよい。
【符号の説明】
【０１１１】
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  Ｉ／Ｆ
１０５  ＥＥＰＲＯＭ
１０６  ウォッチドッグタイマー（ＷＤＴ）
１０７  印刷部
１０８  読取り部
１０９  ＵＩ
１１０  ＦＡＸ
２１０  異常情報
２１１  異常時動作履歴スタンプ情報
２１２  異常時間情報
２１３  異常時ファームウェア動作情報
２１４  異常時システム起動回数
２１５  異常時印刷回数
２１６  異常時実行アドレス情報
２１７  異常時実行タスク情報
２２０  制御パラメータ
２３０  アプリ設定
２４０  動作履歴
２４１  システム起動回数
２４２  印刷回数
【図１】
2014016789.tif 000003
【図２】
2014016789.tif 000004
【図３】
2014016789.tif 000005
【図４】
2014016789.tif 000006
【図５】
2014016789.tif 000007
【図６】
2014016789.tif 000008
【図７】
2014016789.tif 000009