(57)【要約】  第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、選択されたプログラムを用いて起動処理を行うＣＰＵ（１１０）と、第２プログラム及び第３プログラムが、それぞれ正しいか否かを判定するプログラム判定部（１１１）と、第２プログラム及び第３プログラムの内、正しいと判定されたプログラムをコピー元プログラムとして決定し、正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定部（１１２）と、コピー元プログラムで、コピー先プログラムを更新するコピー処理部（１１３）と、コピー元プログラムを示すコピー元情報を記憶する起動記憶部（１３１）と、第１プログラムを用いて起動処理を行うことができない場合に、コピー元情報を参照して、コピー元プログラムを選択して起動処理を行うようにＣＰＵ（１１０）に指示する起動制御部（１３０）とを備える。
2014109100.tif 000002
【特許請求の範囲】
【請求項１】
起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムを記憶する記憶部と、
前記記憶部に記憶されている第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、当該選択されたプログラムを用いて起動処理を行う処理実行部と、
前記記憶部に記憶されている第２プログラム及び第３プログラムが、それぞれ正しいか否かを判定するプログラム判定部と、
前記記憶部に記憶されている第２プログラム及び第３プログラムの内、前記プログラム判定部で正しいと判定されたプログラムをコピー元プログラムとして決定し、前記プログラム判定部で正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定部と、
前記記憶部において、前記コピー決定部で決定されたコピー元プログラムで、前記コピー決定部で決定されたコピー先プログラムを更新するコピー処理部と、
前記コピー決定部で決定されたコピー元プログラムを示すコピー元情報を記憶する起動記憶部と、
前記処理実行部が前記記憶部に記憶されている第１プログラムを用いて起動処理を行うことができない場合に、前記起動記憶部に記憶されているコピー元情報を参照して、前記コピー決定部で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行部に指示する起動制御部とを備え、
前記処理実行部は、前記起動制御部からの指示に従って、前記記憶部に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行うこと
を特徴とする情報処理装置。
【請求項２】
前記記憶部は、前記コピー決定部で決定されたコピー元プログラムを示すコピー元情報をさらに記憶し、
前記起動制御部は、前記記憶部に記憶されているコピー元情報を参照して、前記コピー決定部で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行部に指示すること
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
時間を計測する計時部をさらに備え、
前記起動制御部は、前記計時部において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行部が予め定められた処理を完了していない場合に、前記処理実行部が前記記憶部に記憶されている第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定部で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行部に指示すること
を特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
時間を計測する計時部をさらに備え、
前記起動制御部は、前記計時部において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行部が予め定められた処理を完了できない状態が、予め定められた第１の回数連続して生じた場合に、前記処理実行部が前記記憶部に記憶されている第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定部で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行部に指示すること
を特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
前記起動制御部からの指示に従って、前記処理実行部が前記記憶部に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行っている際に、前記計時部において計測された、前記起動処理を開始してからの時間が前記予め定められた閾値を超える前に前記処理実行部が前記予め定められた処理を完了できない状態が、予め定められた第２の回数連続して生じた場合に、前記起動制御部は、故障と判断し、
前記起動制御部が故障と判断した場合に、警告を行う故障警告部をさらに備えること
を特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記プログラム判定部が、前記記憶部に記憶されている第２プログラム及び第３プログラムの両方が正しくないと判定した場合に、警告を行う故障警告部をさらに備えること
を特徴とする請求項１から４の何れか一項に記載の情報処理装置。
【請求項７】
起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、当該選択されたプログラムを用いて起動処理を行う処理実行過程と、
前記第２プログラム及び前記第３プログラムが、それぞれ正しいか否かを判定するプログラム判定過程と、
前記第２プログラム及び前記第３プログラムの内、前記プログラム判定過程で正しいと判定されたプログラムをコピー元プログラムとして決定し、前記プログラム判定過程で正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定過程と、
前記コピー決定過程で決定されたコピー元プログラムで、前記コピー決定過程で決定されたコピー先プログラムを更新するコピー処理過程と、
前記コピー決定過程で決定されたコピー元プログラムを示すコピー元情報を記憶する起動記憶過程と、
前記処理実行過程が前記第１プログラムを用いて起動処理を行うことができない場合に、前記起動記憶過程で記憶されたコピー元情報を参照して、前記コピー決定過程で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行過程に指示する起動制御過程とを有し、
前記処理実行過程は、前記起動制御過程からの指示に従って、前記第２プログラム又は前記第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行うこと
を特徴とする情報処理方法。
【請求項８】
時間を計測する計時過程をさらに有し、
前記起動制御過程は、前記計時過程において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行部が予め定められた処理を完了していない場合に、前記処理実行過程が前記第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定過程で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行過程に指示すること
を特徴とする請求項７に記載の情報処理方法。
【請求項９】
時間を計測する計時過程をさらに有し、
前記起動制御過程は、前記計時過程において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行過程が予め定められた処理を完了できない状態が、予め定められた第１の回数連続して生じた場合に、前記処理実行過程が前記第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定過程で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行過程に指示すること
を特徴とする請求項７に記載の情報処理方法。
【請求項１０】
前記起動制御過程からの指示に従って、前記処理実行部が前記記憶部に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行っている際に、前記計時部において計測された、前記起動処理を開始してからの時間が前記予め定められた閾値を超える前に前記処理実行部が前記予め定められた処理を完了できない状態が、予め定められた第２の回数連続して生じた場合に、前記起動制御過程は、故障と判断し、
前記起動制御過程が故障と判断した場合に、警告を行う故障警告過程をさらに有すること
を特徴とする請求項９に記載の情報処理方法。
【請求項１１】
前記プログラム判定過程が、前記第２プログラム及び前記第３プログラムの両方が正しくないと判定した場合に、警告を行う故障警告過程をさらに有すること
を特徴とする請求項７から９の何れか一項に記載の情報処理方法。
【請求項１２】
コンピュータを、
起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムを記憶する記憶手段、
前記記憶手段に記憶されている第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、当該選択されたプログラムを用いて起動処理を行う処理実行手段、
前記記憶手段に記憶されている第２プログラム及び第３プログラムが、それぞれ正しいか否かを判定するプログラム判定手段、
前記記憶手段に記憶されている第２プログラム及び第３プログラムの内、前記プログラム判定手段で正しいと判定されたプログラムをコピー元プログラムとして決定し、前記プログラム判定手段で正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定手段と、
前記記憶手段において、前記コピー決定手段で決定されたコピー元プログラムで、前記コピー決定手段で決定されたコピー先プログラムを更新するコピー処理手段、
前記コピー決定手段で決定されたコピー元プログラムを示すコピー元情報を記憶する起動記憶手段、
前記処理実行手段が前記記憶手段に記憶されている第１プログラムを用いて起動処理を行うことができない場合に、前記起動記憶手段に記憶されているコピー元情報を参照して、前記コピー決定手段で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行手段に指示する起動制御手段として機能させ、
前記処理実行手段は、前記起動制御手段からの指示に従って、前記記憶手段に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行うこと
を特徴とするプログラム。
【請求項１３】
前記記憶手段は、前記コピー決定手段で決定されたコピー元プログラムを示すコピー元情報をさらに記憶し、
前記起動制御手段は、前記記憶手段に記憶されているコピー元情報を参照して、前記コピー決定手段で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行手段に指示すること
を特徴とする請求項１２に記載のプログラム。
【請求項１４】
前記コンピュータを、時間を計測する計時手段としてさらに機能させ、
前記起動制御手段は、前記計時手段において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行手段が予め定められた処理を完了していない場合に、前記処理実行手段が前記記憶手段に記憶されている第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定手段で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行手段に指示すること
を特徴とする請求項１２又は１３に記載のプログラム。
【請求項１５】
前記コンピュータを、時間を計測する計時手段としてさらに機能させ、
前記起動制御手段は、前記計時手段において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行手段が予め定められた処理を完了できない状態が、予め定められた第１の回数連続して生じた場合に、前記処理実行手段が前記記憶手段に記憶されている第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定手段で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行手段に指示すること
を特徴とする請求項１２又は１３に記載のプログラム。
【請求項１６】
前記起動制御手段からの指示に従って、前記処理実行手段が前記記憶手段に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行っている際に、前記計時手段において計測された、前記起動処理を開始してからの時間が前記予め定められた閾値を超える前に前記処理実行手段が前記予め定められた処理を完了できない状態が、予め定められた第２の回数連続して生じた場合に、前記起動制御手段は、故障と判断し、
前記コンピュータを、前記起動制御手段が故障と判断した場合に、警告を行う故障警告手段としてさらに機能させること
を特徴とする請求項１５に記載のプログラム。
【請求項１７】
前記コンピュータを、前記プログラム判定手段が、前記記憶手段に記憶されている第２プログラム及び第３プログラムの両方が正しくないと判定した場合に、警告を行う故障警告手段としてさらに機能させること
を特徴とする請求項１２から１５の何れか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、不揮発性メモリであるＮＡＮＤ型フラッシュメモリが広く普及している。ＮＡＮＤ型フラッシュメモリは、ＮＯＲ型フラッシュメモリに比べて大容量化が進んでおり、ビット単価が安いといったメリットがある。一方で、ＮＡＮＤ型フラッシュメモリには、データの書き込み回数に上限があること、データ保持期間が有限であること、及び、データの読み出し回数が有限であること、というデメリットがある。このため、データ読み出し時にビットエラーが発生し、正しいデータが読み出せない可能性がある。従って、ＮＡＮＤ型フラッシュメモリに、システムを起動するためのプログラムを記憶させた場合には、ビットエラーによりシステムが起動できない状況、又は、起動した後にシステムがハングアップしてしまう状況が発生し得る。【０００３】
これに対し、特許文献１には、システム用の不揮発性メモリから第１のブートプログラムを読み出し、当該第１のブートプログラムに対して誤り検出を行い、読み出した第１のブートプログラムが不正に変化していると判定した場合に、バックアップ用の不揮発性メモリから第２のブートプログラムを読み出す制御装置が記載されている。この制御装置は、読み出された第２のブートプログラムに対して誤り検出を行い、この第２のブートプログラムが不正に変化していると判定したとき、エラーを出力する。一方、この制御装置は、ブートプログラムに対する誤り検出の結果、ブートプログラムが不正に変化していないと判定すると、そのブートプログラムを用いてブート処理を行う。【０００４】
また、特許文献２には、不揮発性メモリに記憶されたデータの書き換えを行う際に、当該データの書き換えに先立って、書き換え対象となるデータの複製を、バックアップデータとして保存する情報処理装置が記載されている。この情報処理装置は、書き換え実施状況を示すフラグを用いることで、書き換えが行われたデータが正常に処理されたものか否かを判断し、正当性を確認してから動作する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２６６５０号公報
【特許文献２】特開２００７−３２８４３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載された制御装置では、ブート処理が所定の回数行われると第２のブートプログラムで第１のブートプログラムが上書きされる。しかし、第２のブートプログラムで第１のブートプログラムを書き換えているときに、電源断が発生した場合に、第１のブートプログラムが正常に上書きされないため、システムが起動しなくなってしまう問題がある。【０００７】
また、特許文献２に記載された情報処理装置では、データの書き換え中に電源断が発生しても、データを復旧することが可能である。しかしながら、データの書き換え対象がブートプログラムである場合、データ書き換え中に電源断が発生すると、データが不完全のため、システムが起動しないという問題がある。【０００８】
そこで、本発明は、起動用のプログラムに誤りが検出された場合に、信頼性の高い起動用のプログラムで再起動を行うことができるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様に係る情報処理装置は、起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムを記憶する記憶部と、前記記憶部に記憶されている第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、当該選択されたプログラムを用いて起動処理を行う処理実行部と、前記記憶部に記憶されている第２プログラム及び第３プログラムが、それぞれ正しいか否かを判定するプログラム判定部と、前記記憶部に記憶されている第２プログラム及び第３プログラムの内、前記プログラム判定部で正しいと判定されたプログラムをコピー元プログラムとして決定し、前記プログラム判定部で正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定部と、前記記憶部において、前記コピー決定部で決定されたコピー元プログラムで、前記コピー決定部で決定されたコピー先プログラムを更新するコピー処理部と、前記コピー決定部で決定されたコピー元プログラムを示すコピー元情報を記憶する起動記憶部と、前記処理実行部が前記記憶部に記憶されている第１プログラムを用いて起動処理を行うことができない場合に、前記起動記憶部に記憶されているコピー元情報を参照して、前記コピー決定部で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行部に指示する起動制御部とを備え、前記処理実行部は、前記起動制御部からの指示に従って、前記記憶部に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行うことを特徴とする。【００１０】
本発明の一態様に係る情報処理方法は、起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、当該選択されたプログラムを用いて起動処理を行う処理実行過程と、前記第２プログラム及び前記第３プログラムが、それぞれ正しいか否かを判定するプログラム判定過程と、前記第２プログラム及び前記第３プログラムの内、前記プログラム判定過程で正しいと判定されたプログラムをコピー元プログラムとして決定し、前記プログラム判定過程で正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定過程と、前記コピー決定過程で決定されたコピー元プログラムで、前記コピー決定過程で決定されたコピー先プログラムを更新するコピー処理過程と、前記コピー決定過程で決定されたコピー元プログラムを示すコピー元情報を記憶する起動記憶過程と、前記処理実行過程が前記第１プログラムを用いて起動処理を行うことができない場合に、前記起動記憶過程で記憶されたコピー元情報を参照して、前記コピー決定過程で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行過程に指示する起動制御過程とを有し、前記処理実行過程は、前記起動制御過程からの指示に従って、前記第２プログラム又は前記第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行うことを特徴とする。【００１１】
本発明の一態様に係るプログラムは、コンピュータを、起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムを記憶する記憶手段、前記記憶手段に記憶されている第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、当該選択されたプログラムを用いて起動処理を行う処理実行手段、前記記憶手段に記憶されている第２プログラム及び第３プログラムが、それぞれ正しいか否かを判定するプログラム判定手段、前記記憶手段に記憶されている第２プログラム及び第３プログラムの内、前記プログラム判定手段で正しいと判定されたプログラムをコピー元プログラムとして決定し、前記プログラム判定手段で正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定手段と、前記記憶手段において、前記コピー決定手段で決定されたコピー元プログラムで、前記コピー決定手段で決定されたコピー先プログラムを更新するコピー処理手段、前記コピー決定手段で決定されたコピー元プログラムを示すコピー元情報を記憶する起動記憶手段、前記処理実行手段が前記記憶手段に記憶されている第１プログラムを用いて起動処理を行うことができない場合に、前記起動記憶手段に記憶されているコピー元情報を参照して、前記コピー決定手段で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行手段に指示する起動制御手段として機能させ、前記処理実行手段は、前記起動制御手段からの指示に従って、前記記憶手段に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行うことを特徴とする。
【発明の効果】
【００１２】
本発明の一態様によれば、起動用のプログラムに誤りが検出された場合に、信頼性の高い起動用のプログラムで再起動を行うことができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係る情報処理装置の構成を概略的に示すブロック図である。
【図２】実施の形態１における第２ＲＯＭに記憶されているプログラムを示す概念図である。
【図３】実施の形態１における起動制御部の動作を示すフローチャートである。
【図４】実施の形態１におけるＣＰＵの起動動作を示すフローチャートである。
【図５】実施の形態１におけるプログラム判定部での処理を示すフローチャートである。
【図６】実施の形態１におけるコピー決定部での処理を示すフローチャートである。
【図７】実施の形態１における起動制御部の起動状態監視処理を示すフローチャートである。
【図８】実施の形態２に係る情報処理装置の構成を概略的に示すブロック図である。
【図９】実施の形態２における第２ＲＯＭに記憶されているプログラム及びデータを示す概念図である。
【図１０】実施の形態２における起動制御部での処理を示すフローチャートである。
【図１１】実施の形態２におけるＣＰＵの起動動作を示すフローチャートである。
【発明を実施するための形態】
【００１４】
実施の形態１．
図１は、実施の形態１に係る情報処理装置１００の構成を概略的に示すブロック図である。図１において、情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０と、第１ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２０と、第２ＲＯＭ１２１と、ＲＡＭ（Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２２と、起動制御部１３０と、起動記憶部１３１と、タイマー１３２とを備える。なお、ＣＰＵ１１０、第１ＲＯＭ１２０、第２ＲＯＭ１２１及びＲＡＭ１２２は、バス１４０で接続されている。
【００１５】
ＣＰＵ１１０は、情報処理装置１００での情報処理を行う処理実行部である。ＣＰＵ１１０は、第１ＲＯＭ１２０又は第２ＲＯＭ１２１に記憶されているプログラムをＲＡＭ１２２に読み出し、各種処理を行う。例えば、ＣＰＵ１１０は、第２ＲＯＭ１２１に記憶されている、起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、選択されたプログラムを用いて起動処理を行う。ＣＰＵ１１０は、プログラム判定部１１１と、コピー決定部１１２と、コピー処理部１１３とを備える。
【００１６】
プログラム判定部１１１は、第２ＲＯＭ１２１に記憶されている複数のプログラムについて、内容が正しいかどうか判定する。
コピー決定部１１２は、プログラム判定部１１１での判定結果に従って、第２ＲＯＭ１２１に記憶されている複数のプログラムについて、コピー元プログラム及びコピー先プログラムを決定する。例えば、コピー決定部は、第２ＲＯＭ１２１に記憶されている第２プログラム及び第３プログラムの内、プログラム判定部１１１で正しいと判定されたプログラムをコピー元プログラムとして決定し、プログラム判定部１１１で正しいと判定されなかったプログラムをコピー先プログラムとして決定する。
コピー処理部１１３は、コピー決定部１１２での決定に基づいて、第２ＲＯＭ１２１に記憶されている複数のプログラムのコピー処理を行う。例えば、コピー処理部１１３は、コピー決定部１１２で決定されたコピー元プログラムで、コピー決定部１１２で決定されたコピー先プログラムを更新する。
【００１７】
第１ＲＯＭ１２０は、ＣＰＵ１１０のリセット解除後に実行される起動プログラムを記憶する記憶部としての不揮発性メモリである。ここで、第１ＲＯＭ１２０は、ＣＰＵ１１０が起動するための最小限のプログラムを搭載する。そして、第１ＲＯＭ１２０は、搭載するプログラムのサイズも大きくないことから、ＮＯＲ型フラッシュ等の読み出し回数の制限がなく、信頼性の高いデバイスを使用することができる。
【００１８】
第２ＲＯＭ１２１は、起動プログラムの実行によって読み出されて実行されるアプリケーションプログラムを記憶する記憶部としての不揮発性メモリである。ここで、第２ＲＯＭ１２１に記憶されているプログラム構成について説明する。第２ＲＯＭ１２１には、３種類のプログラムとそれぞれに対応した誤り検出用データが記憶される。
図２は、第２ＲＯＭ１２１に記憶されているプログラムを示す概念図である。符号１６０は、第１プログラムである。符号１６１は、第１プログラム１６０の誤り検出用データである。誤り検出用データは、具体的には、チェックサム、又は、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ；巡回冗長検査）等である。符号１６２は、第２プログラムである。符号１６３は、第２プログラム１６２の誤り検出用データである。符号１６４は、第３プログラムである。符号１６５は、第３プログラム１６４の誤り検出用データである。なお、第１プログラム１６０、第２プログラム１６２及び第３プログラム１６４は、同じ内容でも良い。また、第２プログラム１６２及び第３プログラム１６４は、バージョンは同じで、第１プログラムのみバージョンが新しいという構成でも良い。
なお、この第２ＲＯＭ１２１は、大規模なプログラムを記録するために、ＮＡＮＤ型フラッシュメモリで構成されてもよい。
【００１９】
ＲＡＭ１２２は、起動プログラム及びアプリケーションプログラムを、ＣＰＵ１１０が実行するために使用される読み書き自在のメモリである。
【００２０】
起動制御部１３０は、ＣＰＵ１１０の起動制御を行う。例えば、起動制御部１３０は、ＣＰＵ１１０が第１プログラム１６０を用いて起動処理を行うことができない場合に、コピー決定部１１２でコピー元プログラムに決定されたプログラムを用いて起動処理を行うように、ＣＰＵ１１０に指示する。この際、起動制御部１３０は、ＣＰＵ１１０のリセット制御及び起動モード設定用ピン制御を行うとともに、ＣＰＵ１１０と通信を行う。ここで、起動制御部１３０は、ＣＰＵ１１０のリセットを制御する際には、リセット制御信号ＲＣをＣＰＵ１１０に与える。また、起動制御部１３０は、ＣＰＵ１１０の起動モード設定用ピンに起動パラメータを設定する際には、起動モード設定用ピン制御信号ＢＰＣをＣＰＵ１１０に与える。さらに、起動制御部１３０は、ＣＰＵ１１０との間で通信信号ＣＯをやり取りする。
【００２１】
起動記憶部１３１は、起動制御部１３０がデータを書き込み及び参照するメモリである。例えば、起動記憶部１３１は、起動パラメータ及びコピー元情報を記憶する。
なお、起動パラメータが“Ａ”である場合には、起動の際に第１プログラムが用いられる。また、起動パラメータが“Ｂ”である場合には、起動の際に第２プログラムが用いられる。さらに、起動パラメータが“Ｃ”である場合には、起動の際に第３プログラムが用いられる。
また、コピー元情報は、コピー元として用いられるアプリケーションプログラム（コピー元プログラム）を示す。本実施の形態においては、コピー元情報が“Ｂ”の場合は、コピー元として用いられるアプリケーションプログラムが第２プログラムであることを示し、コピー元情報が“Ｃ”の場合は、コピー元として用いられるアプリケーションプログラムが第３プログラムであることを示す。
【００２２】
タイマー１３２は、時間を計測する計時部である。例えば、タイマー１３２は、ＣＰＵ１１０が起動処理を開始してからの時間を計測する。
【００２３】
情報処理装置１００は、電源１５０の投入によって動作し始める。例えば、情報処理装置１００では、電源１５０が投入されると、起動制御部１３０のリセットが解除され、起動制御部１３０が動作する。このときの動作を、図３のフローチャートを用いて説明する。
【００２４】
図３は、起動制御部１３０の動作を示すフローチャートである。
起動制御部１３０は、ＣＰＵ１１０をリセット状態にする（Ｓ１０）。例えば、起動制御部１３０は、リセットを指示するリセット制御信号ＲＣをＣＰＵ１１０に与える。このような信号を受けたＣＰＵ１１０は、リセット状態になる。
【００２５】
次に、起動制御部１３０は、起動記憶部１３１に記憶された起動パラメータを読み出す（Ｓ１１）。そして、起動制御部１３０は、読み出された起動パラメータが“Ｂ”か否かを判定する（Ｓ１２）。そして、起動パラメータが“Ｂ”である場合（Ｓ１２：Ｙｅｓ）には、処理はステップＳ１３に進み、起動パラメータが“Ｂ”ではない場合（Ｓ１２：Ｎｏ）には、処理はステップＳ１４に進む。
【００２６】
ステップＳ１３では、起動制御部１３０は、起動パラメータを“Ｂ”に決定する。
一方、ステップＳ１４では、起動制御部１３０は、読み出された起動パラメータが“Ｃ”か否かを判定する。そして、起動パラメータが“Ｃ”である場合（Ｓ１４：Ｙｅｓ）には、処理はステップＳ１５に進み、起動パラメータが“Ｃ”ではない場合（Ｓ１４：Ｎｏ）には、処理はステップＳ１６に進む。
【００２７】
ステップＳ１５では、起動制御部１３０は、起動パラメータを“Ｃ”に決定する。
一方、ステップＳ１６では、起動制御部１３０は、起動パラメータを“Ａ”に決定する。
【００２８】
そして、起動制御部１３０は、ステップＳ１３、Ｓ１５又はＳ１６で決定された起動パラメータを、ＣＰＵ１１０に伝える（Ｓ１７）。例えば、起動制御部１３０の出力ピン２ｂｉｔと、ＣＰＵ１１０の入力ピン２ｂｉｔとを接続し、起動制御部１３０が、起動パラメータ“Ａ”のときは、出力ピン２ｂｉｔを［０，１］とし、起動パラメータ“Ｂ”のときは、出力ピン２ｂｉｔを［１，０］、起動パラメータ“Ｃ”のときは、出力ピン２ｂｉｔを［１，１］とする。ここで、出力ピン２ｂｉｔの「０」及び「１」は、デジタル信号における「Ｌｏｗ」及び「Ｈｉｇｈ」にそれぞれ相当する。このように、起動制御部１３０は、起動パラメータを出力ピンに設定することで、その起動パラメータをＣＰＵ１１０に伝える。
【００２９】
そして、起動制御部１３０は、ＣＰＵ１１０のリセット状態を解除する（Ｓ１８）。例えば、起動制御部１３０は、リセットの解除を指示するリセット制御信号ＲＣをＣＰＵ１１０に与える。このような信号を受けたＣＰＵ１１０は、リセット状態を解除して、動作し始める。
【００３０】
ＣＰＵ１１０は、リセット解除後、第１ＲＯＭ１２０に記憶されているプログラムを読み出して実行する。このときの動作を、図４のフローチャートを用いて説明する。
【００３１】
図４は、ＣＰＵ１１０の起動動作を示すフローチャートである。
まず、ＣＰＵ１１０は、初期設定を行う（Ｓ２０）。これは、例えば、第１ＲＯＭ１２０のアクセスタイミングパラメータの設定、及び、第２ＲＯＭ１２１のアクセスタイミングの設定等である。
【００３２】
次に、ＣＰＵ１１０は、ＲＡＭ１２２の初期設定を行う（Ｓ２１）。例えば、ＲＡＭ１２２がＳＤＲＡＭ（Ｓｙｎｃｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の場合、ＣＰＵ１１０は、メモリクロックの設定、応答速度の設定、バス幅設定、及び、アドレスピンの設定等を行う。このような設定を行うことで、ＣＰＵ１１０は、ＲＡＭ１２２にアクセスすることができる。
【００３３】
次に、ＣＰＵ１１０は、入力ピンの状態を参照し、起動制御部１３０が指定した起動パラメータを取得する（Ｓ２２）。そして、ＣＰＵ１１０は、取得された起動パラメータが“Ｂ”か否かを判定する（Ｓ２３）。取得された起動パラメータが“Ｂ”である場合（Ｓ２３：Ｙｅｓ）には、処理はステップＳ２４に進み、取得された起動パラメータが“Ｂ”ではない場合（Ｓ２３：Ｎｏ）には、処理はステップＳ２５に進む。
【００３４】
ステップＳ２４では、ＣＰＵ１１０は、起動パラメータを“Ｂ”に特定する。
一方、ステップＳ２５では、ＣＰＵ１１０は、起動パラメータが“Ｃ”か否かを判定する。そして、起動パラメータが“Ｃ”である場合（Ｓ２５：Ｙｅｓ）には、処理はステップＳ２６に進み、起動パラメータが“Ｃ”ではない場合（Ｓ２５：Ｎｏ）には、処理はステップＳ２７に進む。
【００３５】
ステップＳ２６では、ＣＰＵ１１０は、起動パラメータを“Ｃ”に特定する。
一方、ステップＳ２７では、ＣＰＵ１１０は、起動パラメータを“Ａ”に特定する。
【００３６】
そして、ＣＰＵ１１０は、第２ＲＯＭ１２１から、ステップＳ２４、Ｓ２６又はＳ２７で特定された起動パラメータに対応するプログラムを読み出して、実行する（Ｓ２８）。例えば、特定された起動パラメータが“Ａ”の場合には、ＣＰＵ１１０は、第２ＲＯＭ１２１から第１プログラム１６０を読み出す。また、特定された起動パラメータが“Ｂ”の場合には、ＣＰＵ１１０は、第２ＲＯＭ１２１から第２プログラム１６２を読み出す。さらに、特定された起動パラメータが“Ｃ”の場合には、ＣＰＵ１１０は、第２ＲＯＭ１２１から第３プログラム１６４を読み出す。このとき、ＣＰＵ１１０は、それぞれのプログラムの誤り検出用データを算出し、それぞれのプログラムに対応した誤り検出用データと比較することで、プログラムがデータとして問題ないかの確認を行う。
【００３７】
このように起動制御部１３０が起動パラメータを指定することで、ＣＰＵ１１０は、第２ＲＯＭ１２１に記録されているプログラムを選択して起動することができる。
【００３８】
次に、第２ＲＯＭ１２１に記憶されている第１プログラム１６０を用いて動作しているときの、第２プログラム１６２及び第３プログラム１６４のバックアップ処理について説明する。第１プログラム１６０、第２プログラム１６２及び第３プログラム１６４については、いずれも、第２ＲＯＭ１２１に記憶されているため、ＮＡＮＤ型フラッシュメモリのデメリットであるデータ保持期間が有限であること、及び、データの読み出し回数が有限であることによりデータが変化してしまい、正しいデータとして読み出すことができなくなるおそれがある。バックアップ処理は、プログラム判定部１１１、コピー決定部１１２及びコピー処理部１１３で実現する。プログラム判定部１１１の処理の流れを、図５のフローチャートを用いて説明する。
【００３９】
図５は、プログラム判定部１１１での処理を示すフローチャートである。
プログラム判定部１１１は、第２プログラム１６２の誤り検出データの算出を行う（Ｓ３０）。
【００４０】
次に、プログラム判定部１１１は、ステップＳ３０で算出された誤り検出データと、第２ＲＯＭ１２１に記憶されている第２誤り検出用データ１６３とを比較することで（Ｓ３１）、第２プログラムが正しいか否かを判定する。例えば、ステップＳ３０で算出された誤り検出データと、第２誤り検出用データ１６３とが一致した場合（Ｓ３１：Ｙｅｓ）には、処理はステップＳ３２に進み、ステップＳ３０で算出された誤り検出データと、第２誤り検出用データ１６３とが一致しない場合（Ｓ３１：Ｎｏ）には、処理はステップＳ３３に進む。
【００４１】
ステップＳ３２では、プログラム判定部１１１は、第２プログラム１６２は正しいと判定する。一方、ステップＳ３３では、プログラム判定部１１１は、第２プログラム１６２は、不正と判定する。
【００４２】
次に、プログラム判定部１１１は、第３プログラム１６４の誤り検出データの算出を行う（Ｓ３４）。
【００４３】
次に、プログラム判定部１１１は、ステップＳ３４で算出された誤り検出データと、第２ＲＯＭ１２１に記憶されている第３誤り検出用データ１６５とを比較することで（Ｓ３５）、第３プログラムが正しいか否かを判定する。例えば、ステップＳ３４で算出された誤り検出データと、第３誤り検出用データ１６５とが一致した場合（Ｓ３５：Ｙｅｓ）には、処理はステップＳ３６に進み、ステップＳ３４で算出された誤り検出データと、第３誤り検出用データ１６５とが一致しない場合（Ｓ３５：Ｎｏ）には、処理はステップＳ３７に進む。
【００４４】
ステップＳ３６では、プログラム判定部１１１は、第３プログラム１６４は正しいと判定する。一方、ステップＳ３７では、プログラム判定部１１１は、第３プログラム１６４は、不正と判定する。
【００４５】
さらに、コピー決定部１１２での処理の流れを、図６のフローチャートを用いて説明する。
図６は、コピー決定部１１２での処理を示すフローチャートである。
コピー決定部１１２は、プログラム判定部１１１の判定結果に基づいて、第２プログラム１６２が正しいかどうかを判断する（Ｓ４０）。第２プログラム１６２が正しい場合（Ｓ４０：Ｙｅｓ）には、処理はステップＳ４１に進み、第２プログラム１６２が不正の場合（Ｓ４０：Ｎｏ）には、処理はステップＳ４２に進む。
【００４６】
ステップＳ４１では、コピー決定部１１２は、コピー元を“Ｂ”に決定する。
一方、ステップＳ４２では、コピー決定部１１２は、プログラム判定部１１１の判定結果に基づいて、第３プログラム１６４が正しいかどうかを判断する（Ｓ４２）。第３プログラム１６４が正しい場合（Ｓ４２：Ｙｅｓ）には、処理はステップＳ４３に進み、第３プログラム１６４が不正の場合（Ｓ４２：Ｎｏ）には、処理はステップＳ４４に進む。
【００４７】
ステップＳ４３では、コピー決定部１１２は、コピー元を“Ｃ”に決定する。
一方、ステップＳ４４では、コピー決定部１１２は、故障フラグをあげる。この故障フラグは、例えば、ＲＡＭ１２２に記憶されているものとする。
【００４８】
そして、コピー決定部１１２によって決められたコピー元に基づいて、ＣＰＵ１１０は、コピー元情報を生成する。例えば、コピー元が“Ｂ”である場合には、コピー元情報が第２プログラム１６２を示すように、“Ｂ”とし、コピー元が“Ｃ”である場合には、コピー元情報が第３プログラム１６４を示すように、“Ｃ”とする。そして、ＣＰＵ１１０は、生成されたコピー元情報を起動制御部１３０に伝え、起動制御部１３０は、そのコピー元情報を、起動記憶部１３１に保存する。
【００４９】
次に、コピー処理部１１３は、プログラム判定部１１１及びコピー決定部１１２での処理結果に基づき、コピー処理を行う。例えば、コピー処理部１１３は、第２プログラム１６２及び第３プログラム１６４の両方が正しければ、コピー処理は行わない。一方、コピー処理部１１３は、第２プログラム１６２及び第３プログラム１６４の何れかのプログラムが不正の場合には、コピー元として決定されたプログラムからコピー先となるプログラムへのコピー処理を行う。例えば、コピー処理部１１３は、第２ＲＯＭ１２１において、コピー先となるプログラム（不正と判断されたプログラム）を消去して、コピー元として決定されたプログラムを、コピー先のプログラムとして記憶する。また、どちらのプログラムも不正である場合には、コピー処理部１１３は、コピー処理を行わない。
【００５０】
なお、このプログラム判定部１１１、コピー決定部１１２及びコピー処理部１１３で行うバックアップ処理は定期的に行うが、実施については、起動回数に基づいてもよいし、データを書き込んでからの経過時間に基づいてもよい。言い換えると、予め定められた起動回数に達した場合、又は、初回起動時若しくは前回のバックアップ処理から予め定められた経過時間が経過した場合に、バックアップ処理が行われればよい。
【００５１】
次に、第２ＲＯＭ１２１に記憶されている第１プログラム１６０が正常に起動しない場合の処理について、図７のフローチャートを用いて説明する。
図７は、起動制御部１３０の起動状態監視処理を示すフローチャートである。図７のフローチャートは、図３のフローチャートのステップＳ１８において、ＣＰＵ１１０のリセット状態が解除された後に開始される。
【００５２】
起動制御部１３０は、ＣＰＵ１１０のリセット状態を解除したあと、タイマー閾値を設定する（Ｓ５０）。タイマー閾値は、予め定められているものとする。そして、起動制御部１３０は、タイマー１３２を動作させて、計時を開始させる（Ｓ５１）。タイマー１３２は、ゼロからスタートし、加算するタイプとする。
【００５３】
起動制御部１３０は、タイマー１３２の値とタイマー閾値とを比較する（Ｓ５２）。そして、タイマー１３２の値がタイマー閾値以下である場合（Ｓ５２：Ｙｅｓ）には、処理はステップＳ５３に進み、タイマー１３２の値がタイマー閾値を超えた場合（Ｓ５２：Ｎｏ）には、処理はステップＳ５５に進む。
【００５４】
ステップＳ５３では、起動制御部１３０は、ＣＰＵ１１０で実行しているアプリケーションプログラム（ここでは、第１プログラム１６０、第２プログラム１６２又は第３プログラム１６４）が予め定められた処理まで完了したことを通知しているかどうか確認する。そして、予め定められた処理まで完了している場合（Ｓ５３：Ｙｅｓ）には、処理はステップＳ５４に進み、予め定められた処理まで完了していない場合（Ｓ５３：Ｎｏ）には、処理はステップＳ５２に戻る。
【００５５】
ステップＳ５４では、起動制御部１３０は、正常起動と判断して、フローを終了する。
【００５６】
一方、ステップＳ５２において、タイマーの値がタイマー閾値を超えている場合（Ｓ５２：Ｎｏ）には、処理はステップＳ５５に進む。ステップＳ５５では、使用中のプログラム（ここでは、第１プログラム１６０、第２プログラム１６２又は第３プログラム１６４）が正常に動作していないと判断し、起動制御部１３０は、起動記憶部１３１に記憶されているコピー元情報に基づいて、起動パラメータを設定する（Ｓ５５）。なお、ステップＳ５５で設定される起動パラメータは、“Ｂ”又は“Ｃ”である。そして、起動制御部１３０は、図３のステップＳ１７と同様に、起動パラメータを出力ピンに設定することで、ＣＰＵ１１０に通知する。
【００５７】
そして、起動制御部１３０は、ＣＰＵ１１０のリセットを実行する（Ｓ５６）。例えば、起動制御部１３０は、ＣＰＵ１１０をリセット状態に設定してから、ＣＰＵのリセット状態を解除する。そして、処理はステップＳ５０に戻る。
なお、ＣＰＵ１１０は、リセット解除後、図４に示すフローに従って処理を実行し、第２ＲＯＭ１２１に保存されている第２プログラム１６２又は第３プログラム１６４を用いて起動する。
【００５８】
以上のように実施の形態１を構成することで、情報処理装置１００は、第１プログラム１６０で起動できなくなったとしても、起動制御部１３０の再起動処理によって、正しく起動するアプリケーションプログラム（ここでは、第２プログラム１６２又は第３プログラム）で起動することができる。
【００５９】
また、第２プログラム１６２と第３プログラム１６４を正しい状態に戻す処理、具体的には、コピー処理部１１３におけるコピー処理を行っているときに電源断が発生しても、コピー元、すなわち正しく動作するプログラムを、コピー元情報を参照することで特定することができる。このため、仮にそのタイミングで、第１プログラム１６０が正しく起動しない場合でも、起動制御部１３０の再起動処理によって、正しく起動するアプリケーションプログラム（コピー元のプログラム）で、システムを起動させることができる。
【００６０】
特に、近年、機器の高機能化が進むに伴ってアプリケーションプログラムのデータ容量が著しく増えており、コピー処理に多くの時間を要する場合があるため、コピー処理中に電源断が発生し、かつ、そのタイミングで第１プログラム１６０が正しく起動しない場合でも、実施の形態１に係る情報処理装置１００によれば、システムを起動することができる。
【００６１】
なお、実施の形態１では、第１プログラム１６０が起動しなかったときに、バックアップ処理している第２プログラム１６２又は第３プログラム１６４のコピー元を用いて再起動する構成が説明されているが、このような構成に限定されるものではない。例えば、バックアップ処理する組を、第１プログラム１６０及び第３プログラム１６４として、第２プログラム１６２が起動しなかったときに、第１プログラム１６０と第３プログラム１６４のコピー元を用いて再起動するように構成されていてもよい。また、バックアップ処理する組を、第１プログラム１６０と第２プログラム１６２として、第３プログラム１６４が起動しなかったときに、第１プログラム１６０及び第２プログラム１６２のコピー元を用いて再起動するように構成されていてもよい。
【００６２】
実施の形態２．
図８は、実施の形態２に係る情報処理装置２００の構成を概略的に示すブロック図である。図８において、情報処理装置２００は、ＣＰＵ２１０と、第１ＲＯＭ１２０と、第２ＲＯＭ２２１と、ＲＡＭ１２２と、起動制御部２３０と、起動記憶部２３１と、タイマー１３２とを備える。なお、ＣＰＵ２１０、第１ＲＯＭ１２０、第２ＲＯＭ２２１及びＲＡＭ１２２は、バス１４０で接続されている。実施の形態２に係る情報処理装置２００は、ＣＰＵ２１０及び起動制御部２３０での処理の点、並びに、第２ＲＯＭ２２１及び起動記憶部２３１に記憶されている情報の点において、実施の形態１に係る情報処理装置１００と異なっている。
【００６３】
実施の形態１では、第２プログラム１６２と第３プログラム１６４のバックアップ処理において、コピー元のプログラムを示すコピー元情報を、起動記憶部１３１に記憶している。そして、実施の形態１では、起動制御部１３０は、第１プログラム１６０で正しく起動しなかった場合に、起動記憶部１３１に記憶されているコピー元情報を参照して、起動パラメータをＣＰＵ１１０に伝えるように設定し、ＣＰＵ１１０を再起動するように構成されている。これに対して、実施の形態２では、コピー元情報は、ＮＡＮＤ型フラッシュメモリで構成されている第２ＲＯＭ２２１内に記憶され、ＣＰＵ２１０が第１ＲＯＭ１２０に記憶されている起動プログラムを実行するときに、第２ＲＯＭ２２１内に記憶されているコピー元情報を参照して、使用するアプリケーションプログラムを選択するように構成されている。以下、実施の形態２について、詳細に説明する。
【００６４】
ＣＰＵ２１０は、情報処理装置２００での情報処理を行う処理実行部である。ＣＰＵ２１０は、プログラム判定部１１１と、コピー決定部１１２と、コピー処理部１１３とを備える。実施の形態２におけるプログラム判定部１１１、コピー決定部１１２及びコピー処理部１１３での処理については、実施の形態１におけるこれらの部分が行う処理と同様である。
但し、実施の形態１では、ＣＰＵ１１０は、コピー決定部１１２での決定に従って生成されたコピー元情報を起動制御部１３０に伝えて、起動記憶部１３１に保存させたが、実施の形態２では、ＣＰＵ２１０は、コピー元情報を第２ＲＯＭ２２１に保存させる。
【００６５】
第２ＲＯＭ２２１は、起動プログラムの実行によって読み出されて実行されるアプリケーションプログラム及びコピー元情報を記憶する不揮発性メモリである。ここで、第２ＲＯＭ２２１に記憶されているプログラム構成について説明する。第２ＲＯＭ２２１には、３種類のプログラムとそれぞれに対応した誤り検出用データ及びコピー元情報が記憶される。
図９は、第２ＲＯＭ２２１に記憶されているプログラム及びデータを示す概念図である。符号１６０は、第１プログラムである。符号１６１は、第１プログラム１６０の誤り検出用データである。符号１６２は、第２プログラムである。符号１６３は、第２プログラム１６２の誤り検出用データである。符号１６４は、第３プログラムである。符号１６５は、第３プログラム１６４の誤り検出用データである。なお、符号１６０〜１６５は、実施の形態１における符号１６０〜１６５と同様である（図２参照）。
符号２６６は、コピー元情報である。コピー元情報２６６は、実施の形態１と同様、コピー元として用いられるアプリケーションプログラム（第２プログラム又は第３プログラム）を示す。
【００６６】
起動制御部２３０は、ＣＰＵ２１０の起動制御を行う。実施の形態２における起動制御部２３０の起動制御については、図１０を用いて詳細に説明する。
また、実施の形態１における起動制御部１３０は、ＣＰＵ１１０から与えられたコピー元情報を起動記憶部１３１に記憶させる処理を行ったが、実施の形態２における起動制御部２３０は、このような処理を行わない。
【００６７】
起動記憶部２３１は、起動制御部２３０がデータを書き込み及び参照するメモリである。例えば、実施の形態２における起動記憶部２３１は、起動パラメータを記憶する。なお、実施の形態２における起動記憶部２３１は、実施の形態１とは異なり、コピー元情報は記憶しない。
ここで、実施の形態２においては、起動記憶部２３１に記憶される起動パラメータは、“Ａ”又は“Ｂ”の値を示す。起動パラメータが“Ａ”である場合には、起動の際に第１プログラム１６０が用いられる。また、起動パラメータが“Ｂ”である場合には、コピー元情報に応じて、起動の際に第２プログラム１６２又は第３プログラム１６４が用いられる。
【００６８】
情報処理装置２００は、電源１５０の投入によって動作し始める。まず、起動制御部２３０のリセットが解除され、起動制御部２３０が動作する。そのときの動作を、図１０のフローチャートを用いて説明する。なお、図１０に示されているフローは、実施の形態１における図３及び図７に示されているフローの代わりである。
【００６９】
図１０は、起動制御部２３０での処理を示すフローチャートである。
起動制御部２３０は、まず、回数パラメータＮを初期化する（Ｓ６０）。ここでは、起動制御部２３０は、回数パラメータＮの値を「０」とする。回数パラメータＮは、起動回数と連動するパラメータである。実施の形態２では、回数パラメータＮは、例えば、起動回数を示す。
【００７０】
次に、起動制御部２３０は、起動パラメータを“Ａ”に設定し、ＣＰＵ２１０をリセット状態にする（Ｓ６１）。ここでは、実施の形態１と同様に、起動制御部２３０は、その出力ピン２ｂｉｔを［０，１］に設定することで、起動パラメータ“Ａ”をＣＰＵ２１０に伝える。そして、起動制御部２３０が、ＣＰＵ２１０のリセット信号を解除することで、ＣＰＵ２１０のリセット状態が解除され（Ｓ６２）、ＣＰＵ２１０が動作し始める。ＣＰＵ２１０の動作については、図１１を用いて後述する。
【００７１】
次に、起動制御部２３０は、予め定められたタイマー閾値を設定して（Ｓ６３）、タイマー１３２を動作させる（Ｓ６４）。タイマー１３２は、ゼロからスタートし、加算するタイプとする。
【００７２】
次に、起動制御部２３０は、タイマー１３２の値とタイマー閾値とを比較する（Ｓ６５）。そして、タイマー１３２の値がタイマー閾値以下である場合（Ｓ６５：Ｙｅｓ）には、処理はステップＳ６６に進み、タイマー１３２の値がタイマー閾値を超えている場合（Ｓ６５：Ｎｏ）には、処理はステップＳ６８に進む。
【００７３】
ステップＳ６６では、起動制御部２３０は、ＣＰＵ２１０で実行しているアプリケーションプログラムが予め定められた処理まで完了したことを通知しているかどうか確認する。そして、予め定められた処理まで完了している場合（Ｓ６６：Ｙｅｓ）には、処理はステップＳ６７に進み、予め定められた処理まで完了していない場合（Ｓ６６：Ｎｏ）には、処理はステップＳ６５に戻る。
【００７４】
ステップＳ６７では、起動制御部２３０は、ＣＰＵ２１０での起動処理は、正常起動であると判断して、フローを終了する。
【００７５】
一方、ステップＳ６５において、タイマー１３２の値がタイマー閾値を超えている場合（Ｓ６５：Ｎｏ）には、処理はステップＳ６８に進む。ステップＳ６８では、ＣＰＵ２１０が実行しているアプリケーションプログラムが正常な動作をしていないと判断し、起動制御部２３０は、回数パラメータＮに「１」を加算する。そして、起動制御部２３０は、回数パラメータＮが、第１回数閾値である「３」よりも小さいか否かを判断する（Ｓ６９）。回数パラメータＮが「３」よりも小さい場合（Ｓ６９：Ｙｅｓ）には、処理はステップＳ６１に戻り、回数パラメータＮが「３」以上である場合（Ｓ６９：Ｎｏ）には、処理はステップＳ７０に進む。なお、このステップＳ６９により、起動試行を３回行うことができ、ノイズ及び電圧の一時的な低下等の突発的な要因による起動不具合の場合は、再度の試行により正常に起動することができる。言い換えると、予め定められた時間までに、ＣＰＵ１１０が予め定められた処理を実行することのできない状態が、予め定められた回数を超えるまでは、現在使用されているアプリケーションプログラムを用いた起動処理が行われる。この起動試行の回数を示す第１回数閾値の値は、任意に設定することができる。
【００７６】
ステップＳ７０では、起動制御部２３０は、回数パラメータＮが第２回数閾値である「６」よりも小さいか否かを判断する。回数パラメータＮが「６」よりも小さい場合（Ｓ７０：Ｙｅｓ）には、処理はステップＳ７１に進み、回数パラメータＮが「６」以上である場合（Ｓ７０：Ｎｏ）には、処理はステップＳ７２に進む。
【００７７】
ステップＳ７１では、起動制御部２３０は、起動記憶部２３１に記憶されている起動パラメータを“Ｂ”に設定する。そして、起動制御部２３０は、起動記憶部２３１に記憶されている起動パラメータに従って、その出力ピンに［１，０］を設定して、ＣＰＵ２１０に通知する。さらに、起動制御部２３０は、ＣＰＵ２１０をリセット状態にして、処理をステップＳ６２に戻す。
【００７８】
一方、ステップＳ７２では、起動制御部２３０は、起動パラメータ“Ｂ”でも正常起動できなかったために、故障と判断して、故障フラグをたてる。ここで、ステップＳ７０における第２回数閾値（ここでは、「６」）は、ステップＳ６９における第１回数閾値（ここでは、「３」）との差分の値（ここでは、「３」）において、起動パラメータを“Ｂ”とした場合の起動試行の回数となる。言い換えると、予め定められた時間までに、ＣＰＵ２１０が予め定められた処理を実行することのできない状態が、予め定められた回数を超えるまでは、現在使用されているアプリケーションプログラムを用いた起動処理が行われる。なお、この第２回数閾値を変更することで、起動パラメータが“Ｂ”のときの起動試行の回数を変更することができる。
【００７９】
次に、ＣＰＵ２１０の動作について説明する。ＣＰＵ２１０は、リセット解除後、第１ＲＯＭ１２０に記憶されている起動プログラムを読み出して実行する。この動作について、図１１に示されているフローチャートを用いて説明する。
【００８０】
図１１は、ＣＰＵ２１０の起動動作を示すフローチャートである。
まず、ＣＰＵ２１０は、初期設定を行う（Ｓ８０）。これは、例えば、第１ＲＯＭ１２０のアクセスタイミングパラメータの設定、及び、第２ＲＯＭ２２１のアクセスタイミングの設定等である。
【００８１】
次に、ＣＰＵ２１０は、ＲＡＭ１２２の初期設定を行う（Ｓ８１）。例えば、ＲＡＭ１２２がＳＤＲＡＭの場合、ＣＰＵ２１０は、メモリクロックの設定、応答速度の設定、バス幅設定、及び、アドレスピンの設定等を行う。このような設定を行うことで、ＣＰＵ２１０は、ＲＡＭ１２２にアクセスすることができる。
【００８２】
次に、ＣＰＵ２１０は、入力ピンの状態を参照し、起動制御部２３０が指定した起動パラメータを取得する（Ｓ８２）。そして、ＣＰＵ２１０は、取得された起動パラメータが“Ａ”か否かを判定する（Ｓ８３）。取得された起動パラメータが“Ａ”である場合（Ｓ８３：Ｙｅｓ）には、処理はステップＳ８４に進み、取得された起動パラメータが“Ａ”ではない場合（Ｓ８３：Ｎｏ）には、処理はステップＳ８５に進む。
【００８３】
ステップＳ８４では、ＣＰＵ２１０は、起動パラメータを“Ａ”に特定する。
一方、ステップＳ８５では、ＣＰＵ２１０は、第２ＲＯＭ２２１に記憶されているコピー元情報２６６を読み出す。
【００８４】
次に、ＣＰＵ２１０は、コピー元情報２６６が“Ｂ”であるか否かを判断する（Ｓ８６）。そして、コピー元情報２６６が“Ｂ”である場合（Ｓ８６：Ｙｅｓ）には、処理はステップＳ８７に進む。一方、コピー元情報２６６が“Ｂ”ではない場合（Ｓ８６：Ｎｏ）、言い換えると、コピー元情報２６６が“Ｃ”である場合には、処理はステップＳ８８に進む。
【００８５】
ステップＳ８７では、ＣＰＵ２１０は、起動パラメータを“Ｂ”に特定する。
一方、ステップＳ８８では、ＣＰＵ２１０は、起動パラメータを“Ｃ”に特定する。
【００８６】
そして、ＣＰＵ２１０は、第２ＲＯＭ２２１から、ステップＳ８４、Ｓ８７又はＳ８８で特定された起動パラメータに対応するプログラムを読み出して、実行する（Ｓ８９）。例えば、特定された起動パラメータが“Ａ”の場合には、ＣＰＵ２１０は、第２ＲＯＭ２２１から第１プログラム１６０を読み出す。また、特定された起動パラメータが“Ｂ”の場合には、ＣＰＵ２１０は、第２ＲＯＭ２２１から第２プログラム１６２を読み出す。さらに、特定された起動パラメータが“Ｃ”の場合には、ＣＰＵ２１０は、第２ＲＯＭ２２１から第３プログラム１６４を読み出す。このとき、ＣＰＵ２１０は、それぞれのプログラムの誤り検出データを算出し、それぞれのプログラムに対応した誤り検出用データと比較することで、プログラムがデータとして問題ないかの確認を行う。
【００８７】
以上のように、実施の形態２に係る情報処理装置２００を構成することで、情報処理装置２００は、ＣＰＵ２１０が第１プログラム１６０を用いて起動できなくなったとしても、起動制御部２３０の再起動処理によって、正しく起動するプログラム（第２プログラム１６２又は第３プログラム１６４）で起動することができる。
【００８８】
また、第２プログラム１６２と第３プログラム１６４を正しい状態に戻す処理、具体的には、コピー処理を行っているときに、電源断が発生しても、コピー元情報を参照することで、コピー元、即ち、正しく動作するプログラムを特定することができる。このため、仮にコピー処理しているタイミングで、第１プログラム１６０が正しく起動しない場合でも、起動制御部２３０の再起動処理によって、正しく起動するプログラムで、システムを起動させることができる。
【００８９】
なお、実施の形態２では、第１プログラム１６０が起動しなかったときに、バックアップ処理している第２プログラム１６２又は第３プログラム１６４のコピー元を用いて再起動する構成が説明されているが、このような構成に限定されるものではない。例えば、バックアップ処理する組を、第１プログラム１６０及び第３プログラム１６４として、第２プログラム１６２が起動しなかったときに、第１プログラム１６０と第３プログラム１６４のコピー元を用いて再起動するように構成されていてもよい。また、バックアップ処理する組を、第１プログラム１６０と第２プログラム１６２として、第３プログラム１６４が起動しなかったときに、第１プログラム１６０及び第２プログラム１６２のコピー元を用いて再起動するように構成されていてもよい。
【００９０】
実施の形態３
実施の形態１及び実施の形態２において、バックアップ対象となっている両方のプログラム（実施の形態１及び実施の形態２では、第２プログラム１６２及び第３プログラム１６４）がどちらもデータ化けしてしまう（不正なデータになってしまう）場合もある。このような場合に、第１プログラム１６０が不正になると、システムが起動しなくなってしまう。例えば、コピー決定部１１２の動作を説明するフローチャートである図６において、ステップＳ４４において故障フラグがあがっているときに、第１プログラム１６０が不正になると、正常にシステムが起動できなくなる。そのため、情報処理装置１００、２００は、バックアップ処理を実行したとき、第２プログラム１６２及び第３プログラム１６４のどちらも不正な場合は、警告を示す故障警告部（図示せず）をさらに有するように構成されていてもよい。
【００９１】
例えば、バックアップ処理の中で、第２プログラム１６２及び第３プログラム１６４がどちらも不正な場合は、情報処理装置１００、２００がネットワーク機器であれば、故障警告部は、例えば、サーバー等の管理装置に故障を通達する。また、情報処理装置１００、２００が表示器であれば、故障警告部は、例えば、画面上に警告を表示する。情報処理装置１００、２００が端末装置であれば、故障警告部は、端末に搭載されているランプ等の発光部を点灯又は点滅させる。
【００９２】
以上のように、実施の形態３によれば、ユーザーにバックアップ用のアプリケーションプログラムが異常状態で有ることを知らせることができ、システムが起動しなくなることを事前に回避することができる。
【００９３】
なお、故障警告部は、実施の形態１における、図６のステップＳ４４で故障フラグがたてられた場合、又は、実施の形態２における、図１０のステップＳ７２で故障フラグがたてられた場合に、警告を行うようにしてもよい。
【００９４】
以上の実施の形態１〜３に記載された情報処理装置１００、２００は、ＮＡＮＤ型フラッシュメモリ等のように、信頼性が低く、正しいデータが読み出せなくなる可能性のある記憶部を備える装置であればどのような装置であってもよい。例えば、情報処理装置１００、２００は、ＩＰ−ＳＴＢ（ＩＰ−Ｓｅｔ  Ｔｏｐ  Ｂｏｘ）等の光テレビ用の端末、アンドロイド端末等の多機能携帯端末、ナビゲーションシステム、デジタルサイネージシステム等の情報表示機器、ビデオレコーダー及びデスクプレーヤー等の映像記録再生機器、ルータ並びにＴＡ（Ｔｅｒｍｉｎａｌ  Ａｄａｐｔｅｒ）等であってもよい。
【符号の説明】
【００９５】
１００，２００  情報処理装置、  １１０，２１０  ＣＰＵ、  １１１  プログラム判定部、  １１２  コピー決定部、  １１３  コピー処理部、  １２０  第１ＲＯＭ、  １２１，２２１  第２ＲＯＭ、  １２２  ＲＡＭ、  １３０，２３０  起動制御部、  １３１，２３１  起動記憶部、  １３２  タイマー、  １４０  バス、  １５０  電源。
【図１】
2014109100.tif 000003
【図２】
2014109100.tif 000004
【図３】
2014109100.tif 000005
【図４】
2014109100.tif 000006
【図５】
2014109100.tif 000007
【図６】
2014109100.tif 000008
【図７】
2014109100.tif 000009
【図８】
2014109100.tif 000010
【図９】
2014109100.tif 000011
【図１０】
2014109100.tif 000012
【図１１】
2014109100.tif 000013
【手続補正書】
【提出日】平成26年12月25日(2014.12.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムを記憶する記憶部と、
前記記憶部に記憶されている第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、当該選択されたプログラムを用いて起動処理を行う処理実行部と、
前記記憶部に記憶されている第２プログラム及び第３プログラムが、それぞれ正しいか否かを判定するプログラム判定部と、
前記記憶部に記憶されている第２プログラム及び第３プログラムの内、前記プログラム判定部で正しいと判定されたプログラムをコピー元プログラムとして決定し、前記プログラム判定部で正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定部と、
前記記憶部において、前記コピー決定部で決定されたコピー元プログラムで、前記コピー決定部で決定されたコピー先プログラムを更新するコピー処理部と、
前記コピー決定部で決定されたコピー元プログラムを示すコピー元情報を記憶する起動記憶部と、
前記処理実行部が前記記憶部に記憶されている第１プログラムを用いて起動処理を行うことができない場合に、前記起動記憶部に記憶されているコピー元情報を参照して、前記コピー決定部で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行部に指示する起動制御部とを備え、
前記処理実行部は、前記起動制御部からの指示に従って、前記記憶部に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行うこと
を特徴とする情報処理装置。
【請求項２】
起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムを記憶する記憶部と、
前記記憶部に記憶されている第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、当該選択されたプログラムを用いて起動処理を行う処理実行部と、
前記記憶部に記憶されている第２プログラム及び第３プログラムが、それぞれ正しいか否かを判定するプログラム判定部と、
前記記憶部に記憶されている第２プログラム及び第３プログラムの内、前記プログラム判定部で正しいと判定されたプログラムをコピー元プログラムとして決定し、前記プログラム判定部で正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定部と、
前記記憶部において、前記コピー決定部で決定されたコピー元プログラムで、前記コピー決定部で決定されたコピー先プログラムを更新するコピー処理部と、
前記処理実行部が前記記憶部に記憶されている第１プログラムを用いて起動処理を行うことができない場合に、前記コピー決定部で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行部に指示する起動制御部とを備え、
前記記憶部は、前記コピー決定部で決定されたコピー元プログラムを示すコピー元情報をさらに記憶し、
前記起動制御部は、前記記憶部に記憶されているコピー元情報を参照して、前記コピー決定部で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行部に指示し、
前記処理実行部は、前記起動制御部からの指示に従って、前記記憶部に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行うこと
を特徴とする情報処理装置。
【請求項３】
時間を計測する計時部をさらに備え、
前記起動制御部は、前記計時部において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行部が予め定められた処理を完了していない場合に、前記処理実行部が前記記憶部に記憶されている第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定部で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行部に指示すること
を特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
時間を計測する計時部をさらに備え、
前記起動制御部は、前記計時部において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行部が予め定められた処理を完了できない状態が、予め定められた第１の回数連続して生じた場合に、前記処理実行部が前記記憶部に記憶されている第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定部で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行部に指示すること
を特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
前記起動制御部からの指示に従って、前記処理実行部が前記記憶部に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行っている際に、前記計時部において計測された、前記起動処理を開始してからの時間が前記予め定められた閾値を超える前に前記処理実行部が前記予め定められた処理を完了できない状態が、予め定められた第２の回数連続して生じた場合に、前記起動制御部は、故障と判断し、前記起動制御部が故障と判断した場合に、警告を行う故障警告部をさらに備えること
を特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記プログラム判定部が、前記記憶部に記憶されている第２プログラム及び第３プログラムの両方が正しくないと判定した場合に、警告を行う故障警告部をさらに備えること
を特徴とする請求項１から４の何れか一項に記載の情報処理装置。
【請求項７】
起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、当該選択されたプログラムを用いて起動処理を行う処理実行過程と、
前記第２プログラム及び前記第３プログラムが、それぞれ正しいか否かを判定するプログラム判定過程と、
前記第２プログラム及び前記第３プログラムの内、前記プログラム判定過程で正しいと判定されたプログラムをコピー元プログラムとして決定し、前記プログラム判定過程で正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定過程と、
前記コピー決定過程で決定されたコピー元プログラムで、前記コピー決定過程で決定されたコピー先プログラムを更新するコピー処理過程と、
前記コピー決定過程で決定されたコピー元プログラムを示すコピー元情報を記憶する起動記憶過程と、
前記処理実行過程が前記第１プログラムを用いて起動処理を行うことができない場合に、前記起動記憶過程で記憶されたコピー元情報を参照して、前記コピー決定過程で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行過程に指示する起動制御過程とを有し、
前記処理実行過程は、前記起動制御過程からの指示に従って、前記第２プログラム又は前記第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行うこと
を特徴とする情報処理方法。
【請求項８】
時間を計測する計時過程をさらに有し、
前記起動制御過程は、前記計時過程において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行過程が予め定められた処理を完了していない場合に、前記処理実行過程が前記第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定過程で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行過程に指示すること
を特徴とする請求項７に記載の情報処理方法。
【請求項９】
時間を計測する計時過程をさらに有し、
前記起動制御過程は、前記計時過程において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行過程が予め定められた処理を完了できない状態が、予め定められた第１の回数連続して生じた場合に、前記処理実行過程が前記第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定過程で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行過程に指示すること
を特徴とする請求項７に記載の情報処理方法。
【請求項１０】
前記起動制御過程からの指示に従って、前記処理実行過程が前記起動記憶過程で記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行っている際に、前記計時過程において計測された、前記起動処理を開始してからの時間が前記予め定められた閾値を超える前に前記処理実行過程が前記予め定められた処理を完了できない状態が、予め定められた第２の回数連続して生じた場合に、前記起動制御過程は、故障と判断し、
前記起動制御過程が故障と判断した場合に、警告を行う故障警告過程をさらに有すること
を特徴とする請求項９に記載の情報処理方法。
【請求項１１】
前記プログラム判定過程が、前記第２プログラム及び前記第３プログラムの両方が正しくないと判定した場合に、警告を行う故障警告過程をさらに有すること
を特徴とする請求項７から９の何れか一項に記載の情報処理方法。
【請求項１２】
コンピュータを、
起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムを記憶する記憶手段、
前記記憶手段に記憶されている第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、当該選択されたプログラムを用いて起動処理を行う処理実行手段、
前記記憶手段に記憶されている第２プログラム及び第３プログラムが、それぞれ正しいか否かを判定するプログラム判定手段、
前記記憶手段に記憶されている第２プログラム及び第３プログラムの内、前記プログラム判定手段で正しいと判定されたプログラムをコピー元プログラムとして決定し、前記プログラム判定手段で正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定手段、
前記記憶手段において、前記コピー決定手段で決定されたコピー元プログラムで、前記コピー決定手段で決定されたコピー先プログラムを更新するコピー処理手段、
前記コピー決定手段で決定されたコピー元プログラムを示すコピー元情報を記憶する起動記憶手段、
前記処理実行手段が前記記憶手段に記憶されている第１プログラムを用いて起動処理を行うことができない場合に、前記起動記憶手段に記憶されているコピー元情報を参照して、前記コピー決定手段で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行手段に指示する起動制御手段として機能させ、
前記処理実行手段は、前記起動制御手段からの指示に従って、前記記憶手段に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行うこと
を特徴とするプログラム。
【請求項１３】
コンピュータを、
起動用のアプリケーションプログラムとしての、第１プログラム、第２プログラム及び第３プログラムを記憶する記憶手段、
前記記憶手段に記憶されている第１プログラム、第２プログラム及び第３プログラムの何れかを選択して、当該選択されたプログラムを用いて起動処理を行う処理実行手段、
前記記憶手段に記憶されている第２プログラム及び第３プログラムが、それぞれ正しいか否かを判定するプログラム判定手段、
前記記憶手段に記憶されている第２プログラム及び第３プログラムの内、前記プログラム判定手段で正しいと判定されたプログラムをコピー元プログラムとして決定し、前記プログラム判定手段で正しいと判定されなかったプログラムをコピー先プログラムとして決定するコピー決定手段、
前記記憶手段において、前記コピー決定手段で決定されたコピー元プログラムで、前記コピー決定手段で決定されたコピー先プログラムを更新するコピー処理手段、
前記処理実行手段が前記記憶手段に記憶されている第１プログラムを用いて起動処理を行うことができない場合に、前記コピー決定手段で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行手段に指示する起動制御手段として機能させ、
前記記憶手段は、前記コピー決定手段で決定されたコピー元プログラムを示すコピー元情報をさらに記憶し、
前記起動制御手段は、前記記憶手段に記憶されているコピー元情報を参照して、前記コピー決定手段で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行手段に指示し、
前記処理実行手段は、前記起動制御手段からの指示に従って、前記記憶手段に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行うこと
を特徴とするプログラム。
【請求項１４】
前記コンピュータを、時間を計測する計時手段としてさらに機能させ、
前記起動制御手段は、前記計時手段において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行手段が予め定められた処理を完了していない場合に、前記処理実行手段が前記記憶手段に記憶されている第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定手段で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行手段に指示すること
を特徴とする請求項１２又は１３に記載のプログラム。
【請求項１５】
前記コンピュータを、時間を計測する計時手段としてさらに機能させ、
前記起動制御手段は、前記計時手段において計測された、前記起動処理を開始してからの時間が予め定められた閾値を超える前に、前記処理実行手段が予め定められた処理を完了できない状態が、予め定められた第１の回数連続して生じた場合に、前記処理実行手段が前記記憶手段に記憶されている第１プログラムを用いて起動処理を行うことができないと判断して、前記コピー決定手段で決定されたコピー元プログラムを選択して起動処理を行うように前記処理実行手段に指示すること
を特徴とする請求項１２又は１３に記載のプログラム。
【請求項１６】
前記起動制御手段からの指示に従って、前記処理実行手段が前記記憶手段に記憶されている第２プログラム又は第３プログラムを選択して、当該選択されたプログラムを用いて起動処理を行っている際に、前記計時手段において計測された、前記起動処理を開始してからの時間が前記予め定められた閾値を超える前に前記処理実行手段が前記予め定められた処理を完了できない状態が、予め定められた第２の回数連続して生じた場合に、前記起動制御手段は、故障と判断し、
前記コンピュータを、前記起動制御手段が故障と判断した場合に、警告を行う故障警告手段としてさらに機能させること
を特徴とする請求項１５に記載のプログラム。
【請求項１７】
前記コンピュータを、前記プログラム判定手段が、前記記憶手段に記憶されている第２プログラム及び第３プログラムの両方が正しくないと判定した場合に、警告を行う故障警告手段としてさらに機能させること
を特徴とする請求項１２から１５の何れか一項に記載のプログラム。
【国際調査報告】
2014109100.tif 000014
2014109100.tif 000015
2014109100.tif 000016
2014109100.tif 000017