説明

リカバリー制御装置、制御方法、プログラム及びコンピュータ読み取り可能な記憶媒体

【課題】フラッシュROMの破壊時、対応を待つ間のデッドタイムを短縮する。
【解決手段】フラッシュROM2を論理的に上位ビット領域と下位ビット領域に分割し、同一データとする。ROM2の最上位アドレス信号をスイッチSWで切り替えることで各領域を論理的に入れ換えることができる。CPU1にSWより反転・非反転選択信号BOOT_RESCUEを入力する。主電源ONによりブートが開始され、SWオフではROM2の最上位アドレス信号A21は非反転で、上位ビット領域よりブートが開始される。SWオンではA21が反転されて下位ビット領域よりブートが開始される。CPU1はBOOT_RESCUEが1であれば、通常のシステム起動処理を実行する。BOOT_RESCUEが0であれば、ROM2に問題が発生したのでSWを操作する。この場合は下位ビット領域のデータを上位ビット領域に全てコピーして上位ビット領域を修復する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像形成装置等において、フラッシュROM等の不揮発メモリに保存されるブートプログラムの破壊時のリカバリー制御装置、制御方法、この制御方法をコンピュータが実行するためのプログラム及びこのプログラムを記憶した記憶媒体に関するものである。
【背景技術】
【0002】
近年、画像形成装置のコントローラのソフトウェアは、電気的に消去・書換え可能なフラッシュROMに格納されることがほとんどである。これは、製品の正式ソフトウェアがリリースされ、製品が製造された後でも、バグフィックスや機能拡張等の新たなソフトウェアがリリースされる機会が多く、製品上でソフトウェアの書換えが可能であることの優位性に後押しされて普及したものと考えられる。
なお、本発明によるリカバリー制御装置に関する従来技術が提案されている(例えば、特許文献1,2,3参照)。
【特許文献1】特開平8−69376号公報
【特許文献2】特開2007−122151号公報
【特許文献3】特開2005−339271号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、上記のような理由で"お客様先"のようなフィールドにおいても、ソフトウェアの書換え作業が行われる機会が多く、書換え中の停電や不用意な電源OFF等により書換えに失敗するという事故が発生することがあった。その場合、書換え失敗によりソフトウェアのブートエリアが壊れてしまうと、以降は電源ONを行っても立ち上げることができず、また、ソフトの再書込みもできなくなる。そのような場合、コントローラボード自体の交換、もしくはソフトウェアを書込んであるフラッシュROMに貼り替える以外に手段はなく、マシンのデッドタイムの増大に至る結果となる。
また、ソフトの暴走によるブートエリア書換えや、フラッシュROM自体のデータ化け等の可能性も皆無ではなく、そのような事態が発生すると、ソフトウェアの書換え失敗と同様、電源ONを行っても立ち上げることができず、また、ソフトの再書込みもできなくなる。また、ユーザでは修復不可能なことが一般的であり、サービスマンによる修復まで機器が使用できなくなり、マシンのデッドタイムの増大に至る結果となる。
【0004】
特許文献1で提案されるBIOSの書き換え制御回路は、フラッシュROMの最上位アドレス信号を反転させる切り替え回路を有し、論理的にフラッシュROMの空間を2分割する。このようにすることで、BIOSの更新時、BIOS基本部が書込まれている方は残したまま、もう一方にBIOS基本部の書込みを行うため、仮に書込みに失敗しても元々書込まれていたBIOS基本部は残っているので、起動を行うことが可能で、再書込みも可能となる。しかし、2分割したブロックに書込むデータは、BIOS基本部、BIOS拡張部と別体で本発明のように2重化ではなく、本発明とは特に関係はない。
【0005】
また、特許文献2で提案されるブート制御装置およびブート制御方法は、ブートプログラムが書込まれているフラッシュROMを2個設け、2つのフラッシュROMを完全に2重化する。一方のフラッシュROMからのシステムの起動時、所定の時間が経過しても正常に起動しない場合には、もう一方のフラッシュROMから起動を開始することで、ブートプログラムが破壊されていても起動することを可能としている。この技術は2つのフラッシュROMにて2重化しており、また、正常に立ち上がったかどうかの判断や、修復の是非にはユーザの意思が介在せず、本発明とは別の技術である。
特許文献3は、画像形成装置で用いられるカード型メモリに関するものであり、本発明とは関係がない。
本発明は、上記のような問題を解決するもので、ブートプログラム破壊時におけるマシンのデッドタイムを軽減することを目的とする。
【課題を解決するための手段】
【0006】
請求項1の発明によるリカバリー制御装置は、ブートプログラムを格納し、メモリ空間を論理的に上位ビット領域と下位ビット領域とに2分割し、各ビット領域に同一データを格納する不揮発メモリと、前記不揮発メモリの最上位アドレス信号を反転・非反転させて前記各ビット領域を論理的に入れ換え可能にする選択手段と、前記選択手段の状態を検出する検出手段と、電源ONによるソフトウェア起動時に、前記選択手段が非反転を選択したことを前記検出手段が検出した場合は、通常のシステム起動を行い、前記選択手段が反転を選択したことを前記検出手段が検出した場合は、前記下位ビット領域の全データを前記上位ビット領域の全領域にコピーする制御手段とを設けたことを特徴とすものである。
【0007】
請求項2の発明によるリカバリー制御装置は、ブートプログラムを格納し、メモリ空間を論理的に上位ビット領域と下位ビット領域とに2分割し、各ビット領域に同一データを格納した不揮発メモリと、前記不揮発メモリの最上位アドレス信号を反転・非反転させて前記各ビット領域を論理的に入れ換え可能にする選択手段と、前記選択手段の状態を検出する検出手段と、電源ONによるソフトウェア起動時に、前記選択手段が非反転を選択したことを前記検出手段が検出した場合は、通常のシステム起動を行い、前記選択手段が反転を選択したことを前記検出手段が検出した場合は、前記上位ビット領域を構成する全てのブロックと前記下位ビット領域を構成する全てのブロックについてブロック単位でSUM値を計算し、前記上位ビット領域のブロックと前記下位ビット領域のブロックのSUM値が一致しないとき、その下位ビット領域のブロックのデータを上位ビット領域のブロックにコピーする制御手段とを設けたことを特徴とするものである。
【0008】
請求項3の発明によるリカバリー制御装置は、請求項1において、前記選択手段が反転を選択したことを前記検出手段が検出した場合に、前記制御手段に前記コピーを行わせるか、前記通常のシステム起動を行わせるかをユーザが選択して入力する入力手段を設けたことを特徴とするものである。
【0009】
請求項4の発明によるリカバリー制御装置は、請求項2において、前記第1の選択手段が反転を選択したことを前記検出手段が検出した場合に、前記制御手段に前記SUM値を用いたコピーを行わせるか、前記通常のシステム起動を行わせるかをユーザが選択して入力させる入力手段を設けたことを特徴とするものである。
【0010】
請求項5の発明によるリカバリー制御装置は、請求項1又は2において、前記制御手段は、前記通常のシステム起動をした後、CPU処理の負荷が軽い時にバックグラウンドで、前記上位ビット領域を構成する全てのブロックと下位ビット領域を構成する全てのブロックについてブロック単位でSUM値を計算し、前記上位ビット領域のブロックと前記下位ビット領域のブロックのSUM値が一致しないとき、内部エラーを記録すると共に、正規のSUM値を用いて上位ビット領域のブロックと下位ビット領域のブロックのどちらが正しいのかを判別し、正しい方のブロックのデータを誤った方のブロックにコピーすることを特徴とするものである。
【0011】
請求項6の発明によるリカバリー制御装置は、請求項1から5において、前記制御手段は、前記通常のシステム起動時に、前記上位ビット領域と下位ビット領域のバージョンチェックを行い、下位ビット領域のバージョンが上位ビット領域より古いバージョンの場合、バックグラウンドで上位ビット領域のデータを下位ビット領域にコピーすることを特徴とするものである。
【0012】
請求項7の発明によるリカバリー制御装置は、請求項1又は2において、パワーオンリセット解除後、前記制御手段から一定期間内にアクセスが無かった場合にアドレスを反転させると共に、リセット出力を発生する監視手段を設け、電源ONによるソフトウェア起動時、前記制御手段が前記監視手段にアクセスするようになし、前記一定期間内に前記アクセスが無かった場合に、前記監視手段が前記不揮発メモリの前記最上位アドレス信号を反転させ、リセット出力を発生することにより、システムを起動することを特徴とするものである。
【0013】
請求項8の発明によるリカバリー制御方法は、不揮発メモリにブートプログラムを格納し、メモリ空間を論理的に上位ビット領域と下位ビット領域とに2分割して各ビット領域に同一データを格納し、前記不揮発メモリの最上位アドレス信号を反転・非反転させることにより、前記各ビット領域を論理的に入れ換え可能になし、前記反転又は非反転の状態を検出するようになし、電源ONによるソフトウェア起動時に、前記非反転状態を検出した場合は、通常のシステム起動を行い、前記反転状態を検出した場合は、前記下位ビット領域の全データを前記上位ビット領域の全領域にコピーすることを特徴とするものである。
【0014】
請求項9の発明によるリカバリー制御方法は、不揮発メモリにブートプログラムを格納し、メモリ空間を論理的に上位ビット領域と下位ビット領域とに2分割して各ビット領域に同一データを格納し、前記不揮発メモリの最上位アドレス信号を反転・非反転させることにより、前記各ビット領域を論理的に入れ換え可能になし、前記反転又は非反転の状態を検出するようになし、電源ONによるソフトウェア起動時に、前記非反転状態を検出した場合は、通常のシステム起動を行い、前記反転状態を検出した場合は、前記上位ビット領域を構成する全てのブロックと前記下位ビット領域を構成する全てのブロックについてブロック単位でSUM値を計算し、前記上位ビット領域のブロックと前記下位ビット領域のブロックのSUM値が一致しないとき、その下位ビット領域のブロックのデータを上位ビット領域のブロックにコピーすることを特徴とするものである。
【0015】
請求項10の発明によるリカバリー制御方法は、請求項8において、前記反転状態を検出した場合に、前記コピーを行わせるか、前記通常のシステム起動を行わせるかをユーザに選択させることを特徴とするものである。
【0016】
請求項11の発明によるリカバリー制御方法は、請求項9において、前記反転状態を選択したことを検出した場合に、前記SUM値を用いたコピーを行わせるか、前記通常のシステム起動を行わせるかをユーザに選択させることを特徴とするものである。
【0017】
請求項12の発明によるリカバリー制御方法は、請求項10において、前記通常のシステム起動をした後、CPU処理の負荷が軽い時にバックグラウンドで、前記上位ビット領域を構成する全てのブロックと下位ビット領域を構成する全てのブロックについてブロック単位でSUM値を計算し、前記上位ビット領域のブロックと前記下位ビット領域のブロックのSUM値が一致しないとき、内部エラーを記録すると共に、正規のSUM値を用いて上位ビット領域のブロックと下位ビット領域のブロックのどちらが正しいのかを判別し、正しい方のブロックのデータを誤った方のブロックにコピーすることを特徴とするものである。
【0018】
請求項13の発明によるリカバリー制御方法は、請求項8から12において、前記通常のシステム起動時に、前記上位ビット領域と下位ビット領域のバージョンチェックを行い、下位ビット領域のバージョンが上位ビット領域より古いバージョンの場合、バックグラウンドで上位ビット領域のデータを下位ビット領域にコピーすることを特徴とするものである。
【0019】
請求項14の発明によるリカバリー制御方法は、請求項8又は9において、パワーオンリセット解除後、CPUから一定期間内にアクセスが無かった場合にアドレスを反転させると共に、リセット出力を発生するようになし、電源ONによるソフトウェア起動時、前記一定期間内に前記アクセスが無かった場合に、前記不揮発メモリの前記最上位アドレス信号を反転させ、リセット出力を発生することにより、システムを起動することを特徴とするものである。
【0020】
請求項15の発明によるプログラムは請求項8から14の何れかに記載されたリカバリー制御方法をコンピュータに実行させるものである。
【0021】
請求項16の発明によるコンピュータ読み取り可能な記憶媒体は、請求項15記載のプログラムを記憶したものである。
【発明の効果】
【0022】
本発明によれば、不揮発メモリを論理的に2分割すると共に、分割した各領域を完全に2重化することにより、ソフトのバージョンアップやメモリのデータ化け等が発生した場合に選択手段を切り替えることにより、破壊されている領域に他方の領域からコピーすることで修復を行うができるので、マシンのデッドタイムを短縮することができる。
【発明を実施するための最良の形態】
【0023】
以下、本発明の実施の形態を図面と共に説明する。
図1は第1の実施の形態によるリカバリー制御装置を示す。
図1において、CPU1、スイッチSW及びNOR回路3は、ブートプログラムが格納された不揮発メモリとしてのフラッシュROM2のブート時のリカバリー動作を制御する。この回路は、フラッシュROM2の最上位アドレス信号(この例では4MB容量、×16bitデータ幅なので、A21)を、スイッチSWにより反転・非反転を選択できるように構成されている。
【0024】
図2(a)に示すように、フラッシュROM2のメモリ空間は、論理的に上位ビット領域と下位ビット領域の2つの領域に分割されている。分割した2つの領域の一方をBoot Block4と称し、他方をRecovery Block5と称するものとする。本実施の形態では、このBoot Block4とRecovery Block5とを完全に同一データとすることで2重化している。
上記構成によれば、フラッシュROM2の最上位アドレス信号をスイッチSWを切り替えることにより、各ビット領域を論理的に入れ換えることができる。
【0025】
最上位アドレス信号が反転・非反転どちらの状態であるかをCPU1に認識させるために、CPU1のIOポートに、SWからの反転・非反転選択信号BOOT_RESCUEを入力する構成とする。SWオンによるアドレス信号反転時をRescueモード、SWオフによる非反転時をNormalモードとする。
【0026】
図3は上記構成よる起動時の動作を示すフローチャートである。
主電源ONによる起動時、ブートベクタよりブートが開始される(ステップS1、以下ステップ略)。SWがオフの時はフラッシュROM2の最上位アドレス信号A21は非反転なので、Boot Block4よりブートが開始される。SWがオンの時はA21が反転されるため、Recovery Block5よりブートが開始される。ブートが開始されると、CPU1は上記選択信号BOOT_RESCUEをリードし、判断する(S2、S3)。BOOT_RESCUEが1であれば、通常のシステム起動(Normalモード)であると判断し、通常のシステム起動処理を実行する。
【0027】
BOOT_RESCUEが0の場合は、ソフトの書き換えミス等、フラッシュROM2に何らかの問題が発生したので、ユーザやサービスマン等がSWを操作してRecoveryモードを要求していると判断する。この場合はRecovery Block5のデータをBoot Block4に全てコピーする(S4)。コピーが正常に終了すると、Boot Block4の修復が完了する。そこでSWをオフし、電源ONにより正常な起動が実行される。
図2(b)にSWオン・オフによるBoot Block4とRecovery Block5の関係を示す。
【0028】
本実施の形態によれば、フラッシュROM2のソフトウェアの書換え失敗、ソフトウェアの暴走、フラッシュROM2自体のデータ化け等によってBootエリアが破壊された時は、ユーザがSWを操作することにより、自動的にRecovery Block5のデータがBoot Block4にコピーされるので、破壊されたBootエリアを自動的にリカバリーすることができる。このため、サービスマンを呼んで対応を待つ間のデッドタイムを短縮することができる。
【0029】
図4は第2の実施の形態による起動時の動作を示すフローチャートである。尚、回路構成は図1と同じである。
このフローチャートにおいても、主電源ONによるブート時(S11)に、BOOT_RESCUEをリードし、NormalモードかRecoveryモードかを判断する(S12、S13)。第1の実施の形態と同様に、Normalモードであれば、通常のシステム起動を行い、Recoveryモードであれば、Boot Block4のリカバリー処理要求と判断する。
【0030】
フラッシュROM2は複数の細かいブロックで構成され、ブロック単位で消去、書換えが可能に構成されている。本実施の形態では、第1の実施の形態のようにRecovery Block5の全領域コピーではなく、細かいブロック単位でコピーを行う。
即ち、BOOT_RESCUE=0のとき(S14)、Boot Block4、Recovery Block5の各先頭ブロックから各ブロックのSUM値をそれぞれ計算して(S15)、比較する(S16)。不一致が発生した場合は、Recovery Block5のそのブロックのデータをBoot Block4の対応するブロックにコピーする(S17)。全てのブロックに対してBoot Block4とRecovery Block5について同様の比較を行い(S18、S19、S15)、最後のブロックまで処理が終了すると、Boot Block4のリカバリー処理を完了する。そこでSWをオフし、電源ONにより正常に起動することができる。
【0031】
本実施の形態によれば、さらに全領域のコピーではなく、破壊されたブロックのみコピーを行うことにより、第1の実施の形態の動作より短い所要時間でBootエリアが自動的にリカバリーされるため、サービスマンを呼んで対応を待つ間のデッドタイムをさらに短縮することができる。
【0032】
図5は第3の実施の形態による起動時の動作を示すフローチャートである。回路構成は図1と同じである。
このフローチャートにおいても、第1,2の実施の形態と同様に、主電源ONによるブート時にBOOT_RESCUEをリードし、NormalモードかRecoveryモードかを判断する(S21、S22、S23)。Normalモードであれば通常のシステム起動を行う。
【0033】
Recoveryモードであれば、Boot Block4のリカバリー処理要求と判断する。リカバリー処理としては、まずユーザに処理の選択を入力させる。即ち、Boot Block4のリカバリーを行うか、それとも通常のシステム起動を行うかを選択させる(S24)。Boot Block4のリカバリー処理を要求されなかった場合は(S25、No)、通常のシステム起動を行い、機器を使用可能な状態に立ち上げる。このような要求は、時間のかかるリカバリー処理ではなく、とにかく早く機器を使用したいというユーザによる要求や、後にクレームとしてメーカに挙げるため異常状態を保存をしつつ、機器は使用したいというユーザによる要求が考えられる。
【0034】
一方、Boot Block4のリカバリー処理を要求された場合は(S25、Yes)、Recovery Block5のデータをBoot Block4にコピーする(S26)。正常にコピーが終了するとBoot Block4の修復を完了し、SWをオフし電源ONにより正常に起動される。
【0035】
本実施の形態によれば、第1の実施の形態の効果に加え、さらに、リカバリーを行うよりとにかくすぐに機器を使用したいというユーザの要求や、後にクレームとしてメーカに挙げるために異常状態を保存しつつ、機器は使用したいというユーザの要求に対応することができる。
【0036】
図6は第4の実施の形態による起動時の動作を示すフローチャートである。回路構成は図1と同じである。
このフローチャートにおいても、第1〜3の実施の形態と同様に、主電源ONによるブート時にBOOT_RESCUEをリードし、NormalモードかRecoveryモードかを判断する(S31、S32、S33)。Normalモードであれば通常のシステム起動を行う。
【0037】
Recoveryモードであれば、Boot Block4のリカバリー処理要求と判断する。リカバリー処理としては、ユーザに処理の選択を入力させる。即ち、Boot Block4のリカバリーを行うか、それとも通常のシステム起動を行うかを選択させる(S34)。Boot Block4のリカバリー処理を要求されなかった場合は(S33、No)、通常のシステム起動を行い、機器を使用可能な状態に立ち上げる。
【0038】
一方、Boot Block4のリカバリー処理を要求された場合は(S33、Yes)、第2の実施の形態とリカバリー処理と同様、Recovery Blockの全領域コピーではなく、細かいブロック単位でコピーを行う。即ち、BOOT_RESCUE=0のとき(S36)、Boot Block4、Recovery Block5の各先頭ブロックから各ブロックのSUM値をそれぞれ計算して(S37)、比較する(S38)。不一致が発生した場合は、Recovery Block5のそのブロックのデータをBoot Block4の対応するブロックにコピーする(S39)。全てのブロックに対してBoot Block4とRecovery Block5について同様の比較を行い(S40、S41、S37)、最後のブロックまで処理が終了すると、Boot Block4のリカバリー処理は完了する。そこでSWをオフし、電源ONにより正常に起動することができる。
【0039】
本実施の形態によれば、第3の実施の形態の効果に加え、さらに全領域のコピーではなく、破壊されたブロックのみコピーを行うことにより、第3の実施の形態による動作より短い所要時間でBootエリアが自動的にリカバリーされるため、デッドタイムを短縮することができる。
【0040】
図7は第5の実施の形態による起動時の動作を示すフローチャートである。回路構成は図1と同じである。
このフローチャートにおいても、第1〜4の実施の形態と同様に、主電源ONによるブート時にBOOT_RESCUEをリードし、NormalモードかRecoveryモードかを判断する(S51、S2、S53)。そして、Recoveryモードであると判断した場合は、上記第1〜4の実施の形態の何れかに示すリカバリー処理を行う。
【0041】
一方、Normalモードであると判断した場合、通常のシステム起動を行い、機器を使用可能な状態に起動した後、CPU1の処理の負荷が軽い時にバックグラウンドでBoot Block、Recovery Blockの整合性をチェックする。
【0042】
即ち、BOOT_RESCUE=0のとき(S54)、両ブロックの先頭ブロックよりSUM値を計算し比較する(S56)。SUM値が一致した場合は次のブロックに処理が移行し(S57)、SUM値が一致しなかった場合は内部エラーを記録する(S58)。エラーの記録は、電源OFF/ONしても消失されないような不揮発性メモリ(NVRAM)や、ハードディスクへの書込みを行うことにより、後にサービスマン等により両ブロックの不一致が発生し、リカバリー処理が行われたことを認知することができる。
【0043】
エラーを記録後、Boot Block4、Recovery Block5のリカバリー処理を開始する。まず、当該ブロックの正規のSUM値を読み出す(S59)。ここで、各ブロック毎に正規のSUM値がBoot Block4、Recovery Block5のそれぞれの領域に記録されていることが前提である。次に、読み出した正規のSUM値と先に計算したSUM値とをBoot Block4、Recovery Block5の順に比較し、計算したSUM値と読み出した正規のSUM値が一致した方を他方のブロックにコピーする(S60、S61又はS62、S63)。Boot Block4、Recovery Block5共に計算したSUM値と読み出した正規のSUM値が不一致の場合は(S62、No)、エラー発生を表示し(S64)、処理を終了する。以上の動作は、S57、S65、S55、S56により最後のブロックまで行われる。
【0044】
本実施の形態によれば、ソフトウェアの暴走やフラッシュROM自体のデータ化け等の発生がRecovery Block5や、Boot Block4であってもBootエリア外に発生した場合にも、自動的に破壊されたブロックの修復が行われるため、デッドタイムを短縮することができる。
【0045】
図8は第6の実施の形態による起動時の動作を示すフローチャートである。回路構成は図1と同じである。
第1〜5の実施の形態と同様に、主電源ONによるブート時にBOOT_RESCUEをリードし、NormalモードかRecoveryモードかを判断し(S71、S72、S73)、Recoveryモードであると判断した場合、第1〜4の実施の形態の何れかのリカバリー処理を行う。
【0046】
一方、Normalモードであると判断した場合は、通常のシステム起動を行い、機器を使用可能な状態に起動した後、CPU1の処理の負荷が軽い時にバックグラウンドでBoot Block4、Recovery Block5に書込まれているソフトウェアのバージョンを読出し(S74)、比較する(S75)。Boot Block4に書込まれているソフトバージョンとRecovery Blockに書込まれているソフトバージョンが一致している場合は、Recovery Blockの更新処理は不要と判断し、通常の処理を継続する。
【0047】
一方、Recovery Block5に書込まれているソフトバージョンの方がBoot Blockに書込まれているソフトバージョンよりも古い場合は、Recovery Block5の更新処理が必要と判断し、Boot Block4の全領域をRecovery Blockにコピーする(S76)。コピーが正常に終了すると通常の処理を継続する。
上記の制御を行うことで、サービスマン等によりソフトのバージョンアップ作業においてBoot Block、Recovery Blockを意識する必要が排除され、また、サービスマンによるソフトのバージョンアップはBoot Blockのみに処置すればよく、作業時間を短縮することができる。
【0048】
本実施の形態によれば、フラッシュROMを上位・下位に完全に2重化する場合、2つのブロックでバージョンの不一致が発生した場合や、サービスマンによるソフトバージョンアップ時に2重化している両方のブロックをバージョンアップしなければならず、作業時間の増大を招くという問題が発生するが、2重化している二つのブロックにバージョン不一致が発生しても自動的に一致させ、また、サービスマンがバージョンアップ時に行う作業をBoot Blockのみのバージョンアップとすることが可能となり、作業時間の短縮を図ることができる。
【0049】
図9は第7の実施の形態によるブート制御装置を示すブロック図であり、図1と対応する部分には同一番号を付して重複する説明は省略する。
本実施の形態は、図1の回路構成に監視回路6を追加したものである。監視回路6は、パワーオンリセット回路7によるパワーオンリセット解除後、CPU1から一定期間アクセスがなければフラッシュROM2への最上位アドレスを反転させると共に、リセット出力を行うものである。
【0050】
図10に監視回路の構成例を示す。
この監視回路7は、フラッシュROM2への最上位アドレス信号を反転/非反転させるアドレス反転回路(ADDRESS反転回路)8、タイマ(TIMER)9、それらを制御する制御部10と、監視回路7自体をリセットするパワーオンリセット器11からなる。inv/noninv#信号はアドレスの反転/非反転を制御する信号で、初期値はnoninv(非反転)である。また、start信号はタイマの起動信号、clear信号は、タイマのストップ#とクリア、timeup信号は所定の時間が経過したことを示す信号である。
【0051】
上記構成による監視回路6の動作について説明する。
パワーオンリセット回路6によるパワーオンリセット解除後、タイマ9を起動する。タイマ8からtimeup信号がアサートする前にCPU1からACCESS信号のアサートがあった場合は、タイマ9を停止し、監視回路6の動作は停止する。
【0052】
一方、タイマ9からtimeup信号がアサートするまでに、CPU1からのACCESS信号アサートがなかった場合は、clear信号をアサートしてタイマ8を停止・クリアし、ADDRESS反転回路8へのinv/noninv#信号を制御(反転)することにより、フラッシュROM2への最上位アドレス信号を反転すると同時にリセット信号をCPU1、監視回路6に出力する。このリセット出力は、システムのパワーオンリセット回路7にワイヤードORしているため、監視回路6のリセット出力解除後、最上位アドレス信号を反転させた状態で起動を開始する。
【0053】
以降の監視回路6の動作としては、システムのパワーオンリセット解除後と同様にタイマ9を起動し、time up前にACCESS信号のアサートがあった場合は、タイマ8を停止し、監視回路6の動作は終了する。また、time up前にACCESS信号のアサートがなかった場合についても、既にアドレス非反転と反転の両方を行っているため、監視回路6の動作を停止する。このとき、アドレスの反転・非反転共に正常に起動しなかったことを示すために、LED点灯等の出力信号を設けてもよい。
【0054】
図11は本実施の形態の動作を示すフローチャートである。
主電源ONにてシステムのブートが開始され(S81)、各デバイスの初期設定等が行われる。その後、監視回路7のACCESSポートに接続されているCPU1のIOポート2から出力されるACCESS信号をアサートする(S82)。このような処理を行うことで、システムが正常に起動したことを監視回路6に認識させる。続いてBOOT_RESCUEをリードする(S83)。ここでBOOT_RESCUEが0であれば(S82、No)、Normalモードであると判断し、通常のシステム起動処理が行われる。監視回路6はACCESSポートへの信号アサートにより既に停止しており、システムは正常な起動状態となる。
【0055】
BOOT_RESCUEが1であれば、既に監視回路6により一度アドレスを反転させて再起動が行われていることになり、Boot Block4にブートプログラムの破壊等、問題が発生していることになる。ソフト処理としては、特に監視回路6の挙動を意識する必要は無く、BOOT_RESCUEが1であることからRecoveryモードであると判断し、第1〜4の実施の形態の何れかのリカバリー処理を行えばよい(S84)。
【0056】
本実施の形態によれば、第1〜4の実施の形態で述べたBootエリアの破壊時、ユーザがスイッチSWを操作する必要がなく、自動的にRecoveryモードとして再起動することができるので、ユーザの負荷を低減させることができる。
【0057】
本実施の形態によれば、パワーオンリセット入力とリセット出力、タイマ、アドレス反転回路とアドレス反転・非反転選択信号から成り、パワーオンリセット解除後、一定期間内にアクセスが無かった場合にアドレスを反転させリセット出力を発生する監視回路を6を設け、電源ONによるソフトウェア起動時、必ず監視回路にアクセスする制御とすることで、何らかの問題でシステムが正常に起動しなかった場合、一定期間内に監視回路にアクセスでなくなり、自動的に監視回路がフラッシュROMの最上位アドレス信号を反転させ、リセット出力を発生させることでシステムを起動するように構成したので、第1〜4の実施の形態で述べたBootエリアの破壊時、ユーザがスイッチSWを操作する必要がなく、自動的にRecoveryモードとして再起動することができるので、ユーザの負荷を低減させることができる。
【0058】
尚、上述した各実施の形態における各フローチャートに示す処理を、CPU1が実行するためのプログラムは本発明によるプログラムを構成する。また、このプログラムを記録する記憶媒体は、本発明によるコンピュータ読み取り可能な記憶媒体を構成する。この記憶媒体としては、半導体記憶装置や光学的及び/又は磁気的な記憶装置等を用いることができる。このようなプログラム及び記憶媒体を、前述した実施の形態とは異なる構成の装置やシステム等で用い、そこのCPUで上記プログラムを実行させることにより、本発明と実質的に同じ効果を得ることができる。
【0059】
上記の実施形態によれば、さらに破壊されている全領域コピーするのではなく、破壊された一部をコピーすることにより、マシンのデッドタイムをさらに短縮することできる。
【0060】
さらに、不揮発メモリのデータの破壊時、電源ONによるソフトウェア起動時に、前記非反転状態を検出した場合は、通常のシステム起動を行い、前記反転状態を検出した場合は修復するか、それともそのままシステムを起動するかをユーザに選択させるようにしたので、時間のかかるリカバリーよりもすぐに機器を使用したいユーザの要求に応えることができる。
【0061】
ユーザが修復を選択した場合に要する時間をさらに短くすることができ、マシンのデッドタイムをさらに短縮することができる。
【0062】
通常に起動した場合でも2重化した両領域の比較を行うことで、書込まれているソフトの整合性をチェックすることができ不揮発メモリのデータ化け等が発生した場合でも自動的に修復が可能となり、システムの信頼性が向上する。
【0063】
さらに通常に起動した場合に2重化した両ビット領域に書込まれているソフトのバージョンをチェックし、自動的に両ブロックのソフトバージョンを合わせるように処理されることで、サービスマンによるソフトのバージョンアップ作業は片方の領域のみに行うことで済み、サービスマンの作業時間の短縮を図ることができる。
【0064】
さらに正常に起動しなかった場合に最上位アドレスを反転させ、リセットを発生させる監視手段を設けることで、何らかの問題でシステムが正常に起動しなかった場合でも、2重化した領域から自動的に起動するため、ユーザの負荷を低減させることができる。
【0065】
また、本発明によるリカバリー制御方法をコンピュータを用いて行うことができる。
【図面の簡単な説明】
【0066】
【図1】本発明の第1〜第6の実施の形態によるリカバリー制御装置を示す回路図である。
【図2】フラッシュROMの実施の形態を示す構成図である。
【図3】第1の実施の形態の動作を示すフローチャートである。
【図4】第2の実施の形態の動作を示すフローチャートである。
【図5】第3の実施の形態の動作を示すフローチャートである。
【図6】第4の実施の形態の動作を示すフローチャートである。
【図7】第5の実施の形態の動作を示すフローチャートである。
【図8】第6の実施の形態の動作を示すフローチャートである。
【図9】本発明の第7の実施の形態によるリカバリー制御装置を示す回路図である。
【図10】図9における監視回路を示す構成図である。
【図11】第7の実施の形態の動作を示すフローチャートである。
【符号の説明】
【0067】
1 CPU
2 フラッシュROM
3 NOR回路
SW スイッチ
6 パワーオンリセット回路
7 監視回路
8 ADDRESS反転回路
9 タイマ

