(57)【要約】【課題】容易且つ確実にＣＰＵの異常を検出して修復することができる情報処理装置を提供する。【解決手段】アドレスゼロから連続して設定された第１の要素領域４１を有する読み書き可能な記憶領域３２と、第１の要素領域４１に書き込まれた値が、期待値か否かを検査することによって、第１の要素領域４１の異常を検出する異常検出手段と、異常検出手段により第１の要素領域４１の異常を検出した場合、第１の要素領域４１の修復を行う修復手段と、を備える。【選択図】図１
2009086822.tif 000002
【特許請求の範囲】
【請求項１】
アドレスゼロから連続して設定された第１の要素領域を有する読み書き可能な記憶領域と、
前記第１の要素領域に書き込まれた値が、期待値か否かを検査することによって、前記第１の要素領域の異常を検出する異常検出手段と、
前記異常検出手段により前記第１の要素領域の異常を検出した場合、前記第１の要素領域の修復を行う修復手段と、を備えたことを特徴とする情報処理装置。
【請求項２】
前記第１の要素領域には、割り込みベクタが設定されており、
前記異常検出手段は、前記割り込みベクタの値が期待値か否かを検査することにより、前記割り込みベクタの破壊を検出することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記記憶領域は、
前記第１の要素領域とは異なるアドレスに設定されると共に、前記割り込みベクタが設定された第２の要素領域をさらに有し、
前記異常検出手段は、前記第１の要素領域に設定された割り込みベクタの値と、前記第２の要素領域に設定された割り込みベクタの値とを比較し、これらの値が一致しない場合、前記第１の要素領域に設定された割り込みベクタの破壊を検出することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記情報処理装置は、前記割り込みベクタを設定するための割り込みベクタプログラムを記憶した書き換え不可能なプログラム記憶領域をさらに備え、
前記異常検出手段は、
前記割り込みベクタプログラムから得られる割り込みベクタの値と、前記第１の要素領域に設定された割り込みベクタの値とを比較し、これらが一致しない場合、前記第１の要素領域に設定された割り込みベクタの破壊を検出することを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記異常検出手段は、
前記割り込みベクタプログラムから得られる割り込みベクタの値と、前記第１の要素領域および前記第２の要素領域に設定された割り込みベクタの値とを比較し、少なくとも一方の割り込みベクタの値が一致しない場合、前記第１の要素領域および前記第２の要素領域の少なくとも一方の割り込みベクタの破壊を検出することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
アドレスゼロから連続して設定された要素領域を有し、ＣＰＵにより読み書き可能な記憶領域を有するＣＰＵの異常検出方法であって、
前記要素領域に書き込まれた値が、期待値か否かを検査することによって、前記要素領域の異常を検出する異常検出工程と、
前記異常検出工程により前記要素領域の異常を検出した場合、前記要素領域の修復を行う修復工程と、を実行することを特徴とするＣＰＵの異常検出方法。
【請求項７】
コンピュータに、請求項６に記載のＣＰＵの異常検出方法における各工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵの異常（暴走）を検出して自動修復することができる情報処理装置、ＣＰＵの異常検出方法およびプログラムに関するものである。
【背景技術】
【０００２】
従来、ＣＰＵの暴走を検出する技術として暴走監視回路を用いたものが知られている。この暴走監視回路は、ＣＰＵの命令プログラムアドレスに対し次のアドレスを予め記憶しておき、この次のアドレスとＣＰＵが発生する次のプログラムアドレスとを比較器を用いて比較する。そして、これらに不一致が生じた場合にＣＰＵの暴走検出信号を発生する。そして、暴走検出信号を検出した場合、ＣＰＵを現アドレスに動作復帰させることで、暴走発生時の直前の命令から再スタートさせる（例えば、特許文献１参照）。
【特許文献１】特開平６−２５９２８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述の暴走監視回路においては、ＣＰＵの暴走検出に際して、専用の比較器を設ける必要がある。一般的に、ＣＰＵの暴走検出（異常検出）を行うためには、上述の暴走監視回路のように専用の装置（ハードウェア等）が必要であったり、リソースを消費したりするものが知られている。しかし、この場合、導入に際してコストが掛かる、あるいは既存の装置に導入することが困難であるという問題がある。また、ＣＰＵの暴走の原因を除去することなく動作復帰させるため、再び同様の原因でＣＰＵの暴走が発生してしまう可能性がある。
【０００４】
本発明は、上記の問題に鑑みたものであり、容易且つ確実にＣＰＵの異常を検出して修復することができる情報処理装置、ＣＰＵの異常検出方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の情報処理装置は、アドレスゼロから連続して設定された第１の要素領域を有する読み書き可能な記憶領域と、第１の要素領域に書き込まれた値が、期待値か否かを検査することによって、第１の要素領域の異常を検出する異常検出手段と、異常検出手段により第１の要素領域の異常を検出した場合、第１の要素領域の修復を行う修復手段と、を備えたことを特徴とする。
【０００６】
また、本発明のＣＰＵの異常検出方法は、アドレスゼロから連続して設定された要素領域を有し、ＣＰＵにより読み書き可能な記憶領域を有するＣＰＵの異常検出方法であって、要素領域に書き込まれた値が、期待値か否かを検査することによって、要素領域の異常を検出する異常検出工程と、異常検出工程により要素領域の異常を検出した場合、要素領域の修復を行う修復工程と、を実行することを特徴とする。
【０００７】
これら情報処理装置およびＣＰＵの異常検出方法によれば、記憶領域のアドレスゼロから連続して設定された記憶領域（第１の要素領域）に書き込まれた値が、期待値（正常値）か否かを検査することにより、当該記憶領域の異常を検出することができ、ひいてはＣＰＵの異常を検出することができる。また、異常を検出した場合、例えば、当該記憶領域の値を期待値に書き戻すことで修復を行う。これにより、プログラムのバグ等（例えば、初期化していない変数をポインタとして参照する等）により最も異常が発生しやすいアドレスゼロ（０番地）付近の異常を確実に検出して正常な状態に修復することができる。特に、製品の開発中および出荷前に不具合の検出の可能性を高めることができる。また、リソースを消費せず、専用のハードウェアが不要であるため、コストを掛けずに既存の装置に容易に導入することできる。また、アドレスゼロ付近に限定して異常検出を行うため、容易に検査を行うことができる。
【０００８】
本発明の情報処理装置において、第１の要素領域には、割り込みベクタが設定されており、異常検出手段は、割り込みベクタの値が期待値か否かを検査することにより、割り込みベクタの破壊を検出することが好ましい。
【０００９】
この構成によれば、記憶領域（第１の要素領域）に割り込みベクタを設定し、当該割り込みベクタの値を検査することによって、割り込みベクタの破壊を検出することができる。これにより、特に値が変化してはいけない重要な割り込みベクタの破壊を容易に検出することができる。
【００１０】
本発明の情報処理装置において、記憶領域は、第１の要素領域とは異なるアドレスに設定されると共に、割り込みベクタが設定された第２の要素領域をさらに有し、異常検出手段は、第１の要素領域に設定された割り込みベクタの値と、第２の要素領域に設定された割り込みベクタの値とを比較し、これらの値が一致しない場合、第１の要素領域に設定された割り込みベクタの破壊を検出することが好ましい。
【００１１】
この構成によれば、第１の要素領域とは異なる記憶領域（第２の要素領域）に割り込みベクタを設定（退避）し、第１の要素領域および第２の要素領域に設定された値を比較することで、第１の要素領域に設定された割り込みベクタの破壊を検出する。これにより、簡単に割り込みベクタの破壊を検出することができる。また、第２の要素領域を有しているため、当該第２の要素領域の値を用いて第１の要素領域の値を期待値に書き戻すようにすれば、容易に修復を行うことができる。また、第１の要素領域および第２の要素領域は、同一の読み書き可能な記憶領域（ＲＡＭを想定）に設定されており、且つ割り込みベクタの検査時には、既に両領域には割り込みベクタが記録されているため、例えば、割り込みベクタの検査時に、他の記憶装置（例えば、ＲＯＭやハードディスク等）から比較対象となる割り込みベクタを読み出して検査を行う場合と比べ、高速に検査を行うことができる。
【００１２】
本発明の情報処理装置において、割り込みベクタを設定するための割り込みベクタプログラムを記憶した書き換え不可能なプログラム記憶領域をさらに備え、異常検出手段は、割り込みベクタプログラムから得られる割り込みベクタの値と、第１の要素領域に設定された割り込みベクタの値とを比較し、これらが一致しない場合、第１の要素領域に設定された割り込みベクタの破壊を検出することが好ましい。
【００１３】
この構成によれば、書き換え不可能なプログラム記憶領域（例えば、ＲＯＭ等）に記憶した割り込みベクタプログラムから得られる値と、第１の要素領域に設定されている割り込みベクタの値とを比較することで、第１の要素領域に設定された割り込みベクタの破壊を検出する。割り込みベクタプログラムは、書き換え不可能なプログラム記憶領域に記憶されているため、当該プログラムから得られる値は変化することがない。よって、第１の要素領域の割り込みベクタの値と当該プログラムから得られる値とを比較することにより、確実に、且つ簡単に割り込みベクタの破壊を検出することができる。また、割り込みベクタプログラムから得られる値を用いて第１の要素領域の値を期待値に書き戻すようにすれば、容易に修復を行うことができる。
【００１４】
本発明の情報処理装置において、異常検出手段は、割り込みベクタプログラムから得られる割り込みベクタの値と、第１の要素領域および第２の要素領域に設定された割り込みベクタの値とを比較し、少なくとも一方の割り込みベクタの値が一致しない場合、第１の要素領域および前記第２の要素領域の少なくとも一方の割り込みベクタの破壊を検出することが好ましい。
【００１５】
この構成によれば、割り込みベクタプログラムから得られる値と、第１の要素領域および第２の要素領域に設定された割り込みベクタの値とを比較することで、各要素領域の割り込みベクタの破壊を検出することができる。例えば、第１の要素領域と第２の要素領域に設定されている割り込みベクタを比較して割り込みベクタの破壊を検出する場合において、両方の割り込みベクタの値に期待値以外の値が書き込まれており、両者を比較しても正確に異常を検出することができないことが考えられる。このような場合においても、確実に割り込みベクタの破壊を検出することができる。この場合は、割り込みベクタプログラムから得られる値を用いて第１の要素領域の値を期待値に書き戻すようにすれば、容易に修復を行なうことができる。
【００１６】
本発明のプログラムは、コンピュータに、上記に記載のＣＰＵの異常検出方法における各工程を実行させるためのものであることを特徴とする。
【００１７】
これを用いることにより、容易且つ確実にアドレスゼロから連続して設定された記憶領域の異常を検出して修復することができるプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１８】
[第１実施形態]
以下、添付の図面を参照して、本発明の一実施形態に係る情報処理装置、ＣＰＵの異常検出方法およびプログラムについて説明する。なお、本実施形態では、情報処理装置を備えた機器として、プロジェクタを例に挙げて説明する。
【００１９】
図１は、第１実施形態のプロジェクタ１の構成を示すブロック図である。本実施形態（第１実施形態）のプロジェクタ１は、液晶パネル２５を利用して画像を投写する液晶プロジェクタであり、同図に示すように、操作部１１、表示部１２、接続部１３、映像信号処理部１４、投写部１５、検出部１６、冷却部１７、これら各部を制御する制御部１８（半導体集積回路）、を備えている。なお、請求項に係る「情報処理装置」とは、制御部１８を主要な構成要素とするものである。
【００２０】
操作部１１は、電源ボタンや各種設定（コントラスト設定、色補正、環境設定など）を行うためのパネルキーや、リモコンなどによって構成されるものであり、ユーザによるプロジェクタ１に対する各種指示などに用いられる。表示部１２は、ＬＥＤランプ２１により構成され、プロジェクタ１の動作に基づいて点灯／消灯することで、ユーザにプロジェクタ１の動作状況を報知するものである。
【００２１】
接続部１３は、ネットワークケーブル（図示省略）を介して外部装置（図示省略）と接続されるコネクタなどを有し、外部とのデータ通信に関する制御を行う。なお、接続部１３は他にもＵＳＢコネクタや周辺機器を接続するためのコネクタ（例えば、Ｄ−Ｓｕｂ、ＤＶＩ−Ｄ、Ｓ端子など）を有している。
【００２２】
映像信号処理部１４は、例えば、外部から供給された映像信号（画像信号）を入力し、プロジェクタ１内部で処理可能な形式の映像データ（画像データ）に変換する。そして、変換した映像データに対して、輝度調整、色バランス調整、コントラスト調整などの画質調整を行う。
【００２３】
投写部１５は、液晶パネル２５と、液晶パネル２５を制御する液晶パネル制御部２２と、投写光の光源となる光源ランプ２６と、光源ランプ２６を制御する光源ランプ制御部２３と、光源ランプ２６からの投写光（画像）をスクリーン上に拡大投写する投写レンズ２７と、投写レンズ２７の駆動を制御するレンズ制御部２４とを有している。
【００２４】
検出部１６は、温度センサ２８（サーミスタ）と、加速度センサ２９（Ｇセンサ）を有している。温度センサ２８は、液晶パネル２５や光源ランプ２６などの温度を検出する。この検出結果に基づいて、制御部１８（ＣＰＵ３１）が、冷却部１７を制御して液晶パネル２５や光源ランプ２６などの温度を所定の温度に保つ。また、加速度センサ２９は、プロジェクタ１の位置変化量を検出する。この加速度センサ２９から出力される計測値に基づいて、制御部１８（ＣＰＵ３１）は、プロジェクタ１の前後方向、上下方向および左右方向における傾きを検出する。
【００２５】
制御部１８は、プロジェクタ１を統括制御するＣＰＵ３１（Central Processing Unit）と、各種処理を行う際の作業領域（ワーク領域）として使用されるＲＡＭ３２（Random Access Memory）と、プロジェクタ１を制御するための制御プログラムなどが記憶されたフラッシュＲＯＭ３３とを有している。また、フラッシュＲＯＭ３３には、ベクタ検査用タイマ３４およびベクタ検査用プログラム３５が記憶されている。ベクタ検査用タイマ３４は、割り込みベクタの異常を検出するタイミングを計るためのタイマである。
【００２６】
ＣＰＵ３１は、フラッシュＲＯＭ３３の制御プログラムに従ってＲＡＭ３２などに記憶されたデータの処理を行う。また、ＲＡＭ３２には、割り込みに対応する割り込みハンドラのアドレスが記録された割り込みベクタが設定されている。ＣＰＵ３１は、割り込みが発生すると、この割り込みベクタから割り込みハンドラのアドレスを取得し、当該アドレスにジャンプして対応する割り込みハンドラによる処理を行う。
【００２７】
次に、図２を参照し、割り込みベクタの設定および割り込みベクタの検査方法について説明する。図２（ａ）に示すように、この割り込みベクタは、プロジェクタ１が起動された（電源ＯＮ）後、ＣＰＵ３１によりＲＡＭ３２（読み書き可能な記憶領域）のアドレスゼロ（０ｘ００００００）から連続した領域（以下、「第１領域４１（第１の要素領域）」と称す）に設定される。また、ＣＰＵ３１は、ＲＡＭ３２の第１領域４１以外の任意のアドレスから連続した領域（図２（ａ）では、０ｘ００４０００から連続した領域、以下、「第２領域４２（第２の要素領域）」と称す）にも、割り込みベクタを設定（退避）する。割り込みが発生した場合、ＣＰＵ３１は、第１領域４１の割り込みベクタから対応する割り込みハンドラのアドレスを取得して割り込み処理を行う。一方、第２領域４２の割り込みベクタは第１領域４１の割り込みベクタを検査するために用いられ、通常の割り込み処理では使用されることはない。なお、第２領域４２のアドレス（０ｘ００４０００）は一例であり、当該アドレスに限定されるものではない。
【００２８】
割り込みベクタの設定が完了すると、ＣＰＵ３１は、各ハードウェアの初期設定を行うと共に、当該ベクタ検査用タイマ３４をスタートさせる。ベクタ検査用タイマ３４がタイムアップすると、割り込みベクタの異常検出処理（検査）が実行される。ＣＰＵ３１は、ベクタ検査用プログラム３５を実行して、割り込みルーチン内で第１領域４１の割り込みベクタの値と第２領域４２の割り込みベクタの値との比較処理を行い、この処理結果に基づいて第１領域４１の割り込みベクタが破壊されているか否かを判別する（異常検出手段）。なお、この割り込みベクタの検査（ベクタ検査用プログラム３５の実行）はＲＡＭ３２上のワーク領域４３で実行される（図２（ｂ）参照）。なお、このワーク領域４３は、上述の第１領域４１および第２領域４２以外の領域に設定されている。
【００２９】
この割り込みベクタの検査により、第１領域４１および第２領域４２の割り込みベクタの値が一致した場合は、ＣＰＵ３１は、第１領域４１の割り込みベクタは正常であると判別し、割り込みルーチン（割り込みハンドラ）を終了させ（例えば、ＲＥＴＩ命令により割り込みルーチンの終了など）、再びベクタ検査用タイマ３４をスタート（再スタート）させる。一方、割り込みベクタの値が一致しなかった場合、ＣＰＵ３１は、第１領域４１の割り込みベクタは破壊されていると判別し、エラーとして報知すると共に、エラー情報をフラッシュＲＯＭ３３に記録する（エラー情報の履歴を記録しておく）。そして、ＣＰＵ３１は、破壊された第１領域４１の割り込みベクタの修復を行う（修復手段）。なお、エラーの報知手段としては、上述のＬＥＤランプ２１の点灯（明滅）で報知しても良いし、接続部１３を介して接続された外部装置（例えば、パーソナルコンピュータ等）にエラー通知を送信して（例えば、エラーメールを送信するなど）報知しても良い。
【００３０】
ここで、図３を参照して、プロジェクタ１を起動した場合の処理について説明する。まず、ユーザによりプロジェクタ１の電源がＯＮされると、プロジェクタ１（ＣＰＵ３１）は、ＲＡＭ３２の第１領域４１に割り込みベクタを設定する（Ｓ０１）。また、プロジェクタ１は、第１領域４１の割り込みベクタの検査に使用する比較対象として、第２領域４２に割り込みベクタをコピーして退避（設定）する（Ｓ０２）。これら割り込みベクタの設定が完了すると、プロジェクタ１は、各ハードウェアの初期設定を行うと共に（Ｓ０３）、ベクタ検査用タイマ３４の設定（初期化）を行う（Ｓ０４）。そして、プロジェクタ１は、ベクタ検査用タイマ３４をスタートさせる（Ｓ０５）。その後、プロジェクタ１は、ユーザからの指示などにより発生する各種イベントの処理を行う（Ｓ０６）。
【００３１】
次に、図４を参照して、割り込みベクタの検査によるＣＰＵ３１の異常検出および修復手順について説明する。まず、上述のＳ０５でスタートさせたベクタ検査用タイマ３４がタイムアップすると（Ｓ１１）、プロジェクタ１（ＣＰＵ３１）は、これをトリガとして割り込みベクタの検査を開始する（Ｓ１２）。プロジェクタ１は、ベクタ検査用プログラム３５を実行し、第１領域４１の割り込みベクタと第２領域４２の割り込みベクタとの比較を行うことで、第１領域４１の割り込みベクタが破壊されているか否かを検出する（Ｓ１３）。比較の結果、これら割り込みベクタが一致した場合（Ｓ１４；Ｙｅｓ）、プロジェクタ１は、第１領域４１の割り込みベクタは正常であると判別して検査を完了し（Ｓ１５）、ベクタ検査用タイマ３４を再スタートさせる（Ｓ１６）。一方、割り込みベクタが一致しなかった場合（Ｓ１４；Ｎｏ）、プロジェクタ１は、第１領域４１の割り込みベクタが破壊されている（書き換えられている）と判別する（Ｓ１７）。これにより、ＣＰＵ３１の異常を検出する。そして、プロジェクタ１は、ＬＥＤランプ２１の点灯やエラー通知などによりユーザに第１領域４１の割り込みベクタが破壊されている旨（ＣＰＵ３１が暴走する可能性がある旨）を報知すると共に、当該エラー情報（割り込みベクタが書き換えられた旨）をフラッシュＲＯＭ３３に記録する（Ｓ１８）。そして、プロジェクタ１（ＣＰＵ３１）は、第２領域４２の割り込みベクタの値を用いて、破壊された第１領域４１の割り込みベクタの値を正常値に書き戻すことで修復を行う（Ｓ１９）。
【００３２】
このように、第１実施形態によれば、第１領域４１と、第１領域４１とは異なる第２領域４２にそれぞれ割り込みベクタを設定し、これらの割り込みベクタの値を比較することで、第１領域４１に設定された割り込みベクタが破壊されているか否か（書き換えられているか否か）を検出する。そして、割り込みベクタの破壊が検出された場合、正常な値（期待値）に書き戻すことで、割り込みベクタの修復を行う。これにより、特に値が変化してはいけない重要な割り込みベクタの破壊を容易に検出し、修復することができる。また、第１領域４１および第２領域４２は、同一のＲＡＭ３２に設定されており、且つ割り込みベクタの検査時には、既に両領域（第１領域４１および第２領域４２）には割り込みベクタが記録されているため、例えば、割り込みベクタの検査時に、他の記憶装置（例えば、ＲＯＭやハードディスク（図示省略）等）から比較対象となる割り込みベクタをＲＡＭ３２に読み出して検査を行う場合と比べ、高速に検査を行うことができる。また、第１領域４１の割り込みベクタの破壊を検出することで、ソフトウェア的、あるいはハードウェア的な問題により、アドレスゼロ付近にアクセスする何らかの不正な命令の発生を検出することにもつながる。
【００３３】
[第２実施形態]
次に、図５および図６を参照し、本発明の第２実施形態のプロジェクタ５１における割り込みベクタの検査方法について説明する。図５は、第２実施形態のプロジェクタ５１の制御ブロック図である。基本的な構成は、第１実施形態のプロジェクタ１と同一であるが、記憶装置としてマスクＲＯＭ５２（書き換え不可能な記憶領域）をさらに備えている。このマスクＲＯＭ５２には、割り込みベクタプログラム５３が記憶されている。
【００３４】
第２実施形態では、ＲＡＭ３２上の第１領域４１に設定した割り込みベクタの値と、マスクＲＯＭ５２に記録されている割り込みベクタプログラム５３により得られる値を比較することで、第１領域４１の割り込みベクタの検査を行う。
【００３５】
図６（ａ）に示すように、割り込みベクタは、プロジェクタ５１が起動された（電源ＯＮ）後、ＣＰＵ３１によりＲＡＭ３２のアドレスゼロ（０ｘ００００００）から連続した第１領域４１のみに設定される。割り込みベクタの設定が完了すると、ＣＰＵ３１は、各ハードウェアの初期設定を行うと共に、ベクタ検査用タイマ３４の設定を行い、当該ベクタ検査用タイマ３４をスタートさせる。ベクタ検査用タイマ３４がタイムアップすると、ＣＰＵ３１は割り込みルーチン内で、マスクＲＯＭ５２に記録された割り込みベクタプログラム５３を起動し、当該プログラムから得られる値と、第１領域４１に設定された割り込みベクタの値と、をベクタ検査用プログラム３５によりＲＡＭ３２のワーク領域４３（第１領域４１以外の領域）で比較を行い、第１領域４１の割り込みベクタが破壊されているか否かを検出する（図６（ｂ）参照，異常検出手段）。
【００３６】
この割り込みベクタの検査により、第１領域４１の割り込みベクタの値と割り込みベクタプログラム５３により得られた値とが一致した場合、ＣＰＵ３１は、第１領域４１の割り込みベクタは正常であると判別する。一方、割り込みベクタの値が一致しなかった場合、ＣＰＵ３１は、第１領域４１の割り込みベクタは破壊されている（正常な値が設定されていない）と判別し、エラーとして報知すると共に、エラー情報（割り込みベクタが書き換えられた旨を示す情報）をフラッシュＲＯＭ３３に記録する。そして、ＣＰＵ３１は、破壊された第１領域４１の割り込みベクタの値を正常値に書き戻すことで修復を行う（修復手段）。
【００３７】
このように、第２実施形態によれば、第１領域４１に設定した割り込みベクタの値と、マスクＲＯＭ５２に記録されている割り込みベクタプログラム５３により得られる値を比較することで割り込みベクタの検査を行う。割り込みベクタプログラム５３は、マスクＲＯＭ５２（書き換え不可能なプログラム記憶領域）に記録されているため、当該プログラムから得られる値は変化することがない。このため、第１領域４１の割り込みベクタの値と当該プログラムから得られる値とを比較することにより、確実、且つ簡単に割り込みベクタの破壊を検出することができると共に容易に修復が行える。
【００３８】
[第３実施形態]
次に、図５および図７を参照し、本発明の第３実施形態のプロジェクタ５１における割り込みベクタの検査方法について説明する。なお、第３実施形態のプロジェクタ５１の構成は、第２実施形態のプロジェクタ５１と同一である。第３実施形態では、ＲＡＭ３２上の第１領域４１に設定した割り込みベクタの値および第２領域４２に設定した割り込みベクタの値と、マスクＲＯＭ５２に記録されている割り込みベクタプログラム５３により得られる値を比較することで、第１領域４１および第２領域４２の割り込みベクタの検査を実行する。
【００３９】
図７（ａ）に示すように、各割り込みベクタは、プロジェクタ５１が起動された（電源ＯＮ）後、ＣＰＵ３１によりＲＡＭ３２のアドレスゼロ（０ｘ００００００）から連続した第１領域４１、および第１領域４１とは異なるアドレス（ここでは０ｘ００４０００）から連続した第２領域４２に設定される。割り込みベクタの設定が完了すると、ＣＰＵ３１は、各ハードウェアの初期設定を行うと共に、ベクタ検査用タイマ３４の設定を行い、当該ベクタ検査用タイマ３４をスタートさせる。ベクタ検査用タイマ３４がタイムアップすると、ＣＰＵ３１は割り込みルーチン内で、マスクＲＯＭ５２に記録された割り込みベクタプログラム５３を起動し、当該プログラムから得られる値と、第１領域４１に設定された割り込みベクタの値と、をベクタ検査用プログラム３５によりＲＡＭ３２のワーク領域４３（第１領域４１および第２領域４２以外の領域）で比較を行い、第１領域４１の割り込みベクタが破壊されているか否かを検出する。また、第１領域４１の割り込みベクタの検査に続き、第２領域４２の割り込みベクタの値とマスクＲＯＭ５２に記録された割り込みベクタプログラム５３から得られる値と、をベクタ検査用プログラム３５によりワーク領域４３で比較し、第２領域４２の割り込みベクタが破壊されているか否かを検出する（図７（ｂ）参照）。
【００４０】
この割り込みベクタの検査により、第１領域４１および第２領域４２の割り込みベクタの値と、割り込みベクタプログラム５３により得られた値とが一致した場合、ＣＰＵ３１は、第１領域４１および第２領域４２の割り込みベクタは正常であると判別する。一方、少なくとも一方の割り込みベクタの値が一致しなかった場合、ＣＰＵ３１は、第１領域４１および第２領域４２の少なくとも一方の割り込みベクタは破壊されている（正常な値が設定されていない）と判別し、エラーとして報知すると共に、エラー情報（割り込みベクタが書き換えられた旨を示す情報）をフラッシュＲＯＭ３３に記録する。そして、ＣＰＵ３１は、破壊された割り込みベクタの値を正常値に書き戻すことで修復を行う。
【００４１】
このように、第３実施形態によれば、割り込みベクタプログラム５３から得られる値と、第１領域４１および第２領域４２に設定された割り込みベクタの値とを比較することで、各領域の割り込みベクタの破壊を検出することができる。例えば、第１実施形態の割り込みベクタの検査方法で割り込みベクタの破壊を検出する場合、第１領域４１および第２領域４２の両方の割り込みベクタの値に正常な値以外の値（期待値以外の値）が書き込まれており、両者を比較しても正確に異常を検出することができないことが考えられる。このような場合においても、確実、且つ簡単に割り込みベクタの破壊を検出することができると共に容易に修復が行える。また、当該検査を実施するにあたり、マスクＲＯＭ５２に記録されたプログラムやデータが正常に読めない場合、何らかの異常が発生したことを検出することができる。
【００４２】
以上のように、第１実施形態ないし第３実施形態によれば、ＲＡＭ３２のアドレスゼロから連続した領域（第１領域４１）に設定された割り込みベクタが、正常な値（期待値）か否かを検査することにより、第１領域４１の割り込みベクタの異常を検出することができ、ひいてはＣＰＵ３１の異常を検出することができる。また、異常を検出した場合、第１領域４１の割り込みベクタの値を正常な値（期待値）に書き戻すことで修復を行うことができる。これにより、例えば、プログラムのバグ等（例えば、初期化していない変数をポインタとして参照する等）により最も異常が発生しやすいアドレスゼロ（０番地）付近の異常を確実に検出して正常な状態に修復することができ、特に、製品の開発中および出荷前に不具合を検出する可能性を高めることができる。また、リソースを消費せず、専用のハードウェアが不要であるため、コストを掛けずに既存の装置に容易に導入することできる。また、アドレスゼロ付近に限定して異常検出を行うため、容易に検査を行うことができる。
【００４３】
なお、本実施形態では、ベクタ検査用タイマ３４としてソフトウェアタイマを用いているが、これに限らず、一般的なウォッチドックタイマや、専用のハードウェアタイマを用いて計測を行っても良い。
【００４４】
また、上述のタイマ以外に、操作部１１からの指示（例えば、ユーザによるボタン押下等）や所定のデータ送受信等をトリガとして、割り込みベクタの検査を行うようにしても良い。また、これらとタイマとを併用しても良い。
【００４５】
また、本実施形態では、割り込みベクタの検査方法の一例として、タイマ割り込みにより割り込みベクタの検査を実施する方法について説明しているが、これに限らず、ポーリング等により割り込みベクタの検査を実施するようにしても良い。また、割り込みベクタの比較による検査に限らず、サムのチェックやＥＤＣ（Error Detection Code）検査により割り込みベクタの検査を行っても良い。
【００４６】
また、本実施形態では、ＲＡＭ３２のワーク領域４３でベクタ検査用プログラム３５を実行して割り込みベクタの検査を行っているが、これに限らず、フラシュＲＯＭ３３上でベクタ検査用プログラム３５を実行して、割り込みベクタの検査をするようにしても良い。
【００４７】
また、第１実施形態ないし第３実施形態における割り込みベクタの検査方法を併用して、割り込みベクタの検査を行うことも可能である。例えば、第１実施形態の検査方法と第３実施形態の検査方法を併用することで、より確実に割り込みベクタの異常を検出することができる。
【００４８】
また、各実施形態に係るＣＰＵ３１の異常検出方法の各工程をプログラムとして提供することが可能である。また、そのプログラムを記憶媒体（図示省略）に格納して提供することも可能である。記録媒体としては、ＣＤ−ＲＯＭ、フラッシュＲＯＭ、メモリカード（コンパクトフラッシュ（登録商標）、スマートメディア、メモリースティック等）、コンパクトディスク、光磁気ディスク、デジタルバーサタイルディスクおよびフレキシブルディスク等を利用することができる。
【００４９】
また、上記の実施形態では、液晶表示方式を採用しているが、ＣＲＴ表示方式やライトスイッチ表示方式（マイクロミラーデバイス方式）など、表示原理は問わない。
【００５０】
また、上述した実施例によらず、プロジェクタ１（情報処理装置）の装置構成や処理工程等について、本発明の要旨を逸脱しない範囲で、適宜変更も可能である。
【図面の簡単な説明】
【００５１】
【図１】第１実施形態におけるプロジェクタの制御ブロック図である。
【図２】第１実施形態におけるＲＡＭの様子を示す図である。
【図３】プロジェクタを起動した場合の処理について説明するフローチャートである。
【図４】割り込みベクタの検査によるＣＰＵの異常検査および修復手順について説明するフローチャートである。
【図５】第２実施形態および第３実施形態におけるプロジェクタの制御ブロック図である。
【図６】第２実施形態におけるＲＡＭの様子を示す図である。
【図７】第３実施形態におけるＲＡＭの様子を示す図である。
【符号の説明】
【００５２】
１８…制御部  ３２…ＲＡＭ  ４１…第１領域  ４２…第２領域  ５２…マスクＲＯＭ  ５３…割り込みベクタプログラム
【図１】
2009086822.tif 000003
【図２】
2009086822.tif 000004
【図３】
2009086822.tif 000005
【図４】
2009086822.tif 000006
【図５】
2009086822.tif 000007
【図６】
2009086822.tif 000008
【図７】
2009086822.tif 000009