以下、本発明を具体化した実施形態による電子機器について図面を参照して説明する。図1(a)は、本実施形態による電子機器であるナビゲーション装置の構成を示し、図1(b)は、このナビゲーション装置により表示される地図の表示例を示す。
ナビゲーション装置1は、地図を地名と共に表示する装置であり、画像を表示するためのディスプレイ11と、音声を出力するためのスピーカ12と、ユーザによりナビゲーション装置1の各種動作を指示するためにタッチ操作されるタッチパネル13等を備える。タッチパネル13は、例えばユーザが指でタッチパネル13上をタッチすることにより、そのタッチ位置を検出するものであり、透光性を有し、ディスプレイ11上に重ねて配置されている。従って、ディスプレイ11に表示される画像は、タッチパネル13越しに透けて見えるようになっている。ナビゲーション装置1は、例えば自動車内に設置して使用され、また、ユーザが携帯して持ち運びできるようになっている。
ナビゲーション装置1は、GPS(Global Positioning System:全地球測位システム)等を利用してナビゲーション装置1の現在位置と移動方向を検出する機能を有しており、ディスプレイ11に、ナビゲーション装置1の現在位置を含むナビゲーション装置1の現在位置周辺の地図を、地名、及びナビゲーション装置1の現在位置と移動方向と共に表示するようになっている。
図1(b)に示す例では、ディスプレイ11に、地図を表わす地図画像21と、地名を示す地名画像22と、ナビゲーション装置1の現在位置と移動方向を示す矢印画像23とが表示されている。地図画像21は、ナビゲーション装置1の現在位置を含むナビゲーション装置1の現在位置周辺の地図を表わしており、地名画像22は、各々、その表示位置に対応する地域の地名を地名文字列により表示している。矢印画像23は、その表示位置によりナビゲーション装置1の現在位置を示しており、その表示方向によりナビゲーション装置1の移動方向を示している。ナビゲーション装置1は、このように、地図画像21により、ナビゲーション装置1の現在位置を含むナビゲーション装置1の現在位置周辺の地図を表示し、地名画像22により、地名を表示し、矢印画像23により、ナビゲーション装置1の現在位置と移動方向を表示する。
また、ナビゲーション装置1は、ディスプレイ11に、ユーザにナビゲーション装置1を操作させるための操作ボタンを表示し、操作ボタンがユーザによりタッチ操作(操作ボタンの表示箇所に対応するタッチパネル13上の位置がユーザによりタッチ)されることにより、そのタッチ操作に応じて、ナビゲーション装置1の現在位置を含まない別の地域の地図の表示や、表示する地図の拡大、縮小等を行うようになっている。
図1(b)に示す例では、ディスプレイ11に、地図画像21、地名画像22、及び矢印画像23に加え、操作ボタンを表わす画像としてメニューボタン画像24が表示されており、メニューボタン画像24をタッチ操作することにより、各種操作ボタン画像が表示され、それら各種操作ボタン画像をタッチ操作することにより、別の地域の地図の表示や、表示する地図の拡大や縮小等が行われる。ナビゲーション装置1の現在位置を含まない別の地域の地図の表示においては、ナビゲーション装置1の現在位置と移動方向を示す矢印画像23が表示されない以外は、図1(b)に示す例と同様に、地図を表わす地図画像21及び地名を示す地名画像22が表示される。
ナビゲーション装置1は、ナビゲーション装置1を動作させるためのプログラム(ナビゲーション装置1に対する命令や条件、データなどを記述したもの)を格納しており、そのプログラムに基いて、ディスプレイ11に地図を表示する動作等、ナビゲーション装置1の各種動作を制御するようになっている。また、ナビゲーション装置1は、格納しているプログラムを更新(新しいプログラムに書換え)する機能を有している。プログラムの更新は、例えば、道路や施設の新設、地名変更等に対応して地図や地名を表示させるために、また、ナビゲーション装置1の各種機能を向上させるために行われる。
図2は、ナビゲーション装置1のプログラムの更新方法の概略を示す。ナビゲーション装置1のプログラムの更新は、プログラム送信装置(基地局)2が更新用プログラム(新しいバージョンのプログラム)を無線で送信し、その更新用プログラムをナビゲーション装置1で受信することにより行われる。
ナビゲーション装置1は、プログラム送信装置2から無線で送信される更新用プログラムを受信する機能を有しており、プログラム送信装置2から無線で送信される更新用プログラムを受信すると、自動的に、プログラムを更新するようになっている。ナビゲーション装置1は、多数のユーザに使用されるものであり、ユーザの数に応じて多数のものが存在する。
プログラム送信装置2は、更新用プログラムを無線でブロードキャスト(放送)する。すなわち、プログラム送信装置2は、多数のナビゲーション装置1を個別に特定することなく、多数のナビゲーション装置1に対して一斉に更新用プログラムを送信する。プログラム送信装置2は、例えば、コンサート会場、店舗、道路沿い等に設置され、更新用プログラムを定期的に繰り返してブロードキャストする。
従って、各ナビゲーション装置1は、プログラム送信装置2から送信される更新用プログラムの受信エリア30内に入ると、プログラム送信装置2から更新用プログラムを受信し、更新用プログラムを受信したタイミングで、自動的に、プログラムを更新することになる。また、更新用プログラムの受信エリア30内に存在する全てのナビゲーション装置1は、プログラム送信装置2から一斉に更新用プログラムを受信して、一斉にプログラムを更新することになる。プログラム送信装置2による更新用プログラムの送信方法、及びナビゲーション装置1におけるプログラムの更新処理の詳細については後述する。
図3は、ナビゲーション装置1の電気的ブロック構成を示す。ナビゲーション装置1は、上述の構成に加え、位置・方向検出部14と、プログラムメモリ15と、無線受信部16と、ナビゲーション装置1を制御するためのCPU等からなる制御部17等を備える。
ディスプレイ11は、制御部17による制御のもと、画像を表示する。スピーカ12は、制御部17による制御のもと、音声を出力する。タッチパネル13は、マトリックス状に配列された多数の透明な感圧スイッチにより構成されており、制御部17による制御のもと、ユーザによるタッチパネル13上のタッチ位置を検出し、その検出結果を制御部17に出力する。
位置・方向検出部14は、GPS受信機41と、地磁気センサ42と、ジャイロセンサ43とを有している。GPS受信機41は、GPS衛星からの電波を受信して、ナビゲーション装置1の現在位置(緯度及び経度等)を検出する。地磁気センサ42は、地磁気の方向を検出し、その検出した地磁気の方向を基にナビゲーション装置1の移動方向を絶対方位で検出する。ジャイロセンサ43は、ナビゲーション装置1の姿勢の変化を検出し、その検出した姿勢の変化を基にナビゲーション装置1の移動方向を相対方位で検出する。位置・方向検出部14は、これらGPS受信機41、地磁気センサ42、ジャイロセンサ43の検出結果を制御部17に出力する。
プログラムメモリ15は、ナビゲーション装置1を動作させるためのプログラムを格納している。プログラムメモリ15は、例えばフラッシュROMから成っており、プログラムメモリ15に格納しているプログラムは、制御部17による制御のもと、書き換え可能になっている。無線受信部16は、プログラム送信装置2から無線で送信される更新用プログラムを受信する。
制御部17は、プログラムメモリ15に格納されているプログラムに基いて、ディスプレイ11に地図を表示する動作等、ナビゲーション装置1の各種動作を制御する。また、制御部17は、無線受信部16により更新用プログラムを受信したことを受けて、プログラムメモリ15に格納されているプログラムの更新を制御する。
図4(a)(b)は、プログラム送信装置2による更新用プログラムの送信方法を示し、図5(a)(b)、図6(a)(b)(c)、図7(a)(b)(c)は、ナビゲーション装置1におけるプログラムの更新処理を示す。上述のように、ナビゲーション装置1のプログラムの更新は、プログラム送信装置2が更新用プログラムを無線で送信し、その更新用プログラムをナビゲーション装置1で受信することにより行われる。
プログラム送信装置2は、更新用プログラムを複数のブロック(プログラムブロック)に分割して送信データブロック50によって送信する。送信データブロック50は、図4(a)に示すように、プログラムブロック60と、バージョン情報70と、ブロックナンバー80とを含んでいる。プログラムブロック60は、更新用プログラムを複数のブロックに分割したものの中の一つである。バージョン情報70は、プログラムブロック60が構成する更新用プログラムのバージョンを示すデータである。ブロックナンバー80は、プログラムブロック60が更新用プログラムのいずれのブロックのものであるかを示すデータである。
すなわち、更新用プログラムは、複数の送信データブロック50を用いて、更新用プログラムを複数のブロックに分割したプログラムブロック60単位で送信される。そして、各プログラムブロック60は、各プログラムブロック60が更新用プログラムを構成するいずれのブロックのものであるかを示すブロックナンバー80、及びプログラムブロック60が構成する更新用プログラムのバージョンを示すバージョン情報70が付与された形態で送信される。本実施形態では、更新用プログラムは、図4(b)に示すように、10個の送信データブロック50(50−1、50−2、50−3、・・・、50−10)によって、10個のプログラムブロック60(60−1、60−2、60−3、・・・、60−10)に分割して送信される。
プログラム送信装置2は、送信データブロック50−1、送信データブロック50−2、送信データブロック50−3、・・・、送信データブロック50−10の順に各送信データブロック50を送信する。そして、プログラム送信装置2は、常時、これらの送信データブロック50を送信する。すなわち、プログラム送信装置2は、送信データブロック50−10を送信した後、再び、送信データブロック50−1から順に各送信データブロック50を送信することを繰り返す。
送信データブロック50は、ナビゲーション装置1を個別に特定するための情報を含んでいない。従って、送信データブロック50は、不特定のナビゲーション装置1(すなわち送信データブロック50の受信エリア内に存在する全てのナビゲーション装置1)に受信されることになる。
ナビゲーション装置1の制御部17は、無線受信部16により更新用プログラム(送信データブロック50)を受信したことを受けて、プログラムメモリ15に格納されているプログラムの更新を制御する。
プログラムメモリ15は、初期の状態においては、図5(a)に示すように、ナビゲーション装置1を動作させるためのプログラムとして、バージョン「1.0」のプログラム91を格納している。バージョン「1.0」のプログラム91は、プログラムメモリ15のアドレス「0x1000」〜「0x2000」の領域に、プログラム91のバージョンが「1.0」であることを示すバージョンデータ(不図示)と共に格納されている。また、プログラムメモリ15は、開始アドレスデータ92、格納アドレスデータ93、更新状況データ94を格納している。開始アドレスデータ92、格納アドレスデータ93、更新状況データ94は、プログラムメモリ15のアドレス「0x0000」〜「0x1000」の領域に格納されている。
開始アドレスデータ92は、ナビゲーション装置1の起動時のプログラムの開始アドレスを示すデータである。図5(a)に示す初期の状態では、開始アドレスデータ92は、「0x1000」となっており、ナビゲーション装置1を動作させるためのプログラムであるバージョン「1.0」のプログラム91の開始アドレスがアドレス「0x1000」であることを示している。
格納アドレスデータ93は、新しいバージョンのプログラムを格納すべきアドレスを示すデータである。図5(a)に示す初期の状態では、格納アドレスデータ93は、「0x3000」となっており、新しいバージョンのプログラムをアドレス「0x3000」〜「0x4000」の領域に格納することを示している。
更新状況データ94は、プログラムの更新状況を示すデータであり、プログラムの更新中でないときは、「0.0」とされ、プログラムの更新中であるときは、更新中のプログラムのバージョンを示す値(例えば、更新中のプログラムのバージョンが「1.1」であれば、その値「1.1」)とされる。図5(a)に示す初期の状態では、更新状況データ94は、「0.0」となっており、プログラムの更新中でないことを示している。
このような状態において、図5(b)に示すように、無線受信部16により送信データブロック50を受信(すなわちプログラムブロック60をバージョン情報70及びブロックナンバー80と共に受信)したとする。図5(b)に示す例では、送信データブロック50には、プログラムブロック60として、バージョン「1.1」のプログラムの4番目のプログラムブロックが含まれており、バージョン情報70は「1.1」となっており、ブロックナンバー80は「4」となっている。
制御部17は、無線受信部16により送信データブロック50を受信したことを受けて、まず、プログラムメモリ15に格納している更新状況データ94を基に、プログラムの更新中であるか否かを判断する。図5(b)に示す状態(図5(a)に示す初期の状態において、送信データブロック50を受信した状態)では、更新状況データ94は「0.0」であり、従って、制御部17は、プログラムの更新中でないと判断する。
続いて、制御部17は、送信データブロック50に含まれる(すなわちプログラムブロック60と共に受信した)バージョン情報70を基に、受信したプログラムブロック60がプログラムメモリ15に既に格納されているバージョン「1.0」のプログラム91よりも新しいバージョンのプログラムを構成するものであるか否かを判断する。この判断は、送信データブロック50に含まれるバージョン情報70と、プログラムメモリ15に格納されているプログラム91のバージョンを示すバージョンデータ(プログラムメモリ15のアドレス「0x1000」〜「0x2000」の領域にプログラム91と共に格納されている)と、を比較することにより行われる。
そして、受信したプログラムブロック60がプログラムメモリ15に既に格納されているバージョン「1.0」のプログラム91よりも新しいバージョンのプログラムを構成するものであれば、制御部17は、プログラムの更新が必要であると判断し、プログラムの更新を開始し、受信したプログラムブロック60をプログラムメモリ15に格納する。
図5(b)に示す状態では、送信データブロック50に含まれるバージョン情報70は「1.1」であり、プログラムメモリ15に格納されているバージョンデータは「1.0」であり、従って、受信したプログラムブロック60は、プログラムメモリ15に既に格納されているバージョン「1.0」のプログラム91よりも新しいバージョンのプログラムを構成するものである。従って、制御部17は、プログラムの更新が必要であると判断し、プログラムの更新を開始し、受信したプログラムブロック60をプログラムメモリ15に格納する。
このとき、制御部17は、プログラムメモリ15に格納している格納アドレスデータ93、及び、送信データブロック50に含まれる(プログラムブロック60と共に受信した)ブロックナンバー80を基に、受信したプログラムブロック60をプログラムメモリ15の該当する格納領域に格納する。
図5(b)に示す状態では、格納アドレスデータ93は「0x3000」であり、ブロックナンバー80は「4」である。従って、制御部17は、図6(a)に示すように、受信したプログラムブロック60を、プログラムメモリ15のアドレス「0x3000」〜「0x4000」の領域を10個に分割した領域のうちの、4番目の領域に格納する。すなわち、制御部17は、プログラムメモリ15に既に格納されているバージョン「1.0」のプログラム91を消去せずに、バージョン「1.0」のプログラム91の格納領域とは別の格納領域にプログラムブロック60を格納する。
また、制御部17は、受信したプログラムブロック60をプログラムメモリ15に格納し終えると、プログラムの更新中であるとして、図6(a)に示すように、更新状況データ94を更新中のプログラムのバージョンを示す値に書換える。図6(a)に示す状態では、バージョン「1.1」のプログラムへ更新中であり、従って、制御部17は、更新状況データ94を「1.1」に書換える。
その後、図6(a)に示す状態において、無線受信部16により送信データブロック50を受信すると、その都度、制御部17は、まず、プログラムメモリ15に格納している更新状況データ94を基に、プログラムの更新中であるか否かを判断する。図6(a)に示す状態では、更新状況データ94は「1.1」であり、従って、制御部17は、バージョン「1.1」のプログラムの更新中であると判断する。そして、制御部17は、送信データブロック50に含まれるバージョン情報70が「1.1」であれば、プログラムの更新を継続し、プログラムメモリ15に格納している格納アドレスデータ93、及び、受信した送信データブロック50に含まれるブロックナンバー80を基に、受信したプログラムブロック60をプログラムメモリ15の該当する格納領域に格納する。
すなわち、制御部17は、無線受信部16によりバージョン情報70が「1.1」である送信データブロック50を受信すると、その都度、受信したプログラムブロック60を、上記ブロックナンバー80が「4」であるプログラムブロック60と同様に、プログラムメモリ15のアドレス「0x3000」〜「0x4000」の領域を10個に分割した領域のうちの、該当する領域に格納してゆく。
これにより、図6(b)に示すように、バージョン「1.1」の更新用プログラムを構成する各プログラムブロック60(ブロックナンバー80の異なる各プログラムブロック60)が、プログラムメモリ15のアドレス「0x3000」〜「0x4000」の領域に格納されてゆく。上述のように、送信データブロック50は、プログラム送信装置2から、各ブロックナンバー80のものが順に繰り返して送信される。しかし、受信環境等の影響により、受信できない送信データブロック50がある可能性がある。制御部17は、受信できた送信データブロック50に含まれるプログラムブロック60からプログラムメモリ15に格納してゆく。
図6(b)に示す状態では、ブロックナンバー80が「2」「4」「5」「7」「8」「9」「10」のプログラムブロック60がプログラムメモリ15に格納されており、ブロックナンバー80が「1」「3」「6」のプログラムブロック60が未だプログラムメモリ15に格納されていない。また、図6(b)に示す状態では、バージョン「1.1」の更新用プログラムを構成する全てのプログラムブロック60を格納し終えておらず、従って、制御部17は、プログラムの更新中であるとして、更新状況データ94を「1.1」に保持する。
なお、制御部17は、プログラムブロック60と共に受信したブロックナンバー80を基に、受信したプログラムブロック60と同じプログラムブロック60がプログラムメモリ15に未だに格納されていない場合に、受信したプログラムブロック60をプログラムメモリ15に格納する。すなわち、制御部17は、受信したプログラムブロック60と同じプログラムブロック60がプログラムメモリ15に既に格納されている場合には、受信したプログラムブロック60をもう一度プログラムメモリ15に格納(上書き)することは行わない。
そして、図6(c)に示すように、バージョン「1.1」の更新用プログラムを構成する全てのプログラムブロック60についてプログラムメモリ15のアドレス「0x3000」〜「0x4000」の領域に格納し終えると、バージョン「1.1」のプログラム95(新しいバージョンのプログラム)がアドレス「0x3000」〜「0x4000」の領域に格納されたことになる。なお、「0x3000」〜「0x4000」の領域には、バージョン「1.1」のプログラム95と共に、プログラム95のバージョンが「1.1」であることを示すバージョンデータ(不図示)が格納される。
制御部17は、図6(c)に示すように、バージョン「1.1」の更新用プログラムを構成する全てのプログラムブロック60についてプログラムメモリ15に格納し終えると、開始アドレスデータ92を「0x3000」に書換え、格納アドレスデータ93を「0x1000」に書換え、更新状況データ94を「0.0」に書換えて、バージョン「1.1」のプログラム95の更新を完了とする。バージョン「1.0」のプログラム91(旧いバージョンのプログラム)は、アドレス「0x1000」〜「0x2000」の領域に残される。
開始アドレスデータ92を「0x3000」に書換えることにより、以降は、アドレス「0x3000」〜「0x4000」に格納されているバージョン「1.1」のプログラム95に基いてナビゲーション装置1の各種動作が制御される。また、格納アドレスデータ93を「0x1000」に書換えることにより、バージョン「1.1」よりも新しいバージョンのプログラムは、アドレス「0x1000」〜「0x2000」の格納領域に格納されることになる。また、更新状況データ94を「0.0」に書換えることにより、プログラムの更新中でないことが示される。
その後、図6(c)に示す状態において、図7(a)に示すように、無線受信部16により送信データブロック50を受信したとする。図7(a)に示す例では、送信データブロック50には、プログラムブロック60として、バージョン「1.2」のプログラムの7番目のプログラムブロックが含まれており、バージョン情報70は「1.2」となっており、ブロックナンバー80は「7」となっている。
制御部17は、無線受信部16により送信データブロック50を受信したことを受けて、まず、プログラムメモリ15に格納している更新状況データ94を基に、プログラムの更新中であるか否かを判断する。図7(a)に示す状態(図6(c)に示す状態において、送信データブロック50を受信した状態)では、更新状況データ94は「0.0」であり、従って、制御部17は、プログラムの更新中でないと判断する。
続いて、制御部17は、送信データブロック50に含まれる(すなわちプログラムブロック60と共に受信した)バージョン情報70を基に、受信したプログラムブロック60がプログラムメモリ15に既に格納されているバージョン「1.1」のプログラム95よりも新しいバージョンのプログラムを構成するものであるか否かを判断する。この判断は、送信データブロック50に含まれるバージョン情報70と、プログラムメモリ15に格納されているプログラム95のバージョンを示すバージョンデータ(プログラムメモリ15のアドレス「0x3000」〜「0x4000」の領域にプログラム95と共に格納されている)と、を比較することにより行われる。
そして、受信したプログラムブロック60がプログラムメモリ15に既に格納されているバージョン「1.1」のプログラム95よりも新しいバージョンのプログラムを構成するものであれば、制御部17は、プログラムの更新が必要であると判断し、プログラムの更新を開始し、受信したプログラムブロック60をプログラムメモリ15に格納する。
図7(a)に示す状態では、送信データブロック50に含まれるバージョン情報70は「1.2」であり、プログラムメモリ15に格納されているバージョンデータは「1.1」であり、従って、受信したプログラムブロック60は、プログラムメモリ15に既に格納されているバージョン「1.1」のプログラム95よりも新しいバージョンのプログラムを構成するものである。従って、制御部17は、プログラムの更新が必要であると判断し、プログラムの更新を開始し、受信したプログラムブロック60をプログラムメモリ15に格納する。
このとき、制御部17は、プログラムメモリ15に格納している格納アドレスデータ93、及び、送信データブロック50に含まれる(プログラムブロック60と共に受信した)ブロックナンバー80を基に、受信したプログラムブロック60をプログラムメモリ15の該当する格納領域に格納する。
図7(a)に示す状態では、格納アドレスデータ93は「0x1000」であり、ブロックナンバー80は「7」である。従って、制御部17は、図7(b)に示すように、プログラムメモリ15のアドレス「0x1000」〜「0x2000」に格納されているバージョン「1.0」のプログラム91を消去して、受信したプログラムブロック60を、プログラムメモリ15のアドレス「0x1000」〜「0x2000」の領域を10個に分割した領域のうちの、7番目の領域に格納する。すなわち、制御部17は、プログラムメモリ15に既に格納されているバージョン「1.1」のプログラム95を消去せずに、バージョン「1.1」のプログラム95の格納領域とは別の格納領域にプログラムブロック60を格納する。
また、制御部17は、受信したプログラムブロック60をプログラムメモリ15に格納し終えると、プログラムの更新中であるとして、図7(b)に示すように、更新状況データ94を更新中のプログラムのバージョンを示す値に書換える。図7(b)に示す状態では、バージョン「1.2」のプログラムの更新中であり、従って、制御部17は、更新状況データ94を「1.2」に書換える。
その後、制御部17は、無線受信部16によりバージョン情報70が「1.2」である送信データブロック50を受信すると、その都度、受信したプログラムブロック60を、上記ブロックナンバー80が「7」であるプログラムブロック60と同様に、プログラムメモリ15のアドレス「0x1000」〜「0x2000」の領域を10個に分割した領域のうちの、該当する領域に格納してゆく。
これにより、バージョン「1.2」の更新用プログラムを構成する各プログラムブロック60(ブロックナンバー80の異なる各プログラムブロック60)が、プログラムメモリ15のアドレス「0x1000」〜「0x2000」の領域に格納されてゆく。
そして、図7(c)に示すように、バージョン「1.2」の更新用プログラムを構成する全てのプログラムブロック60についてプログラムメモリ15のアドレス「0x1000」〜「0x2000」の領域に格納し終えると、バージョン「1.2」のプログラム96(新しいバージョンのプログラム)がアドレス「0x1000」〜「0x2000」の領域に格納されたことになる。なお、「0x1000」〜「0x2000」の領域には、バージョン「1.2」のプログラム96と共に、プログラム96のバージョンが「1.2」であることを示すバージョンデータ(不図示)が格納される。
制御部17は、図7(c)に示すように、バージョン「1.2」の更新用プログラムを構成する全てのプログラムブロック60についてプログラムメモリ15に格納し終えると、開始アドレスデータ92を「0x1000」に書換え、格納アドレスデータ93を「0x3000」に書換え、更新状況データ94を「0.0」に書換えて、バージョン「1.2」のプログラム96の更新を完了とする。バージョン「1.1」のプログラム95(旧いバージョンのプログラム)は、アドレス「0x3000」〜「0x4000」の領域に残される。
開始アドレスデータ92を「0x1000」に書換えることにより、以降は、アドレス「0x1000」〜「0x2000」に格納されているバージョン「1.2」のプログラム96に基いてナビゲーション装置1の各種動作が制御される。また、格納アドレスデータ93を「0x3000」に書換えることにより、バージョン「1.2」よりも新しいバージョンのプログラムは、アドレス「0x3000」〜「0x4000」の格納領域に格納されることになる。また、更新状況データ94を「0.0」に書換えることにより、プログラムの更新中でないことが示される。
その後、無線受信部16により送信データブロック50を受信すると、制御部17は、同様の処理を繰り返す。従って、プログラムを更新する都度、新しいバージョンのプログラムは、プログラムメモリ15のアドレス「0x1000」〜「0x2000」の領域とアドレス「0x3000」〜「0x4000」の領域とに交互に格納されてゆく。
なお、図6(c)に示す状態(バージョン「1.1」のプログラム95の更新を完了した状態)において、バージョン「1.1」の更新用プログラムを構成するプログラムブロック60を受信した場合には、制御部17は、プログラムブロック60と共に受信したバージョン情報70を基に、受信したプログラムブロック60がプログラムメモリ15に既に格納されているプログラムよりも新しいバージョンのプログラムを構成するものではないと判断する。従って、この場合には、制御部17は、プログラムの更新を開始せず、同じバージョンのプログラムについての更新を行わない。
また、図6(a)(b)に示す状態(バージョン「1.1」のプログラム95の更新中の状態)において、バージョン「1.2」のプログラムブロック60を受信した場合には、制御部17は、プログラムブロック60と共に受信したバージョン情報70を基に、受信したプログラムブロック60がプログラムメモリ15に既に格納されているプログラムよりも新しいバージョンのプログラムを構成するものであると判断する。従って、この場合には、制御部17は、途中まで進行しているバージョン「1.1」のプログラムの更新を中止して、プログラムメモリ15のアドレス「0x3000」〜「0x4000」の領域に既に格納しているバージョン「1.1」のプログラムブロック60を消去し、そして、バージョン「1.2」のプログラムについての更新を開始して、受信したバージョン「1.2」のプログラムブロック60をプログラムメモリ15の該当する領域に格納すると共に、更新状況データ94を「1.2」に書換える。
このように、制御部17は、無線受信部16により更新用プログラムを構成する任意のプログラムブロック60を受信したとき、そのプログラムブロック60が新しいバージョンのプログラムを構成するものであって、そのバージョンのいずれのプログラムブロック60もプログラムメモリ15に格納していなければ、そのバージョンのプログラムの更新を開始する。そして、制御部17は、無線受信部16により更新用プログラムを構成する任意のプログラムブロック60を受信する都度、そのプログラムブロック60が更新中のプログラムを構成するものであって、未だ格納していないブロックのものである場合に、その受信したプログラムブロック60をプログラムメモリ15に格納してゆく。このとき、制御部17は、プログラムメモリ15に既に格納されているプログラム(旧いバージョンのプログラム)を消去せずに、プログラムメモリ15に既に格納されているプログラムの格納領域とは別の格納領域に、プログラムブロック60を格納してゆく。そして、更新用プログラムを構成する全てのプログラムブロック60についてプログラムメモリ15に格納し終えると、そのバージョンのプログラムの更新を完了とする。
このような構成のナビゲーション装置1によれば、プログラム送信装置2から無線で送信される更新用プログラムを受信することにより、そのプログラムがプログラムメモリ15に格納されて、プログラムが更新される。すなわち、無線で送信される更新用プログラムを受信するだけで、プログラムを更新することができ、ユーザがプログラムを更新するための作業をすることなく、自動的に、プログラムを更新することができる。従って、使い勝手が良く、利便性が優れている。
しかも、更新用プログラムは、複数のブロックに分割したプログラムブロック60単位で送信され、プログラムブロック60単位で受信されてプログラムメモリ15に格納され、そして、更新用プログラムを構成する全てのプログラムブロック60が受信されてプログラムメモリ15に格納されると、プログラムの更新の完了となる。従って、更新用プログラムを構成する全てのプログラムブロック60を1度に受信できなかった場合には、その受信できなかったプログラムブロック60について、その後に受信できれば、プログラムが更新される。すなわち、更新用プログラムを構成する全てのプログラムブロック60を1度に受信すること(更新用プログラムの受信が途中で途絶えないこと)がプログラムの更新に必要な条件とはならず、更新用プログラムを構成する全てのプログラムブロック60を1度に受信することができなくても、プログラムの更新が可能となり、より確実に、プログラムを更新することができる。
また、プログラムブロック60は、プログラムブロック60と共に受信したブロックナンバー80を基に、同じプログラムブロック60がプログラムメモリ15に未だに格納されていないと判断される場合に、プログラムメモリ15に格納される。従って、同じプログラムブロック60が無駄に何度もプログラムメモリ15に格納されることがなく、プログラムメモリ15のデータ書換処理を軽減することができ、プログラムメモリ15の破損を抑えることができる。
また、プログラムブロック60は、プログラムブロック60と共に受信したバージョン情報70を基に、プログラムメモリ15に既に格納されているプログラムよりも新しいバージョンのプログラムを構成するものであると判断される場合に、プログラムメモリ15に格納される。従って、同じバージョンの更新用プログラムが無駄に何度もプログラムメモリ15に格納されることがなく、プログラムメモリ15のデータ書換処理を軽減することができ、プログラムメモリ15の破損を抑えることができる。
さらに、新しいバージョンのプログラムに更新された後も、旧いバージョンのプログラムが残される。従って、新しいバージョンのプログラムが起動しない場合に、旧いバージョンのプログラムに基いて、ナビゲーション装置1の各種動作を制御することができる。
なお、本発明は、上記実施形態の構成に限られず、種々の変形が可能である。例えば、プログラム送信装置は、複数の場所に設置されていてもよい。また、本発明は、ナビゲーション装置に限られず、プログラムに基いて動作する電子機器であれば、どのような電子機器にも適用可能である。