(57)【要約】【課題】自装置の状態に関する状態情報を不揮発性記憶装置に記録する記録プログラムが実行される際に記憶される記憶装置へ複写された記録プログラムが破壊されていても、状態情報を不揮発性記憶装置に記録できるようにする。【解決手段】画像処理装置１０では、プログラム正当性構築部１２が、ログ記録プログラムのプログラム正当性情報を構築する。例外ハンドラがログ記録プログラムを呼び出す際、プログラム正当性判断部１４が、プログラム正当性情報を用いてログ記録プログラムが正当か判断し、メモリアクセス切替制御部１５が、ログ記録プログラムが正当であれば、ログ記録プログラムを通常実行し、ログ記録プログラムが正当でなければ、ログ記録プログラムを、ＲＯＭ３１又はＳＲＡＭ２４上で、或いは、ＲＯＭ３１から再度ロードしてＤＲＡＭ３２上で実行し、その後、再起動部１７が、画像処理装置１０を再起動する。【選択図】図２
2015036944.tif 000002
【特許請求の範囲】
【請求項１】
自装置の状態に関する状態情報を不揮発性記憶装置に記録する記録プログラムを、当該記録プログラムが実行される前に記憶される第１の記憶装置から当該記録プログラムが実行される際に記憶される第２の記憶装置へ複写する複写手段と、
前記自装置における不具合の発生を検出する検出手段と、
前記不具合の発生の検出に応じて、前記第２の記憶装置へ複写された前記記録プログラムが破壊されているかどうかを判定する判定手段と、
前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定されなかった場合には、前記第２の記憶装置で当該記録プログラムを実行し、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを実行することにより、前記状態情報を前記不揮発性記憶装置に記録する記録手段と、
前記状態情報が前記不揮発性記憶装置に記録された後に、前記自装置を再起動する再起動手段と
を備えたことを特徴とする状態情報記録装置。
【請求項２】
前記記録手段は、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを、当該第１の記憶装置で実行することにより、前記状態情報を前記不揮発性記憶装置に記録することを特徴とする請求項１に記載の状態情報記録装置。
【請求項３】
前記記録手段は、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを、当該記録プログラムが当該第１の記憶装置の制限された環境で実行可能なものとして予め定められたものであれば、当該第１の記憶装置で実行することにより、前記状態情報を前記不揮発性記憶装置に記録することを特徴とする請求項２に記載の状態情報記録装置。
【請求項４】
前記記録手段は、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを、当該第１の記憶装置から、前記第２の記憶装置へ複写された当該記録プログラムに対して行われた破壊が行われない第３の記憶装置へ複写し、当該第３の記憶装置で実行することにより、前記状態情報を前記不揮発性記憶装置に記録することを特徴とする請求項１に記載の状態情報記録装置。
【請求項５】
前記記録手段は、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを、当該記録プログラムが前記第３の記憶装置の制限された環境で実行可能なものとして予め定められたものであれば、当該第３の記憶装置で実行することにより、前記状態情報を前記不揮発性記憶装置に記録することを特徴とする請求項４に記載の状態情報記録装置。
【請求項６】
前記記録手段は、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを、当該第１の記憶装置から当該第２の記憶装置へ再び複写し、当該第２の記憶装置で実行することにより、前記状態情報を前記不揮発性記憶装置に記録することを特徴とする請求項１に記載の状態情報記録装置。
【請求項７】
前記判定手段は、前記第２の記憶装置へ複写された前記記録プログラムから前記不具合の発生の検出に先立って予め定められた手順で算出された第１の特徴情報と、前記第２の記憶装置へ複写された前記記録プログラムから前記不具合の発生の検出に応じて前記予め定められた手順で算出された第２の特徴情報とを比較することにより、前記第２の記憶装置へ複写された前記記録プログラムが破壊されているかどうかを判定することを特徴とする請求項１乃至請求項６の何れかに記載の状態情報記録装置。
【請求項８】
コンピュータに、
自装置の状態に関する状態情報を不揮発性記憶装置に記録する記録プログラムを、当該記録プログラムが実行される前に記憶される第１の記憶装置から当該記録プログラムが実行される際に記憶される第２の記憶装置へ複写する機能と、
前記自装置における不具合の発生を検出する機能と、
前記不具合の発生の検出に応じて、前記第２の記憶装置へ複写された前記記録プログラムが破壊されているかどうかを判定する機能と、
前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定されなかった場合には、前記第２の記憶装置で当該記録プログラムを実行し、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを実行することにより、前記状態情報を前記不揮発性記憶装置に記録する機能と、
前記状態情報が前記不揮発性記憶装置に記録された後に、前記自装置を再起動する機能と
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、状態情報記録装置、プログラムに関する。
【背景技術】
【０００２】
システムメモリと、複数のタスクに対応してシステムメモリ上に連続して設定された複数のスタック領域に対応する仮想アドレスを、仮想アドレス領域に離散的にマッピングする仮想アドレス離散配置手段と、仮想アドレスと物理アドレスとを対応付けるとともにメモリアクセス違反が検知するメモリ管理手段と、画像処理用アプリケーションによるメモリアクセス違反が検知されたとき、メモリアクセス違反を履歴情報として不揮発性記憶部に保存する履歴情報保存手段とを備える画像処理装置は知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１３４７４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、自装置の状態に関する状態情報を不揮発性記憶装置に記録する記録プログラムが実行される際に記憶される記憶装置へ複写された記録プログラムが破壊されていても、状態情報を不揮発性記憶装置に記録できるようにすることにある。
【課題を解決するための手段】
【０００５】
請求項１に記載の発明は、自装置の状態に関する状態情報を不揮発性記憶装置に記録する記録プログラムを、当該記録プログラムが実行される前に記憶される第１の記憶装置から当該記録プログラムが実行される際に記憶される第２の記憶装置へ複写する複写手段と、前記自装置における不具合の発生を検出する検出手段と、前記不具合の発生の検出に応じて、前記第２の記憶装置へ複写された前記記録プログラムが破壊されているかどうかを判定する判定手段と、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定されなかった場合には、前記第２の記憶装置で当該記録プログラムを実行し、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを実行することにより、前記状態情報を前記不揮発性記憶装置に記録する記録手段と、前記状態情報が前記不揮発性記憶装置に記録された後に、前記自装置を再起動する再起動手段とを備えたことを特徴とする状態情報記録装置である。
請求項２に記載の発明は、前記記録手段は、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを、当該第１の記憶装置で実行することにより、前記状態情報を前記不揮発性記憶装置に記録することを特徴とする請求項１に記載の状態情報記録装置である。
請求項３に記載の発明は、前記記録手段は、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを、当該記録プログラムが当該第１の記憶装置の制限された環境で実行可能なものとして予め定められたものであれば、当該第１の記憶装置で実行することにより、前記状態情報を前記不揮発性記憶装置に記録することを特徴とする請求項２に記載の状態情報記録装置である。
請求項４に記載の発明は、前記記録手段は、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを、当該第１の記憶装置から、前記第２の記憶装置へ複写された当該記録プログラムに対して行われた破壊が行われない第３の記憶装置へ複写し、当該第３の記憶装置で実行することにより、前記状態情報を前記不揮発性記憶装置に記録することを特徴とする請求項１に記載の状態情報記録装置である。
請求項５に記載の発明は、前記記録手段は、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを、当該記録プログラムが前記第３の記憶装置の制限された環境で実行可能なものとして予め定められたものであれば、当該第３の記憶装置で実行することにより、前記状態情報を前記不揮発性記憶装置に記録することを特徴とする請求項４に記載の状態情報記録装置である。
請求項６に記載の発明は、前記記録手段は、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを、当該第１の記憶装置から当該第２の記憶装置へ再び複写し、当該第２の記憶装置で実行することにより、前記状態情報を前記不揮発性記憶装置に記録することを特徴とする請求項１に記載の状態情報記録装置である。
請求項７に記載の発明は、前記判定手段は、前記第２の記憶装置へ複写された前記記録プログラムから前記不具合の発生の検出に先立って予め定められた手順で算出された第１の特徴情報と、前記第２の記憶装置へ複写された前記記録プログラムから前記不具合の発生の検出に応じて前記予め定められた手順で算出された第２の特徴情報とを比較することにより、前記第２の記憶装置へ複写された前記記録プログラムが破壊されているかどうかを判定することを特徴とする請求項１乃至請求項６の何れかに記載の状態情報記録装置である。
請求項８に記載の発明は、コンピュータに、自装置の状態に関する状態情報を不揮発性記憶装置に記録する記録プログラムを、当該記録プログラムが実行される前に記憶される第１の記憶装置から当該記録プログラムが実行される際に記憶される第２の記憶装置へ複写する機能と、前記自装置における不具合の発生を検出する機能と、前記不具合の発生の検出に応じて、前記第２の記憶装置へ複写された前記記録プログラムが破壊されているかどうかを判定する機能と、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定されなかった場合には、前記第２の記憶装置で当該記録プログラムを実行し、前記第２の記憶装置へ複写された前記記録プログラムが破壊されていると判定された場合には、前記第１の記憶装置に記憶された当該記録プログラムを実行することにより、前記状態情報を前記不揮発性記憶装置に記録する機能と、前記状態情報が前記不揮発性記憶装置に記録された後に、前記自装置を再起動する機能とを実現させるためのプログラムである。
【発明の効果】
【０００６】
請求項１の発明によれば、自装置の状態に関する状態情報を不揮発性記憶装置に記録する記録プログラムが実行される際に記憶される記憶装置へ複写された記録プログラムが破壊されていても、状態情報を不揮発性記憶装置に記録することができる。
請求項２の発明によれば、本構成を有していない場合に比較して、記録プログラムが実行される際に記憶される記憶装置へ複写された記録プログラムに対する破壊の影響を抑えつつ、状態情報を不揮発性記憶装置に記録することができる。
請求項３の発明によれば、記録プログラムが実行される際に記憶される記憶装置へ複写された記録プログラムに対する破壊の影響を抑えつつ状態情報を不揮発性記憶装置に記録する動作が行われないという事態を回避することができる。
請求項４の発明によれば、本構成を有していない場合に比較して、記録プログラムが実行される際に記憶される記憶装置へ複写された記録プログラムに対する破壊の影響を抑えつつ、状態情報を不揮発性記憶装置に記録することができる。
請求項５の発明によれば、記録プログラムが実行される際に記憶される記憶装置へ複写された記録プログラムに対する破壊の影響を抑えつつ状態情報を不揮発性記憶装置に記録する動作が行われないという事態を回避することができる。
請求項６の発明によれば、本構成を有していない場合に比較して、記録プログラムが実行される際に記憶される記憶装置へ複写された記録プログラムが破壊されているときに、状態情報を不揮発性記憶装置に高速に記録できる可能性が高まる。
請求項７の発明によれば、本構成を有していない場合に比較して、記録プログラムが実行される際に記憶される記憶装置へ複写された記録プログラムが破壊されているかどうかを正確に判定できる可能性が高まる。
請求項８の発明によれば、自装置の状態に関する状態情報を不揮発性記憶装置に記録する記録プログラムが実行される際に記憶される記憶装置へ複写された記録プログラムが破壊されていても、状態情報を不揮発性記憶装置に記録することができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施の形態が適用される画像処理装置の構成例を示した図である。
【図２】本発明の実施の形態における画像処理装置の機能構成例を示したブロック図である。
【図３】本発明の実施の形態における画像処理装置がプログラム正当性情報を構築する際の動作例を示したフローチャートである。
【図４】本発明の実施の形態における画像処理装置がＤＲＡＭのプログラム領域にロードしたログ記録プログラムを示した図である。
【図５】本発明の実施の形態における画像処理装置がＤＲＡＭのデータ領域に構築したプログラム正当性情報を示した図である。
【図６】本発明の実施の形態における画像処理装置がプログラムの正当性を判断する際の動作例を示したフローチャートである。
【図７】本発明の実施の形態における画像処理装置がログ記録プログラムの破壊時に第２の方法でログ記録プログラムを実行すると判定した場合にＳＲＡＭにロードされたデータを示した図である。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
図１は、本実施の形態が適用される画像処理装置１０のハードウェア構成例を示した図である。
図示するように、画像処理装置１０は、装置全体を制御する制御部２０を備える。制御部２０は、ＣＰＵ（Central Processing Unit）２１、ＭＭＵ（Memory Management Unit）２２、例外発生部２３、ＳＲＡＭ（Static Random Access Memory）２４等がＳｏＣ（System-on-a-Chip）方式で１つのプロセッサチップに搭載されることにより実現される。また、画像処理装置１０は、ＲＯＭ（Read Only Memory）３１と、ＤＲＡＭ（Dynamic Random Access Memory）３２と、ＨＤＤ（Hard Disk Drive）３３と、画像読取部３４と、画像形成部３５と、操作パネル３６と、通信インターフェース（以下、「通信Ｉ／Ｆ」と表記する）３７とを備える。
【０００９】
ＣＰＵ２１は、ＲＯＭ３１等に記憶された各種プログラムをＤＲＡＭ３２にロードして実行することにより、後述する各機能を実現する。その際、未定義の命令を読み込んだとすると、未定義命令例外を示す信号を出力する。
【００１０】
ＭＭＵ２２は、仮想アドレスにＤＲＡＭ３２上の物理アドレスがページ単位で対応付けられ、ページ単位で書込みの可否と読出しの可否のアクセス情報が設定されたページテーブルを有し、ＣＰＵ２１から出力された仮想アドレスをページテーブルを参照して物理アドレスに変換する。その際、仮想アドレスに対応する物理アドレスがページテーブルのエントリに存在しなかったり、仮想アドレスが要求されたアクセスを禁止されたものだったりすると、メモリアクセス例外を示す信号を出力する。
【００１１】
例外発生部２３は、ＣＰＵ２１が出力した未定義命令例外を示す信号、ＭＭＵ２２が出力したメモリアクセス例外を示す信号、割り込み要求（ＩＲＱ）等を受け、例外又は割り込みが発生したことを通知する例外発生通知をＣＰＵ２１に出力する。
【００１２】
ＳＲＡＭ２４は、ＣＰＵ２１の作業用メモリ等として用いられるメモリである。ＤＲＡＭ３２よりも高速なので、ＤＲＡＭ３２から読み出したデータを再度の使用に備えて記憶しておくキャッシュメモリとして用いられる。
【００１３】
ＲＯＭ３１は、ＣＰＵ２１が実行する各種プログラム等を記憶するメモリである。
【００１４】
ＤＲＡＭ３２は、ＣＰＵ２１の作業用メモリ等として用いられるメモリである。このＤＲＡＭ３２には、画像処理装置１０が起動されると、ＲＯＭ３１に記憶された各種プログラムがコピーされる。
【００１５】
ＨＤＤ３３は、不揮発性記憶装置の一例であり、画像読取部３４が読み取った画像データや画像形成部３５における画像形成にて用いる画像データ等を記憶する例えば磁気ディスク装置である。
【００１６】
画像読取部３４は、紙等の記録媒体に記録された画像を読み取る。ここで、画像読取部３４は、例えばスキャナであり、光源から原稿に照射した光に対する反射光をレンズで縮小してＣＣＤ（Charge Coupled Devices）で受光するＣＣＤ方式や、ＬＥＤ光源から原稿に順に照射した光に対する反射光をＣＩＳ（Contact Image Sensor）で受光するＣＩＳ方式のものを用いるとよい。
【００１７】
画像形成部３５は、記録媒体に画像を形成する。ここで、画像形成部３５は、例えばプリンタであり、感光体に付着させたトナーを記録媒体に転写して像を形成する電子写真方式や、インクを記録媒体上に吐出して像を形成するインクジェット方式のものを用いるとよい。
【００１８】
操作パネル３６は、各種情報の表示やユーザからの操作入力の受付を行うタッチパネルである。ここで、操作パネル３６は、各種情報が表示されるディスプレイと、指やスタイラスペン等の指示手段で指示された位置を検出する位置検出シートとからなる。
【００１９】
通信Ｉ／Ｆ３７は、ネットワークを介して他の装置との間で各種情報の送受信を行う。
【００２０】
ところで、このような画像処理装置１０では、ＣＰＵ２１がＤＲＡＭ３２にアクセスする際にＭＭＵ２２がメモリアクセス例外等のシステムハングの決起となる不具合の発生を検知すると、例外発生部２３から例外発生通知を受けて、ＣＰＵ２１が例外ハンドラを呼び出し、例外ハンドラが、画像処理装置１０の状態に関する状態情報（ＣＰＵ２１のレジスタ、ＯＳの情報等）のログを収集して記録するログ記録プログラムを実行する、という動作を行うことがある。そして、この動作により、状態情報は、操作パネル３６に表示されたり、図示しないホストＰＣに通信Ｉ／Ｆ３７を介して転送されホストＰＣで表示されたりする。
【００２１】
しかしながら、このような動作は、ＣＰＵ２１がＤＲＡＭ３２にアクセスする場合に限定される。即ち、ＣＰＵ２１以外のバスイニシエータ、例えばＤＭＡ（Direct Memory Access）コントローラ等がＤＲＡＭ３２にアクセスする場合、このような動作は行えないことがある。例えば、ＤＭＡが暴走してＤＲＡＭ３２のプログラム領域を破壊してしまうと、例外ハンドラがログ記録プログラムを実行できないことがあり得るからである。
【００２２】
そこで、本実施の形態では、ＣＰＵ２１がＤＲＡＭ３２にアクセスする際に、検出手段の一例としてのＭＭＵ２２が不具合の発生を検知すると、ログ記録プログラムが破壊されているかどうかを判定するようにした。そして、ログ記録プログラムが破壊されていなければ、ログ記録プログラムを通常通り実行した後、画像処理装置１０を再起動し、ログ記録プログラムが破壊されていれば、ログ記録プログラムを特別な方法で実行した後、又は、ログ記録プログラムを実行せずに、画像処理装置１０を再起動するようにした。
【００２３】
ここで、ログ記録プログラムが破壊されていた場合にログ記録プログラムを実行する特別な方法としては、次の第１から第３の方法が考えられる。即ち、ベクタテーブルが破壊されていなければ、次の第１から第３の方法の何れかで状態情報のログ（不具合が発生する直前までのログ）を保存した状態で画像処理装置１０を再起動する。
【００２４】
第１の方法は、ログ記録プログラムが破壊されていれば、ＲＯＭ３１上でログ記録プログラムを実行する、というものである。
【００２５】
第２の方法は、ログ記録プログラムが破壊されていれば、ログ記録プログラムをＲＯＭ３１からＳＲＡＭ２４へコピーして実行する、というものである。
【００２６】
第３の方法は、ログ記録プログラムが破壊されていれば、ログ記録プログラムをＲＯＭ３１からＤＲＡＭ３２へ再度コピーして実行する、というものである。
【００２７】
ここで、ログ記録プログラムは、自装置の状態に関する状態情報を不揮発性記憶装置に記録する記録プログラムの一例であり、ＲＯＭ３１は、記録プログラムが実行される前に記憶される第１の記憶装置の一例であり、ＤＲＡＭ３２は、記録プログラムが実行される際に記憶される第２の記憶装置の一例であり、ＳＲＡＭ２４は、第２の記憶装置へ複写された記録プログラムに対して行われた破壊が行われない第３の記憶装置の一例である。
【００２８】
次に、このような動作を行う画像処理装置１０の構成について説明する。
【００２９】
図２は、画像処理装置１０の機能構成例を示したブロック図である。
図示するように、画像処理装置１０は、上述したＲＯＭ３１、ＤＲＡＭ３２、及びＳＲＡＭ２４に加え、第１ロード部１１と、プログラム正当性構築部１２と、例外ハンドラ実行部１３と、プログラム正当性判断部１４と、メモリアクセス切替制御部１５と、第２ロード部１６と、再起動部１７とを備えている。
【００３０】
第１ロード部１１は、画像処理装置１０が起動された際又はその後の任意のタイミングで、ＲＯＭ３１からＤＲＡＭ３２のプログラム領域へプログラムをロードする。このロードされるプログラムには、ログ記録プログラムも含まれる。第１ロード部１１は、ＤＲＡＭ３２のプログラム領域へロードされたログ記録プログラムが破壊されていると判定されると、ＲＯＭ３１からＤＲＡＭ３２のプログラム領域へログ記録プログラムを再度ロードする。本実施の形態では、記録プログラムを第１の記憶装置から第２の記憶装置へ複写する複写手段の一例として、第１ロード部１１を設けている。
【００３１】
プログラム正当性構築部１２は、ＤＲＡＭ３２のプログラム領域に記憶されたログ記録プログラムの正当性に関する情報（以下、「プログラム正当性情報」という）を、ＤＲＡＭ３２のデータ領域に構築する。ここで、ログ記録プログラムの正当性とは、ログ記録プログラムが正常に動作することであり、ログ記録プログラムが破壊されていないことを意味する。
【００３２】
従って、プログラム正当性情報には、例えば、ログ記録プログラムから計算されたチェックサム値を含めるとよい。具体的には、ＲＯＭ３１からＤＲＡＭ３２のプログラム領域へログ記録プログラムがロードされる際に、ログ記録プログラムのチェックサム値を計算し、チェックサム値をＤＲＡＭ３２のデータ領域に記憶するとよい。但し、チェックサム値の計算は、ＲＯＭ３１からＤＲＡＭ３２のプログラム領域へログ記録プログラムがロードされる際に必ず行わなければならないというものではなく、ＲＯＭ３１からＤＲＡＭ３２のプログラム領域へログ記録プログラムがロードされた後、画像処理装置１０に不具合が発生するのに先立って行えばよい。即ち、ＤＲＡＭ３２のデータ領域に記憶されたチェックサム値は、第２の記憶装置へ複写された記録プログラムから不具合の発生の検出に先立って予め定められた手順で算出された第１の特徴情報の一例である。
【００３３】
或いは、プログラム正当性情報には、例えば、ログ記録プログラムが書き込まれた時刻を示すタイムスタンプを含めてもよい。具体的には、ＲＯＭ３１からＤＲＡＭ３２のプログラム領域へログ記録プログラムがロードされる際に、ログ記録プログラムが書き込まれた時刻のタイムスタンプをＤＲＡＭ３２のデータ領域に記憶するとよい。
【００３４】
例外ハンドラ実行部１３は、例外発生部２３（図１参照）から例外発生通知を受けると、ベクタテーブル内のその例外発生通知に対応するベクタを参照し、そのベクタで指定されたアドレスに格納された例外ハンドラを実行する。尚、ベクタテーブルは、通常はＲＯＭ３１からＤＲＡＭ３２へコピーされて使用されるが、ＤＲＡＭ３２のプログラム領域へロードされたログ記録プログラムが破壊されていると判定されると、ＲＯＭ３１からＳＲＡＭ２４へコピーされて使用されることもある。
【００３５】
プログラム正当性判断部１４は、ＤＲＡＭ３２のプログラム領域に記憶されたログ記録プログラムの正当性を、プログラム正当性構築部１２がＤＲＡＭ３２のデータ領域に構築したプログラム正当性情報を用いて判断する。
【００３６】
ここで、プログラム正当性情報にチェックサム値を含めた場合、ログ記録プログラムの正当性の判断は、ＤＲＡＭ３２のプログラム領域に記憶されたログ記録プログラムから計算されたチェックサム値と、ＤＲＡＭ３２のデータ領域に記憶されたそのログ記録プログラムのプログラム正当性情報に含まれるチェックサム値とを比較することによって行う。ＤＲＡＭ３２のプログラム領域に記憶されたログ記録プログラムから計算されたチェックサム値は、第２の記憶装置へ複写された記録プログラムから不具合の発生の検出に応じて予め定められた手順で算出された第２の特徴情報の一例である。本実施の形態では、第２の記憶装置へ複写された記録プログラムが破壊されているかどうかを判定する判定手段の一例として、プログラム正当性判断部１４を設けている。
【００３７】
また、プログラム正当性情報にタイムスタンプを含めた場合、ログ記録プログラムの正当性の判断は、ＤＲＡＭ３２のプログラム領域にログ記録プログラムが書き込まれた時刻を示すタイムスタンプと、ＤＲＡＭ３２のデータ領域に記憶されたそのログ記録プログラムのプログラム正当性情報に含まれるタイムスタンプとを比較することによって行う。
【００３８】
尚、プログラム正当性情報にタイムスタンプを含めた場合、タイムスタンプが異なっているからといって必ずしもログ記録プログラムが破壊されているとは限らない。従って、この場合、プログラム正当性情報は、ログ記録プログラムが破壊されている可能性があるかどうかを調べるための情報である。即ち、本実施の形態では、第２の記憶装置へ複写された記録プログラムが破壊されている可能性があるかどうかを判定する判定手段の一例として、プログラム正当性判断部１４を設けてもよい。
【００３９】
メモリアクセス切替制御部１５は、ＲＯＭ３１、ＤＲＡＭ３２、ＳＲＡＭ２４の何れのメモリ上でプログラムを実行するかを判定し、その判定の結果に基づいて、アクセスするメモリを切り替える制御を行う。
【００４０】
具体的には、ＤＲＡＭ３２のプログラム領域に記憶されたログ記録プログラムが破壊されていない場合は、アクセスするメモリをＤＲＡＭ３２に設定し、ＤＲＡＭ３２上でログ記録プログラムを実行する。
【００４１】
ＤＲＡＭ３２のプログラム領域に記憶されたログ記録プログラムが破壊されている場合は、上述した第１から第３の方法の何れを用いるかによって、アクセスするメモリが変わってくる。第１の方法を用いる場合は、アクセスするメモリをＲＯＭ３１に設定し、ＲＯＭ３１上でログ記録プログラムを実行する。第２の方法を用いる場合は、アクセスするメモリをＳＲＡＭ２４に設定し、第２ロード部１６に対してＲＯＭ３１からＳＲＡＭ２４へログ記録プログラムをロードさせた後、ＳＲＡＭ２４上でログ記録プログラムを実行する。第３の方法を用いる場合は、アクセスするメモリをＤＲＡＭ３２に設定し、第１ロード部１１に対してＲＯＭ３１からＤＲＡＭ３２へログ記録プログラムを再度ロードさせた後、ＤＲＡＭ３２上でログ記録プログラムを実行する。
【００４２】
そして、このようにログ記録プログラムが実行されると、画像処理装置１０の状態に関する状態情報のログがＨＤＤ３３（図１参照）に記録される。
【００４３】
尚、ＤＲＡＭ３２のプログラム領域に記憶されたログ記録プログラムが破壊されている場合に第１から第３の方法の何れを用いるかは、画像処理装置１０の設定として予め決めておいてもよいし、ＤＲＡＭ３２のプログラム領域に記憶されたログ記録プログラムの種類に基づいて動的に決めてもよい。
【００４４】
本実施の形態では、第２の記憶装置へ複写された記録プログラムが破壊されていると判定されなかった場合には、第２の記憶装置で記録プログラムを実行し、第２の記憶装置へ複写された記録プログラムが破壊されていると判定された場合には、第１の記憶装置に記憶された記録プログラムを実行することにより、状態情報を不揮発性記憶装置に記録する記録手段の一例として、メモリアクセス切替制御部１５を設けている。
【００４５】
第２ロード部１６は、ＤＲＡＭ３２のプログラム領域へロードされたログ記録プログラムが破壊されていると判定されると、ＲＯＭ３１からＳＲＡＭ２４へログ記録プログラムをロードする。
【００４６】
再起動部１７は、例外発生部２３（図１参照）から例外発生通知を受けた場合に、メモリアクセス切替制御部１５がログ記録プログラムを実行することによって画像処理装置１０の状態に関する状態情報のログがＨＤＤ３３（図１参照）に記録された後、又は、画像処理装置１０の状態に関する状態情報のログが記録されなくても、画像処理装置１０を再起動する。本実施の形態では、自装置を再起動する再起動手段の一例として、再起動部１７を設けている。
【００４７】
尚、これらの機能部のうち、ＲＯＭ３１、ＤＲＡＭ３２、ＳＲＡＭ２４以外は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、ＣＰＵ２１（図１参照）が、第１ロード部１１、プログラム正当性構築部１２、例外ハンドラ実行部１３、プログラム正当性判断部１４、メモリアクセス切替制御部１５、第２ロード部１６、再起動部１７を実現するプログラムを例えばＲＯＭ３１からＤＲＡＭ３２に読み込んで実行することにより、これらの機能部は実現される。
【００４８】
次いで、本実施の形態における画像処理装置１０の動作について説明する。ここでは、プログラム正当性情報にチェックサム値を含めた場合を例にとって、説明する。
【００４９】
図３は、画像処理装置１０がプログラム正当性情報を構築する際の動作例を示したフローチャートである。尚、この動作は、第１ロード部１１がＲＯＭ３１からＤＲＡＭ３２のプログラム領域へログ記録プログラムをロードする際に、プログラム正当性構築部１２によって行われる。
【００５０】
第１ロード部１１がＲＯＭ３１からログ記録プログラムを読み出すと、プログラム正当性構築部１２は、そのログ記録プログラムのサイズを第１ロード部１１から取得する（ステップ１０１）。第１ロード部１１はＲＯＭ３１からログ記録プログラムを読み出す際に属性として付されたログ記録プログラムのサイズも読み出すので、プログラム正当性構築部１２はこのサイズを第１ロード部１１から取得するとよい。
【００５１】
また、このとき、プログラム正当性構築部１２は、そのログ記録プログラムの本体を第１ロード部１１から取得し、そのログ記録プログラムからチェックサム値を算出する（ステップ１０２）。
【００５２】
その後、第１ロード部１１がＤＲＡＭ３２のプログラム領域にログ記録プログラムを書き込むと、プログラム正当性構築部１２は、ＤＲＡＭ３２におけるログ記録プログラムの開始アドレスを第１ロード部１１から取得する（ステップ１０３）。第１ロード部１１はＤＲＡＭ３２にログ記録プログラムを書き込んだ際にログ記録プログラムの開始アドレスを把握するので、プログラム正当性構築部１２はこの開始アドレスを第１ロード部１１から取得するとよい。
【００５３】
これにより、プログラム正当性構築部１２は、ステップ１０１で取得したサイズと、ステップ１０２で算出したチェックサム値と、ステップ１０３で取得した開始アドレスとを、ログ記録プログラムのプログラム正当性情報として、ＤＲＡＭ３２のデータ領域に書き込む（ステップ１０４）。
【００５４】
ここで、図３に示した動作によりログ記録プログラムからプログラム正当性情報を構築する様子について、具体的に説明する。
【００５５】
図４は、ＤＲＡＭ３２のプログラム領域に記憶されたログ記録プログラムを例示した図である。図示するように、プログラム領域には、ログ記録プログラム「foo_A()」、「foo_B()」、「foo_C()」、・・・、「foo_N()」が記憶されている。即ち、ここでは、ログ記録プログラムを、例外ハンドラから呼び出される関数の名称で示している。
【００５６】
尚、図では、プログラム正当性情報の構築に必要な情報ではないが、破壊時実行情報も示している。この破壊時実行情報は、ログ記録プログラムごとに、それが破壊された際に、ＲＯＭ３１に記憶されたログ記録プログラムを上述した第１から第３の方法の何れで実行するか、を定義する。例えば、ログ記録プログラム「foo_A()」は簡易的な機能を有するログ記録プログラムであることを想定しているので、このログ記録プログラムに対しては、破壊時実行情報として、ＲＯＭ３１上で実行すべきことを定義している。ＲＯＭ３１は、動作上の制限がある実行環境ではあるが破壊の影響を受けず確実に動作可能だからである。また、ログ記録プログラム「foo_B()」及び「foo_C()」は次に簡易的な機能を有するログ記録プログラムであることを想定しているので、これらのログ記録プログラムに対しては、破壊時実行情報として、ＳＲＡＭ２４上で実行すべきことを定義している。ＳＲＡＭ２４も、ある程度動作上の制限がある実行環境ではあるが破壊の影響を受けず確実に動作可能だからである。更に、ログ記録プログラム「foo_N()」は詳細な機能を有するログ記録プログラムであることを想定しているので、このログ記録プログラムに対しては、破壊時実行情報として、ＤＲＡＭ３２上で実行すべきことを定義している。尚、ここでは、破壊時実行情報を、ログ記録プログラムを第１から第３の方法の何れで実行するかを定義するものとしたが、ログ記録プログラムを実行するかどうかも定義するものとしてよい。また、破壊時実行情報は、ＤＲＡＭ３２のプログラム領域に記憶されたログ記録プログラムの破壊の影響を受けない例えばＲＯＭ３１等に記憶されていることが望ましい。
【００５７】
図５は、ＤＲＡＭ３２のデータ領域に記憶されたプログラム正当性情報を例示した図である。図示するように、データ領域には、図４に示したログ記録プログラム「foo_A()」、「foo_B()」、「foo_C()」、・・・、「foo_N()」のそれぞれのプログラム正当性情報が記憶されている。プログラム正当性情報において、開始アドレスは図３のステップ１０３で取得されたものであり、サイズは図３のステップ１０１で取得されたものであり、チェックサム値は図３のステップ１０２で算出されたものである。
【００５８】
図６は、画像処理装置１０がプログラム正当性情報を用いてログ記録プログラムの正当性を判断する際の動作例を示したフローチャートである。尚、この動作は、例外ハンドラ実行部１３が実行した例外ハンドラがログ記録プログラムを呼び出す際に、プログラム正当性判断部１４、メモリアクセス切替制御部１５及び再起動部１７によって行われる。また、この動作例では、ログ記録プログラムが破壊された際に、ログ記録プログラムを実行するか及び実行する場合には第１から第３の方法の何れで実行するかを、図４に示した破壊時実行情報に基づいて決定するものとする。
【００５９】
例外ハンドラがログ記録プログラムを呼び出そうとすると、プログラム正当性判断部１４は、ＤＲＡＭ３２のデータ領域からそのログ記録プログラムのプログラム正当性情報を取得する（ステップ１５１）。例外ハンドラがログ記録プログラムを、プログラム領域における開始アドレスを引数として呼び出すものであれば、プログラム正当性判断部１４は、ＤＲＡＭ３２のデータ領域でこの開始アドレスを検索することにより、プログラム正当性情報を取得するとよい。また、例外ハンドラがログ記録プログラムを、プログラム領域におけるログ記録プログラムが記録された順番、つまり、データ領域におけるプログラム正当性情報が記録された順番を引数として呼び出すものであれば、プログラム正当性判断部１４は、ＤＲＡＭ３２のデータ領域でこの順番のプログラム正当性情報を取得するとよい。
【００６０】
このようにしてログ記録プログラムのプログラム正当性情報が取得されると、プログラム正当性判断部１４は、プログラム正当性情報からチェックサム値を取り出す（ステップ１５２）。
【００６１】
また、このとき、プログラム正当性判断部１４は、プログラム正当性情報から開始アドレス及びサイズを取り出し（ステップ１５３）、ＤＲＡＭ３２のプログラム領域からこの開始アドレス及びサイズに基づいてログ記録プログラムを読み出す（ステップ１５４）。そして、読み出したログ記録プログラムのチェックサム値を算出する（ステップ１５５）。
【００６２】
これにより、プログラム正当性判断部１４は、ステップ１５２で取り出したチェックサム値と、ステップ１５５で算出したチェックサム値とが一致するかどうかを判定する（ステップ１５６）。
【００６３】
これらのチェックサム値が一致すると判定された場合、ログ記録プログラムは破壊されていないと考えられる。従って、プログラム正当性判断部１４はメモリアクセス切替制御部１５にその旨を伝え、これにより、メモリアクセス切替制御部１５は、アクセスするメモリをＤＲＡＭ３２に設定したまま、ログ記録プログラムをＤＲＡＭ３２上で実行する（ステップ１５７）。
【００６４】
一方、これらのチェックサム値が一致しないと判定された場合、ログ記録プログラムは破壊されていると考えられる。従って、プログラム正当性判断部１４はメモリアクセス切替制御部１５にその旨を伝え、これにより、メモリアクセス切替制御部１５は、ログ記録プログラムに対して定義された破壊時実行情報を参照する（ステップ１５８）。
【００６５】
そして、まず、メモリアクセス切替制御部１５は、破壊時実行情報に基づいて、ログ記録プログラムを実行するかどうかを判定する（ステップ１５９）。
【００６６】
その結果、ログ記録プログラムを実行すると判定した場合、メモリアクセス切替制御部１５は、破壊時実行情報に基づいて、上述した第１から第３の方法の何れでログ記録プログラムを実行するかを判定する（ステップ１６０）。
【００６７】
第１の方法でログ記録プログラムを実行すると判定した場合、メモリアクセス切替制御部１５は、アクセスするメモリをＲＯＭ３１に設定し、ログ記録プログラムをＲＯＭ３１上で実行する（ステップ１６１）。
【００６８】
第２の方法でログ記録プログラムを実行すると判定した場合、メモリアクセス切替制御部１５は、アクセスするメモリをＳＲＡＭ２４に設定し、第２ロード部１６にＲＯＭ３１からＳＲＡＭ２４へログ記録プログラムをロードするように指示し、ログ記録プログラムをＳＲＡＭ２４上で実行する（ステップ１６２）。尚、第２ロード部１６は、例えば、ＲＯＭ３１からＳＲＡＭ２４へ初めてログ記録プログラムをロードする際に、例外ハンドラ及びそれを呼び出すためのベクタテーブルを含むプログラムの実行環境をＳＲＡＭ２４に構築しておくものとする。
【００６９】
第３の方法でログ記録プログラムを実行すると判定された場合、メモリアクセス切替制御部１５は、アクセスするメモリをＤＲＡＭ３２に設定したままで、第２ロード部１６にＲＯＭ３１からＤＲＡＭ３２へログ記録プログラムを再度ロードするように指示し、ログ記録プログラムをＤＲＡＭ３２上で実行する（ステップ１６３）。
【００７０】
このようにしてログ記録プログラムが実行されると、メモリアクセス切替制御部１５はその旨を再起動部１７に伝え、再起動部１７は、画像処理装置１０を再起動する（ステップ１６４）。
【００７１】
一方、ステップ１５９でログ記録プログラムを実行しないと判定した場合、メモリアクセス切替制御部１５は、ログ記録プログラムを実行することなく、その旨を再起動部１７に伝え、再起動部１７は、画像処理装置１０を再起動する（ステップ１６４）。
【００７２】
ここで、図６に示した動作により第２の方法でログ記録プログラムを実行すると判定された際にＳＲＡＭ２４にロードされるデータについて、具体的に説明する。
【００７３】
図７は、その際にＳＲＡＭ２４に記憶されるデータを例示した図である。図示するように、ＳＲＡＭ２４には、ベクタテーブルが記憶される。ベクタテーブルは、「Reset Vector」から「IRQ Vector」までのベクタを格納するテーブルである。尚、通常、各ベクタは、ＲＯＭ３１のアドレス０から始まり、予め決められたアドレスに記憶されるが、ＳＲＡＭ２４にロードされた場合も、各ベクタは、ＳＲＡＭ２４の同じアドレスに記憶され、ＲＯＭ３１にベクタテーブルが記憶された場合と同じプログラム実行環境を実現している。また、ＳＲＡＭ２４には、各ベクタに対応する例外ハンドラも記憶されている。ベクタテーブルの各ベクタには対応する例外ハンドラのアドレスが格納されており、例外発生部２３からの例外発生通知に応じたベクタを参照することで、そのベクタに対応する例外ハンドラが実行される。更に、ＳＲＡＭ２４には、制御ソフトウェアが格納されている。この制御ソフトウェアは、画像処理装置１０の画像読取部３４、画像形成部３５等の各機能部を制御するソフトウェアである。ステップ１６２でＲＯＭ３１からロードされたログ記録プログラムもこの制御ソフトウェアに含めて記憶されている。これにより、ＳＲＡＭ２４に記憶された例外ハンドラが実行されると、ＳＲＡＭ２４に記憶されたログ記録プログラムが呼び出される。更にまた、ＳＲＡＭ２４には、ＭＭＵ２２（図１参照）が参照するページテーブルも記憶されている。
【００７４】
尚、本実施の形態を実現するプログラムは、通信手段により提供することはもちろん、ＣＤ−ＲＯＭ等の記録媒体に格納して提供することも可能である。
【符号の説明】
【００７５】
１０…画像処理装置、１１…第１ロード部、１２…プログラム正当性構築部、１３…例外ハンドラ実行部、１４…プログラム正当性判断部、１５…メモリアクセス切替制御部、１６…第２ロード部、１７…再起動部、２４…ＳＲＡＭ、３１…ＲＯＭ、３２…ＤＲＡＭ
【図１】
2015036944.tif 000003
【図２】
2015036944.tif 000004
【図３】
2015036944.tif 000005
【図４】
2015036944.tif 000006
【図５】
2015036944.tif 000007
【図６】
2015036944.tif 000008
【図７】
2015036944.tif 000009