以下、本発明に係るカーナビゲーションシステムの一例を、図面を用いて詳細に説明する。
図1は、本実施の形態に係るカーナビゲーションシステム1と、サーバ20とを示した図である。図1に示すように、カーナビゲーションシステム1とサーバ20とは、ネットワーク回線30を介して接続されている。具体的に、カーナビゲーションシステム1は、車両2に搭載されると共に、後述するように携帯電話回線を介してネットワーク回線30に接続することが可能となっている。一方で、サーバ20もネットワーク回線30に接続されており、カーナビゲーションシステム1とサーバ20とは、ネットワーク回線30を介して、データの送受信を行うことが可能となっている。
なお、ネットワーク回線30は、インターネットのように広く第三者に公開されているネットワークであってもよく、LAN等のように、ネットワークのアクセスに一定の制限が課されるネットワークであってもよい。さらに、カーナビゲーションシステム1におけるネットワーク回線30への接続は、必ずしも携帯電話回線だけには限定されず、Wi−Fi(Wireless Fidelity)やWiMAX(Worldwide Interoperability for Microwave Access)などの通信回線を利用するものであってもよい。
さらに、図1には、カーナビゲーションシステム1とサーバ20とが1つずつしか示されていないが、カーナビゲーションシステム1やサーバ20は必ずしも1つずつには限定されない。一般的に、カーナビゲーションシステム1は、ネットワーク回線30を介して多数存在し、各ユーザが各々のカーナビゲーションシステム1を利用することによって、サーバ20にアクセスすることが可能となっている。また、サーバ20は、ネットワーク回線30に対して1台だけ接続されているものであってよく、また、多数接続されているものであってもよい。
[カーナビゲーションシステム1について]
図2は、カーナビゲーションシステム1の概略構成を示したブロック図である。カーナビゲーションシステム1は、ディスプレイ部5と、タッチパネル部6と、本体部10と、キーシリンダ部(アクセサリ電源検出手段)16とを有している。ディスプレイ部5には、経路案内時にユーザに対して走行中の周囲の地図情報などを表示する役割を有している。一般的に、ディスプレイ部5には、液晶ディスプレイが用いられる。また、必要に応じてディスプレイ部5には、経路案内時に音声情報を出力させるためのスピーカ(図示省略)などが設けられている。なお、このスピーカは、ディスプレイ部5に直接設けられるものには限定されず、車両に設置される音楽用スピーカを利用するものであってもよい。
タッチパネル部6は、ディスプレイ部5に表示されるメニューアイコンなどのタッチ操作を検出する役割を有している。ユーザのタッチ位置の情報が後述するCPU(制御手段、システム手段)15に伝達され、タッチ位置の情報と、ディスプレイ部5に表示されるメニューアイコンの表示位置との関係に基づいて、CPU15がユーザの操作内容を判断することが可能となっている。なお、本実施の形態においては、タッチパネル部6によりユーザの入力操作の検出を行う構成を説明するが、タッチパネル部6以外の操作手段として、例えば、キーボード、ジョイスティックおよび操作リモコンなどを用いることにより、ユーザの入力操作検出を行う構成であってもよい。
本体部10は、通信部(通信手段)11と、データ記録部(データ記録手段)12と、SDRAM(メモリ手段)13と、SDカード読み書き部14、CPU15とを有している。通信部11は、ネットワーク回線30との接続を行う役割を有している。通信部11として、具体的には携帯電話回線(例えば、CDMA(Code Division Multiple Access:2G)方式、W−CDMA(Wideband Code Division Multiple Access:3G)方式、HSDPA(High-Speed Downlink Packet Access)方式など)を用いるネットワークインターフェース機器などが該当する。通信部11はCPU15の指示(制御命令)に応じて、次述するカーナビゲーションシステム1の情報をサーバ20に出力し、また、サーバ20が出力したデータの取得処理を行う。
データ記録部12には、カーナビゲーションシステム1におけるシステム情報および地図情報が記録されている。データ記録部12には、ハードディスク、SSD(Solid State Drive)、FLASHメモリ、SDカードなどの一般的な補助記録装置を用いることが可能となっている。本実施の形態に係るカーナビゲーションシステム1では、データ記録部12として、FLASHメモリが用いられる場合について説明する。
データ記録部12には、一般的な補助記録装置と同じように、記録されたデータの記録位置を示すためのアドレスが割り当てられており、このアドレスを参照することによってデータの内容を判断することが可能となっている。特に、本実施の形態に係るデータ記録部12では、予め規定された容量のアドレス範囲毎に、予め記録対象となるファイルデータの種類(データ構造)が決められている。
例えば、図3(a)に示すように、予めファイルデータA1(データA1)の記録には、アドレス1000〜2000のアドレス範囲が確保(規定)されており、ファイルデータB(データB)の記録には、アドレス0000〜1000のアドレス範囲が確保(規定)されており、ファイルデータC(データC)の記録には、アドレス2000〜3000のアドレス範囲が確保(規定)されている。このため、図3(a)のファイルデータA1(データA1)の場合のように、確保されたデータ容量(アドレス1000〜2000の範囲に該当するデータ容量)よりも、記録されるファイルデータA1のデータ量の方が小さい場合には、ファイルデータA1の最後のアドレスから確保されたアドレス範囲の最後のアドレスまで(ファイルデータA1においては、アドレス2000まで)のデータ領域に空データ(例えば、Nullデータ)が記録されるデータ構造となっている。
このため、図3(b)に示すように、ファイルデータA1が更新されてファイルデータA2(データA2)となり、ファイルデータA2のデータ量が増えた場合であっても、予め空データ領域を考慮してファイルデータA2のアドレス範囲が確保されているため、開始アドレス1000から終了アドレス2000までの範囲(アドレス範囲)を変更することなく、ファイルデータA1よりもデータ量が増大したファイルデータA2にデータを更新することが可能となる。従って、更新されたファイルデータA2以外のファイルデータB、ファイルデータCは、開始アドレスおよび終了アドレスを変更する必要がなく、データ記録部12に記録されていたファイルデータが他のファイルデータの更新に伴って、後のアドレスへとアドレス範囲がずれ込んで変わってしまうことを防止することができる。
データ記録部12には、システム情報、地図情報などのほかに、カーナビゲーションシステム1のID情報(カーナビゲーションシステム1をそれぞれの機器毎に特定するため情報であって、カーナビゲーションシステム1の製造番号情報や識別番号情報などが該当する)、および、データ記録部12に記録される地図情報やシステム情報のバージョン情報(このバージョン情報によって、データ記録部12に記録される地図情報やシステム情報の更新回数、具体的なデータ内容などを、サーバ20で特定することが可能となる。)が記録されている。
また、データ記録部12に記録されるシステム情報には、CPU15がカーナビゲーションシステム1における様々な機能を実現するためのプログラムなどが含まれる。プログラムとして、例えば、CPU15が、経路案内を行うためのプログラムや、データ記録部12に記録される情報を更新するためのデータ更新処理用のプログラム(例えば、図6においてフローチャートで示されたプログラム)などが該当する。CPU15は、データ記録部12に記録されるプログラムに基づいて、カーナビゲーションシステム1における様々な処理を実行する。
SDRAM13は、更新差分データを用いてデータの更新処理を行う際に利用されるワークエリアである。SDRAM13のデータ容量は、データ記録部12よりも小容量となっている。本実施の形態に係るデータ記録部12では、FLASHメモリが用いられているため、更新対象となるFLASHメモリのデータ領域のデータを一時的にSDRAM13に記録し、SDRAM13に記録されたデータを更新差分データに基づいて新たなデータ(更新データ)に変更する。その後、CPU15が、FLASHメモリの該当データ領域を消去した後に、SDRAM13に記録された新たなデータをFLASHメモリに書き込むことによって、データ記録部12のデータ更新が行われることになる。
ここで、更新差分データとは、データ記録部12に現在記録されているバーションのデータと、最新のバージョンのデータとを比較して相違するデータの情報が抽出されてまとめられたデータである。CPU15は、データ記録部12に記録されるデータを更新する場合に、データ記録部12に記録されている古いバージョンのデータの更新対象部分だけを、更新差分データを用いて更新することによって、新しいバージョンのデータを作成する。
例えば、新しいバージョンのデータと古いバージョンのデータとの相違が少ない場合には、更新差分データのデータ量を小さくすることが可能となる。また、更新差分データのデータ量が小さい場合であっても、新しいバージョンのデータが古いバージョンの先頭に数バイトのデータを追加したものである場合には、実質的に相違するデータは先頭の数バイトだけであるが、アドレスがシフトされる全てのデータに対して更新が必要となるため、新しいバージョンのデータのデータ量が大きくなってしまう。
新しいバージョンのデータ量が小さい場合であって、SDRAM13のデータ記録容量以下である場合、CPU15は、新しいバージョンのデータをSDRAM13に展開した後に、データの更新処理を実行することができる。一方で、所定アドレス以降のデータをシフトして記録しなければいけない場合のように、新しいバージョンのデータが大容量となってしまう場合には、SDRAM13に更新データ全体を展開することができない。このため、CPU15は、更新差分データに基づいて新しいバーションのデータを部分的にSDRAM13に展開した後に、展開された新しいバーションのデータの一部をデータ記録部12の所定領域に記録し、以後、新しいバーションの全てのデータが、更新差分データに基づいて展開されてデータ記録部12の所定領域に記録されるまで、処理を繰り返し行う。
このようにして、データ記録部12に、SDRAM13の記録容量を超える大きさの新しいバージョンのデータが全て記録された場合、CPU15では、後述するACC(アクセサリー電源)がオフ状態(例えば、キーシリンダにおいてキーがオフ(LOCK)位置に設定されてキーシリンダに挿入されているキーを抜くことができる状態となる操作を意味する)となった後に、新しいバージョンへデータの更新処理を行う。その詳細については後述する。
さらに、更新差分データではなく、ファイルデータそのものが更新データとしてサーバから送信される場合も存在する。この場合に、CPU15は、データ記録部12の所定領域に、受信したファイルデータそのものを記録する。このようにして、ファイルデータがそのままデータ記録部12に記録された場合にも、CPU15では、後述するACCがオフ状態となった後に、新しいバージョンへデータの更新処理を行う。その詳細についても後述する。
SDカード読み書き部14は、SDカードに記録されるデータの読み取りおよび書き込みを行う役割を有している。具体的に、SDカード読み書き部14は、データ記録部12のシステム情報または地図情報をファイルデータ毎に更新する場合、あるいはデータ記録部12の全データを更新する場合に、更新データの記録されたSDカードから必要とされる更新データを読み出す処理を行う。SDカード読み書き部14では、CPU15の指示(制御命令)に基づいて、SDカードにアクセスして必要な更新データを読み出し、CPU15では、SDカード読み書き部14によって読み出された更新データに基づいて、データ記録部12のデータの更新処理を行う。
なお、SDカード読み書き部14は、SDカードの情報を読み出すだけでなく、必要に応じて情報を書き込むことも可能となっている。さらに、SDカード読み書き部14の利用は、SDカードからシステム情報または地図情報を読み出してデータ記録部12を更新する場合だけには限定されない。例えば、SDカードに記録される音楽データを読み取って、車載スピーカから出力させたり、あるいは、SDカードに記録される映像や画像を読み出してディスプレイ部5に表示させることにも利用可能である。
CPU15は、データ記録部12に記録されるプログラムに従って、経路案内処理を行ったり、データ記録部12のデータを更新する処理を行ったりする役割を有している。CPU15が経路案内処理を行う場合には、図示を省略したGPSアンテナを介して車両2の現在位置を取得し、さらに図示を省略したジャイロや車速パルス検出器を介して、車両2の走行状態(進行方向、移動速度など)を取得する。そしてCPU15は、車両2の現在位置および走行状態に基づいて地図情報をディスプレイ部5に表示させて、必要に応じて音声情報により走行経路や交差点名などの案内を行う。CPU15が、データ記録部12のデータを更新する処理については後述する。
なお、CPU15の処理内容を示したプログラムは、必ずしもデータ記録部12に記録されるものには限定されない。例えば、データ記録部12とは別にプログラムを記録したROMなどを用意し、このROMに記録されるプログラムをカーナビゲーションシステム1の起動時にCPU15が読み込んで実行することにより、システムの起動処理を行うものであってもよい。また、CPU15には、図示を省略したRAMなどを備えており、RAMをプログラム処理におけるワークエリアとして利用する。
さらに、カーナビゲーションシステム1には、図示を省略した車両用のバッテリより電力が供給されている。この電力供給は、ACCのオン/オフ状態に左右されることなく常に供給されるものであるため、ACCがオフの状態であっても、上述したデータ記録部12のデータを更新する処理を行ったり、システムの再起動を行うことが可能となっている。また、カーナビゲーションシステム1は、図2に示すように、キーシリンダ部16を備えている。キーシリンダ部16は、キーの回動位置(あるいは、車両の動作状態)に基づいて、車両2がACCのオフ状態であるか否かを検出する役割を有している。キーシリンダ部16により検出されたACCのオン/オフ情報は、ACC情報としてCPU15へ出力される。
[サーバ20について]
続いて、サーバ20について説明する。図4は、サーバ20の概略構成を示したブロック図である。サーバ20は、通信部21と、更新情報記録部22と、サーバ用CPU23と、ROM24と、RAM25とを備えている。
通信部21は、ネットワーク回線30との接続を行う役割を有している。具体的には、有線通信あるいは無線通信を用いてネットワーク回線30に接続し、サーバ用CPU23の指示(制御命令)に応じて、カーナビゲーションシステム1のID情報およびバージョン情報を取得し、また、更新差分データをカーナビゲーションシステム1へ出力する。通信部21として、例えば、一般的なNIC(ネットワーク・インターフェース・カード)などが該当する。
更新情報記録部22は、ハードディスク、SSDなどの一般的な補助記録装置により構成されている。更新情報記録部22には、カーナビゲーションシステム1のハード構成と、様々なバージョンの更新データ(部分的な更新データではなく全体の更新データ)とが記録されている。例えば、カーナビゲーションシステム1は、ハード構成に応じて実現可能な機能などが異なっており、またハード構成に基づく機能に応じて、データ記録部12のデータ構造が異なっている。このため、サーバ用CPU23は、通信部21を介して取得したカーナビゲーションシステム1のID情報に基づいて、データ記録部12のデータ構造を判断する。
上述したように、データ記録部12には、予め規定された容量のアドレス範囲毎に、記録されるファイルデータのデータ構造が決められている。このため、サーバ用CPU23は、ID情報によりハード構成を特定することによって、データ記録部12に記録されるファイルデータの種類(内容、役割)およびその開始アドレスから終了アドレスまでの範囲(アドレス範囲)を把握することが可能となる。
また、更新情報記録部22には、データ記録部12に記録され得る様々なバージョンのデータが記録されている。サーバ用CPU23は、カーナビゲーションシステム1からバージョン情報を取得することによって、ID情報により特定されるハード構成に関して、該当するバージョン情報のデータ内容と、最新の更新データのデータ内容とを判断することが可能になっている。このため、サーバ用CPU23では、取得された異なるバージョンのデータ内容に基づいて、データ記録部12のデータ更新を行うための更新差分データの作成を行うことが可能になっている。
ROM24は、サーバ用CPU23においてデータ更新処理を行うためのプログラム(例えば、図7においてフローチャートで示されたプログラム)が記録されている。サーバ用CPU23は、ROM24に記録されるプログラムに基づいて、後述する更新差分データの作成を行う。また、RAM25は、サーバ用CPU23における更新差分データの作成処理においてワークエリアとして利用される。
なお、本実施の形態に係るサーバ20で作成されるデータは、上述した更新差分データと、ファイルデータとの2種類である。
[データ更新処理について]
次に、カーナビゲーションシステム1およびサーバ20におけるデータ更新処理について説明する。なお、データ更新処理の説明を行うに当たって、カーナビゲーションシステム1のSDカード読み書き部14には、データを読み出し可能な状態で予めSDカードがセットされており、このSDカードには、最新バージョンのデータが記録されているものとする。
図5は、カーナビゲーションシステム1とサーバ20との間の情報の送受信を示したタイミングチャートである。また、図6は、カーナビゲーションシステム1におけるデータ更新処理を示したフローチャートを示し、図7は、サーバ20におけるデータ更新処理を示したフローチャートを示している。
まず、カーナビゲーションシステム1のCPU15は、サーバ20のサーバ用CPU23に対して、ID情報とバージョン情報とを出力する(ステップS.1)。CPU15は、ID情報とバージョン情報とをサーバ用CPU23に出力することにより、サーバ20に対して新しい更新データが存在するかどうか(データ記録部12に記録されるシステム情報および地図情報が最新バージョンの情報であるか否か)の確認を行うことが可能となる。その後、CPU15は、送信した情報に対応する返信情報をサーバ用CPU23から受信したか否かの判断を行い(ステップS.2)、返信情報を受信していない場合(ステップS.2においてNoの場合)には、返信情報を取得するまで、同じ処理を繰り返し実行する。
なお、返信情報とは、サーバ用CPU23が、ID情報およびバージョン情報に基づいてデータの更新処理を行うか否かの判断を行った結果の情報であって、後述するように、更新を必要とする情報が存在しない旨の情報か、ファイルデータ単位で更新が必要とされる旨の情報か、更新差分データそのものかのいずれかが該当する。
一方で、サーバ用CPU23では、ネットワーク回線30を介して、いずれかのカーナビゲーションシステム1のCPU15から、ID情報とバージョン情報とを受信したか否かの判断を行い(ステップS.31)、ID情報とバージョン情報とを受信するまで、同じ処理を繰り返す(ステップS.31においてNoの場合にステップS.31の受信判断処理を繰り返し実行する)。
そして、サーバ用CPU23が、ID情報とバージョン情報とを受信した場合(ステップS.31においてYesの場合)、ID情報に基づいて、情報の送信元であるカーナビゲーションシステム1を特定し、データ記録部12のデータ構造を判断する(ステップS.32)。次いで、サーバ用CPU23は、判断されたデータ記録部12のデータ構造に対応するシステム情報および地図情報であって、最新のバージョンの情報と受信したバージョン情報に基づく情報とを更新情報記録部22から読み出して、データの相違点を抽出する(ステップS.33)。
そして、サーバ用CPU23は、双方の情報においてデータの相違点が存在するか否かを判断し(ステップS.34)、相違点が存在しない場合(ステップS.34においてNoの場合)には、カーナビゲーションシステム1に対して、最新バージョンの情報がデータ記録部12に記録されているため、更新を必要とする情報が存在しない旨の情報を、カーナビゲーションシステム1のCPU15に対して出力し(ステップS.35)、データ更新処理を終了する。
一方で、データの相違点が存在する場合(ステップS.34においてYes場合)、サーバ用CPU23は、まず、更新差分データでなくファイルデータをそのまま利用して更新する必要があるか否かの判断を行う(ステップS.36)。ファイルデータ単位で更新を行う必要がある場合(ステップS.36においてYesの場合)、サーバ用CPU23は、該当するアドレス情報とそのデータ量の情報とを抽出して、一時的に更新情報記録部22に記録する(ステップS.37)。
ここで、ファイルデータ単位で更新を必要とする場合とは、例えば、ファイルデータのデータ内容が新しいバージョンのデータと古いバージョンのデータとで大きく異なっており、データの相違点が多い場合が該当する。上述したように、カーナビゲーションシステム1のデータ記録部12では、予め規定された容量のアドレス範囲毎に、予め記録されるファイルデータのデータ構造が決められている。このため、図3で説明したように、古いバージョンのファイルデータ(例えば、図3(a)に示すデータA1)と、新しいバージョンのファイルデータ(例えば、図3(b)に示すデータA2)との相違が多い場合に、サーバ用CPU23は、該当するアドレスを基準として、古いファイルデータから新しいファイルデータへとファイルデータを丸ごと更新する処理を行う。このように、サーバ用CPU23は、ファイルデータ単位で更新を行う必要があると判断した場合に、該当するアドレス情報とデータ量の情報とを更新情報記録部22に記録する。
なお、新しいバージョンのデータ量が古いバージョンのデータ量に対して増減した場合であっても、データの相違が少ない場合には、サーバ用CPU23は、ファイルデータそのものを用いて更新処理を行うのではなく、更新差分データに基づいてデータ更新処理を行う。例えば、新しいバージョンのデータが、古いバージョンのデータの先頭に数バイトのデータを追加しただけにすぎない場合には、実質的なデータの相違は先頭の数バイトだけであり、それ以降のデータは追加されたデータの後のアドレスへとデータをシフトすればよい。このため、ファイルデータのデータ量が増減した場合であっても、新しいバージョンのデータと古いバージョンのデータとの相違が僅かである場合には、サーバ用CPU23は、ファイルデータをそのまま用いてデータの更新処理を行うのではなく、更新差分データを用いてデータの更新処理を行う。
ファイルデータ単位で更新を必要としない場合(ステップS.36においてNoの場合)、または、ファイルデータ単位で更新を行うためのアドレス情報とデータ量の情報とをデータ記録部12に記録した場合(ステップS.37)に、サーバ用CPU23は、データの相違点が存在する位置(アドレス)とその相違するデータの連続性などを考慮して、更新差分データを作成する(ステップS.38)。そして、サーバ用CPU23は、作成された更新差分データを、更新情報記録部22に一時的に記録する。
図8は、更新差分データを作成する手順を説明するための図である。データ記録部12に記録される古いバージョンのデータをold/rom1.binで示し、新しいバージョンのデータをnew/rom1.binとする。それぞれのデータは、ブロックサイズ毎に分割されている。サーバ用CPU23は、このブロックサイズ毎にデータの相違点の有無を判断し、一部のデータであっても相違点が存在する場合には、該当する単位ブロック毎のアドレスを検出する。図8(a)には、アドレス0001で示される単位ブロックの一部において相違点(old/rom1.binにおける「02」とnew/rom1.binにおける「ff」)が存在し、また、アドレス0002で示される単位ブロックの一部において相違点(old/rom1.binにおける「0a」とnew/rom1.binにおける「00」)が存在する場合が示されている。
サーバ用CPU23は、図8(b)に示すように、該当する単位ブロックのアドレス0001、0002を抽出し、該当するアドレスの単位ブロック間において、古いバージョンのデータ(old/0001.rom1、old/0002.rom1)と新しいバージョンのデータ(new/0001.rom1、new/0002.rom1)との差分(相違)をとって、図8(c)に示すように、更新差分データ(pat/rom1.pat)を作成する。更新差分データには、相違点が存在したアドレスとそのデータ内容とが記録されることになる。この更新差分データは、パッチファイルとして作成され、相違データがブロックサイズで抽出された更新差分データとそのアドレスとが記録されるため、全体的なデータ量を低減させることが可能となる。
なお、サーバ用CPU23が更新差分データを作成する方法は、上述した方法だけには限定されない。例えば、図8(b)に示すように、アドレス0001で示される単位ブロックの一部と、アドレス0002で示される単位ブロックの一部において相違点が存在する場合に、サーバ用CPU23が、該当する単位ブロックのアドレス0001、0002のブロックデータを結合して新たなファイルを作成し、さらに、差分のあるブロックに関するアドレス一覧ファイルを作成するものであってもよい。
その後、サーバ用CPU23は、全てのアドレス(ファイルデータを構成し得る全てのアドレス範囲)に対して、上述したステップS.36〜S.38の更新確認処理が行われたか否かを判断し(ステップS.39)、全てのアドレスに対してステップS.36〜S.38の処理が行われるまで(ステップS.39においてYesになるまで)、ステップS.36〜S.38の処理を繰り返す。
そして、サーバ用CPU23は、全てのアドレスにおいて、データの相違点を抽出して、ステップS.36〜S.38の処理が行われたものと判断した場合(ステップS.39においてYesの場合)に、作成された更新差分データや、ファイルデータ単位で更新が必要とされる旨の情報(アドレス情報とデータ量の情報)を、一時的に記録されていた更新情報記録部22から読み出して、カーナビゲーションシステム1のCPU15に対して出力する(ステップS.40)。
CPU15では、返信情報を受信した場合(ステップS.2においてYesの場合)、返信情報が、更新を必要とする情報が存在しない旨の情報であるか否かの判断を行う(ステップS.3)。返信情報が更新を必要とする情報が存在しない旨の情報である場合(ステップS.3においてYesの場合)、CPU15は、データ記録部12のデータ更新処理を終了する。
一方で、返信情報が、更新を必要とする情報が存在しない旨の情報ではない場合(ステップS.3においてNoの場合)、CPU15は、返信情報にファイルデータ単位で更新が必要とされる旨の情報(アドレス情報とデータ量の情報)が含まれているか否かの判断を行う(ステップS.4)。返信情報にファイルデータ単位で更新が必要とされる旨の情報が含まれている場合(ステップS.4においてYesの場合)、CPU15は、該当する情報から更新を行うアドレス情報とデータ量の情報とを取得して、データ記録部12の所定領域に記録する(ステップS.5)。
なお、本実施の形態に係るカーナビゲーションシステム1では、ファイルデータ単位で更新が必要とされる場合において、サーバ20のサーバ用CPU23から更新を行うアドレス情報とデータ量の情報が送信される場合について説明を行うが、サーバ用CPU23から、直接ファイルデータそのものを受信する構成とすることも可能である。ファイルデータは一般的にデータ量が大きくなるため、携帯電話回線などを通じて直接データの送受信を行うことは現状では多くない。しかしながら、今後の通信速度の向上および通信コストの低減により、ファイルデータそのものが送信される場合も想定され得る。従って、ファイルデータそのものを受信した場合、CPU15は、受信したファイルデータをデータ記録部12の所定領域に記録する処理を行う。
このようにして、データ記録部12の所定領域にアドレス情報とデータ量の情報とが記録された場合、あるいは、上述したように、データ記録部12の所定領域にファイルデータそのものが記録された場合、CPU15では、ACCがオフにセットされたか否かの情報(以下、ACC情報とする)を取得して、ACCがオフにセットされたと判断された後に、データの更新処理を行う。
返信情報にファイルデータ単位で更新が必要とされる旨の情報が含まれていない場合(ステップS.4においてNoの場合)、あるいは、データ記録部12の所定領域にアドレス情報とデータ量の情報とを記録した場合(ステップS.5)に、CPU15は、返信情報に更新差分データが含まれているか否かの判断を行う(ステップS.6)。
返信情報に更新差分データが含まれている場合(ステップS.6においてYesの場合)、CPU15は、更新差分データに基づいて求められる新しいバージョンのデータ量が、SDRAM13のデータ記録容量よりも小さいか否かの判断を行う(ステップS.7)。
具体的にCPU15では、次の処理を行うことによって新しいバージョンのデータのデータ量の判断を行う。
(1)CPU15が、更新対象となるデータ記録部12のアドレス情報を更新差分データから抽出する。
(2)CPU15が、抽出したアドレス情報に基づいてデータ記録部12より古いバージョンのデータを読み出して、SDRAM13に一時的に記録する。
古いバージョンのデータを読み出してSDRAM13に記録させる際に、更新差分データに基づいて更新対象となる一群のデータを一度にSDRAM13へと記録させることができない場合、CPU15は、更新差分データに基づいて求められる新しいバージョンのデータ量が、SDRAM13のデータ記録容量よりも大きいと判断する。一方で、古いバージョンのデータを読み出してSDRAM13に記録させる際に、更新差分データに基づいて更新対象となる一群のデータを一度にSDRAM13へと記録させることができる場合、CPU15は、更新差分データに基づいて求められる新しいバージョンのデータ量が、SDRAM13のデータ記録容量よりも小さいと判断する。
更新差分データに基づいて求められる新しいバージョンのデータ量が、SDRAM13のデータ記録容量よりも小さいと判断した場合(ステップS.7においてYesの場合)、CPU15は、(3)SDRAM13に記録されたデータ記録部12のデータを、更新差分データを用いて更新(変更)することにより、更新後のデータ(新しいバージョンのデータ)をSDRAM13に作成する。そして、CPU15は、(4)更新対象となるデータ記録部12のデータを、サーバ用CPU23より取得したアドレス情報に基づいて消去し、(5)SDRAM13に記録された更新後のデータを読み出して、消去されたデータ記録部12の該当するアドレスに書き込みを行うことにより、そのままデータの更新処理を完了させる。
SDRAM13は、データ記録部12やSDカードよりもデータの読み書き速度が速い。このため、更新対象となるデータのデータ量がSDRAM13のデータ記録容量よりも小さい場合には、経路案内処理に遅延などをもたらすことなく迅速にデータの更新処理を行うことが可能である。従って、更新対象となるデータ(新しいバージョンのデータ)のデータ量がSDRAM13のデータ記録容量よりも小さい場合、CPU15は、そのままデータの更新処理を実行する(ステップS.8)
一方で、更新差分データに基づいて求められる新しいバージョンのデータ量が、SDRAM13のデータ記録容量よりも大きいと判断した場合(ステップS.7においてNoの場合)、CPU15は、更新差分データをデータ記録部12の所定の領域に記録する(ステップS.9)。
返信情報に更新差分データが含まれていない場合(ステップS.6においてNoの場合)、更新差分データを用いてデータの更新処理を行った場合(ステップS.8)、あるいは、更新差分データをデータ記録部12の所定の領域に記録した場合(ステップS.9)、CPU15は、サーバ用CPU23より取得した返信情報に基づいて、更新対象となる全ての情報について更新判断処理(ステップS.4〜ステップS.9の処理)を行ったか否かの判断を行う(ステップS.10)。
全ての情報について更新判断処理が行われていない場合(ステップS.10においてNoの場合)、CPU15は、更新判断処理(ステップS.4〜ステップS.9)を繰り返し実行する。一方で、全ての情報の更新が完了した場合(ステップS.10においてYesの場合)、CPU15は、更新が完了した旨の情報を、ネットワーク回線30を介してサーバ用CPU23に出力する(ステップS.11)。
サーバ用CPU23では、CPU15から更新が完了した旨の情報が受信されたか否かの判断を行い(ステップS.41)、情報が受信されない場合(ステップS.41においてNoの場合)には、受信判断処理(ステップS.41)を繰り返し実行する。
なお、通信回線のトラブルなどによってCPU15から更新が完了した旨の情報が受信できない場合もあり得るため、完了した旨の情報が受信されたか否かの判断処理においてタイマー設定を行い、ステップS.40による情報の送信後に、一定期間経過しても更新が完了した旨の情報が受信されない場合に、サーバ用CPU23が更新処理を強制的に終了するようにしてもよい。
更新が完了した旨の情報を受信した場合(ステップS.41においてYesの場合)、サーバ用CPU23は、更新情報記録部22に記録されるデータ記録部12のバージョン情報を、最新情報に更新して(ステップS.42)、カーナビゲーションシステム1のデータ記録部12における更新処理を終了する。
一方で、カーナビゲーションシステム1のCPU15では、更新が完了した旨の情報をサーバ用CPU23に出力(ステップS.11)した後に、キーシリンダ部16よりACC情報を取得し、ACCがオフであるか否かの判断を行う(ステップS.12)。ACC情報によりACCがオフでないと判断される場合(ステップS.12においてNoの場合)には、ACC情報がオフになるまで、ACCがオフであるか否かの判断(ステップS.12)を繰り返し行う。
一方で、ACCがオフであると判断された場合(ステップS.12においてYesの場合)、CPU15は、返信情報に基づくアドレス情報およびデータ量の情報や、更新差分データが、データ記録部12の所定領域に記録(ステップS.5、ステップS.9)されているか否かの判断を行う(ステップS.13)。アドレス情報およびデータ量の情報や、更新差分データが記録されている場合(ステップS.13においてYesの場合)、CPU15は、これらの情報を読み出して、データ記録部12のデータの更新処理を実行する(ステップS.14)。
具体的に、CPU15がデータの更新処理を行う場合には、記録されたアドレス情報およびデータ量の情報に基づいて新しいバーションのファイルデータを更新する場合と、更新差分データに基づいて新しいバーションのデータを更新する場合とに分類される。ファイルデータ単位でデータの更新を行う場合、CPU15は、該当するアドレスのデータを、SDカード読み書き部14を介してSDカードから読み出して、データ記録部12に記録される情報の更新処理を行う。
本実施の形態に係るカーナビゲーションシステム1におけるデータ記録部12の更新処理は、
(1)CPU15が、SDカードに記録されるファイルデータ単位の情報を、サーバ用CPU23より取得したアドレス情報とデータ量とに基づいて読み出す。このとき、CPU15は、SDRAM13のデータ記録容量を考慮して、読み出し対象となるデータのデータ量を決定する。
(2)CPU15が、SDカードより読み出した情報をSDRAM13に一時的に記録する。
(3)CPU15が、データ記録部12においてデータの更新対象となるアドレスを、サーバ用CPU23より取得したアドレス情報に基づいて判断し、当該アドレスからSDRAM13に読み出したデータのデータ量に対応するデータ量だけデータを消去する。
(4)CPU15が、SDRAM13に記録された情報を、消去されたデータ記録部12に記録する。
CPU15は、上述した4つのステップを繰り返し実行して、ファイルデータ単位でのデータの更新を行う。
一方で、更新差分データに基づいてデータの更新処理を行う場合、
(1)CPU15が、更新対象となるデータ記録部12のアドレス情報を更新差分データから抽出する。
(2)CPU15が、抽出したアドレス情報に基づいて、データ記録部12より古いバージョンのデータを読み出して、SDRAM13に一時的に記録する。このとき、CPU15は、SDRAM13のデータ記録容量を考慮して、読み出し対象となるデータのデータ量を決定する。
(3)CPU15が、SDRAM13に記録されたデータ記録部12のデータを、更新差分データを用いて更新することにより、更新後のデータ(新しいバージョンのデータ)をSDRAM13に作成する。
(4)CPU15は、更新対象となるデータ記録部12のデータを、サーバ用CPU23より取得したアドレス情報に基づいて、SDRAM13のデータ容量に対応させて消去する。
(5)CPU15が、SDRAM13に記録された更新後のデータを読み出して、消去されたデータ記録部12に書き込みを行う。
CPU15は、上述した5つのステップを繰り返し実行することにより、データ記録部12のデータを、更新差分データに基づいて更新する。
その後、CPU15は、カーナビゲーションシステム1の再起動を行うことによって更新されたデータを反映させてから、カーナビゲーションシステム1を終了させて、(ステップS.15)、データ記録部12のデータ更新処理を終了する。
以上説明したように、カーナビゲーションシステム1では、サーバ20より受信した更新差分データにより作成された新しいバーションのデータが、SDRAM13を用いて一度に更新可能な場合に、そのままデータの更新処理を行う。このように、SDRAM13を用いて一度にデータの更新を行うことが可能な場合には、SDRAM13の読み書き速度が、データ記録部12やSDカードよりも高速であることから、経路案内処理に大きな処理遅延を与えることなく、また、経路案内処理を中断することなく、データの更新処理を行うことが可能となる。
一方で、更新差分データに基づくデータの更新処理であっても、SDRAM13を用いて一度に更新を行うことができない場合には、データ記録部12に対して何度もデータの読み出し・書き込みを行わなくてはいけなくなる。このため、経路案内処理中にデータの更新処理を行うと、経路案内処理を一時的に停止させて更新させなくてはいけなくなってしまうおそれが生じ得る。この点は、ファイルデータを用いてデータ記録部12のデータ更新を行う場合においても同様である。このため、本実施の形態に係るカーナビゲーションシステム1では、更新差分データを用いてデータの更新処理行うときに更新データのデータ量が大きくなってしまう場合や、ファイルデータを用いてデータの更新を行う場合には、データ更新処理によって経路案内処理などに影響がでないように、ACCがオフにされた後に、データの更新処理を行う。ACCがオフにセットされた場合には、車両2のエンジンが停止された状態となるため、データ更新処理を行っても、経路案内処理などに影響が生ずることがなくなる。
さらに、本実施の形態に係るカーナビゲーションシステム1では、データ更新処理が行われた後に、システムの再起動が必要になる場合もあるため、ACCがオフになった後であって、データの更新処理が行われた後に、システムの再起動を実行する。このように、ACCがオフに設定されてエンジンが停止された状態であれば、システムの再起動を行っても経路案内処理などに影響が生ずることがなくなる。さらに、ACCがオフになっている間に、システムの再起動を実行させておくことによって、次にユーザがACCをオンにして車両2を動かすときに、更新されたデータが確実にシステムにおいて反映された状態で、カーナビゲーションシステム1を使用することができ、カーナビゲーションシステム1を新しいバージョンのデータに基づいてすぐに使用することが可能となる。
以上、本発明に係るカーナビゲーションシステムについて説明を行ったが、本発明に係るカーナビゲーションシステムは上述した実施の形態には限定されない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
例えば、本実施の形態に係るカーナビゲーションシステム1では、更新差分データに基づくデータの更新処理であって、SDRAM13を用いて一度に更新を行うことができない場合のデータ更新処理や、ファイルデータによるデータ更新処理において、すぐにデータの更新処理を行わずに、ACCがオフになった後にデータ更新処理を行う場合について説明した。しかしながら、データ記録部12におけるデータの読み書き速度が比較的速い場合や、更新データのデータ量が比較的小さい場合には、そのままデータの更新処理を行っても、経路案内処理の中断などが生じない場合がある。このような場合には、ACCがオフになっていなくてもデータの更新処理を行うような構成とすることが可能である。
さらに、更新差分データに基づくデータの更新処理であって、SDRAM13を用いて一度に更新を行うことができない場合、CPU15は、ACCがオフになるまで更新処理を待つのではなく、積極的に経路案内処理を停止させて、データ更新処理を行う構成とすることも可能である。
一方で、本実施の形態に係るカーナビゲーションシステム1では、更新差分データに基づくデータの更新処理を、SDRAM13を用いて一度に更新を行うことができる場合には、ACCがオフであるか否かに拘わらず、データ更新処理を行う構成について説明を行ったが、更新差分データに基づくデータの更新処理を、SDRAM13を用いて一度に更新を行うことができる場合であっても、ACCがオフになった後に、データ更新処理を行う構成とするものであってもよい。
また、本実施の形態に係るカーナビゲーションシステム1では、データの更新処理が行われた場合に、システムの再起動を行う構成について説明を行ったが、データ更新処理を行った場合であっても、システムの再起動を必要としない場合も存在する。このため、例えば、CPU15が更新されたデータのアドレスなどから、システムの再起動をさせなくても更新されたデータを反映させることができるかどうかを判断し、システムを再起動させる必要がないと判断した場合にシステムの再起動を行うことなくデータの更新処理を終了するものであってもよい。