(57)【要約】      （修正有）【課題】プログラム実行開始前のメモリチェック時間を短縮する。【解決手段】ナビゲーションプログラム２０を記憶するフラッシュＲＯＭ１４と、ＣＰＵ１０とを有したカーナビゲーション装置１において、ＣＰＵ１０は、前記フラッシュＲＯＭ１４に記憶されているナビゲーションプログラム２０のビット値のエラーの有無を検査し、エラーが検査された場合に、前記ナビゲーションプログラムをナビゲーションバックアッププログラム２１に書き換える手段として機能するとともに、前記ナビゲーションプログラム２０の実行開始前に前記ナビゲーションプログラム２０を複数に分割して成るデータブロックの一部を対象に検査を実行し、前記ナビゲーションプログラム２０の実行開始後には、前記ナビゲーションプログラム２０の全部、或いは、前記ナビゲーションプログラム２０の実行開始前に検査したデータブロック以外のデータブロックを対象に検査を実行する。【選択図】図１
2011059912.tif 000002
【特許請求の範囲】
【請求項１】
情報処理を実現するプログラムデータを記憶する不揮発性メモリと、前記プログラムデータを実行する制御手段とを有した情報処理装置において、
前記不揮発性メモリに記憶されているプログラムデータのビット値のエラーの有無を検査する検査手段と、
前記検査手段によって前記エラーが検査された場合に、前記プログラムデータをバックアップデータに書き換える書換手段とを備え、
前記プログラムデータの実行開始前に前記プログラムデータを複数に分割して成る各データブロックの一部を対象に前記検査手段による検査を実行し、前記プログラムデータの実行開始後には、前記プログラムデータの全部、或いは、前記プログラムデータの実行開始前に検査したデータブロック以外のデータブロックを対象に検査を実行する
ことを特徴とする情報処理装置。
【請求項２】
前記検査手段は、前記プログラムデータの実行開始後に検査するとき、前記プログラムデータの実行に伴うプログラムタスクが動作していないタイミングで前記データブロック単位で検査することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記書換手段は、前記プログラムデータの実行中に前記バックアップデータに書き換えるとき、前記プログラムデータの実行に伴うプログラムタスクが動作していないタイミングで前記バックアップデータを複数に分割して成るデータブロック単位で書き換えることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記検査手段は、前記書換手段がデータブロック単位で書き換えるごとに、書き換えられたデータブロックを検査することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記検査手段は、前記プログラムデータの実行開始前に検査対象とするデータブロックを、当該検査が行われるごとに変更することを特徴とする請求項１乃至４のいずれかに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリに記憶されたプログラムデータの、いわゆるビット化けによるエラーを検出する技術に関する。
【背景技術】
【０００２】
一般に、車載用や携帯用のナビゲーション装置は、不揮発性メモリの一種であるフラッシュＲＯＭ（ＥＥＰＲＯＭ）を備え、このフラッシュＲＯＭには、ナビゲーション機能を実現するためのナビゲーションプログラムデータ（「以下、ナビゲーションプログラム」と言う）や制御パラメータが格納されている。さらに、このフラッシュＲＯＭには、通常、ブートプログラムデータ（以下、「ＢＯＯＴプログラム」と言う）が格納されている。
【０００３】
ＢＯＯＴプログラムは、ナビゲーション装置の電源投入に伴って実行されるイニシャル処理のプログラムである。このイニシャル処理には、レジスタ類の初期化する処理のほかに、フラッシュＲＯＭの記憶内容をチェックするメモリチェックが含まれている。電磁ノイズや振動などの何らかの原因により、ナビゲーションプログラムを構成するデータの各ビット値が正常な値と異なる、いわゆるビット化けが発生した場合には、このビット化けが電源投入時のメモリチェックにより検出されるため、ナビゲーション動作中における動作異常が防止される（例えば、非特許文献１参照）。
【０００４】
また、近年では、フラッシュＲＯＭのメモリチェックに要する時間を短縮し、電源投入からナビゲーション動作が開始されるまでの待ち時間を短くするために、メモリチェックする記憶エリアをナビゲーションプログラムのデータを記憶している記憶エリアの更に一部に限定する、といった事が行われている。特に、フラッシュＲＯＭが大容量化し、ナビゲーションプログラムのデータ量が増大した場合でも、メモリチェックに要する時間を比較的短くすることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１２９３２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のように、メモリチェックを一部の記憶エリアに限定すると、メモリチェックの対象外の記憶エリアでビット化けが発生している場合には、ナビゲーション動作中に異常動作が発生する虞がある。
なお、かかる問題は、ナビゲーション装置に限らず、フラッシュＲＯＭ等の不揮発性メモリに記憶したプログラムを実行して各種の情報処理を行う情報処理装置に共通する問題である。
本発明は、上述した事情に鑑みてなされたものであり、プログラム実行開始前のメモリチェック時間を短縮し、なおかつ、当該プログラムに含まれるエラーの検査能力を損なうことがない情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明は、情報処理を実現するプログラムデータを記憶する不揮発性メモリと、前記プログラムデータを実行する制御手段とを有した情報処理装置において、前記不揮発性メモリに記憶されているプログラムデータのビット値のエラーの有無を検査する検査手段と、前記検査手段によって前記エラーが検査された場合に、前記プログラムデータをバックアップデータに書き換える書換手段とを備え、前記プログラムデータの実行開始前に前記プログラムデータを複数に分割して成る各データブロックの一部を対象に前記検査手段による検査を実行し、前記プログラムデータの実行開始後には、前記プログラムデータの全部、或いは、前記プログラムデータの実行開始前に検査したデータブロック以外のデータブロックを対象に検査を実行することを特徴とする。
【０００８】
また本発明は、上記情報処理装置において、前記検査手段は、前記プログラムデータの実行開始後に検査するとき、前記プログラムデータの実行に伴うプログラムタスクが動作していないタイミングで前記データブロック単位で検査することを特徴とする。
【０００９】
また本発明は、上記情報処理装置において、前記書換手段は、前記プログラムデータの実行中に前記バックアップデータに書き換えるとき、前記プログラムデータの実行に伴うプログラムタスクが動作していないタイミングで前記バックアップデータを複数に分割して成るデータブロック単位で書き換えることを特徴とする。
【００１０】
また本発明は、上記情報処理装置において、前記検査手段は、前記書換手段がデータブロック単位で書き換えるごとに、書き換えられたデータブロックを検査することを特徴とする。
【００１１】
また本発明は、上記情報処理装置において、前記検査手段は、前記プログラムデータの実行開始前に検査対象とするデータブロックを、当該検査が行われるごとに変更することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、プログラムデータの実行開始前に、当該プログラムデータを複数に分割して成るデータブロックの一部を対象に検査手段による検査を実行し、また、プログラムデータの実行開始後には、プログラムデータの全部、或いは、プログラムデータの実行開始前に検査したデータブロック以外のデータブロックを対象に検査を実行するため、プログラムの実行開始前のメモリチェック時間が短縮されて高速起動が可能となるとともに、当該プログラム実行開始後の検査によりプログラムのエラーを余すことなく検査できる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に係るナビゲーション装置の機能的構成を示す図である。
【図２】フラッシュＲＯＭの記憶領域を模式的に示す図である。
【図３】同ナビゲーション装置によって実行されるメモリチェック処理のフローチャートである。
【図４】簡易メモリチェック処理のフローチャートである。
【図５】メモリチェック処理の動作説明図である。
【図６】ナビゲーションプログラム復元処理のフローチャートである。
【図７】詳細メモリチェック処理のフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について説明する。なお、以下では、本発明の情報処理装置として車載装置の一例であるカーナビゲーション装置を例示するが、本発明は、車載装置以外の例えばポータブルナビゲーション装置や、或いは、任意の情報処理装置に適用できることは勿論である。
【００１５】
図１は、本実施形態に係るカーナビゲーション装置１の基幹部分の機能的構成を示す図である。
この図に示すように、カーナビゲーション装置１は、ＣＰＵ１０と、２つのフラッシュＲＯＭ１２、１４と、ＤＲＡＭ１６とを備え、これらがデータバス（Ｄａｔａ  Ｂｕｓ）１８に接続されて相互にデータ送受可能に構成されている。
ＣＰＵ１０は、各部を中枢的に制御する制御手段として機能し、フラッシュＲＯＭ１２、１４に記憶されているプログラムを実行することで、各種の制御機能やナビゲーション制御機能を実現する。ＤＲＡＭ１６は、Ｄｙｎａｍｉｃ  ＲＡＭと呼ばれる揮発性のメモリであり、ＣＰＵ１０のワークエリアとして用いられる。フラッシュＲＯＭ１２、１４は、各種プログラムやデータを記憶する不揮発性のメモリである。
【００１６】
フラッシュＲＯＭ１２はＢＯＯＴプログラム１８を記憶する。また、フラッシュＲＯＭ１４はナビゲーションプログラム２０及び２つのナビゲーションバックアッププログラム２１、２２、さらに、ユーザーが設定した各種のデータを記憶する比較的容量の大きなストレージメディアである。ＢＯＯＴプログラム１８と、ナビゲーションプログラム２０及びナビゲーションバックアッププログラム２１、２２とを、別体のメモリに個々に記憶させることで、メモリ損傷時の修理を容易とし、また、ＢＯＯＴプログラム１８の記憶領域でのビット化け発生率を抑えている。
【００１７】
また、フラッシュＲＯＭ１４においては、図２に示すように、ナビゲーションプログラム２０、及び、２つのナビゲーションバックアッププログラム２１、２２が所定の記憶エリアＲａ、Ｒｂ、Ｒｃにそれぞれ記憶されている。記憶エリアＲａは、通常時に使用されるナビゲーションプログラム２０を記憶するエリアであり、記憶エリアＲｂ、Ｒｃはナビゲーションバックアッププログラム２１、２２を記憶するためのエリアである。すなわち、カーナビゲーション装置１の起動時には、当該記憶エリアＲａに記憶されているナビゲーションプログラム２０がＤＲＡＭ１６の記憶エリアＲｄに展開され処理が実行される。なお、ＤＲＡＭ１６において、記憶エリアＲｄのアドレスは、展開の都度に変わり得るものである。
【００１８】
上記ＢＯＯＴプログラム１８は、電源投入時に、ナビゲーションプログラム２０に先だって読み出され実行されるプログラムである。このＢＯＯＴプログラム１８が提供する処理には、各種レジスタの初期化処理や、後述する簡易メモリチェック処理、詳細メモリチェック処理、各種の制御処理が含まれている。
ＣＰＵ１０が、これら簡易メモリチェック処理及び詳細メモリチェック処理を実行することで、メモリを検査する検査手段、及び、ナビゲーションプログラム２０をナビゲーションバックアッププログラム２１、２２で書き換える書換手段として機能する。
【００１９】
ナビゲーションプログラム２０は、簡易メモリチェック処理後に読み出されて、地図表示や経路案内、目的地までの経路検索などのナビゲーション動作（情報処理）を実行するためのプログラムデータである。また、このナビゲーションプログラム２０には、ナビゲーション動作に供される地図データやランドマーク情報、各種アイコン等のデータも含まれている。なお、この種のデータをナビゲーションプログラム２０と分けて記憶してもよいことは勿論である。
ナビゲーションバックアッププログラム２１、２２は、上記簡易メモリチェック処理及び詳細メモリチェック処理の結果、ナビゲーションプログラム２０のデータを構成するビット値にエラー（誤り）が検出されたときに使用されるプログラムであって、正常なナビゲーションプログラム２０と同一データを保持する。複数のナビゲーションバックアッププログラム２１、２２をフラッシュＲＯＭ１４に記憶させることで、ナビゲーションプログラム２０にエラーが発生したときの復旧の可能性が高められる。
【００２０】
なお、本実施形態では、ナビゲーションプログラム２０を記憶する不揮発性のメモリとしてフラッシュＲＯＭ（ＥＥＰＲＯＭ）を例示したが、これに限らず、記憶保持に電力の供給を要さない任意の規格の不揮発性のメモリを用いることができる。例えば、不揮発性のメモリとして、ハードディスク、ＳＤカード、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｃ）等を好適に用いることができる。
また、図１には、カーナビゲーション装置１の主要な部分のみを示しており、この他にもカーナビゲーション装置１は、車両の現在位置を検出する位置検出手段としてのＧＰＳやジャイロセンサ、交通情報を取得する受信手段としての無線通信装置、ナビゲーション動作中に周辺の地図や現在位置、走行ルートをなど表示する表示手段としてのディスプレイ装置、ユーザーの操作を受け付ける操作手段としての操作子やタッチセンサ、電源ボタンを備えている。
【００２１】
次いで、本実施形態の動作として、ナビゲーションプログラム２０を記憶しているフラッシュＲＯＭ１４のメモリチェック処理について詳述する。
図３は、本実施形態のメモリチェック処理のフローチャートである。
本実施形態のメモリチェック処理には、簡易メモリチェック処理と、詳細メモリチェック処理とが含まれている。簡易メモリチェック処理は、カーナビゲーション装置１の電源投入時にイニシャル処理の実行に伴って行われる処理であり、また、詳細メモリチェック処理はイニシャル処理完了後のナビゲーション動作中に適宜のタイミングで行われる処理である。
詳述すると、図３に示すように、カーナビゲーション装置１のＣＰＵ１０は、電源が投入されると、先ず、フラッシュＲＯＭ１２に記憶されているＢＯＯＴプログラム１８を読み込んで起動しイニシャル処理を開始し（ステップＳａ１）、次いで、ナビゲーションプログラム２０の簡易メモリチェック処理を実行する（ステップＳａ２）。
【００２２】
図４は、簡易メモリチェック処理のフローチャートである。
この簡易メモリチェック処理は、フラッシュＲＯＭ１２に記憶されているナビゲーションプログラム２０のデータのビット値にエラー（誤り）が無いかを簡易的に検査する処理であり、その検査は、誤り検出符号の一種であるチェックサムを用いて行われ、このチェックサムをナビゲーションプログラム２０の全部のコードではなく、その一部のコードに限定して行うことで簡易的な検査としている。
すなわち、ＣＰＵ１０は、図４に示すように、ナビゲーションプログラム２０の全コードのビット値をフラッシュＲＯＭ１４の記憶エリアＲａから読み出し、データバス１９を介してＤＲＡＭ１６にコピーする（ステップＳｂ１）。
【００２３】
次いでＣＰＵ１０は、ＤＲＡＭ１６のナビゲーションプログラム２０のコードを対象にチェックサムの検査（サムチェック（ＳＵＭ  Ｃｈｅｃｋ））を簡易的に実行する（ステップＳｂ２）。簡易的なサムチェック（簡易サムチェック）について詳述すると、図５（Ａ）に示すように、ＤＲＡＭ１６にコピーされたナビゲーションプログラム２０の全コードの記憶エリアＲｄを、８ｋＢ（キロバイト）サイズのデータブロックに相当するサムチェック実施領域Ｔａと、このサムチェック実施領域Ｔａよりも大きい５６ｋＢ（キロバイト）のデータブロックに相当するサムチェック未実施領域Ｔｂとが交互に配置されるように分割し、サムチェックをサムチェック実施領域Ｔａに限定して行う。これにより、記憶エリアＲｄの全体にサムチェックを実施する場合に比べてメモリチェックの処理時間を短縮でき、図５（Ａ）の例では、１／８の時間で処理を終了することができる。
【００２４】
前掲図４に戻り、ＣＰＵ１０は、ステップＳｂ２での簡易サムチェックの結果、エラー（ＥＲＲＯＲ）が検出されなかった場合には（ステップＳｂ３：Ｎｏ）、簡易メモリチェック処理を終了し、また、（ＥＲＲＯＲ）が検出された場合には（ステップＳｂ３：Ｙｅｓ）、ナビゲーションプログラム２０の復元処理を開始する（ステップＳｂ４）。
【００２５】
図６は、ナビゲーションプログラム復元処理のフローチャートである。
このナビゲーションプログラム復元処理では、ナビゲーションバックアッププログラム２１、２２をナビゲーションプログラム２０にコピーする処理が行われる。すなわち、図６に示すように、ＣＰＵ１０は、プログラムタスクの動作状況を監視し、他にプログラムタスクが動作していないときに（ステップＳｃ１：Ｎｏ）、フラッシュＲＯＭ１４の記憶エリアＲｂに記憶されているナビゲーションバックアッププログラム２１を記憶エリアＲａに新たなナビゲーションプログラム２０としてコピーする（ステップＳｃ２）。
【００２６】
本実施形態では、ナビゲーションバックアッププログラム２１のサムチェックをサムチェック実施領域Ｔａと同じ容量の例えば８ｋＢのデータブロックずつ行うこととし、このステップＳｃ２では、サムチェック対象の例えば８ｋＢ分のデータブロックがコピーされる。また、このコピーのタスクは、他のプログラムタスクの実行に影響を与えないようにするために、タスクの実行優先度を最下位にして実行される。
すなわち、当該ナビゲーションプログラム復元処理がナビゲーション動作中に行われる場合であっても、ナビゲーション動作に影響を与えることなく復元処理を実行できる。これにより、ユーザーの時間を割くことなくナビゲーションプログラム２０を復元できる。
【００２７】
次いで、ＣＰＵ１０は、ナビゲーションバックアッププログラム２１にビット化けが発生していないかを確認するために、コピーした８ｋＢ分のデータブロックに対してサムチェック処理を行う（ステップＳｃ３）。
このサムチェック処理の結果、エラー（ＥＲＲＯＲ）が検出されなかった場合（ステップＳｃ４：Ｎｏ）、ＣＰＵ１０は、新たなナビゲーションプログラム２０の全てのコードについてサムチェックが完了したか否かを判断する（ステップＳｃ５）。そして、完了していない場合には（ステップＳｃ５：Ｎｏ）、ＣＰＵ１０は、処理手順をステップＳｃ１に戻して残りのデータブロックのコピーとサムチェックを行い、完了している場合には（ステップＳｃ５：Ｙｅｓ）、処理を終了する。
【００２８】
ステップＳｃ４におけるサムチェック処理の結果、エラーが検出された場合（ステップＳｃ４：Ｙｅｓ）、ＣＰＵ１０は、今回の検査対象としているナビゲーションバックアッププログラム２１のコピーを中止して当該プログラムに基づく復元を中止する（ステップＳｃ６）。そして、ＣＰＵ１０は、ナビゲーションプログラム２０のコピー元を、他のナビゲーションバックアッププログラム２２に変更し（ステップＳｃ７）、処理手順をステップＳｃ１に戻し、当該ナビゲーションパックアッププログラム２２のコピーとサムチェックとを行う。
【００２９】
前掲図４に戻り、ナビゲーションプログラム復元処理が完了すると（ステップｓｂ４）、ＣＰＵ１０は、当該簡易メモリチェック処理を終了する。なお、ナビゲーションプログラム復元処理において、ナビゲーションバックアッププログラム２１、２２の各々でチェックサムにエラーが検出されている場合には、上記ステップＳｂ６での再起動に代えて、ナビゲーションプログラム２０にエラーがある旨がユーザーに通知されることとなる。
【００３０】
前掲図３に戻り、上記簡易メモリチェック処理（ステップｓａ２）が終了すると、ＣＰＵ１０は、ナビゲーションプログラム２０を実行することで、ナビゲーション動作を開始（起動）する（ステップＳａ３）。
【００３１】
このように、上記簡易メモリチェック処理においては、チェック対象領域を間引いてサムチェックを行っているため、メモリチェックに要する時間が短縮され、電源投入後からナビゲーション動作開始までの待ち時間を短縮し、装置の高速起動が実現できる。
ただし、この簡易メモリチェック処理でエラーが検出されなかった場合でも、例えば図５に示すように、サムチェック未実施領域Ｔｂのデータブロックにビット化けが発生している可能性もある。特に、フラッシュＲＯＭ１４のようなストレージメディアでは、例えば温度、電磁ノイズ、振動といった様々な環境の影響により、記憶されたデータにビット化けが発生し得る。
【００３２】
そこで、本実施形態では、ナビゲーションプログラム２０の記憶エリアＲａの全領域をナビゲーション動作中にチェックすることで、ビット化けを検出する。このとき、記憶エリアＲａの全領域を一度にチェックすると、このチェック処理にＣＰＵ１０が占有されてしまいナビゲーション動作を妨げかねない。そこで本実施形態では、サムチェックを上述した８ｋＢのデータブロックごとに断続的に行うこととしている。
【００３３】
詳述すると、ナビゲーション動作中においては、ナビゲーション動作を実現する複数の機能（プログラムタスク）が実行されている。これらのプログラムタスクは互いにＣＰＵ１０をシェアしながら動作し、これらのプログラムタスクによってＣＰＵ１０が常時占有されている訳ではない。したがって、本実施形態では、ＣＰＵ１０の処理負荷が軽いとき、すなわち、ＣＰＵ１０でプログラムタスクが実行されていないときに、ナビゲーションプログラム２０の詳細メモリチェック処理を行うこととしている。
【００３４】
図７は、詳細メモリチェック処理のフローチャートである。
ＣＰＵ１０は、ナビゲーション動作中に他のプログラムタスクの動作の有無を監視し、他のプログラムタスクが動作していないときに（ステップＳｄ１）、フラッシュＲＯＭ１４の記憶エリアＲａに記憶しているナビゲーションプログラム２０をサムチェックする（ステップＳｄ２）。このサムチェックのタスクは、本来のナビゲーションプログラム２０の実行に影響を与えないようにするために、タスクの実行優先度を最下位にして実行される。また、１回あたりのサムチェック時間を短縮し、他のプログラムタスクの動作を阻害しないようにすべく、１回のサムチェックでは、サムチェック実施領域Ｔａと同じ容量の例えば８ｋＢのデータブロックがサムチェックされる。
【００３５】
このサムチェックの結果、エラーが検出されなかった場合（ステップＳｄ３：Ｎｏ）、ＣＰＵ１０は、ナビゲーションプログラム２０の全てのデータブロックについてサムチェックが完了したか否かを判断し（ステップＳｄ４）、完了していない場合には（ステップＳｄ４：Ｎｏ）、処理手順をステップＳｄ１に戻して残りのデータブロックのサムチェックを継続し、完了している場合には（ステップＳｄ４：Ｙｅｓ）、処理を終了する。
【００３６】
一方、ステップＳｄ２のサムチェックの結果、エラーが検出された場合には（ステップＳｄ３：ＹＥＳ）、ＣＰＵ１０は、前掲図６に示したナビゲーションプログラム復元処理を実行し、ナビゲーションバックアッププログラム２１、２２を用いてナビゲーションプログラム２０を復元する（ステップＳｄ５）。
これにより、起動時の簡易メモリチェック処理で検出されなかったエラーが検出され、ビット化けのないナビゲーションプログラム２０を復元させることができる。
【００３７】
このように本実施形態によれば、ナビゲーションプログラム２０の実行開始前に、当該ナビゲーションプログラム２０を複数に分割して成る一部のデータブロックを対象に検査し、また、ナビゲーションプログラム２０の実行開始後には、全部のデータブロックを対象に検査を実行する構成とした。これにより、ナビゲーションプログラム２０の実行開始前に行うメモリチェック時間を短縮して高速起動が可能となり、また、当該ナビゲーションプログラム２０の実行開始後の検査により当該ナビゲーションプログラム２０のエラーを余すことなく検査できる。
【００３８】
また本実施形態によれば、ナビゲーションプログラム２０の実行開始後に検査するときには、ナビゲーションプログラム２０の実行に伴うプログラムタスクが動作していないタイミングでデータブロック単位で検査する構成とした。この構成により、ナビゲーションの動作を妨げることなく、ナビゲーションプログラム２０のデータ全体をチェックすることができる。
【００３９】
また本実施形態によれば、ナビゲーションプログラム２０の実行中に、ナビゲーションバックアッププログラム２１、２２に書き換えるときには、ナビゲーションプログラム２０の実行に伴うプログラムタスクが動作していないタイミングで、ナビゲーションバックアッププログラム２１、２２を複数に分割して成るデータブロック単位で書き換える構成とした。これにより、ナビゲーション動作を妨げることなく、また、ユーザーの時間を割くことなくナビゲーションプログラム２０を復元できる。
【００４０】
特に、本実施形態によれば、プログラム復元時には、データブロック単位で書き換えるごとに、書き換えられたデータブロックを検査する構成としたため、確実に、正常なナビゲーションプログラム２０を復元することができる。
【００４１】
なお、上述した実施形態は、それぞれ本発明の一態様を示すものであり、本発明の趣旨を逸脱しない範囲で任意に変形及び応用が可能である。
【００４２】
上述した実施形態において、簡易メモリチェック処理によるエラーの検出率を高めるために、簡易メモリチェック処理が行われるごとに、メモリチェックを行うデータブロックを変更してもよい。
例えば、ナビゲーションプログラム２０の記憶エリアＲａをＮ等分したＮ個のデータブロックに分割し、簡易メモリチェック処理ではｍ個のデータブロックを対象にメモリチェックする場合、簡易メモリチェック処理を実行するごとに、対象のデータブロックを異ならせて（Ｎ／ｍ）回の簡易メモリチェック処理で記憶エリアＲａの全体のチェックが行われる構成としてもよい。
【００４３】
上述した実施形態において、ナビゲーションプログラム２０の動作中に、当該ナビゲーションプログラム２０の全部を対象に検査する構成としたが、これに限らず、ナビゲーションプログラム２０の実行前の簡易メモリチェック処理で検査したデータブロック以外のデータブロックを対象に検査を実行する構成としてもよい。
これにより、ナビゲーション動作中の検査時間を短くすることができる。
【００４４】
上述した実施形態において、複数のナビゲーションバックアッププログラム２１、２２を予め備える構成を例示したが１つもでもよい。
【符号の説明】
【００４５】
１  カーナビゲーション装置（情報処理装置）
１０  ＣＰＵ（制御手段）
１２、１４  フラッシュＲＯＭ（不揮発性メモリ）
２０  ナビゲーションプログラム（プログラムデータ）
２１、２２  ナビゲーションバックアッププログラム（バックアップデータ）
Ｒａ〜Ｒｄ  記憶エリア
Ｔａ  サムチェック実施領域
Ｔｂ  サムチェック未実施領域
【図１】
2011059912.tif 000003
【図２】
2011059912.tif 000004
【図３】
2011059912.tif 000005
【図４】
2011059912.tif 000006
【図５】
2011059912.tif 000007
【図６】
2011059912.tif 000008
【図７】
2011059912.tif 000009