(57)【要約】      （修正有）【課題】起動用プログラムデータも更新の対象とし、さらに、フラッシュメモリへの書き込み中にリセットが発生した場合にも、正常に起動および運用を行い、かつ書き込み中であったフラッシュメモリを復旧する。【解決手段】ＣＰＵ１１は、フラッシュメモリ１２への更新用のプログラムデータの書き込み中にリセット状態になると、セレクタ１４をフラッシュメモリ１３側に切り替え、フラッシュメモリ１３の更新前のプログラムデータで起動および運用を行い、起動後にセレクタ１４をフラッシュメモリ１２側に切り替え、フラッシュメモリ１３の更新前のプログラムデータをフラッシュメモリ１２に書き込み、再度、フラッシュメモリ１２のプログラムデータの更新を行う。ＣＰＵ１１は、フラッシュメモリ１２のプログラムデータの更新が完了した後に、セレクタ１４をフラッシュメモリ１３側に切り替え、フラッシュメモリ１３のプログラムデータの更新を行う。【選択図】図１
2007220092.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２の記憶手段と、前記第１および第２の記憶手段の順序でプログラムデータの更新を行う制御手段とを有してなる情報処理装置において、
前記第１の記憶手段側または前記第２の記憶手段側に切り替えられ、切り替えられた記憶手段と前記制御手段とを接続する切替手段をさらに有し、
前記制御手段は、前記第１の記憶手段への更新用のプログラムデータの書き込み中に前記情報処理装置がリセット状態になった場合、前記切替手段を前記第２の記憶手段側に切り替え、前記第２の記憶手段の更新前のプログラムデータで前記情報処理装置を起動および運用し、起動後に前記切替手段を前記第１の記憶手段側に切り替え、前記第２の記憶手段の更新前のプログラムデータを前記第１の記憶手段に書き込み、その後、再度、前記第１の記憶手段への更新用のプログラムデータの書き込みを行う情報処理装置。
【請求項２】
前記制御手段は、前記第１の記憶手段への更新用のプログラムデータの書き込みが完了した後に、前記切替手段を前記第２の記憶手段側に切り替え、前記第２の記憶手段への更新用のプログラムデータの書き込みを行う、請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記第１または第２の記憶手段にプログラムデータを書き込んでいる間は書き込みフラグをセットし、前記情報処理装置がリセット状態にある間はリセット信号をアクティブにし、
前記切替手段は、前記書き込みフラグがセットされ、かつ前記リセット信号がアクティブであれば、自動的に切り替えを行う、請求項１または２に記載の情報処理装置。
【請求項４】
前記第１または第２の記憶手段にプログラムデータを書き込んでいる間は書き込みフラグをセットする書き込みフラグ管理手段をさらに有し、
前記制御手段は、前記情報処理装置がリセット状態にある間はリセット信号をアクティブにし、
前記切替手段は、前記書き込みフラグがセットされ、かつ前記リセット信号がアクティブであれば、自動的に切り替えを行う、請求項１または２に記載の情報処理装置。
【請求項５】
前記制御手段は、前記第１および第２の記憶手段のプログラムデータの更新時に、当該プログラムデータのチェックサムまたはＣＲＣを求めるとともに、前記情報処理装置の運用中に前記第１および第２の記憶手段のプログラムデータのチェックサムまたはＣＲＣを定期的に求め、前記第１および第２の記憶手段のいずれか一方の記憶手段において運用中に求めたチェックサムまたはＣＲＣと更新時に求めたチェックサムまたはＣＲＣとが一致しない場合、一方の記憶手段に他方の記憶手段のプログラムデータを書き込む、請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
第１および第２の記憶手段と、前記第１および第２の記憶手段の順序でプログラムデータの更新を行う制御手段とを有する情報処理装置によるプログラムデータ保護方法であって、
前記情報処理装置に、前記第１の記憶手段側または前記第２の記憶手段側に切り替えられ、切り替えられた記憶手段と前記制御手段とを接続する切替手段をさらに設け、
前記第１の記憶手段への更新用のプログラムデータの書き込み中に前記情報処理装置がリセット状態になった場合、
前記制御手段が、前記切替手段を前記第２の記憶手段側に切り替え、前記第２の記憶手段のプログラムデータで前記情報処理装置を起動および運用するステップと、
前記制御手段が、起動後に前記切替手段を前記第１の記憶手段側に切り替え、前記第２の記憶手段の更新前のプログラムデータを前記第１の記憶手段に書き込むステップと、
前記制御手段が、再度、前記第１の記憶手段への更新用のプログラムデータの書き込みを行うステップとを有するプログラムデータ保護方法。
【請求項７】
前記制御手段が、前記第１の記憶手段への更新用のプログラムデータの書き込みが完了した後に、前記切替手段を前記第２の記憶手段側に切り替え、前記第２の記憶手段への更新用のプログラムデータの書き込みを行うステップをさらに有する、請求項６に記載のプログラムデータ保護方法。
【請求項８】
前記制御手段が、前記第１または第２の記憶手段にプログラムデータを書き込んでいる間は書き込みフラグをセットし、前記情報処理装置がリセット状態にある間はリセット信号をアクティブにするステップをさらに有し、
前記切替手段が、前記書き込みフラグがセットされ、かつ前記リセット信号がアクティブであれば、自動的に切り替えを行う、請求項６または７に記載のプログラムデータ保護方法。
【請求項９】
書き込みフラグ管理手段が、前記第１または第２の記憶手段にプログラムデータを書き込んでいる間は書き込みフラグをセットするステップと、
前記制御手段が、前記情報処理装置がリセット状態にある間はリセット信号をアクティブにするステップとをさらに有し、
前記切替手段が、前記書き込みフラグがセットされ、かつ前記リセット信号がアクティブであれば、自動的に切り替えを行う、請求項６または７に記載のプログラムデータ保護方法。
【請求項１０】
前記制御手段が、前記第１および第２の記憶手段のプログラムデータの更新時に、当該プログラムデータのチェックサムまたはＣＲＣを求めるステップと、
前記制御手段が、前記情報処理装置の運用中に前記第１および第２の記憶手段のプログラムデータのチェックサムまたはＣＲＣを定期的に求めるステップと、
前記制御手段が、前記第１および第２の記憶手段のいずれか一方の記憶手段において運用中に求めたチェックサムまたはＣＲＣと更新時に求めたチェックサムまたはＣＲＣとが一致しない場合、一方の記憶手段に他方の記憶手段のプログラムデータを書き込むステップとをさらに有する、請求項６から９のいずれか１項に記載のプログラムデータ保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置におけるプログラムデータ保護方法に関する。
【背景技術】
【０００２】
従来、起動用プログラムデータで起動し、運用用プログラムデータで運用する情報処理装置がある。この種の情報処理装置においては、プログラムデータの更新処理は、特許文献１に示されているように、図７のフローチャートの流れに沿って行われる。
【０００３】
図７を参照すると、情報処理装置は、上位装置から更新用の運用用プログラムデータが転送されてくると（ステップ７０１）、転送されてきた運用用プログラムデータを２つのフラッシュメモリＡ，Ｂに順次書き込む（ステップ７０２）。
【０００４】
次に、情報処理装置は、情報処理装置をリセットし（ステップ７０３）、起動用プログラムで起動を行う（ステップ７０４）。
【０００５】
次に、情報処理装置は、フラッシュメモリＡ内の有効／無効ビットを判定し（ステップ７０５）、有効であればフラッシュメモリＡに新たに書き込まれた運用用プログラムデータで情報処理装置を運用する（ステップ７０６）。
【０００６】
一方、フラッシュメモリＡ内の有効／無効ビットが無効であれば、続いて、情報処理装置は、フラッシュメモリＢ内の有効／無効ビットを判定し（ステップ７０７）、有効であればフラッシュメモリＢに新たに書き込まれた運用用プログラムデータで情報処理装置を運用する（ステップ７０８）。
【０００７】
ただし、フラッシュメモリＡ，Ｂ内の有効／無効ビットがいずれも無効であれば、情報処理装置の運用は不可となる（ステップ７０９）。
【特許文献１】特開平１１−３２８０４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来の情報処理装置は、起動用プログラムデータが常に正常であることを前提としているため、更新の対象が運用用プログラムデータのみで、起動用プログラムデータは更新の対象になっていないという課題がある。
【０００９】
また、フラッシュメモリＡ，Ｂに起動用プログラムデータを順次書き込むこととした場合でも、一方のフラッシュメモリＡへの書き込み中にリセットが発生しフラッシュメモリＡの起動用プログラムデータが破壊されてしまうことがあり、この状態で起動時にフラッシュメモリＡを選択してしまうと、情報処理装置を正常に起動することができず、当然にその後の運用もできないという課題がある。
【００１０】
また、一方のフラッシュメモリＡの起動用プログラムデータが破壊されてしまったために、他方のフラッシュメモリＢに起動用プログラムデータを書き込むこととした場合でも、フラッシュメモリＢへの書き込み中にリセットが発生しフラッシュメモリＢの起動用プログラムデータも破壊されてしまうことがあり、この状態では起動時にフラッシュメモリＡ，Ｂのどちらを選択しても、情報処理装置を正常に起動することができず、当然にその後の運用もできないという課題がある。
【００１１】
また、プログラムデータの書き込み中のリセットによりプログラムデータが破壊されてしまったフラッシュメモリを復旧することができないという課題がある。
【００１２】
そこで、本発明の目的は、運用用プログラムデータだけでなく、起動用プログラムデータも更新の対象にすることができるとともに、フラッシュメモリへの書き込み中にリセットが発生した場合にも、情報処理装置を正常に起動および運用し、かつ書き込み中であったフラッシュメモリを復旧することができる情報処理装置、情報処理装置におけるプログラムデータ保護方法を提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するために本発明の情報処理装置は、
第１および第２の記憶手段と、前記第１および第２の記憶手段の順序でプログラムデータの更新を行う制御手段とを有してなる情報処理装置において、
前記第１の記憶手段側または前記第２の記憶手段側に切り替えられ、切り替えられた記憶手段と前記制御手段とを接続する切替手段をさらに有し、
前記制御手段は、前記第１の記憶手段への更新用のプログラムデータの書き込み中に前記情報処理装置がリセット状態になった場合、前記切替手段を前記第２の記憶手段側に切り替え、前記第２の記憶手段の更新前のプログラムデータで前記情報処理装置を起動および運用し、起動後に前記切替手段を前記第１の記憶手段側に切り替え、前記第２の記憶手段の更新前のプログラムデータを前記第１の記憶手段に書き込み、その後、再度、前記第１の記憶手段への更新用のプログラムデータの書き込みを行うことを特徴とするものである。
【００１４】
この構成によれば、第１の記憶手段のプログラムデータの更新中にリセットが発生したとしても、第２の記憶手段のプログラムデータで情報処理装置を正常に起動および運用することができるとともに、第１の記憶手段を第２の記憶手段のプログラムデータによって復旧することができる。また、更新用のプログラムデータが起動用プログラムデータであったとしても、第２の記憶手段の更新前の起動用プログラムデータで情報処理装置を起動することができるため、運用用プログラムデータだけでなく、起動用プログラムデータも更新の対象にすることができる。
【００１５】
また、前記制御手段は、前記第１の記憶手段への更新用のプログラムデータの書き込みが完了した後に、前記切替手段を前記第２の記憶手段側に切り替え、前記第２の記憶手段への更新用のプログラムデータの書き込みを行うこととしても良い。
【００１６】
この構成によれば、第１の記憶手段のプログラムデータの更新中にリセットが発生したとしても、第１の記憶手段の更新が終了するまで、第２の記憶手段のプログラムデータの更新は行わないため、第２の記憶手段のプログラムデータを保護することができる。それにより、第１および第２の記憶手段のプログラムデータが共に破壊されてしまうことを回避することができる。
【００１７】
また、前記制御手段は、前記第１または第２の記憶手段にプログラムデータを書き込んでいる間は書き込みフラグをセットし、前記情報処理装置がリセット状態にある間はリセット信号をアクティブにし、
前記切替手段は、前記書き込みフラグがセットされ、かつ前記リセット信号がアクティブであれば、自動的に切り替えを行うこととしても良い。
【００１８】
この構成によれば、書き込みフラグがセットされ、かつリセット信号がアクティブである場合、切替手段を正常な記憶手段側に自動的に切り替えることができる。
【００１９】
また、前記第１または第２の記憶手段にプログラムデータを書き込んでいる間は書き込みフラグをセットする書き込みフラグ管理手段をさらに有し、
前記制御手段は、前記情報処理装置がリセット状態にある間はリセット信号をアクティブにし、
前記切替手段は、前記書き込みフラグがセットされ、かつ前記リセット信号がアクティブであれば、自動的に切り替えを行うこととしても良い。
【００２０】
この構成によれば、書き込みフラグがセットされ、かつリセット信号がアクティブである場合、切替手段を正常な記憶手段側に自動的に切り替えることができる他、制御手段が、他の処理を実行していて書き込みフラグを制御できなくても、書き込みフラグ管理手段によって書き込みフラグを制御できる。
【００２１】
また、前記制御手段は、前記第１および第２の記憶手段のプログラムデータの更新時に、当該プログラムデータのチェックサムまたはＣＲＣを求めるとともに、前記情報処理装置の運用中に前記第１および第２の記憶手段のプログラムデータのチェックサムまたはＣＲＣを定期的に求め、前記第１および第２の記憶手段のいずれか一方の記憶手段において運用中に求めたチェックサムまたはＣＲＣと更新時に求めたチェックサムまたはＣＲＣとが一致しない場合、一方の記憶手段に他方の記憶手段のプログラムデータを書き込むこととしても良い。
【００２２】
この構成によれば、運用中に第１および第２の記憶手段を定期的にチェックしているため、第１および第２の記憶手段のプログラムデータの正常性を維持することができ、それにより情報処理装置の確実な起動を保障することができる。
【発明の効果】
【００２３】
以上説明したように本発明によれば、制御手段が、第１の記憶手段への更新用のプログラムデータの書き込み中に情報処理装置がリセット状態になった場合、第２の記憶手段のプログラムデータで情報処理装置を起動および運用し、起動後に第２の記憶手段の更新前のプログラムデータを第１の記憶手段に書き込み、その後、再度、第１の記憶手段への更新用のプログラムデータの書き込みを行う構成としている。
【００２４】
したがって、第１の記憶手段のプログラムデータの更新中にリセットが発生したとしても、第２の記憶手段のプログラムデータで情報処理装置を正常に起動および運用することができるとともに、第１の記憶手段を第２の記憶手段のプログラムデータによって復旧することができるという効果を奏する。また、更新用のプログラムデータが起動用プログラムデータであったとしても、第２の記憶手段の更新前の起動用プログラムデータで情報処理装置を起動することができるため、運用用プログラムデータだけでなく、起動用プログラムデータも更新の対象にすることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２５】
以下に、本発明を実施するための最良の形態について図面を参照して説明する。
【００２６】
（第１の実施形態）
図１を参照すると、本発明の第１の実施形態による情報処理装置１０は、上位装置２０から更新用の起動用または運用用プログラムデータが転送されてくると、転送されてきたプログラムデータへの更新を行い、更新された起動用プログラムデータで起動を行い、更新された運用用プログラムデータで運用を行う。
【００２７】
この情報処理装置１０は、ホストプロセッサなどの制御手段であるＣＰＵ１１と、起動用および運用用プログラムデータが格納される２つの記憶手段であるフラッシュメモリ１２，１３と、フラッシュメモリ１２側またはフラッシュメモリ１３側のいずれかに切り替えられ、切り替えられたフラッシュメモリとＣＰＵ１１とを接続する切替手段であるセレクタ１４と、起動用および運用用プログラムデータが一時的に格納され、展開されるＲＡＭ１５とを有している。
【００２８】
なお、詳細には、セレクタ１４は、ＣＰＵ１１とフラッシュメモリ１２，１３との間に接続されているアドレスバス、データバス、制御信号を切り替えることで、フラッシュメモリ１２側またはフラッシュメモリ１３側のいずれかへの切り替えを行っている。
【００２９】
以下、図１に示した情報処理装置１０の動作について説明する。
【００３０】
まず、セレクタ１４の動作条件について、図２を参照して説明する。
【００３１】
ＣＰＵ１１は、フラッシュメモリ１２または１３のいずれかにプログラムデータを書き込んでいる間は書き込みフラグを“Ｈ”にセットし、また、情報処理装置１０がリセット状態にある間はリセット信号をアクティブにする。例えば、情報処理装置１０がリセット状態になるのは、情報処理装置１０に何らかの不具合が発生したためにＣＰＵ１１が情報処理装置１０をリセットする場合や、情報処理装置１０の電源が切れたことで情報処理装置１０が初期起動時と同様な電源リセット状態になった場合などがある。
【００３２】
図２を参照すると、セレクタ１４は、ＣＰＵ１１内の書き込みフラグの状態とリセット信号の状態とを常時監視しており、書き込みフラグの状態とリセット信号の状態とに応じて自動的に切り替えを行う。
【００３３】
具体的には、書き込みフラグの状態が“Ｈ”で、かつリセット信号の状態がアクティブである場合は、その時点でＣＰＵ１１に接続されている一方のフラッシュメモリへのプログラムデータの書き込み中であり、かつ情報処理装置１０がリセット状態にある。この場合、書き込み中の一方のフラッシュメモリに格納されたプログラムデータがリセットにより破壊されている可能性があるため、セレクタ１４は、他方のフラッシュメモリ側に切り替わる。それにより、他方の正常なフラッシュメモリに格納された起動用および運用用プログラムデータで情報処理装置１０を起動および運用することが可能となる。
【００３４】
また、書き込みフラグの状態が“Ｌ”である場合は、書き込み中ではない。この場合、その時点でＣＰＵ１１に接続されているフラッシュメモリのプログラムデータが書き込み中のリセットにより破壊される可能性はないため、セレクタ１４は、リセット信号の状態がアクティブでも非アクティブでも切り替えを行わない。
【００３５】
また、書き込みフラグの状態が“Ｈ”であっても、リセット信号が非アクティブである場合は、その時点でＣＰＵ１１に接続されているフラッシュメモリのプログラムデータが書き込み中のリセットにより破壊される可能性はないため、セレクタ１４は、切り替えを行わない。
【００３６】
なお、セレクタ１４は、ＣＰＵ１１により強制的に切り替えられる場合もある。
【００３７】
次に、フラッシュメモリ１２および１３のプログラムデータを更新する動作について、図３および図４のフローチャートを参照して説明する。なお、本実施形態では、情報処理装置１０を電源ＯＦＦする際には、セレクタ１４をフラッシュメモリ１２側に切り替えてから電源ＯＦＦすることとし、情報処理装置１０を電源ＯＮする初期起動の際には、フラッシュメモリ１２の起動用および運用用プログラムデータで起動および運用を行うものとして説明する。また、フラッシュメモリ１２または１３のどちらのプログラムデータを先に更新するかは、ソフトウェアによる制御で任意に選択可能であるが、ここではフラッシュメモリ１２を先に更新するものとして説明する。
【００３８】
まず、フラッシュメモリ１２，１３の順序でプログラムデータを更新する場合において、フラッシュメモリ１２および１３への更新が正常に完了する場合の動作について、図３のフローチャートを参照して説明する。
【００３９】
図３を参照すると、情報処理装置１０の電源をＯＮする初期起動においては、まず、ＣＰＵ１１は、フラッシュメモリ１２の起動用および運用用プログラムデータで情報処理装置１０の起動および運用を行う（ステップ３０１）。
【００４０】
上位装置２０から更新用の起動用または運用用プログラムデータが転送されてくると（ステップ３０２）、ＣＰＵ１１は、転送されてきたプログラムデータをＲＡＭ１５に一時的に格納する。
【００４１】
次に、ＣＰＵ１１は、書き込みフラグを“Ｈ”にセットして（ステップ３０３）、上位装置２０から転送されてきたプログラムデータをＲＡＭ１５から展開し、まず、フラッシュメモリ１２への書き込みを行う（ステップ３０４）。
【００４２】
フラッシュメモリ１２への書き込みが正常に完了すると（ステップ３０５）、ＣＰＵ１１は、書き込みフラグを“Ｌ”にクリアし（ステップ３０６）、その後、情報処理装置１０をリセットする（ステップ３０７）。
【００４３】
このとき、書き込みフラグは“Ｌ”にクリアされているため、ステップ３０７でリセットが発生したとしても、図２に示したように、セレクタ１４がフラッシュメモリ１３側に切り替わることはなく、ＣＰＵ１１は、フラッシュメモリ１２の更新された新プログラムデータで情報処理装置１０の起動および運用を行うことになる（ステップ３０８）。
【００４４】
情報処理装置１０の起動後、ＣＰＵ１１は、セレクタ１４を強制的にフラッシュメモリ１３側に切り替え（ステップ３０９）、書き込みフラグを“Ｈ”にセットして（ステップ３１０）、上位装置２０から転送されてきたプログラムデータをＲＡＭ１５から展開し、続いて、フラッシュメモリ１３への書き込みを行う（ステップ３１１）。
【００４５】
フラッシュメモリ１３への書き込みが正常に完了すると（ステップ３１２）、フラッシュメモリ１２および１３のプログラムデータの更新が完了する（ステップ３１３）。
【００４６】
次に、フラッシュメモリ１２，１３の順序でプログラムデータを更新する場合において、フラッシュメモリ１２へのプログラムデータの書き込み中にリセットが発生した場合の動作について、図４のフローチャートを参照して説明する。
【００４７】
図４を参照すると、情報処理装置１０の電源をＯＮする初期起動においては、まず、ＣＰＵ１１は、フラッシュメモリ１２の起動用および運用用プログラムデータで情報処理装置１０の起動および運用を行う（ステップ４０１）。
【００４８】
上位装置２０から更新用の起動用または運用用プログラムデータが転送されてくると（ステップ４０２）、ＣＰＵ１１は、転送されてきたプログラムデータをＲＡＭ１５に一時的に格納する。
【００４９】
次に、ＣＰＵ１１は、書き込みフラグを“Ｈ”にセットして（ステップ４０３）、上位装置２０から転送されてきたプログラムデータをＲＡＭ１５から展開し、まず、フラッシュメモリ１２への書き込みを行う（ステップ４０４）。
【００５０】
ここで、フラッシュメモリ１２への書き込み中に、情報処理装置１０に何らかの不具合が発生したために、ＣＰＵ１１がリセットを掛けることで情報処理装置１０がリセット状態になるか、または、情報処理装置１０の電源が切れたことで情報処理装置１０が初期起動時と同様な電源リセット状態になったとする（ステップ４０５）。
【００５１】
このとき、書き込みフラグは“Ｈ”にセットされたままであり、また、リセットによりリセット信号はアクティブになっているため、図２に示したように、セレクタ１４がフラッシュメモリ１３側に自動的に切り替わる（ステップ４０６）。また、ＣＰＵ１１は、セレクタ１４がプログラムデータの破壊されたフラッシュメモリ１２側へ切り替わらないようにするため、リセットが解除された後に、リセット信号を非アクティブにするだけでなく、書き込みフラグを“Ｌ”にクリアすることも行う（ステップ４０７）。
【００５２】
次に、ＣＰＵ１１は、フラッシュメモリ１３の更新前の旧プログラムデータで情報処理装置１０の起動および運用を行う（ステップ４０８）。
【００５３】
このとき、書き込みフラグは“Ｌ”にクリアされているため、再度リセットが発生したとしても、図２に示したように、セレクタ１４がフラッシュメモリ１２側に切り替わることはない。そのため、ＣＰＵ１１が、フラッシュメモリ１２の破壊されたプログラムデータで情報処理装置１０の起動および運用を行うことはない。
【００５４】
情報処理装置１０の起動後、ＣＰＵ１１は、プログラムデータが破壊されているフラッシュメモリ１２を復旧させるため、フラッシュメモリ１３に格納されている更新前の旧プログラムデータを読み出してＲＡＭ１５に一時的に格納する。
【００５５】
次に、ＣＰＵ１１は、セレクタ１４を強制的にフラッシュメモリ１２側に切り替え（ステップ４０９）、書き込みフラグを“Ｈ”にセットして（ステップ４１０）、フラッシュメモリ１３から読み出した更新前の旧プログラムデータをＲＡＭ１５から展開し、フラッシュメモリ１２への書き込みを行う（ステップ４１１）。その後に正常に書き込みが完了すると、フラッシュメモリ１２の復旧が完了する（ステップ４１２）。
【００５６】
以降、ＣＰＵ１１は、一定時間経過後などの所定のタイミングで図３のステップ３０４の処理に戻り、再度、上位装置２０から転送されてきた更新用のプログラムデータのフラッシュメモリ１２への書き込みを行う。
【００５７】
なお、上記では述べていないが、図３のステップ３１１でフラッシュメモリ１３へのプログラムデータの書き込み中にリセットが発生する場合がある。しかし、この場合には、その時点ですでにフラッシュメモリ１２には新プログラムデータが格納されていることから、図４と全て同じ処理を行う必要はない。すなわち、図３のステップ３１１で書き込み中にリセットが発生した場合、ＣＰＵ１１は、リセット信号をアクティブにすることでセレクタ１４をフラッシュメモリ１２側に切り替え、書き込みフラグを“Ｌ”にクリアし、フラッシュメモリ１２の新プログラムデータで情報処理装置１０の起動および運用を行う。その後、セレクタ１４を強制的にフラッシュメモリ１３側に切り替え、書き込みフラグを“Ｈ”にセットし、図３のステップ３１１の処理に戻り、再度、上位装置２０から転送されてきたプログラムデータのフラッシュメモリ１３への書き込みを行う。
【００５８】
上述したように本実施形態においては、フラッシュメモリ１２，１３の順序で更新用のプログラムデータを書き込む場合において、フラッシュメモリ１２への更新用のプログラムデータの書き込み中にリセットが発生すると、フラッシュメモリ１３のプログラムデータで情報処理装置１０を起動および運用し、起動後にフラッシュメモリ１３の更新前のプログラムデータをフラッシュメモリ１２へ書き込み、その後、再度、フラッシュメモリ１２への更新用のプログラムデータの書き込みを行う構成としている。
【００５９】
したがって、フラッシュメモリ１２のプログラムデータの更新中にリセットが発生したとしても、フラッシュメモリ１３の更新前のプログラムデータで情報処理装置を正常に起動および運用することができるとともに、フラッシュメモリ１２をフラッシュメモリ１３の更新前のプログラムデータによって復旧することができる。また、更新用のプログラムデータが起動用プログラムデータであったとしても、フラッシュメモリ１３の更新前の起動用プログラムデータで情報処理装置を起動することができるため、運用用プログラムデータだけでなく、起動用プログラムデータも更新の対象にすることができる。
【００６０】
また、本実施形態においては、フラッシュメモリ１２，１３の順序で更新用のプログラムデータを書き込む場合において、フラッシュメモリ１２への更新用のプログラムデータの書き込み中にリセットが発生しても、フラッシュメモリ１２への書き込みが終了するまで、フラッシュメモリ１３への更新用のプログラムデータの書き込みは行わない。
【００６１】
したがって、少なくともフラッシュメモリ１３のプログラムデータを保護することができるため、フラッシュメモリ１２，１３のプログラムデータが共に破壊されてしまうことを回避することができる。
【００６２】
（第２の実施形態）
図５を参照すると、本発明の第２の実施形態による情報処理装置１０は、図１に示した第１の実施形態と比較して、書き込みフラグ管理部１６を設けた点が異なる。
【００６３】
第１の実施形態では、ＣＰＵ１１が、ソフトウェア制御により、書き込みフラグを管理し、その状態を切り替えるのに対し、本実施形態では、書き込みフラグ管理部１６が、ハードウェア制御により、書き込みフラグを管理し、その状態を切り替え、ＣＰＵ１１が、書き込みフラグ管理部１６で管理されている書き込みフラグを参照する。
【００６４】
以下、図５に示した情報処理装置１０の動作について説明する。
【００６５】
ここでは、フラッシュメモリ１２，１３の順序でプログラムデータを更新する場合において、フラッシュメモリ１２へのプログラムデータの書き込み中にリセットが発生し、起動前に、再度リセットが発生した場合の動作について、図６のフローチャートを参照して説明する。
【００６６】
図６を参照すると、ステップ６０１〜６０６は、図４のステップ４０１〜４０６と同様の、フラッシュメモリ１２への書き込み中にリセットが発生した場合にセレクタ１４をフラッシュメモリ１３側に切り替える動作であるため、説明を割愛する。ただし、ステップ６０３における書き込みフラグのセットは、ＣＰＵ１１ではなく、書き込みフラグ管理部１６が行う。
【００６７】
情報処理装置１０のリセットが解除されると、ＣＰＵ１１は、リセット信号を非アクティブにするが、このとき、セレクタ１４がプログラムデータの破壊されたフラッシュメモリ１２側へ切り替わらないようにするため、書き込みフラグを“Ｌ”にクリアする必要がある。
【００６８】
書き込みフラグのクリアは、第１の実施形態では、図４のステップ４０７において、ＣＰＵ１１によるソフトウェア制御で実施するが、本実施形態では、書き込みフラグ管理部１６によるハードウェア制御で実施する（ステップ６０７）。
【００６９】
その後、情報処理装置１０に再度のリセットが発生しなかった場合（ステップ６０８）、以降、ステップ６０９〜６１３の処理を行う。このステップ６０９〜６１３は、図４のステップ４０８〜４１２と同様の、プログラムデータが破壊されているフラッシュメモリ１２を復旧させる動作であるため、説明を割愛する。ただし、ステップ６１１における書き込みフラグのセットは、ＣＰＵ１１ではなく、書き込みフラグ管理部１６が行う。
【００７０】
一方、情報処理装置１０に再度のリセットが発生した場合でも（ステップ６０８）、書き込みフラグは“Ｌ”にクリアされているため（ステップ６１４）、セレクタ１４はフラッシュメモリ１２側への切り替え動作を行わない（ステップ６１５）。そのため、ＣＰＵ１１は、プログラムデータの破壊されたフラッシュメモリ１２のプログラムデータで情報処理装置１０の起動および運用を行うことはなく、フラッシュメモリ１３の更新前の旧プログラムデータで情報処理装置１０の起動および運用を行う（ステップ６１６）。以降は、上述のステップ６１０〜６１３の処理を行う。
【００７１】
上述したように本実施形態においては、第１の実施形態と同様の効果に加えて、以下の効果が得られる。
【００７２】
すなわち、本実施形態においては、フラッシュメモリ１２のプログラムデータの更新中にリセットが発生した後に、ＣＰＵ１１が、他のソフトウェア処理を実行していて書き込みフラグをクリアするまでの間に、再度リセットが発生したとしても、書き込みフラグ管理部１６によってハードウェア的に書き込みフラグがクリアされている。したがって、プログラムデータが破壊されているフラッシュメモリ１２へ切り替わるようにセレクタ１４が動作することはないため、第１の実施形態では情報処理装置１０の正常性が維持できなかった状態をも回避することができる。
【００７３】
したがって、本実施形態においては、情報処理装置１０の正常性をより確実に維持することができるという効果が得られる。
【００７４】
（第３の実施形態）
本実施形態の基本的構成は、第１または第２の実施形態と同様であるが、情報処理装置１０のフラッシュメモリ１２，１３に格納されたプログラムデータの正常性を維持するために、ＣＰＵ１１に定期的なチェック機能を付加する。
【００７５】
ＣＰＵ１１は、フラッシュメモリ１２，１３に格納されるプログラムデータを更新した際に、そのプログラムデータのチェックサムまたはＣＲＣ（Cyclic Redundancy Check）を求め、求めたチェックサムまたはＣＲＣをＲＡＭ１５に保持しておく。
【００７６】
そして、ＣＰＵ１１は、運用状態においてフラッシュメモリ１２および１３に格納されたプログラムデータのチェックサムまたはＣＲＣを定期的に求め、プログラムデータの更新時に求めたチェックサムまたはＣＲＣと比較する。フラッシュメモリ１２，１３の一方が不一致の場合は、第１の実施形態と同様に、他方の正常なフラッシュメモリのプログラムデータを、一方のフラッシュメモリに再度書き込むことで復旧させる。
【００７７】
なお、ＣＰＵ１１は、再書き込み後もチェックサムまたはＣＲＣが不一致であった場合には、チェックサムまたはＣＲＣが不一致であった一方のフラッシュメモリを使用禁止とし、セレクタ１４が他方のフラッシュメモリ側に切り替わるように制御する。それにより、以降の情報処理装置１０の起動においては、正常なプログラムデータが格納されたフラッシュメモリを常に使用して起動を行うことになる。
【００７８】
上述したように本実施形態においては、運用状態においてフラッシュメモリを定期的にチェックしているため、フラッシュメモリに格納されたプログラムデータの正常性を維持することができ、それにより情報処理装置１０の確実な起動を保障することができる。
【図面の簡単な説明】
【００７９】
【図１】本発明の第１の実施形態による情報処理装置の構成を示す図である。
【図２】図１に示したセレクタの動作条件を説明する図である。
【図３】図１に示した情報処理装置において、フラッシュメモリのプログラムデータの更新が正常に完了する場合の動作を説明するフローチャートである。
【図４】図１に示した情報処理装置において、フラッシュメモリのプログラムデータの更新中にリセットが発生した場合の動作を説明するフローチャートである。
【図５】本発明の第２の実施形態による情報処理装置の構成を示す図である。
【図６】図５に示した情報処理装置において、フラッシュメモリのプログラムデータの更新中にリセットが発生し、起動前に、再度リセットが発生した場合の動作を説明するフローチャートである。
【図７】従来の情報処理装置において、フラッシュメモリのプログラムデータを更新する場合の動作を説明するフローチャートである。
【符号の説明】
【００８０】
１０    情報処理装置
１１    ＣＰＵ
１２，１３    フラッシュメモリ
１４    セレクタ
１５    ＲＡＭ
１６    書き込みフラグ管理部
２０    上位装置
【図１】
2007220092.tif 000003
【図２】
2007220092.tif 000004
【図３】
2007220092.tif 000005
【図４】
2007220092.tif 000006
【図５】
2007220092.tif 000007
【図６】
2007220092.tif 000008
【図７】
2007220092.tif 000009