JP2008181282A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2008181282A JP2008181282A JP2007013553A JP2007013553A JP2008181282A JP 2008181282 A JP2008181282 A JP 2008181282A JP 2007013553 A JP2007013553 A JP 2007013553A JP 2007013553 A JP2007013553 A JP 2007013553A JP 2008181282 A JP2008181282 A JP 2008181282A
- Authority
- JP
- Japan
- Prior art keywords
- program
- memory area
- information processing
- processing apparatus
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Stored Programmes (AREA)
Abstract
【課題】初期プログラムの更新に異常があっても、適切に起動される情報処理装置を提供すること。
【解決手段】ナビゲーション装置において、システムリセットにより最初に起動される初期プログラムをブートデバイス22に2重化して格納し、システムリセットにより、CPUが出力する初期プログラムへの先頭アクセスアドレスを、フリップフロップ25を使用した回路により、2重化した初期プログラムのいずれかが選択されるようにした。
【選択図】図3
【解決手段】ナビゲーション装置において、システムリセットにより最初に起動される初期プログラムをブートデバイス22に2重化して格納し、システムリセットにより、CPUが出力する初期プログラムへの先頭アクセスアドレスを、フリップフロップ25を使用した回路により、2重化した初期プログラムのいずれかが選択されるようにした。
【選択図】図3
Description
本発明は、起動時のプログラムを2重にした情報処理装置に関する。
システムを起動する場合、起動デバイス(フラッシュメモリ等)に起動プログラムが入っており、CPUはそのプログラムを読み出し実行することによりシステムの起動を行っている。フラッシュメモリに書き込まれたプログラムは、プログラムの修正等により書き換えられることがあり、プログラム自身に書き換えプログラムを組み込んでおき、外部メモリ等を利用してプログラムの書き換えを行っている。
フラッシュメモリの書き換えに関する技術として、特許文献1に記載された技術がある。例えば、書き換えに失敗した場合に2重化されたプログラムを起動し、書き換えに失敗したプログラムの修復を行っている。
しかし、特許文献1の技術では、システムの初期化プログラム自体は正常に動作するということが前提とされており、初期化プログラム自体の書き換えについては考えられていない。すなわち、初期化以降のプログラムまたはデータの書き換え失敗時についてのみ考えられている技術である。
しかしながら、初期化プログラムを書き換える必要が生じることもあり、初期化プログラムの書き換えに失敗することもある。このように初期化プログラムの書き換えに失敗した場合、従来の技術では、起動プログラムを再起動することが出来ない状態に陥る欠点があった。その結果、フラッシュメモリを基板から取り外して初期化プログラム等の書き換えを行ったりする必要があり、非常に煩わしい作業が必要となっていた。
請求項1の発明は、情報処理装置に適用され、情報処理装置のパワーオンリセットを含むシステムリセットにより最初に起動されるプログラムを格納する不揮発性メモリ手段と、プログラムを実行するCPUとを備え、不揮発性メモリ手段は、プログラムを、少なくとも第1のメモリ領域と第2のメモリ領域に2重化して格納し、CPUは、システムリセットによりプログラムへの先頭アクセスアドレスを出力し、システムリセットにより、CPUが出力するプログラムへの先頭アクセスアドレスを、第1のメモリ領域と第2のメモリ領域のいずれかのアドレスとするように選択する選択手段をさらに備えることを特徴とするものである。
請求項2の発明は、請求項1に記載の情報処置装置において、プログラムは、自己のプログラムを更新する更新プログラムを有し、CPUは、選択手段により選択されたメモリ領域のプログラムの更新プログラムは実行することにより、第1のメモリ領域と第2のメモリ領域に格納されたプログラムのうち、選択手段により選択されたメモリ領域とは異なるメモリ領域に格納されたプログラムを更新することを特徴とするものである。
請求項3の発明は、請求項1または2に記載の情報処置装置において、CPUは、プログラムを実行することにより、選択手段により第1のメモリ領域と第2のメモリ領域のいずれが選択されているかの選択状態を取得し、前回システム終了時の選択状態と比較し、選択状態の比較結果に基づき、第1のメモリ領域と第2のメモリ領域のいずれかのプログラムが異常であるかどうか判断することを特徴とするものである。
請求項4の発明は、請求項3に記載の情報処置装置において、CPUは、選択状態を比較した結果一致していると判断する場合、現在選択されているメモリ領域の他方のメモリ領域のプログラムが異常であると判断し、現在選択されているメモリ領域のプログラムの内容に基づき、他方のメモリ領域のプログラムの内容を更新することを特徴とするものである。
請求項5の発明は、請求項1から4のいずれかに記載の情報処置装置において、選択手段は、システムリセットの入力のたびに反転するフリップフロップ回路を有し、フリップフロップ回路の出力を、CPUが出力するプログラムへの先頭アクセスアドレスの所定のアドレスビットとして使用することにより、第1のメモリ領域と第2のメモリ領域のいずれかのアドレスとするように選択することを特徴とするものである。
請求項6の発明は、請求項1から5のいずれかに記載の情報処置装置において、情報処理装置を制御するシステムプログラムを少なくとも第1のプログラムと第2のプログラムに分け、第1のプログラムをプログラムとして2重化して不揮発性メモリ手段に格納し、第2のプログラムは2重化しないで不揮発性メモリ手段に格納することを特徴とするものである。
請求項7の発明は、情報処置装置におけるプログラム更新方法に適用され、情報処置装置のパワーオンリセットを含むシステムリセットにより最初に起動されるプログラムを、不揮発性メモリ手段の少なくとも第1のメモリ領域と第2のメモリ領域に2重化して格納し、システムリセットにより、情報処理装置のCPUが出力するプログラムへの先頭アクセスアドレスを、第1のメモリ領域と第2のメモリ領域のいずれかのアドレスとするように選択し、CPUが、選択されたメモリ領域のプログラムを実行することにより、第1のメモリ領域と第2のメモリ領域に格納されたプログラムのうち、選択されたメモリ領域とは異なるメモリ領域に格納されたプログラムを更新することを特徴とするものである。
請求項8の発明は、情報処置装置におけるプログラムリカバリ方法に適用され、情報処置装置のパワーオンリセットを含むシステムリセットにより最初に起動されるプログラムを、不揮発性メモリ手段の少なくとも第1のメモリ領域と第2のメモリ領域に2重化して格納し、システムリセットにより、情報処理装置のCPUが出力するプログラムへの先頭アクセスアドレスを、第1のメモリ領域と第2のメモリ領域のいずれかのアドレスとするように選択し、CPUが、選択されたメモリ領域のプログラムを実行することにより、第1のメモリ領域と第2のメモリ領域のいずれが選択されているかの選択状態を取得し、前回システム終了時の選択状態と比較し、選択状態の比較結果に基づき、第1のメモリ領域と第2のメモリ領域のいずれかのプログラムが異常であるかどうかを判断することを特徴とするものである。
請求項9の発明は、請求項8に記載の情報処置装置におけるプログラムリカバリ方法において、選択状態を比較した結果一致していると判断する場合、現在選択されているメモリ領域の他方のメモリ領域のプログラムが異常であると判断し、現在選択されているメモリ領域のプログラムの内容に基づき、他方のメモリ領域のプログラムの内容を更新することを特徴とするものである。
請求項2の発明は、請求項1に記載の情報処置装置において、プログラムは、自己のプログラムを更新する更新プログラムを有し、CPUは、選択手段により選択されたメモリ領域のプログラムの更新プログラムは実行することにより、第1のメモリ領域と第2のメモリ領域に格納されたプログラムのうち、選択手段により選択されたメモリ領域とは異なるメモリ領域に格納されたプログラムを更新することを特徴とするものである。
請求項3の発明は、請求項1または2に記載の情報処置装置において、CPUは、プログラムを実行することにより、選択手段により第1のメモリ領域と第2のメモリ領域のいずれが選択されているかの選択状態を取得し、前回システム終了時の選択状態と比較し、選択状態の比較結果に基づき、第1のメモリ領域と第2のメモリ領域のいずれかのプログラムが異常であるかどうか判断することを特徴とするものである。
請求項4の発明は、請求項3に記載の情報処置装置において、CPUは、選択状態を比較した結果一致していると判断する場合、現在選択されているメモリ領域の他方のメモリ領域のプログラムが異常であると判断し、現在選択されているメモリ領域のプログラムの内容に基づき、他方のメモリ領域のプログラムの内容を更新することを特徴とするものである。
請求項5の発明は、請求項1から4のいずれかに記載の情報処置装置において、選択手段は、システムリセットの入力のたびに反転するフリップフロップ回路を有し、フリップフロップ回路の出力を、CPUが出力するプログラムへの先頭アクセスアドレスの所定のアドレスビットとして使用することにより、第1のメモリ領域と第2のメモリ領域のいずれかのアドレスとするように選択することを特徴とするものである。
請求項6の発明は、請求項1から5のいずれかに記載の情報処置装置において、情報処理装置を制御するシステムプログラムを少なくとも第1のプログラムと第2のプログラムに分け、第1のプログラムをプログラムとして2重化して不揮発性メモリ手段に格納し、第2のプログラムは2重化しないで不揮発性メモリ手段に格納することを特徴とするものである。
請求項7の発明は、情報処置装置におけるプログラム更新方法に適用され、情報処置装置のパワーオンリセットを含むシステムリセットにより最初に起動されるプログラムを、不揮発性メモリ手段の少なくとも第1のメモリ領域と第2のメモリ領域に2重化して格納し、システムリセットにより、情報処理装置のCPUが出力するプログラムへの先頭アクセスアドレスを、第1のメモリ領域と第2のメモリ領域のいずれかのアドレスとするように選択し、CPUが、選択されたメモリ領域のプログラムを実行することにより、第1のメモリ領域と第2のメモリ領域に格納されたプログラムのうち、選択されたメモリ領域とは異なるメモリ領域に格納されたプログラムを更新することを特徴とするものである。
請求項8の発明は、情報処置装置におけるプログラムリカバリ方法に適用され、情報処置装置のパワーオンリセットを含むシステムリセットにより最初に起動されるプログラムを、不揮発性メモリ手段の少なくとも第1のメモリ領域と第2のメモリ領域に2重化して格納し、システムリセットにより、情報処理装置のCPUが出力するプログラムへの先頭アクセスアドレスを、第1のメモリ領域と第2のメモリ領域のいずれかのアドレスとするように選択し、CPUが、選択されたメモリ領域のプログラムを実行することにより、第1のメモリ領域と第2のメモリ領域のいずれが選択されているかの選択状態を取得し、前回システム終了時の選択状態と比較し、選択状態の比較結果に基づき、第1のメモリ領域と第2のメモリ領域のいずれかのプログラムが異常であるかどうかを判断することを特徴とするものである。
請求項9の発明は、請求項8に記載の情報処置装置におけるプログラムリカバリ方法において、選択状態を比較した結果一致していると判断する場合、現在選択されているメモリ領域の他方のメモリ領域のプログラムが異常であると判断し、現在選択されているメモリ領域のプログラムの内容に基づき、他方のメモリ領域のプログラムの内容を更新することを特徴とするものである。
本発明によれば、システムリセットにより最初に起動されるプログラムを不揮発性メモリ手段に2重化して格納するようにしたので、そのプログラムの更新をする場合に異常があっても、情報処理装置が起動しなくなってしまうということがなくなる。
図1は、本発明の情報処理装置の一実施の形態であるナビゲーション装置1の構成を示す図である。ナビゲーション装置1は、制御装置2、現在地検出装置3、地図データ記憶装置4、表示装置5、入力装置6などから構成される。制御装置2は、現在地検出装置3で検出された車両の現在地情報や、入力装置6を介して入力された目的地情報や、地図データ記憶装置4に格納された地図データなどを使用して、道路地図の表示、経路探索、経路誘導等の各種のナビゲーション処理を行う。道路地図や経路や各種の情報は、表示装置5に表示される。
制御装置2は、CPU21、ブートデバイス22、メモリ23、その他の周辺回路24などから構成され、ブートデバイス22に格納されたナビゲーション用システムプログラム(以下、システムプログラムと言う)を実行することにより、各種のナビゲーション処理を行う。具体的には、CPU21がシステムプログラムを実行する。
ブートデバイス22は、例えばフラッシュメモリで構成される書き換え可能な不揮発性ROMである。本実施の形態では、システムプログラム全体がブートデバイス22に格納されているとして説明する。しかし、システムプログラムのうち、起動時に使用する一部をブートデバイス22に格納し、その他のプログラムは他のROM(不図示)やハードディスクなどの記憶装置(不図示)などに格納するようにしてもよい。
本実施の形態では、システムプログラムのうち、起動時に最初に実行する初期化プログラム等を初期プログラムと言い、この初期プログラムを2重化してブートデバイスに格納する。本実施の形態では、このように2重化された初期プログラムが、起動毎(リセットが入力される毎)に交互に起動されるように構成した。
これにより、初期プログラムを新しい初期プログラムに書き換え(更新)を行う場合、万が一書き換えに失敗しても、もう片方のメモリ領域に旧初期プログラムが格納されているので、システムの再起動を行うことができる。すなわち、本実施の形態では、初期プログラムが2重化されているので、初期プログラムを変更しても、システムがまったく起動しなくなってしまうという状態に陥ることはない。以下、これを実現する本実施の形態の構成について詳細に説明する。
図2は、本実施の形態におけるブートデバイス22に格納されるプログラムのメモリ配置図を示す図である。本実施の形態では、システムプログラムを最低2つに分割する。CPU21の初期設定(システムの初期化)などを行う初期化プログラム、プログラムローダ、更新(書き換え)プログラム等を初期プログラム1とし、残りのプログラムをアプリケーションプログラム2とする。
本実施の形態では、初期プログラム1の大きさは1KB以内とし、ブートデバイス22のアドレス0x0000番地から始まる領域に初期プログラム1−1、アドレス0x0400番地から始まる領域に初期プログラム1−2が書き込まれる。初期プログラム1−1と初期プログラム1−2は全く同じ内容であり、同じ内容のプログラムを2箇所に書き込まれることにより2重化されている。どちらの領域の初期プログラム1が実行されても同じ内容の処理が行われる。
ブートデバイス22のアドレス0x0800番地から始まる領域にはアプリケーションプログラム2が書き込まれる。初期プログラム1には、最後の命令に0x0800番地にジャンプする命令がコンパイルされ、初期プログラム1の処理に引き続きアプリケーションプログラム2が実行される。
なお、本実施の形態では、初期プログラム1とアプリケーションプログラム2と分けているが、この分け方は必ずしも厳密に考える必要はない。初期プログラム1には最低限システムのリセット後に最初に実行されるプログラムを含むようにし、アプリケーションプログラム2はその後に処理されるプログラムを適宜アプリケーションプログラムとして含むようにすればよい。
本実施の形態では、初期プログラム1には、前述したように、システムプログラムを更新する更新プログラムが含まれる。更新プログラムは、アプリケーションプログラム2を更新するプログラムとともに、初期プログラム1自身を更新する(書き換える)プログラムも含まれている。
図3は、2重化された初期プログラム1を、起動毎(リセットが入力される毎)に交互に、すなわち、初期プログラム1−1と初期プログラム1−2を交互に起動するための構成を示す図である。
図3において、Reset信号が入力されるたびにフリップフロップ(F/F)25の出力Qの1/0が入れ替わる。フリップフロップ25の出力QとCPU21のGPO(プルアップ付き)をAND26でANDし、AND26の出力とCPU21から出力されるアドレスビットA10_CPUとをOR27でORし、OR出力をブートデバイス22へのA10_MEM信号とする。
Reset信号は、ナビゲーション装置1の電源オンにより出力されるパワーオンリセット信号、ナビゲーション装置1のリセットスイッチ(不図示)が押されることにより出力されるリセット信号などを含む信号である。すなわち、ナビゲーション装置1のシステムがリセットされる毎に生成されるシステムリセット信号である。フリップフロップ25は、Reset信号が入力されるごとに交互にオンオフを繰り返すように構成されている。フリップフロップ25の電源はバッテリバックアップされ、オンオフ状態はナビゲーション装置1の電源がオフされても保持される。
Reset信号は、CPU21にも入力される。CPU21は、Reset信号が入力されると、最初に実行すべきプログラムのアドレスをアドレス端子A0〜A11に出力する。本実施の形態では、最初に初期プログラム1を実行すべくアドレス0x0000を出力する。CPU21のGPO端子は汎用出力端子であり、Reset信号でCPU21がリセットされると出力はハイインピーダンスになる。従って、出力がプルアップされているので、AND26への入力はHighとなる。
このような構成で、Reset信号が入力されると、そのたびにフリップフロップ25の出力Qの1/0が入れ替わり、A10_MEM信号も1/0が交互に入れ替わる。その結果、ブートデバイス22に入力されるアドレスは、0x0000番地と0x0400番地と交互に入力される。これにより、0x0000番地からの初期プログラム1−1の読み出しと、0x0400番地からの初期プログラム1−2の読み出しとが、Reset信号が入力されるたびに交互に行われるようになる。
初期プログラム1は、アプリケーションプログラム2へジャンプする直前に、GPOの出力を0にする命令を実行する。これにより、AND26の出力を0にしてブートデバイス22へのA10_MEM信号がCPU21からのA10_CPU信号のレベルが出力されるようにする。この処理を行うことにより起動プログラム1−1、起動プログラム1−2のどちらから起動しても起動プログラム2を起動することができる。
なお、CPU21は、内部にキャッシュメモリ(不図示)を有し、ブートデバイス22からのデータ(プログラム)をいったんキャッシュメモリに格納し、キャッシュメモリにアクセスしながらプログラムの実行を行う。従って、GPOの出力を0にすることによってフリップフロップ25の出力はブロックされるが、そのときには、一連の命令はすでにCPU21のキャッシュメモリに格納されているので、初期プログラム1の実行において特に問題は生じない。また、キャッシュメモリの代わりに、プログラムをブートデバイス22から高速RAMに転送するようにしてもよい。このようにしても、GPOの出力を0にすることによる初期プログラム1の実行の問題は生じない。
CPU21のGPI端子は、汎用入力端子であり、フリップフロップ25の出力Qを入力する。すなわち、CPU21はフリップフロップ25の出力Qの状態をモニタすることができる。
次に、システムプログラムの更新方法について説明する。前述したように、初期プログラム1には、初期プログラム1やアプリケーションプログラム2を更新する(書き換える)更新プログラムが組み込まれている。更新プログラムの起動は、ナビゲーション装置1のメニュー画面からの指定やプログラム更新用の専用スイッチ(不図示)の操作などにより行われるものとする。
アプリケーションプログラム2の更新は、単純に、外部メモリ等に格納された新アプリケーションプログラムを読み込んで、アプリケーションプログラム2が格納される領域、本実施の形態では0x0800番地から順次書き込んでいく。一方、初期プログラム1の更新は、以下の通りに行う。
図4は、初期プログラム1の更新プログラムのフローチャートを示す図である。図4の処理は、ナビゲーション装置1のメニュー画面や初期プログラム1更新用の専用スイッチ(不図示)の操作などにより初期プログラム1の更新が選択されると起動されるものとする。
ステップS1では、フリップフロップ25の出力QをCPU21のGPI端子を介してモニターし確認する。あるいは、GPIの入力結果をレジスタやメモリ等に保持しておいて、その内容を確認するようにしてもよい。このようにすることにより、どちらの初期プログラム1(初期プログラム1−1or初期プログラム1−2)が起動されたか、確認することができる。
ステップS2では、外部メモリ等に格納された初期プログラム1の更新用の新プログラムを読み込んで、今回起動されなかった方の初期プログラム1の先頭番地から順次書き込んでいく。これにより、今回起動された初期プログラム1の他方のメモリ領域の初期プログラム1が更新される。更新処理プログラムはこれで終了する。
ブートデバイス22の一方のメモリ領域の初期プログラム1の更新が終了すると、ユーザは、ナビゲーション装置1を再起動し、初期プログラム1の更新を再度選択し、図4の処理を再度実行させる。このとき、再起動により起動される初期プログラム1は、前回の起動時とは異なるブートデバイス22の領域に格納された初期プログラム1である。すなわち、更新され新しくなった初期プログラム1が起動される。
更新後の初期プログラム1にも、同様に更新プログラムが組み込まれているので、同様な操作を行えば、ブートデバイス22のもう一方の領域に格納されている初期プログラム1も更新される。このとき、ユーザは、どちらの領域の初期プログラム1を更新するかは意識する必要はない。単純に、初期プログラム1の更新を指示したのち、再起動を行い、再度、初期プログラム1の更新を指示するだけでよい。以上により、2重化されたプログラムの両方が確実に更新される。
次に、初期プログラム1が破壊されていた場合のリカバリ方法について説明する。本実施の形態では、システムプログラム終了時に、どちらの初期プログラム1(初期プログラム1−1あるいは初期プログラム1−2)から起動したか、レジスタ/メモリ等に起動フラグとして保持しておく。
そして、Reset信号によるシステム起動時ごとに保持されている起動フラグをリードし、前回どちらから起動したか確認する。更に今回の起動がどちらからかを確認し、異なっていれば正常と判断し起動処理を続ける。もし同じ初期プログラム1から起動している場合、2重化されているもう片方の初期プログラム1の異常と判断し、データのコンベア・書き換え処理を行うようにする。
通常、破壊されている初期プログラム1を使用してシステムプログラムを起動しようとしても、システムプログラムが起動されず、ナビゲーション装置1は立ち上がらない。ユーザは、ナビゲーション装置1が立ち上がらないという異常に気がつくと、リセットや電源のオフオンなどを行い、再度、ナビゲーション装置1を立ち上げようとする。このとき、2回目の起動では、破壊されている初期プログラム1とは異なるもう一方の初期プログラム1が起動され、正常に立ち上がる。この場合に、起動フラグに格納された情報による初期プログラム1と今回起動された初期プログラム1とが同じであることが確認されるので、片方の初期プログラム1に異常があることが検出される。
図5は、本実施の形態のシステムプログラムのリカバリ処理部分を抽出した処理についてのフローチャートを示す図である。図5のフローは、Reset信号がCPU21に入力されることにより開始する。
ステップS11では、初期プログラム1が実行を開始する。この時点では、初期プログラム1−1あるいは初期プログラム1−2のいずれかの初期プログラム1が実行されているかは分からない。次に、ステップS12において、CPU21のGPIの入力を介して、フリップフロップ25の出力Qの状態を取得し、いずれの初期プログラム1が起動されたかを確認する。
ステップS13では、起動フラグをリードする。ステップS14では、ステップS12で確認されたいずれの初期プログラム1が起動されたかの情報とステップS12でリードした起動フラグの情報とを比較する。すなわち、今回起動された初期プログラム1と前回のシステム終了時のシステムプログラムの起動時の初期プログラム1とが、ブートデバイス22の同じ領域のものかを比較する。同じであればいずれか片方の初期プログラム1に異常があると判断してステップS15に進み、異なっていれば異常はないと判断してステップS16に進む。
ステップS15では、今回起動された初期プログラム1とは異なるブートデバイス22の領域に格納された初期プログラム1を、今回起動された初期プログラム1のブートデバイス22に格納された内容と比較を行い、異なる部分を破壊されている部分として検出し今回起動された初期プログラム1の対応するブートデバイス22の内容で書き換える。なお、特に比較を行わず、今回起動された初期プログラム1とは異なるブートデバイス22の領域に格納された初期プログラム1を、今回起動された初期プログラム1のブートデバイス22に格納された内容で、全体を書き換えてもよい。
ステップS16では、いずれの初期プログラム1にも異常がないと判断できるので、アプリケーションプログラム2の実行を開始する。特にシステムの終了要求があるまで、アプリケーションプログラム2の種々の処理が継続して行われる。
ステップS17では、システムの終了要求があったかどうか判断され、要求がない場合はステップS16に戻り処理を繰り返す。システムの終了要求があった場合は、ステップS18に進む。システムの終了要求は、ナビゲーション装置1の電源オフの操作やリセット操作などにより要求される。
ステップS18では、今まで実行されていたシステムプログラムが、どちらの初期プログラム1(初期プログラム1−1あるいは初期プログラム1−2)から起動したかの情報を、レジスタ/メモリ等に起動フラグとして記録する。これは、GPIを介してフリップフロップ25の出力Qを入力することにより判断することができる。このレジスタ/メモリ等は、ナビゲーション装置1が電源オフしても、データが消えないようバッテリーバックアップされている。
以上説明した本実施の形態によれば、以下のような作用効果を得ることができる。
(1)初期プログラム1を2重化して格納するようにしたので、初期プログラム1の更新をする場合に異常があっても、ナビゲーション装置1のシステムが起動しなくなってしまうということがなくなる。
(1)初期プログラム1を2重化して格納するようにしたので、初期プログラム1の更新をする場合に異常があっても、ナビゲーション装置1のシステムが起動しなくなってしまうということがなくなる。
(2)Reset信号を使用して、2重化した初期プログラム1を選択的に選択できる回路を設けるようにしたので、2重化した初期プログラム1をCPU21の外部回路で確実に選択できるようにすることができる。その結果、プログラムがハングし、ナビゲーション装置1のシステムが立ち上がらないというような状態を確実に回避することができる。特に、1つのフリップフロップ25と2個のゲート回路26、27という簡単な構成で上記回路を構築するので、コストがかからず、装置の規模も大きくならず、上記の機能を実現できる。
(3)2重化した初期プログラム1を選択的に交互に選択できるようにしたので、いずれかの初期プログラム1に異常があっても、次の再起動時には、単に再起動させるだけで確実に再起動が成功する。
(4)初期プログラム1の更新において、選択されたメモリ領域の初期プログラム1を実行させることにより、選択されたメモリ領域とは異なるメモリ領域に格納された初期プログラム1を更新するので、確実に初期プログラム1を更新することができる。また、選択されるメモリ領域はリセットごとに自動的に交互に選択されるので、初期プログラム1の更新においても、どちらのメモリ領域の初期プログラム1を更新させるかなど、ユーザは全く気にする必要もない。
(5)2重化した初期プログラム1のいずれかに異常があっても、ほぼ自動的にそれを判別することができ、自動的に異常初期プログラム1をリカバリすることができる。すなわち、ナビゲーション装置1が立ち上がらないなどの異常を発生したときに、ユーザは、ナビゲーション装置1を再起動を行うだけで上記の異常を発見し、リカバリすることができる。
(6)2重化するプログラムと2重化しないプログラムを分けたので、2重化するプログラムのサイズを任意に決定することができ、初期プログラム1の処理内容を自由に決定することができる。その結果、処理の効率とコストのバランスを適切に選択することができる。
―変形例―
(1)なお、上記では、ナビゲーション装置1の例で説明したが、ナビゲーション装置1に限定する必要はない。各種の情報を処理する情報処理装置全般に本発明を適用することができる。
(1)なお、上記では、ナビゲーション装置1の例で説明したが、ナビゲーション装置1に限定する必要はない。各種の情報を処理する情報処理装置全般に本発明を適用することができる。
(2)ブートデバイス22としては、フラッシュメモリの例で説明したが、フラッシュメモリに限定する必要はない。書き換え可能な不揮発性メモリであればどのようなものでもよい。
(3)上記では2重化するメモリサイズを1KB以内としたが、必ずしもこのサイズに限定する必要はない。もっと、大きなサイズでもよいし、もっと小さなサイズでもよい。ただし、アドレス1ビットの選択だけで2重化プログラムのいずれかのメモリ領域を選択できるようにするのが好ましい。ただし、これも必ずしもアドレス1ビットに限定する必要もない。
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
以下、請求項の構成要素と上記実施の形態の構成要素との対応付けについて説明する。本発明の不揮発性メモリ手段はブートデバイス22に対応し、CPUはCPU21に対応し、選択手段はフリップフロップ25、AND26、OR27に対応する。なお、この対応付けの説明はあくまで一例であり、本発明はこの対応付けに限定して解釈されるものではない。
1 ナビゲーション装置
2 制御装置
3 現在地検出装置
4 地図データ記憶装置
5 表示装置
6 入力装置
21 CPU
22 ブートデバイス
23 メモリ
24 周辺回路
2 制御装置
3 現在地検出装置
4 地図データ記憶装置
5 表示装置
6 入力装置
21 CPU
22 ブートデバイス
23 メモリ
24 周辺回路
Claims (9)
- 情報処理装置であって、
情報処理装置のパワーオンリセットを含むシステムリセットにより最初に起動されるプログラムを格納する不揮発性メモリ手段と、
前記プログラムを実行するCPUとを備え、
前記不揮発性メモリ手段は、前記プログラムを、少なくとも第1のメモリ領域と第2のメモリ領域に2重化して格納し、
前記CPUは、前記システムリセットにより前記プログラムへの先頭アクセスアドレスを出力し、
前記システムリセットにより、前記CPUが出力する前記プログラムへの先頭アクセスアドレスを、前記第1のメモリ領域と前記第2のメモリ領域のいずれかのアドレスとするように選択する選択手段をさらに備えることを特徴とする情報処理装置。 - 請求項1に記載の情報処置装置において、
前記プログラムは、自己のプログラムを更新する更新プログラムを有し、
前記CPUは、前記選択手段により選択されたメモリ領域の前記プログラムの前記更新プログラムは実行することにより、前記第1のメモリ領域と前記第2のメモリ領域に格納された前記プログラムのうち、前記選択手段により選択されたメモリ領域とは異なるメモリ領域に格納された前記プログラムを更新することを特徴とする情報処理装置。 - 請求項1または2に記載の情報処置装置において、
前記CPUは、前記プログラムを実行することにより、前記選択手段により前記第1のメモリ領域と前記第2のメモリ領域のいずれが選択されているかの選択状態を取得し、前回システム終了時の前記選択状態と比較し、前記選択状態の比較結果に基づき、前記第1のメモリ領域と前記第2のメモリ領域のいずれかの前記プログラムが異常であるかどうか判断することを特徴とする情報処理装置。 - 請求項3に記載の情報処置装置において、
前記CPUは、前記選択状態を比較した結果一致していると判断する場合、現在選択されているメモリ領域の他方のメモリ領域の前記プログラムが異常であると判断し、現在選択されているメモリ領域の前記プログラムの内容に基づき、前記他方のメモリ領域の前記プログラムの内容を更新することを特徴とする情報処理装置。 - 請求項1から4のいずれかに記載の情報処置装置において、
前記選択手段は、前記システムリセットの入力のたびに反転するフリップフロップ回路を有し、前記フリップフロップ回路の出力を、前記CPUが出力する前記プログラムへの先頭アクセスアドレスの所定のアドレスビットとして使用することにより、前記第1のメモリ領域と前記第2のメモリ領域のいずれかのアドレスとするように選択することを特徴とする情報処理装置。 - 請求項1から5のいずれかに記載の情報処置装置において、
前記情報処理装置を制御するシステムプログラムを少なくとも第1のプログラムと第2のプログラムに分け、前記第1のプログラムを前記プログラムとして2重化して前記不揮発性メモリ手段に格納し、前記第2のプログラムは2重化しないで前記不揮発性メモリ手段に格納することを特徴とする情報処理装置。 - 情報処置装置におけるプログラム更新方法であって、
情報処置装置のパワーオンリセットを含むシステムリセットにより最初に起動されるプログラムを、不揮発性メモリ手段の少なくとも第1のメモリ領域と第2のメモリ領域に2重化して格納し、
システムリセットにより、前記情報処理装置のCPUが出力する前記プログラムへの先頭アクセスアドレスを、前記第1のメモリ領域と前記第2のメモリ領域のいずれかのアドレスとするように選択し、
前記CPUが、前記選択されたメモリ領域の前記プログラムを実行することにより、前記第1のメモリ領域と前記第2のメモリ領域に格納された前記プログラムのうち、前記選択されたメモリ領域とは異なるメモリ領域に格納された前記プログラムを更新することを特徴とするプログラム更新方法。 - 情報処置装置におけるプログラムリカバリ方法であって、
情報処置装置のパワーオンリセットを含むシステムリセットにより最初に起動されるプログラムを、不揮発性メモリ手段の少なくとも第1のメモリ領域と第2のメモリ領域に2重化して格納し、
システムリセットにより、前記情報処理装置のCPUが出力する前記プログラムへの先頭アクセスアドレスを、前記第1のメモリ領域と前記第2のメモリ領域のいずれかのアドレスとするように選択し、
前記CPUが、前記選択されたメモリ領域の前記プログラムを実行することにより、前記第1のメモリ領域と前記第2のメモリ領域のいずれが選択されているかの選択状態を取得し、前回システム終了時の前記選択状態と比較し、前記選択状態の比較結果に基づき、前記第1のメモリ領域と前記第2のメモリ領域のいずれかの前記プログラムが異常であるかどうかを判断することを特徴とするプログラムリカバリ方法。 - 請求項8に記載の情報処置装置におけるプログラムリカバリ方法において、
前記選択状態を比較した結果一致していると判断する場合、現在選択されているメモリ領域の他方のメモリ領域の前記プログラムが異常であると判断し、現在選択されているメモリ領域の前記プログラムの内容に基づき、前記他方のメモリ領域の前記プログラムの内容を更新することを特徴とするプログラムリカバリ方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007013553A JP2008181282A (ja) | 2007-01-24 | 2007-01-24 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007013553A JP2008181282A (ja) | 2007-01-24 | 2007-01-24 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008181282A true JP2008181282A (ja) | 2008-08-07 |
Family
ID=39725147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007013553A Pending JP2008181282A (ja) | 2007-01-24 | 2007-01-24 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008181282A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010064337A1 (ja) * | 2008-12-04 | 2010-06-10 | パナソニック株式会社 | マイクロコンピュータ |
-
2007
- 2007-01-24 JP JP2007013553A patent/JP2008181282A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010064337A1 (ja) * | 2008-12-04 | 2010-06-10 | パナソニック株式会社 | マイクロコンピュータ |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100415371B1 (ko) | 컴퓨터 | |
JP5575338B2 (ja) | 情報処理装置、情報処理方法、およびコンピュータプログラム | |
WO2010035596A1 (ja) | ファームウェア更新装置及び方法 | |
WO2017000567A1 (zh) | 一种实现bootrom升级的方法及装置 | |
JP2011095952A (ja) | ファームウェア更新方法および電子機器 | |
JP3830867B2 (ja) | シングルチップマイクロコンピュータおよびそのブート領域切り替え方法 | |
JP6021597B2 (ja) | 情報処理装置、情報処理方法、およびコンピュータプログラム | |
JP2022142263A (ja) | 情報処理装置及び情報処理プログラム | |
JPH10307726A (ja) | 起動エラー時におけるファームウェアリカバリ方式 | |
JP2008181282A (ja) | 情報処理装置 | |
JP2008009799A (ja) | 画像形成装置 | |
JP2011210137A (ja) | 電子機器、航法装置、バージョンアッププログラム及びバージョンアップ方法 | |
JP5084853B2 (ja) | ファームウエア更新装置、通信装置、電子機器、ファームウエア更新システム、ファームウエア更新方法及びプログラム | |
JP2010140156A (ja) | 起動制御装置および車載端末機器 | |
JP6775651B1 (ja) | 情報処理装置、制御方法、及びプログラム | |
CN107247642B (zh) | 用于系统开机时确定可执行映像文件的方法及装置 | |
JP2002175193A (ja) | プログラム書き換え装置及びプログラム書き換え方法 | |
JP2005050079A (ja) | サーバ装置、bios更新プログラム、初期起動プログラム、及びbios更新方法 | |
JP5418348B2 (ja) | 情報処理装置およびカラオケ装置 | |
JP2003122575A (ja) | 情報処理装置 | |
JP2008015725A (ja) | 情報処理装置およびプログラム起動方法 | |
JP7491765B2 (ja) | ファームウェア更新システムおよびファームウェア更新方法 | |
JP2005128613A (ja) | 画像形成装置 | |
JP5002900B2 (ja) | 制御装置とそのプログラム、及び、プログラムダウンロード方法 | |
JP2003288213A (ja) | ブートプログラム記憶装置、電子機器のブートプログラム記憶方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20080417 |