【特許請求の範囲】
【請求項1】
ブートプログラムを格納し、メモリ空間を論理的に上位ビット領域と下位ビット領域とに2分割し、各ビット領域に同一データを格納する不揮発メモリと、
前記不揮発メモリの最上位アドレス信号を反転・非反転させて前記各ビット領域を論理的に入れ換え可能にする選択手段と、
前記選択手段の状態を検出する検出手段と、
電源ONによるソフトウエア起動時に、前記選択手段が非反転を選択したことを前記検出手段が検出した場合は、通常のシステム起動を行い、前記選択手段が反転を選択したことを前記検出手段が検出した場合は、前記下位ビット領域の全データを前記上位ビット領域の全領域にコピーする制御手段とを設けたことを特徴とするリカバリー制御装置。
【請求項2】
ブートプログラムを格納し、メモリ空間を論理的に上位ビット領域と下位ビット領域とに2分割し、各ビット領域に同一データを格納した不揮発メモリと、
前記不揮発メモリの最上位アドレス信号を反転・非反転させて前記各ビット領域を論理的に入れ換え可能にする選択手段と、
前記選択手段の状態を検出する検出手段と、
電源ONによるソフトウエア起動時に、前記選択手段が非反転を選択したことを前記検出手段が検出した場合は、通常のシステム起動を行い、前記選択手段が反転を選択したことを前記検出手段が検出した場合は、前記上位ビット領域を構成する全てのブロックと前記下位ビット領域を構成する全てのブロックについてブロック単位でSUM値を計算し、前記上位ビット領域のブロックと前記下位ビット領域のブロックのSUM値が一致しないとき、その下位ビット領域のブロックのデータを上位ビット領域のブロックにコピーする制御手段とを設けたことを特徴とするリカバリー制御装置。
【請求項3】
前記選択手段が反転を選択したことを前記検出手段が検出した場合に、前記制御手段に前記コピーを行わせるか、前記通常のシステム起動を行わせるかをユーザが選択して入力する入力手段を設けたことを特徴とする請求項1記載のリカバリー制御装置。
【請求項4】
前記第1の選択手段が反転を選択したことを前記検出手段が検出した場合に、前記制御手段に前記SUM値を用いたコピーを行わせるか、前記通常のシステム起動を行わせるかをユーザが選択して入力させる入力手段を設けたことを特徴とする請求項2記載のリカバリー制御装置。
【請求項5】
前記制御手段は、前記通常のシステム起動をした後、CPU処理の負荷が軽い時にバックグラウンドで、前記上位ビット領域を構成する全てのブロックと下位ビット領域を構成する全てのブロックについてブロック単位でSUM値を計算し、前記上位ビット領域のブロックと前記下位ビット領域のブロックのSUM値が一致しないとき、内部エラーを記録すると共に、正規のSUM値を用いて上位ビット領域のブロックと下位ビット領域のブロックのどちらが正しいのかを判別し、正しい方のブロックのデータを誤った方のブロックにコピーすることを特徴とする請求項1又は2記載のリカバリー制御装置。
【請求項6】
前記制御手段は、前記通常のシステム起動時に、前記上位ビット領域と下位ビット領域のバージョンチェックを行い、下位ビット領域のバージョンが上位ビット領域より古いバージョンの場合、バックグラウンドで上位ビット領域のデータを下位ビット領域にコピーすることを特徴とする請求項1から5の何れか1項記載のリカバリー制御装置。
【請求項7】
パワーオンリセット解除後、前記制御手段から一定期間内にアクセスが無かった場合にアドレスを反転させると共に、リセット出力を発生する監視手段を設け、電源ONによるソフトウエア起動時、前記制御手段が前記監視手段にアクセスするようになし、前記一定期間内に前記アクセスが無かった場合に、前記監視手段が前記不揮発メモリの前記最上位アドレス信号を反転させ、リセット出力を発生することにより、システムを起動することを特徴とする請求項1又は2記載のリカバリー制御装置。
【請求項8】
不揮発メモリにブートプログラムを格納し、メモリ空間を論理的に上位ビット領域と下位ビット領域とに2分割して各ビット領域に同一データを格納し、
前記不揮発メモリの最上位アドレス信号を反転・非反転させることにより、前記各ビット領域を論理的に入れ換え可能になし、
前記反転又は非反転の状態を検出するようになし、
電源ONによるソフトウエア起動時に、前記非反転状態を検出した場合は、通常のシステム起動を行い、前記反転状態を検出した場合は、前記下位ビット領域の全データを前記上位ビット領域の全領域にコピーすることを特徴とするリカバリー制御方法。
【請求項9】
不揮発メモリにブートプログラムを格納し、メモリ空間を論理的に上位ビット領域と下位ビット領域とに2分割して各ビット領域に同一データを格納し、
前記不揮発メモリの最上位アドレス信号を反転・非反転させることにより、前記各ビット領域を論理的に入れ換え可能になし、
前記反転又は非反転の状態を検出するようになし、
電源ONによるソフトウエア起動時に、前記非反転状態を検出した場合は、通常のシステム起動を行い、前記反転状態を検出した場合は、前記上位ビット領域を構成する全てのブロックと前記下位ビット領域を構成する全てのブロックについてブロック単位でSUM値を計算し、前記上位ビット領域のブロックと前記下位ビット領域のブロックのSUM値が一致しないとき、その下位ビット領域のブロックのデータを上位ビット領域のブロックにコピーすることを特徴とするリカバリー制御方法。
【請求項10】
前記反転状態を検出した場合に、前記コピーを行わせるか、前記通常のシステム起動を行わせるかをユーザに選択させることを特徴とする請求項8記載のリカバリー制御方法。
【請求項11】
前記反転状態を選択したことを検出した場合に、前記SUM値を用いたコピーを行わせるか、前記通常のシステム起動を行わせるかをユーザに選択させることを特徴とする請求項9記載のリカバリー制御方法。
【請求項12】
前記通常のシステム起動をした後、CPU処理の負荷が軽い時にバックグラウンドで、前記上位ビット領域を構成する全てのブロックと下位ビット領域を構成する全てのブロックについてブロック単位でSUM値を計算し、前記上位ビット領域のブロックと前記下位ビット領域のブロックのSUM値が一致しないとき、内部エラーを記録すると共に、正規のSUM値を用いて上位ビット領域のブロックと下位ビット領域のブロックのどちらが正しいのかを判別し、正しい方のブロックのデータを誤った方のブロックにコピーすることを特徴とする請求項8又は9記載のリカバリー制御方法。
【請求項13】
前記通常のシステム起動時に、前記上位ビット領域と下位ビット領域のバージョンチェックを行い、下位ビット領域のバージョンが上位ビット領域より古いバージョンの場合、バックグラウンドで上位ビット領域のデータを下位ビット領域にコピーすることを特徴とする請求項8から12の何れか1項記載のリカバリー制御方法。
【請求項14】
パワーオンリセット解除後、CPUから一定期間内にアクセスが無かった場合にアドレスを反転させると共に、リセット出力を発生するようになし、電源ONによるソフトウエア起動時、前記一定期間内に前記アクセスが無かった場合に、前記不揮発メモリの前記最上位アドレス信号を反転させ、リセット出力を発生することにより、システムを起動することを特徴とする請求項8又は9記載のリカバリー制御方法。
【請求項15】
請求項8から14の何れか1項に記載されたリカバリー制御方法をコンピュータに実行させるプログラム。
【請求項16】
請求項15記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。

【図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


【公開番号】特開2009−151384(P2009−151384A)
【公開日】平成21年7月9日(2009.7.9)
【国際特許分類】
【出願番号】特願2007−326498(P2007−326498)
【出願日】平成19年12月18日(2007.12.18)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】