(57)【要約】【課題】データ読み出しの誤り検出が迅速に行われ、データの転送が誤りなく迅速に行われる情報処理装置を提供すること。【解決手段】ナビゲーション用システムプログラムと予め計算された誤り検出符号をブートデバイス１３に格納し、ナビゲーション装置１の起動時に、ＣＰＵ１１はブートデバイス１３からナビゲーション用システムプログラムを読み出してＳＤＲＡＭ１２へ格納する。このとき、ＣＰＵ１１とは異なるハードウェアであるＦＰＧＡ１４が、ＣＰＵ１１がブートデバイス１３からナビゲーション用システムプログラムを読み出すことに同期してナビゲーション用システムプログラムのデータを取り込み、誤り検出符合を演算する。ＣＰＵ１１がナビゲーション用システムプログラムの読み出しを終了すると、ＦＰＧＡ１４が演算した誤り検出符号とブートデバイス１３に予め格納されていた誤り検出符号とを比較して、ブートデバイス１３からのナビゲーション用システムプログラムの読み出しに誤りがあったかどうかを判断する。【選択図】図２
2008021174.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
所定のデータとこの所定のデータに関する予め求められた誤り検出符号とを格納する第1のメモリ手段と、
第2のメモリ手段と、
前記第1のメモリ手段から前記所定のデータを読み出して前記第2のメモリ手段に格納する転送手段と、
前記転送手段とは異なるハードウェアであり、前記転送手段が前記第1のメモリ手段から前記所定のデータを読み出すことに同期して前記所定のデータを取り込み、前記取り込んだ所定のデータの誤り検出符合を演算する誤り検出符号演算手段と、
前記転送手段が前記第1のメモリから前記所定のデータを読み出すことを終了すると、前記誤り検出符号演算手段が演算した誤り検出符号と、前記第2のメモリに予め求めて格納されていた誤り検出符号とを比較して、前記転送手段による前記第1のメモリからの前記所定のデータの読み出しに誤りがあったかどうかを判断する制御手段とを備えることを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記所定のデータは、前記情報処理装置のシステムプログラムに関するデータであり、
前記転送手段は、前記情報処理装置の起動時に、前記第1のメモリ手段から前記情報処理装置のシステムプログラムに関するデータを読み出して前記第2のメモリ手段に格納することを特徴とする情報処理装置。
【請求項３】
請求項２に記載の情報処理装置において、
前記第1のメモリ手段は、前記情報処理装置のシステムプログラムに関するデータを格納するブートデバイスであり、
前記第2のメモリ手段は、前記ブートデバイスより高速に動作するメモリであることを特徴とする情報処理装置。
【請求項４】
請求項１から３のいずれかに記載の情報処理装置において、
前記誤り検出符号演算手段は、前記転送手段が前記第1のメモリ手段から前記所定のデータを読み出すときに使用する信号を使用して前記所定のデータを取り込むことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り検出を迅速に行う情報処理装置に関する。
【背景技術】
【０００２】
ナビゲーション装置などのシステムにおいて、システムプログラムなどのデータを、フラッシュメモリなどの低速なブートデバイスからＳＤＲＡＭなどの高速なデバイスに転送してからシステムを起動する技術が知られている。一方、データ通信を行う通信装置において、マイクロプロセッサやＤＭＡ転送部とは別に誤り符号検出部を設けて、データ転送の誤りを検出する技術が知られている（特許文献１）。
【０００３】
【特許文献１】特開２００２−６４４７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ナビゲーション装置などのシステムにおいて、システムの起動時に、システムプログラムなどのデータが、誤りなく迅速に、低速なブートデバイスから高速なデバイスに転送されることが望まれる。そのため、転送時の誤り検出を適切にかつ迅速に行うことが必要となる。しかし、特許文献１の技術は、通信装置でのデータ通信における誤り検出の方法を示すものであり、ナビゲーション装置などのシステムの起動時におけるシステムプログラムなどのデータの転送に適切なものではない。
【課題を解決するための手段】
【０００５】
請求項１の発明は、情報処理装置に適用され、所定のデータとこの所定のデータに関する予め求められた誤り検出符号とを格納する第1のメモリ手段と、第2のメモリ手段と、第1のメモリ手段から所定のデータを読み出して第2のメモリ手段に格納する転送手段と、転送手段とは異なるハードウェアであり、転送手段が第1のメモリ手段から所定のデータを読み出すことに同期して所定のデータを取り込み、取り込んだ所定のデータの誤り検出符合を演算する誤り検出符号演算手段と、転送手段が第1のメモリから所定のデータを読み出すことを終了すると、誤り検出符号演算手段が演算した誤り検出符号と、第2のメモリに予め求めて格納されていた誤り検出符号とを比較して、転送手段による第1のメモリからの所定のデータの読み出しに誤りがあったかどうかを判断する制御手段とを備えることを特徴とするものである。
請求項２の発明は、請求項１に記載の情報処理装置において、所定のデータは、情報処理装置のシステムプログラムに関するデータであり、転送手段は、情報処理装置の起動時に、第1のメモリ手段から情報処理装置のシステムプログラムに関するデータを読み出して第2のメモリ手段に格納することを特徴とするものである。
請求項３の発明は、請求項２に記載の情報処理装置において、第1のメモリ手段は、情報処理装置のシステムプログラムに関するデータを格納するブートデバイスであり、第2のメモリ手段は、ブートデバイスより高速に動作するメモリであることを特徴とするものである。
請求項４の発明は、請求項１から３のいずれかに記載の情報処理装置において、誤り検出符号演算手段は、転送手段が第1のメモリ手段から所定のデータを読み出すときに使用する信号を使用して所定のデータを取り込むことを特徴とするものである。
【発明の効果】
【０００６】
本発明は以上のように構成しているので、データ読み出しの誤り検出が迅速に行われ、データの転送が誤りなく迅速に行われる。
【発明を実施するための最良の形態】
【０００７】
図１は、本発明の情報処理装置の一実施の形態であるナビゲーション装置１の構成を示す図である。ナビゲーション装置１は、制御装置２、現在地検出装置３、地図データ記憶装置４、表示装置５、入力装置６などから構成される。制御装置２は、現在地検出装置３で検出された車両の現在地情報や、入力装置６を介して入力された目的地情報や、地図データ記憶装置４に格納された地図データなどを使用して、道路地図の表示、経路探索、経路誘導等の各種のナビゲーション処理を行う。道路地図や経路や各種の情報は、表示装置５に表示される。
【０００８】
制御装置２は、ＣＰＵ、メモリ、および、周辺回路から構成され、メモリに格納されたナビゲーション用システムプログラムを実行することにより、各種のナビゲーション処理を行う。本実施の形態のナビゲーション装置１では、制御装置２が実行するナビゲーション用システムプログラムはブートデバイスに格納され、起動時に、高速メモリに転送されて実行される。本実施の形態で言うナビゲーション用システムプログラムはＯＳ（オペレーティングシステム）を含むものとする。
【０００９】
図２は、制御装置２の内部において、ナビゲーション用システムプログラムがブートデバイスから高速メモリに転送される様子を説明する図である。制御装置２は、ＣＰＵ１１、ＳＤＲＡＭ１２、ブートデバイス１３、ＦＰＧＡ１４、バス１５を有し、ＣＰＵ１１、ＳＤＲＡＭ１２、ブートデバイス１３、ＦＰＧＡ１４はバス１５を介して接続される。
【００１０】
ＣＰＵ１１はマイクロプロセッサで構成され、ＳＤＲＡＭ１２は高速メモリであるＳＤＲＡＭで構成される。ナビゲーション用システムプログラムは、ブートデバイス１３からＳＤＲＡＭ１２にロードされ、ＳＤＲＡＭ１２上で実行される。ＳＤＲＡＭ１２は揮発性メモリであるため、ナビゲーション装置１の電源がオフすると、ＳＤＲＡＭ１２にロードされたナビゲーション用システムプログラムは消滅する。
【００１１】
ブートデバイス１３は、フラッシュメモリで構成される書き換え可能なＲＯＭであり、ナビゲーション用システムプログラムを格納する。ブートデバイス１３はＲＯＭであるため、ナビゲーション装置１の電源がオフされても、格納されたナビゲーション用システムプログラムは保持される。ただし、書き換え可能であるためプログラムを更新することができる。
【００１２】
ＦＰＧＡ１４は、誤り検出符号を計算するための回路が組み込まれたＦＰＧＡ(Field Programmable Gate Array)である。ＦＰＧＡ１４はゲートアレイであり、ＣＰＵ１１、ＳＤＲＡＭ１２、ブートデバイス１３などとは独立したＩＣである。すなわち、ＦＰＧＡ１４は、ＣＰＵ１１、ＳＤＲＡＭ１２、ブートデバイス１３などとは異なる独立したハードウェアである。
【００１３】
ナビゲーション装置１の電源がオンされると、制御装置２のＣＰＵ１１がオンされ、ＣＰＵ１１は、ＲＯＭ（不図示）に格納されたブートプログラムを実行する。ブートプログラム（ブートストラップローダー）は、ブートデバイス１３に格納されたナビゲーション用システムプログラムを、ブートデバイス１３からＳＤＲＡＭ１２へ転送する。すなわち、ＣＰＵ１１は、ブートデバイス１３からナビゲーション用システムプログラムのデータを順次読み出して、ＳＤＲＡＭ１２へ順次格納する。
【００１４】
図３は、ＦＰＧＡ１４内部の構成を示す図である。以下、図２および図３を参照して、ＦＰＧＡ１４の動作について説明する。本実施の形態では、誤り検出方式としてチェックサムの例を説明する。また、誤り検出符号の計算は、ナビゲーション用システムプログラム全体に対して計算する例で説明をする。
【００１５】
ＦＰＧＡ１４は、バス１５と接続する。バス１５は、DATAバス、READ（リードイネーブル）信号、WRITE（ライトイネーブル）信号、CLOCK信号などから構成される。また、ＦＰＧＡ１４には、ＣＰＵ１１からブートデバイス１３用チップセレクト信号であるCSBOOT信号、ＦＰＧＡ１４用チップセレクト信号であるCSFPGA信号が入力される。
【００１６】
ＣＰＵ１１は、まず、ナビゲーション用システムプログラムの転送開始前に、ＦＰＧＡ１４に対して転送初期設定を行う。転送初期設定は、誤り検出符号の計算結果を表示するsum_regレジスタ２１をクリアし、値を０にする。そして、ＦＰＧＡ１４の種々の内部レジスタ（不図示）の計算開始設定を行う。
【００１７】
ＣＰＵ１１がＦＰＧＡ１４に対して所定の設定を行ったり指示をしたりするのは、ＣＰＵ１１がDATAバスに所定のデータを出力し、WRITE信号およびCSFPGA信号を使用して行う。ＦＰＧＡ１４には、WRITE信号およびCSFPGA信号によりDATAバスのデータを取り込むと、取り込んだデータを格納するレジスタや、取り込んだデータの内容に応じた処理を行う論理回路（ロジック）などが組み込まれている。
【００１８】
次に、ＣＰＵ１１は、ブートデバイス１３からナビゲーション用システムプログラム自体のデータの読み出しを開始する。ブートデバイス１３には、読み出すナビゲーション用システムプログラムデータのチェックサムの誤り検出符号が予め計算されその計算結果が埋め込まれている。ナビゲーション用システムプログラム自体は固定されたデータであるため、予めチェックサムの誤り検出符号を計算しておくことが可能である。これにより、読み出されるデータのチェックサムの誤り検出符号をその都度計算する必要がなく、処理が迅速になり回路も簡単になる。
【００１９】
ＦＰＧＡ１４には、上述の通りブートデバイス１３へのCSBOOT信号が入力されている。このCSBOOT信号とREAD信号により、ＣＰＵ１１のブートデバイス１３へのアクセス監視を行う。具体的には、どちらの信号もアクティブな場合、読み出されているデータをREAD信号の立ち上がりタイミングで内部のwr_regレジスタ２２にライトする。すなわち、ＦＰＧＡ１４は、ＣＰＵ１１がブートデバイス１３からナビゲーション用システムプログラムのデータを読み出すことに同期してナビゲーション用システムプログラムのデータを取り込む。
【００２０】
その後、CLOCK信号に同期してsum_regレジスタ２１の値とwr_regレジスタ２２の値を加算器２３で足し算し、その結果をsum_regレジスタ２１に書き込む。ＣＰＵ１１が、ブートデバイス１３からデータを読み出している間、加算器２３によるwr_regレジスタ２２とsum_regレジスタ２１の足し算が続けられる。
【００２１】
ＣＰＵ１１は、ブートデバイス１３からＳＤＲＡＭ１２へのナビゲーション用システムプログラムの転送を終了すると、ＦＰＧＡ１４に対して計算終了の設定を行い、ＦＰＧＡ１４は足し算を停止する。ＣＰＵ１１は、その後、ＦＰＧＡ１４からsum_regレジスタ２１の値を読み出す。この場合は、ＦＰＧＡ１４は、ＣＰＵ１１からのCSFPGA信号とREAD信号により、sum_regレジスタ２１の内容をDATAバスに出力し、ＣＰＵ１１はそのデータを読み込むことができる。
【００２２】
図４は、ＣＰＵ１１が処理するブートプログラムの処理のフローチャートを示す図である。上述した通り、ナビゲーション装置１の電源オンによりＣＰＵ１１がオンされ、ブートプログラムが起動する。
【００２３】
ステップＳ１では、ＦＰＧＡ１４に対し、前述した転送初期設定を行う。ステップＳ２では、ブートデバイス１３からＳＤＲＡＭ１２へのナビゲーション用システムプログラムの転送を開始する。具体的には、ナビゲーション用システムプログラムが格納されているブートデバイス１３の所定のアドレスから読み出し(READ)を開始し、ＳＤＲＡＭ１２の所定のアドレスを先頭アドレスとして順次書き込んで(WRITE)いく。
【００２４】
ステップＳ３では、転送が終了したかどうかを判断する。ナビゲーション用システムプログラムのデータの最後に、データの最後であることを示すデータが付加されているため、そのデータを読み出したかどうかを判断する。転送が終了していない場合は、転送が終了するまで転送処理を繰り返す。転送が終了した場合は、ステップＳ４に進む。
【００２５】
ステップＳ４では、ＦＰＧＡ１４に対して転送終了の設定を行い、ＦＰＧＡ１４での足し算の処理を終了させる。ステップＳ５では、転送したナビゲーション用システムプログラムのデータの中の所定の位置に組み込まれている誤り検出符号を読み出し、所定のメモリに格納する。また、ＦＰＧＡ１４から、sum_regレジスタ２１の内容を読み出し所定のメモリに格納する。
【００２６】
ステップＳ６では、転送したナビゲーション用システムプログラムのデータに組み込まれていた誤り検出符号と、ＦＰＧＡ１４から読み出したＦＰＧＡ１４が計算した誤り検出符号とを比較する。ステップＳ７では、比較の結果、誤り検出符号が一致したかどうかにより転送が良好であったかどうかを判断する。誤り検出符号が一致せず、転送に誤りがあったと判断すると、ステップＳ１に戻り転送処理を最初から繰り返す。誤り検出符号が一致し転送が良好であったと判断するとステップＳ８に進む。
【００２７】
ステップＳ８では、ブートプログラムからＳＤＲＡＭ１２にロードしたナビゲーション用システムプログラムに制御を移す。その後、ナビゲーション用システムプログラムが実行され、各種のナビゲーション処理が行われる。
【００２８】
（１）以上のようにして、本実施の形態では、ＣＰＵ１１とは異なるハードウェアであるＦＰＧＡ１４が誤り検出符号の計算を行うようにした。これにより、データ読み出しの誤り検出が迅速に行われ、ブートデバイス１３からＳＤＲＡＭ１２へのナビゲーション用システムプログラムの転送が誤りなく迅速に行われる。ＣＰＵ１１がソフトウェアにより誤り検出符号を計算することに比べて、データの転送時間が短くてすむ。また、ＣＰＵ１１の負荷が減り、他の処理も行うことが可能になり全体の処理速度が速くなる。
（２）ブートデバイス１３には誤り検出符号を予め計算して格納しているため、読み出しごとに誤り検出符号を計算する必要がなく、さらに処理が速くなる。また、そのための回路も必要がないため、回路の構成が簡単になり、開発コストや製造コストも安くなる。これは、転送対象データが、ナビゲーション用システムプログラムのように固定されたデータであるから可能である。
（３）ＦＰＧＡ１４は、ＣＰＵ１１がブートデバイス１３にアクセスする信号(CS信号、READ信号)を取り込んで転送データを取り込むようにしている。すなわち、ＦＰＧＡ１４は、ＣＰＵ１１がブートデバイス１３にアクセスする信号と同じ信号を使用して、ナビゲーション用システムプログラムのデータを取り込んでいる。これにより、転送データを取り込むための信号線をわざわざ追加する必要がなく、簡単な回路構成で確実にその転送データを取り込むことができる。
【００２９】
−変形例−
（１）上記の実施の形態では、誤り検出符号を計算する回路をＦＰＧＡで構築する例を説明した。しかし、ＡＳＩＣであってもよい。ＦＰＧＡやＡＳＩＣのように、マイクロプロセッサであるＣＰＵ１１とは異なる外部のハードウェアデバイスで構築するものであればどのような形態でもよい。
（２）また、１チップの中でＣＰＵとＣＰＵとは異なる論理回路が構築できるようなＩＣの場合は、それぞれが異なるハードウェアで構築されていると考える。すなわち、誤り検出符号の計算を、転送制御やシステムの制御を行うＣＰＵ１１がソフトウェアで計算する形態と区別できるのであれば、すべて本発明の範疇となる。
（３）上記の実施の形態では、ＣＰＵ１１がブートデバイス１３からＳＤＲＡＭ１２へナビゲーション用システムプログラムを転送制御する例を説明した。しかし、ＣＰＵ１１の代わりに、ＤＭＡＣ(Direct Memory Access Controller)が転送制御を行うようにしてもよい。
（４）上記実施の形態では、高速メモリデバイスとしてＳＤＲＡＭを使用する例を説明したが、他の高速メモリデバイスであってもよい。また、ブートデバイスとしてフラッシュメモリを使用する例を説明したが、他の不揮発性デバイスであってもよい。すなわち、ブートデバイスより転送先のメモリデバイスの方が高速であるような形態であればよい。
（５）上記の実施の形態では、ＣＰＵ１１が誤り検出符号の比較を行う例を説明した。しかし、ＦＰＧＡ１４内部にそのような回路を設けて行うようにしてもよい。すなわち、ＦＰＧＡ１４が、ナビゲーション用システムプログラムの予め計算された誤り検出符号を取り込んで所定のレジスタに格納し、sum_regレジスタ２１と比較するようにすればよい。この場合は、ＦＰＧＡ１４が転送終了と同時に比較を行い、ＣＰＵ１１に対して割り込みをかけるようにしてもよい。ＣＰＵ１１は、その比較結果だけを読み出すようにすればよい。
（６）上記の実施の形態では、誤り検出符号を計算する際のデータの読み出しサイズに制限をかけず、すべてを読み出して誤り検出符号を計算し、最後に1回だけ比較する方法の例を説明した。しかし、データをあるサイズに分割したブロックことに読み出しを行い、ブロックごとに誤り検出符号を計算し比較を行うようにしてもよい。
（７）上記の実施の形態では、誤り検出方式としてチェックサムの例を説明した。しかし、ＣＲＣ方式や、パリティチェック方式など他の誤り検出方式であってもよい。元のデータの誤り検出符号を予め計算して元のデータに埋め込んでおくことができ、データを読み出すごとにＣＰＵ１１とは別のハードウェアで誤り検出符号を計算することができるような方式であればどのような方式でもよい。また、誤り検出にとどまらず、誤り訂正まで行うような方式でもよい。
（８）ブートデバイス１３として、高速に読み出すためにバーストリード／ページリードが可能なブートデバイスを使用するようにしてもよい。この場合、READ信号の立ち上がりでデータを取り込むのではなく、CLOCK信号のエッジで取り込むようにする。ＦＰＧＡ１４では、どちらのデバイスに対しても同じものが使用できるようにするために、内部に切り替えのレジスタを設けておくと良い。
（９）ＦＰＧＡ１４は、ブートデバイス１３へのCS（チップセレクト）信号を使用しているので、アドレスデータをデコードする必要がなく、回路構成が簡単になる。ただし、ＦＰＧＡ１４が、アドレスバスからアドレスを取り込んでアドレスをデコードして転送データを取り込むようにしてもよい。
【００３０】
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【図面の簡単な説明】
【００３１】
【図１】本発明の情報処理装置の一実施の形態であるナビゲーション装置１の構成を示す図である。
【図２】制御装置２の内部において、ナビゲーション用システムプログラムがブートデバイスから高速メモリに転送される様子を説明する図である。
【図３】ＦＰＧＡ１４内部の構成を示す図である。
【図４】ＣＰＵ１１が処理するブートプログラムの処理のフローチャートを示す図である。
【符号の説明】
【００３２】
１  ナビゲーション装置
２  制御装置
３  現在地検出装置
４  地図データ記憶装置
５  表示装置
６  入力装置
１１  ＣＰＵ
１２  ＳＤＲＡＭ
１３  ブートデバイス
１４  ＦＰＧＡ
１５  バス
２１  sum_regレジスタ
２２  wr_regレジスタ
２３  加算器
【図１】
2008021174.tif 000003
【図２】
2008021174.tif 000004
【図３】
2008021174.tif 000005
【図４】
2008021174.tif 000006