(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-10
(45)【発行日】2024-06-18
(54)【発明の名称】電子時計、方法、およびプログラム
(51)【国際特許分類】
G06F 8/654 20180101AFI20240611BHJP
【FI】
G06F8/654
(21)【出願番号】P 2023077016
(22)【出願日】2023-05-09
(62)【分割の表示】P 2022000782の分割
【原出願日】2017-09-04
【審査請求日】2023-06-07
(73)【特許権者】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(72)【発明者】
【氏名】黒羽 晃洋
(72)【発明者】
【氏名】尾下 佑樹
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2011-164827(JP,A)
【文献】特開2016-200508(JP,A)
【文献】特開2016-121877(JP,A)
【文献】特開2015-175808(JP,A)
【文献】特表2011-519446(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/654
(57)【特許請求の範囲】
【請求項1】
所定の時間間隔おきに所定の角度だけ回動する指針と、
被書き込み対象が書き込まれる2つの記憶領域を有する記憶部と、
制御部と、
を備える電子時計であって、
前記制御部は、
前記2つの記憶領域のうちの何れかの記憶領域を、被フォーマット領域、又は、次回に前記被書き込み対象が書き込まれる領域である書き込み領域であると判定し、
ユーザが時刻を確認していない可能性が高い時間帯に、前記電子時計が通常モードである場合に、判定した前記被フォーマット領域、又は、前記書き込み領域を消去する未使用領域消去処理を実行する、
ことを特徴とする電子時計。
【請求項2】
前記制御部は、
前記時間帯のうちの標準電波受信の処理が行われている時間帯を避けて、前記未使用領域消去処理を実行する、
ことを特徴とする請求項1に記載の電子時計。
【請求項3】
前記制御部は、
前記電子時計がストップウォッチモードであり、かつ、前記指針が停止後所定の時間が経過した場合に、前記未使用領域消去処理を実行する、
ことを特徴とする請求項1に記載の電子時計。
【請求項4】
前記被書き込み対象とは、地図データである、
ことを特徴とする請求項1に記載の電子時計。
【請求項5】
前記制御部は、
前記被フォーマット領域と判定された記憶領域をフォーマットし次回に前記被書き込み対象が書き込まれる領域として設定する、
ことを特徴とする請求項1に記載の電子時計。
【請求項6】
所定の時間間隔おきに所定の角度だけ回動する指針と、
被書き込み対象が書き込まれる2つの記憶領域を有する記憶部と、
を備える電子時計が実行する方法であって、
前記2つの記憶領域のうちの何れかの記憶領域を、被フォーマット領域、又は、次回に前記被書き込み対象が書き込まれる領域である書き込み領域であると判定し、
ユーザが時刻を確認していない可能性が高い時間帯に、前記電子時計が通常モードである場合に、判定した前記被フォーマット領域、又は、前記書き込み領域を消去する未使用領域消去処理を実行する、
ことを特徴とする方法。
【請求項7】
所定の時間間隔おきに所定の角度だけ回動する指針と、
被書き込み対象が書き込まれる2つの記憶領域を有する記憶部と、
を備える電子時計のコンピュータによって、
前記2つの記憶領域のうちの何れかの記憶領域を、被フォーマット領域、又は、次回に前記被書き込み対象が書き込まれる領域である書き込み領域であると判定させ、
ユーザが時刻を確認していない可能性が高い時間帯に、前記電子時計が通常モードである場合に、判定した前記被フォーマット領域、又は、前記書き込み領域を消去する未使用領域消去処理を実行させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子時計、方法、およびプログラムに関する。
【背景技術】
【0002】
近年、電子機器の発売後に不具合を修正させるため、または機能や性能を向上させるために、ユーザが電子機器のプログラムをアップデート可能なものが各種実用化されている。このような電子機器は、例えばインターネットに接続可能であり、ネットワーク経由でプログラムをアップデート(更新)する場合がある。
【0003】
特許文献1には、制御ソフトウェアを更新する方法が開示されている。特許文献1の要約書には、「無線端末装置は自装置の運用に係る現用の制御ソフトウェアのバージョン情報を網側に接続するソフトウェア供給装置に通知し、ソフトウェア供給装置は通知されたバージョン情報を自己が蓄積管理する最新のバージョン情報と比較して更新の必要性有無を判定すると共に、更新が必要な場合は通知されたバージョンの改訂用に適合する新しい制御ソフトウェアを無線端末装置にダウンロードする。」と記載されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
電子時計では、ファームウェアの記憶領域を2つ持つことで、一方の記憶領域のファームウェアの書き換えを中断しても、他方の記憶領域のファームウェアから正常に起動可能となる。但し、このような機能を実現するためには、電子時計のプロセッサは、どちらの記憶領域が使用領域であるかを把握する必要がある。例えば、ファームウェアのヘッダ部分が書き換えられたのちに、電圧降下などにより時計LSI(Large-Scale Integration)がリセットされたならば、ヘッダ部分のバージョン情報を読み出すだけは、書き換えが成功したかどうかが判別できず、どちらの記憶領域が使用領域であるか把握できず、ひいては、記憶領域の消去を適切に実行することができない。
【0006】
そこで、本発明は、記憶領域の消去を適切に実行する電子時計、方法、およびプログラムを提供することを課題とする。
【課題を解決するための手段】
【0007】
本発明は、上記目的を達成するため、
所定の時間間隔おきに所定の角度だけ回動する指針と、
被書き込み対象が書き込まれる2つの記憶領域を有する記憶部と、
制御部と、
を備える電子時計であって、
前記制御部は、
前記2つの記憶領域のうちの何れかの記憶領域を、被フォーマット領域、又は、次回に前記被書き込み対象が書き込まれる領域である書き込み領域であると判定し、
ユーザが時刻を確認していない可能性が高い時間帯に、前記電子時計が通常モードである場合に、判定した前記被フォーマット領域、又は、前記書き込み領域を消去する未使用領域消去処理を実行する、
ことを特徴とする電子時計である。
【図面の簡単な説明】
【0008】
【
図1】本実施形態における電子時計の概略を示す構成図である。
【
図2】オールクリア後のGPS処理を示すフローチャートである。
【
図3】秒針の運針とGPSフラッシュ未使用領域決定処理とを示すタイミングチャートである。
【
図4】第1の実施形態における記憶領域0,1の構成を示す図である。
【
図5】領域の使用と未使用の決定処理を示すフローチャート(その1)である。
【
図6】領域の使用と未使用の決定処理を示すフローチャート(その2)である。
【
図7】未使用領域の消去処理を示すフローチャートである。
【
図8】消去済みの領域の書き換え処理を示すフローチャートである。
【
図9】第2の実施形態における記憶領域0,1の構成を示す図である。
【
図10】領域の使用と未使用の決定処理を示すフローチャート(その1)である。
【
図11】領域の使用と未使用の決定処理を示すフローチャート(その2)である。
【
図12】未使用領域の消去処理を示すフローチャートである。
【
図13】消去済みの領域の書き換え処理を示すフローチャートである。
【
図14】第3の実施形態における記憶領域0,1の構成を示す図である。
【
図15】消去済みの領域の書き換え処理を示すフローチャートである。
【発明を実施するための形態】
【0009】
以降、本発明を実施するための形態を、各図を参照して詳細に説明する。
本実施形態の電子時計は、ファームウェアやデータを特定するバージョン情報を、ファームウェアやデータを書き込む記憶領域のフッタ部にコピーする。ファームウェアやデータのバージョン情報をフッタ部にコピーした場合、書き換えに失敗した場合を検知できる。
【0010】
更にファームウェアやデータのブロックサイズ情報をフッタ部に書き込んだ場合、消去すべきブロックサイズが明確になるので、消去時間と消去に伴う消費電力を削減することができる。
【0011】
図1は、本実施形態における電子時計1の概略を示す構成図である。
電子時計1は、特には限られないが、例えば腕に装着するためのバンドを備えた腕時計型の電子時計である。この電子時計1は、時計LSIであるマイクロコンピュータ2、操作部31、表示部32、電源部33、電池34を含んで構成される。電子時計1は更に、通信部4とアンテナ41、GPS(Global Positioning System)部5とアンテナ51、フラッシュメモリ6、振動子7を含んで構成される。なお、図ではアンテナ41,51を“ANT”と記載している。
【0012】
操作部31は、例えばリュウズやボタンであり、ユーザの操作情報をマイクロコンピュータ2に伝達する。表示部32は、例えば文字盤と指針などであり、マイクロコンピュータ2の指示により現在時刻を含む各種情報を表示する。電池34と電源部33は、この電子時計1に電力を供給する。
【0013】
電源部33は、例えば、電圧変換回路である。電源部33は、電子時計1内の各部の動作電圧で電力を供給する。電池34としては、例えば、ボタン型乾電池などの一次電池が用いられる。または電池34として、ソーラパネルと二次電池の組合せが用いられてもよい。
【0014】
通信部4は、例えばBluetooth(登録商標) Low Energyに準拠した無線通信により、アンテナ41、を介して外部と通信する。これにより電子時計1は、新たなファームウェアを外部から受信する。
【0015】
GPS部5は、GPS受信ICで構成されており、GPS衛星から送信される極超短波の衛星信号をアンテナ51によって受信し、現在位置や現在時刻を計測するものである。このGPS受信ICは、CPU(Central Processing Unit)52とRAM(Random Access Memory)53とを備える。CPU52は、後記するフラッシュメモリ6の記憶領域0(61)および記憶領域1(62)をRAM53に読み込んで実行する第1のプロセッサである。
【0016】
フラッシュメモリ6は、情報を読み出しおよび書き込み可能に記憶する不揮発性の半導体メモリである。このフラッシュメモリ6には、記憶領域0(61)および記憶領域1(62)を含んでいる。記憶領域0(61)および記憶領域1(62)は、CPU52がRAM53が読み込んで参照するためのデータが記憶される。
【0017】
フラッシュメモリ6の1回の消去単位は4Kbytesであり、これをブロックと呼ぶ。それ以上のサイズ消去するときには、4Kbytesのブロックの消去を繰り返す。フラッシュメモリ6の指定されたブロックを消去すると、そのブロックのデータは全て0xFFとなる。
【0018】
フラッシュメモリ6の消去済みのアドレス空間には、データを書き込むことができる。フラッシュメモリ6の1回の書き込み単位は256Bytesなので、それ以上のサイズのデータを書き込むときには、256Bytes単位の書き込みと読み込みと確認(ベリファイ)を繰り返すとよい。
【0019】
CPU21は、電子時計1を統括制御する第2のプロセッサである。CPU21の処理能力は、CPU52の処理能力よりも低い。またCPU21の動作保証電圧の下限は、CPU52の動作保証電圧の下限よりも低い。電源電圧の低下によりCPU52が動作しなくなった後でも、CPU21は動作することができる。
【0020】
振動子7は、例えば、水晶振動子であり、後記する発振回路25と組み合わされて固有の周波数信号を生成する。
マイクロコンピュータ2は、CPU21、RAM22を含んで構成される。マイクロコンピュータ2は更に、発振回路25、分周回路26、計時回路27を含んで構成され、外付けのROM(Read Only Memory)23に接続されている。
【0021】
CPU21は、RAM22をワーク領域としてROM23やフラッシュメモリ6に記憶されたプログラムによる各種演算処理を行い、電子時計1の全体動作を統括制御するものである。RAM22は電源バックアップされているため、次回の起動時に参照する情報を好適に記憶できる。次回の起動時にCPU21が参照する情報は、RAM22に記憶される。このCPU21は、記憶領域0,1の特定アドレス空間にプログラムまたはデータとこのプログラムまたはこのデータを特定する特定情報とを書き込み、この記憶領域の特定アドレス空間とは異なるアドレス空間に特定情報を書き込む。
【0022】
発振回路25は、振動子7と組み合わされて固有の周波数信号を生成して分周回路26に出力する。発振回路25としては、例えば、水晶発振回路が用いられる。
分周回路26は、発振回路25から入力された信号をCPU21や計時回路27が利用する各種周波数の信号に分周して出力する。
【0023】
計時回路27は、分周回路26から入力された所定の周波数信号の回数を計数し、初期時刻に加算してゆくことで現在時刻を計数するカウンタ回路である。計時回路27により計数される現在時刻は、CPU21により読み出されて時刻表示に用いられる。この時刻の計数は、ソフトウェア的に制御されてもよい。また、振動子7、発振回路25、分周回路26、及び計時回路27により時刻を計数する計時部が構成されてもよい。
【0024】
図2は、オールクリア後のGPS処理を示すフローチャートである。
ユーザが電子時計1をオールクリア(AC)したならば、この電子時計1のCPU21は、GPSフラッシュ未使用領域決定処理(
図5・
図6参照)を実行する(ステップS10)。オールクリアは、電池34が切れた場合や、プログラムが暴走した場合に行われる。
【0025】
CPU21は、この未使用領域決定処理が成功したか否かを判定する(ステップS11)。処理に成功したと判定したならば(Yes)、CPU21は、ステップS14の処理に進む。処理に失敗したと判定したならば(No)、CPU21は、ステップS12の処理に進む。
【0026】
ステップS12において、CPU21は、現在のモードが通常モードであるか否かを判定する(ステップS12)。ここで通常モードとは、電子時計1が時刻を計時するモードのことをいう。CPU21は、現在のモードが通常モードではないと判定したならば(No)、この判定処理を繰り返す。CPU21は、現在のモードが通常モードであると判定したならば(Yes)、ステップS13の処理に進む。
【0027】
ステップS13において、CPU21は、ホームタイム(HT)の秒が55秒であるか否かを判定する。CPU21は、ホームタイムの秒が55秒ではなかったならば(No)、ステップS12の処理に戻り、ホームタイムの秒が55秒であったならば(Yes)、ステップS10の処理に戻る。
【0028】
つまりCPU21は、現在のモードが通常モードではないか、またはホームタイムの秒が55秒でなかったならば(No)、ステップS12の処理に戻り、ステップS12,S13の判定を繰り返す。CPU21は、現在のモードが通常モードであり、かつホームタイムの秒が55秒であったならば(Yes)、ステップS10の処理に戻り、未使用領域決定処理を再び実行する。
【0029】
本実施形態では、ステップS12,S13の判定処理により、未使用領域決定処理が再び実行されるタイミングは、秒針が55秒を示していたときに限定される。つまり、未使用領域決定処理のタイミングと秒針の運針タイミングとをずらし、秒針の運針が止まっていると考えられる場合を狙って、未使用領域の消去を行っている。これにより、電子時計1は、ユーザに正確な時刻を表示できる。
【0030】
ステップS14において、CPU21は、現在のモードが通常モードであるか否かを判定する。CPU21は、現在のモードが通常モードではないと判定したならば(No)、ステップS17の処理に進む。CPU21は、現在のモードが通常モードであると判定したならば(Yes)、ステップS15の処理に進む。
【0031】
ステップS15において、CPU21は、ホームタイム(HT)の時刻が午前2時~5時であるか否かを判定する。この時刻を判別する理由は、この時間帯はユーザが時刻を確認していない可能性が高いからである。CPU21は、ホームタイム(HT)の時刻が午前2時~5時ならば(Yes)、更に分秒が30分50秒であるか否かを判定する(ステップS16)。CPU21は、ホームタイム(HT)の分秒が30分50秒ならば、ステップS19に進み、GPSフラッシュの未使用領域消去処理を実行する。ステップS16を判定する理由は、同時間帯に自動的に行われる標準電波受信等の処理と重なるのを避けるためである。ステップS16において、CPU21は、ホームタイム(HT)の分秒が30分50秒ではないならば、ステップS14の処理に戻る。
【0032】
つまりCPU21は、ホームタイム(HT)の時刻が午前2時~5時ではないか、または分秒が30分50秒ではないならば、ステップS14の処理に戻る。CPU21は、ホームタイム(HT)の時刻が午前2時~5時であり、かつ分秒が30分50秒であったならば、GPSフラッシュの未使用領域消去処理を実行する(ステップS19)。
【0033】
またCPU21は、ステップS17において、現在のモードがストップウオッチモードであるか否かを判定する。CPU21は、現在のモードがストップウオッチモードではないと判定したならば(No)、ステップS14の処理に戻る。
【0034】
更にCPU21は、現在のモードがストップウオッチモードであると判定したならば(Yes)、秒針停止から1分経過したか否かを判定する(ステップS18)。CPU21は、この判定条件が成立したならば、ステップS19に進み、GPSフラッシュの未使用領域消去処理(
図7参照)を実行する。ステップS18を判定する理由は、秒針停止中の処理なら消去中の運針停止が目立たないためと、1分経過していれば、ユーザの操作がないものと想定されるためである。
【0035】
その後、ステップS20において、CPU21は、記憶領域の消去が成功したか否かを判定する。CPU21は、記憶領域の消去が成功したならば(Yes)、
図2の処理を終了し、記憶領域の消去が失敗したならば(No)、ステップS14の処理に戻る。
【0036】
電子時計1では、消去と書き換えとを連続して行うことは消費電流の関係から極めて困難である。消去中は、時計LSI(マイクロコンピュータ2)とGPSマイコン(CPU52)の通信中に運針タイミングが来てしまう可能性があるため、消去が完了まで運針を停止しており、ユーザに時刻を表示できなかった。
【0037】
図2のGPS処理により、電子時計1は、深夜の時間帯や、秒針が止まって一定時間が経過した場合等の、秒針の運針が止まっていると考えられる場合を狙って未使用領域の消去を行う。そのため、電子時計1は、運針タイミングを避けて未使用領域を消去し、ユーザに正確な時刻を表示できる。
【0038】
図3は、秒針の運針とGPSフラッシュ未使用領域決定処理とを示すタイミングチャートである。
【0039】
図3の上側は、秒針の運針タイミングを示しており、秒の値が12の倍数のときに運針する。GPSフラッシュの未使用領域決定処理の開始タイミングは、55秒であり、平均の処理時間は3秒である。よって、未使用領域決定処理の実行と秒針の運針とが重複することはない。
【0040】
《第1の実施形態》
図4は、第1の実施形態における記憶領域0,1の構成を示す図である。
記憶領域0には、参照データテーブルと地図データとが記憶されている。
【0041】
参照データテーブルは、アドレス空間0x100000~0x10FFFFのうち上位のアドレス空間0x100000~(0x100002+X1)に記憶されている。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX1 Bytesの本体とで構成される。ここで、バージョン情報は、0x01,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により参照データテーブルのバージョンを特定する。
【0042】
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x100003+X1)~0x10FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
【0043】
地図データは、アドレス空間0x110000~0x1FFFFBのうち上位のアドレス空間0x110000~(0x110002+Y1)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY1 Bytesの本体とで構成される。ここで、バージョン情報は、0x03,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により地図データのバージョンを特定する。
【0044】
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x110003+Y1)~0x1FFFFBに記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x100000~0x1FFFFBである。
【0045】
記憶領域0のアドレス空間0x1FFFFC~0x1FFFFDには、参照データテーブルのバージョン情報が記憶される。記憶領域0のアドレス空間0x1FFFFE~0x1FFFFFには、地図データのバージョン情報が記憶される。これらアドレス空間0x1FFFFC~0x1FFFFFは、記憶領域0のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
【0046】
記憶領域1には、記憶領域0と同様に参照データテーブルと地図データとが記憶されており、フッタに参照データテーブルのバージョン情報と地図データのバージョン情報とがコピーされている。
参照データテーブルは、アドレス空間0x200000~0x20FFFFのうち上位のアドレス空間0x200000~(0x200002+X2)に記憶されている。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX2 Bytesの本体とで構成される。ここで、バージョン情報は、0x02,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により参照データテーブルのバージョンを特定する。
【0047】
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x200003+X1)~0x20FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
【0048】
地図データは、アドレス空間0x210000~0x2FFFFBのうち上位のアドレス空間0x210000~(0x210002+Y2)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY2 Bytesの本体とで構成される。ここで、バージョン情報は、0x04,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により地図データのバージョンを特定する。
【0049】
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x210003+Y2)~0x2FFFFBに記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x200000~0x2FFFFBである。
【0050】
記憶領域0のアドレス空間0x2FFFFC~0x2FFFFDには、参照データテーブルのバージョン情報が記憶される。記憶領域0のアドレス空間0x2FFFFE~0x2FFFFFには、地図データのバージョン情報が記憶される。これらアドレス空間0x2FFFFC~0x2FFFFFは、記憶領域0のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
【0051】
第1の実施形態の電子時計1は、記憶領域0,1のうち最初に書き換えるヘッダ部分と最後に書き換えるフッタ部分に共通したバージョン情報を持っている。これらヘッダ部分とフッタ部分とは、256Bytes以上離れており書き込みブロックが異なるため、書き込みのタイミングが異なる。
【0052】
書き換え途中で失敗してマイクロコンピュータ2にリセットが掛かった場合、ヘッダ部分とフッタ部分のバージョン情報が異なるため、書き換えの失敗を判断できる。消去途中で失敗してマイクロコンピュータ2にリセットが掛かった場合も同様にヘッダ部分とフッタ部分のバージョン情報が異なるため、消去の失敗を判断できる。
【0053】
図5と
図6は、記憶領域の使用と未使用の決定処理を示すフローチャートである。
CPU21は、記憶領域0の参照データテーブルのバージョン情報を読み出し(ステップS30)、バージョン情報が0xFF,0xFFであるか否かを判定する(ステップS31)。CPU21は、バージョン情報が0xFF,0xFFでないならば(No)、ステップS32の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS36の処理に進む。
【0054】
ステップS32において、CPU21は、記憶領域0の地図データのバージョン情報を読み出し、読み出したバージョン情報が0xFF,0xFFであるか否かを判定する(ステップS33)。CPU21は、バージョン情報が0xFF,0xFFでないならば(No)、ステップS34の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS36の処理に進む。ここで、ステップS36の処理に進む理由は、記憶領域0は書き換えに失敗していると判断できるためである。記憶領域1が有効であるか否かを判定しないことにより、消費電力を抑えることができる。
【0055】
つまりCPU21は、参照データテーブルのバージョン情報または地図データのバージョン情報のうちいずれかが0xFF,0xFFならば(Yes)、記憶領域0が未使用であると判定してステップS36の処理に進む。またCPU21は、両バージョン情報がいずれも0xFF,0xFFではなかったならば(No)、ステップS34の処理に進む。
【0056】
ステップS34において、CPU21は、記憶領域0のフッタ部分に記憶されていた両バージョン情報を読み出す。CPU21は、読み出した両バージョン情報と、参照データテーブルおよび地図データのヘッダ部分に記憶されていた両バージョン情報とを比較する(ステップS35)。CPU21は、両バージョン情報が一致しなかったならば(No)、ステップS36の処理に進む。またCPU21は、両バージョン情報が一致したならば(Yes)、
図6のステップS40の処理に進む。
【0057】
なお、記憶領域0のどこかで書き換えが失敗した場合、ヘッダのバージョン情報と、フッタのバージョン情報とが一致しなくなる。そのため、ヘッダのバージョン情報と、フッタのバージョン情報を比較することにより、書き換えが失敗したか否かを判断できる。
【0058】
ステップS36において、CPU21は、記憶領域1のフッタのバージョン情報を読み出して、使用すべき地図データのバージョンを確定すると共に、記憶領域1の地図データを使用することを確定する(ステップS37)。これによりCPU21は、記憶領域1に地図データが正しく書き込まれていることを判定する。
例えばRAM22上の使用先を示す変数に記憶領域1の識別子を代入し、RAM22上のバージョン変数に、使用すべき地図データのバージョンを代入するとよい。これによりCPU52は、使用先を示す変数の識別子に基づき、記憶領域0,1のいずれかに書き込まれた地図データを読み出す。
【0059】
更にCPU21は、記憶領域0の消去フラグをセットし(ステップS38)、GPS電源をオフすると(ステップS39)、この処理から
図2の処理に戻る。消去フラグは、例えばRAM22に配置される。これにより、CPU21は、正しく書き込まれていない記憶領域を消去する。
【0060】
図6のステップS40において、CPU21は、記憶領域1の参照データテーブルのバージョン情報を読み出し、バージョン情報が0xFF,0xFFであるか否かを判定する(ステップS41)。CPU21は、バージョン情報が0xFF,0xFFでないならば(No)、ステップS42の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS47の処理に進む。
【0061】
ステップS42において、CPU21は、記憶領域1の地図データのバージョン情報を読み出し、読み出したバージョン情報が0xFF,0xFFであるか否かを判定する(ステップS43)。CPU21は、バージョン情報が0xFF,0xFFでないならば、ステップS44の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS47の処理に進む。
【0062】
つまりCPU21は、参照データテーブルのバージョン情報または地図データのバージョン情報のうちいずれかが0xFF,0xFFならば(Yes)、記憶領域1が未使用であると判定してステップS47の処理に進む。またCPU21は、両バージョン情報がいずれも0xFF,0xFFではなかったならば(No)、ステップS44の処理に進む。
【0063】
ステップS44において、CPU21は、記憶領域1のフッタ部分に記憶されていた両バージョン情報を読み出す。CPU21は、読み出した両バージョン情報と、参照データテーブルおよび地図データのヘッダ部分に記憶されていた両バージョン情報とを比較する(ステップS45)。CPU21は、両バージョン情報が一致しなかったならば(No)、ステップS47の処理に進む。またCPU21は、両バージョン情報が一致したならば(Yes)、ステップS46の処理に進む。このとき、記憶領域0と記憶領域1の両方に正しくデータが記憶されている。そのため、2つの記憶領域のバージョンを比較して、新しいバージョンが記憶されている方を使用する。
【0064】
ステップS46において、CPU21は、記憶領域0のバージョン情報と記憶領域1のバージョン情報とを比較して、記憶領域1のバージョン情報が最新であるか否かを判定する。CPU21は、記憶領域1のバージョン情報が最新ならば(Yes)、
図5のステップS36の処理に進み、記憶領域1のバージョン情報が最新でないならば(No)、ステップS47の処理に進む。
【0065】
ステップS47において、CPU21は、使用すべき地図データのバージョンを確定すると共に、記憶領域0の地図データを使用することを確定する。これによりCPU21は、記憶領域0に地図データが正しく書き込まれていることを判定する。
CPU21は、例えばRAM22上の使用先を示す変数に記憶領域0の識別子を代入し、RAM22上のバージョン変数に、使用すべき地図データのバージョンを代入するとよい。
【0066】
更にCPU21は、記憶領域1の消去フラグをセットし(ステップS48)、GPS電源をオフすると(ステップS49)、この処理から
図2の処理に戻る。
【0067】
図7は、未使用領域の消去処理を示すフローチャートである。
GPSフラッシュの未使用領域消去処理は、
図2のステップS19で呼び出される。
【0068】
CPU21は、記憶領域0の消去フラグがセットされていれば(ステップS50→Yes)、記憶領域0を消去して(ステップS51)、この消去フラグをクリアする(ステップS52)。CPU21は、記憶領域0の消去フラグがセットされていなければ(ステップS50→No)、ステップS53の処理に進む。
【0069】
CPU21は、記憶領域1の消去フラグがセットされていれば(ステップS53→Yes)、記憶領域1を消去して(ステップS54)、この消去フラグをクリアする(ステップS55)。これによりCPU21は、
図7の処理を終了する。
【0070】
CPU21は、記憶領域1の消去フラグがセットされていなければ(ステップS53→No)、
図7の処理を終了する。
CPU21がGPSフラッシュの未使用領域消去処理を実行することで、記憶領域0,1のうちいずれかが消去され、新たなデータやファームウェアで書き換え可能な状態となる。
【0071】
図8は、消去済みの領域の書き換え処理を示すフローチャートである。
この書き換え処理は、例えばユーザによる書き換え指示の操作によって実行される。
【0072】
CPU21は、記憶領域1を使用しているか否かを判定し(ステップS60)、更に記憶領域0の消去フラグがクリアされているか否かを判定する(ステップS61)。
CPU21は、記憶領域1が使用されており(ステップS60→Yes)、かつ記憶領域0の消去フラグがクリアされていたならば(ステップS61→Yes)、記憶領域0に参照データテーブルと地図データを書き込む(ステップS62)。ここでCPU21は、ステップS62を実行することにより、記憶領域0の特定アドレス空間にデータを書き込む第1書込手段として機能する。
CPU21は更に、記憶領域0のフッタにバージョン情報を書き込み(ステップS63)、ステップS64の処理に進む。ここでCPU21は、ステップS63を実行することにより、記憶領域0の特定アドレス空間とは異なるアドレス空間に、データを特定する特定情報と同一の特定情報を書き込む第2書込手段として機能する。
【0073】
CPU21は、記憶領域1が使用されていないか(ステップS60→No)、または記憶領域0の消去フラグがクリアされていなかったならば(ステップS61→No)、ステップS64の処理に進む。
【0074】
CPU21は、記憶領域0を使用しているか否かを判定し(ステップS64)、更に記憶領域1の消去フラグがクリアされているか否かを判定する(ステップS65)。
CPU21は、記憶領域0が使用されており(ステップS64→Yes)、かつ記憶領域1の消去フラグがクリアされていたならば(ステップS65→Yes)、記憶領域1に参照データテーブルと地図データを書き込む(ステップS66)。ここでCPU21は、ステップS66を実行することにより、記憶領域1の特定アドレス空間にデータを書き込む第1書込手段として機能する。
CPU21は更に、記憶領域1のフッタにバージョン情報を書き込み(ステップS67)、
図8の処理を終了する。ここでCPU21は、ステップS67を実行することにより、記憶領域0の特定アドレス空間とは異なるアドレス空間に、データを特定する特定情報と同一の特定情報を書き込む第2書込手段として機能する。
【0075】
CPU21は、記憶領域0が使用されていないか(ステップS64→No)、または記憶領域1の消去フラグがクリアされていなかったならば(ステップS65→No)、
図8の処理を終了する。
【0076】
第1の実施形態の電子時計1のCPU21は、最初に書き換えるヘッダ部分と最後に書き換えるフッタ部分に共通したバージョン情報を書き込んでいる。書き換え途中に電圧降下などが発生してマイクロコンピュータ2がリセットされ、この書き換えが失敗した場合、ヘッダ部分のバージョン情報は、フッタ部分のバージョン情報と相違する。そのため、CPU21は、書き換えに失敗したことを判断可能である。
【0077】
《変形例1》
本実施形態では
図4に示したように、記憶領域0には、アドレス空間0x100000~0x100001とアドレス空間0x110000~0x110001に、それぞれバージョン情報を記憶している。更に両バージョン情報をアドレス空間0x1FFFFC~0x1FFFFDとアドレス空間0x1FFFFE~0x1FFFFFとにコピーしてある。
【0078】
しかし、アドレス空間0x100000~0x100001に記憶されたバージョン情報のみを、対応するアドレス空間0x1FFFFE~0x1FFFFFにコピーしてもよい。このように、2面の記憶領域が複数のデータで構成される場合、代表データのバージョン情報をフッタにコピーしてもよい。
なお、記憶領域1も同様である。
【0079】
《変形例2》
記憶領域0のアドレス空間0x100000~0x100001に参照データテーブルのバージョン情報が記憶されているとき、参照データテーブルの領域のフッタに相当するアドレス空間0x10FFFE~0x10FFFFにこのバージョン情報をコピーしてもよい。
【0080】
同様に記憶領域0のアドレス空間0x110000~0x110001に地図データのバージョン情報が記憶されているとき、地図データの領域のフッタに相当するアドレス空間0x1FFFFE~0x1FFFFFにこのバージョン情報をコピーしてもよい。
【0081】
このように、各データを記憶する各領域のフッタに、バージョン情報をコピーしてもよい。
なお、記憶領域1も同様である。
【0082】
《第1の実施形態の効果》
記憶領域のフッタにバージョン情報のコピーを記憶し、ヘッダ部分とフッタ部分のバージョン情報を比較することにより、書き換えが成功したか否かを判断できる。
【0083】
《第2の実施形態》
第1の実施形態の電子時計1は、各記憶領域のヘッダ部分にデータのバージョン情報と本体を書き込んだのち、各記憶領域のフッタ部分にバージョン情報をコピーしている。
【0084】
これに対して第2の実施形態の電子時計1は、各記憶領域のフッタ部分に、データの容量情報を保存している。これにより、データが書き込まれている範囲をCPU21が判断でき、データが書き込まれている範囲のみを消去することで消去時間を短縮し消費電力を低減させることが可能である。これにより、時計に搭載されるボタン電池の寿命を延ばすことができる。
【0085】
図9は、第2の実施形態における記憶領域0,1の構成を示す図である。
記憶領域0には、参照データテーブルと地図データとが記憶されている。
【0086】
参照データテーブルは、アドレス空間0x100000~0x10FFFFのうち上位のアドレス空間0x100000~(0x100002+X1)に記憶される。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX1 Bytesの本体とで構成される。ここで、バージョン情報には、0x01,0x00の値が付与されている。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。
【0087】
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x100003+X1)~0x10FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
【0088】
地図データは、アドレス空間0x110000~0x1FFFFBのうち上位のアドレス空間0x110000~(0x110002+Y1)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY1 Bytesの本体とで構成される。ここで、バージョン情報には、0x03,0x00の値が付与されている。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。
【0089】
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x110003+Y1)~0x1FFFFBに記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x100000~0x1FFFFBである。
記憶領域0のフッタであるアドレス空間0x1FFFFC~0x1FFFFFには、地図データの容量情報である(0x010002+Y1)が記憶される。アドレス空間0x1FFFFC~0x1FFFFFは、記憶領域0のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
【0090】
記憶領域1には、記憶領域0と同様に参照データテーブルと地図データとが記憶されており、フッタに地図データの容量情報が記憶される。
参照データテーブルは、アドレス空間0x200000~0x20FFFFのうち上位のアドレス空間0x200000~(0x200002+X2)に記憶されている。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX2 Bytesの本体とで構成される。ここで、バージョン情報は、0x02,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により参照データテーブルのバージョンを特定する。
【0091】
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x200003+X1)~0x20FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
【0092】
地図データは、アドレス空間0x210000~0x2FFFFBのうち上位のアドレス空間0x210000~(0x210002+Y2)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY2 Bytesの本体とで構成される。ここで、バージョン情報は、0x04,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により地図データのバージョンを特定する。
【0093】
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x210003+Y2)~0x2FFFFBに記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x200000~0x2FFFFBである。
【0094】
記憶領域1のフッタであるアドレス空間0x2FFFFC~0x2FFFFFには、地図データの容量情報である(0x010002+Y2)が記憶される。アドレス空間0x1FFFFC~0x1FFFFFは、記憶領域1のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
【0095】
記憶領域0,1においてフッタが最後に書き込まれるため、書き換え途中で失敗してマイクロコンピュータ2にリセットが掛かった場合、フッタ部分の容量情報が0xFF,0xFF,0xFF,0xFFとなるため、書き換えの失敗を判断できる。消去途中で失敗してマイクロコンピュータ2にリセットが掛かった場合、ヘッダ部分のパージョン情報が0xFF,0xFFになるため、消去の失敗を判断できる。
【0096】
図10と
図11は、記憶領域の利用と未使用の決定処理を示すフローチャートである。
CPU21は、記憶領域0の参照データテーブルのバージョン情報を読み出し(ステップS70)、バージョン情報が0xFF,0xFFであるか否かを判定する(ステップS71)。CPU21は、バージョン情報が0xFF,0xFFでないならば(No)、ステップS72の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS76の処理に進む。
【0097】
ステップS72において、CPU21は、記憶領域0の地図データのバージョン情報を読み出し、読み出したバージョン情報が0xFF,0xFFであるか否かを判定する(ステップS73)。CPU21は、バージョン情報が0xFF,0xFFでないならば、ステップS74の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS76の処理に進む。ここで、ステップS76の処理に進む理由は、記憶領域0は書き換えに失敗していると判断できるためである。記憶領域1が有効であるか否かを判定しないことにより、消費電力を抑えることができる。
【0098】
つまりCPU21は、参照データテーブルのバージョン情報または地図データのバージョン情報のうちいずれかが0xFF,0xFFならば(Yes)、記憶領域0が未使用であると判定してステップS76の処理に進む。またCPU21は、両バージョン情報がいずれも0xFF,0xFFではなかったならば(No)、ステップS74の処理に進む。
【0099】
ステップS76において、CPU21は、記憶領域0のフッタの地図容量情報を読み出し、ステップS77の処理に進む。
【0100】
ステップS74において、CPU21は、記憶領域0のフッタ部分に記憶されていた地図容量情報を読み出し、0xFF,0xFF,0xFF,0xFFと比較する(ステップS75)。CPU21は、地図容量情報が0xFF,0xFF,0xFF,0xFFと一致しなかったならば(No)、ステップS77の処理に進む。またCPU21は、地図容量情報が0xFF,0xFF,0xFF,0xFFと一致したならば(Yes)、
図11のステップS82の処理に進む。
【0101】
なお、記憶領域0のどこかで書き換えが失敗した場合、地図容量情報は書き込まれなくなり、消去直後の状態0xFF,0xFF,0xFF,0xFFとなる。そのため、地図容量情報と0xFF,0xFF,0xFF,0xFFとを比較することにより、書き換えが失敗したか否かを判断できる。
【0102】
ステップS77において、CPU21は、記憶領域1の参照データテーブルおよび地図データのバージョン情報を読み出す。CPU21は、記憶領域1のフッタの地図容量情報を読み出す(ステップS78)。CPU21は、記憶領域1の地図データを使用することを確定すると共に、使用すべき地図データのバージョンを確定する(ステップS79)。これによりCPU21は、記憶領域1に地図データが正しく書き込まれていることを判定する。
CPU21は、例えばRAM22上の使用先を示す変数に記憶領域1の識別子を代入し、RAM22上のバージョン変数に、使用すべき地図データのバージョンを代入するとよい。
【0103】
更にCPU21は、記憶領域0の消去フラグをセットし(ステップS80)、GPS電源をオフすると(ステップS81)、
図2の処理に戻る。消去フラグは、例えばRAM22に配置される。
【0104】
図11のステップS82において、CPU21は、記憶領域1の参照データテーブルのバージョン情報を読み出し、バージョン情報が0xFF,0xFFであるか否かを判定する(ステップS83)。CPU21は、バージョン情報が0xFF,0xFFでないならば(No)、ステップS84の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS89の処理に進む。
【0105】
ステップS84において、CPU21は、記憶領域1の地図データのバージョン情報を読み出し、読み出したバージョン情報が0xFF,0xFFであるか否かを判定する(ステップS85)。CPU21は、バージョン情報が0xFF,0xFFでないならば、ステップS86の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS89の処理に進む。
【0106】
つまりCPU21は、参照データテーブルのバージョン情報または地図データのバージョン情報のうちいずれかが0xFF,0xFFならば(Yes)、記憶領域1が未使用であると判定してステップS89の処理に進む。またCPU21は、両バージョン情報がいずれも0xFF,0xFFではなかったならば(No)、ステップS86の処理に進む。
【0107】
ステップS89において、CPU21は、記憶領域1のフッタ部分に記憶されていた地図容量情報を読み出し、ステップS90の処理に進む。
【0108】
ステップS86において、CPU21は、記憶領域1のフッタ部分に記憶されていた地図容量情報を読み出し、0xFF,0xFF,0xFF,0xFFと比較する(ステップS87)。CPU21は、地図容量情報が0xFF,0xFF,0xFF,0xFFと一致しなかったならば(No)、ステップS90の処理に進む。またCPU21は、地図容量情報が0xFF,0xFF,0xFF,0xFFと一致したならば(Yes)、ステップS88の処理に進む。このとき、記憶領域0と記憶領域1の両方に正しくデータが記憶されている。そのため、2つの記憶領域のバージョンを比較して、新しいバージョンが記憶されている方を使用する。
【0109】
ステップS88において、CPU21は、記憶領域0のバージョン情報と記憶領域1のバージョン情報とを比較し、記憶領域1のバージョン情報が最新であるか否かを判定する。CPU21は、記憶領域1のバージョン情報が最新ならば(Yes)、
図10のステップS77の処理に進み、記憶領域1のバージョン情報が最新でないならば(No)、ステップS90の処理に進む。
【0110】
ステップS90において、CPU21は、記憶領域0の地図データを使用することを確定し、かつ使用すべき地図データのバージョンを確定する。これによりCPU21は、記憶領域0に地図データが正しく書き込まれていることを判定する。
CPU21は、例えばRAM22上の使用先を示す変数に記憶領域0の識別子を代入し、RAM22上のバージョン変数に、使用すべき地図データのバージョンを代入するとよい。
【0111】
更にCPU21は、記憶領域1の消去フラグをセットし(ステップS91)、GPS電源をオフすると(ステップS92)、この処理から
図2の処理に戻る。
【0112】
図12は、未使用領域の消去処理を示すフローチャートである。
GPSフラッシュの未使用領域消去処理は、
図2のステップS19で呼び出される。
【0113】
CPU21は、記憶領域0の消去フラグがセットされていれば(ステップS100→Yes)、記憶領域0のフッタに記憶された地図容量を読み取り(ステップS101)、消去すべきブロックサイズを算出する。ここで消去すべきブロックサイズは、参照データテーブルのブロックサイズと、地図容量を1ブロックの容量で除算した値との和である。CPU21は、記憶領域0の先頭から所定ブロックを消去し(ステップS102)、記憶領域0のフッタのブロックを消去し(ステップS103)、この消去フラグをクリアする(ステップS104)。CPU21は、記憶領域0の消去フラグがセットされていなければ(ステップS100→No)、ステップS105の処理に進む。
【0114】
CPU21は、記憶領域1の消去フラグがセットされていれば(ステップS105→Yes)、記憶領域1のフッタに記憶された地図容量を読み取り(ステップS106)、消去すべきブロックサイズを算出する。ここで消去すべきブロックサイズは、参照データテーブルのブロックサイズと、地図容量を1ブロックの容量(4Kbytes)で除算した値との和である。CPU21は、記憶領域1の先頭から所定ブロックを消去し(ステップS107)、記憶領域1のフッタのブロックを消去し(ステップS108)、この消去フラグをクリアする(ステップS109)。これによりCPU21は、
図12の処理を終了する。
【0115】
CPU21は、記憶領域1の消去フラグがセットされていなければ(ステップS105→No)、
図12の処理を終了する。
CPU21がGPSフラッシュの未使用領域消去処理を実行することで、記憶領域0,1のうちいずれかが消去され、新たなデータやファームウェアで書き換え可能な状態となる。
【0116】
図13は、消去済みの領域の書き換え処理を示すフローチャートである。
この書き換え処理は、例えばユーザによる書き換え指示の操作によって実行される。
【0117】
CPU21は、記憶領域1を使用しているか否かを判定し(ステップS120)、更に記憶領域0の消去フラグがクリアされているか否かを判定する(ステップS121)。
CPU21は、記憶領域1が使用されており(ステップS120→Yes)、かつ記憶領域0の消去フラグがクリアされていたならば(ステップS121→Yes)、記憶領域0に参照データテーブルと地図データを書き込む(ステップS122)。ここでCPU21は、ステップS122を実行することにより、記憶領域0の特定アドレス空間にデータを書き込む第1書込手段として機能する。
CPU21は更に、記憶領域0のフッタに地図容量情報を書き込み(ステップS123)、ステップS124の処理に進む。ここでCPU21は、ステップS123を実行することにより、記憶領域0の特定アドレス空間とは異なるアドレス空間にデータの容量を示す容量情報を書き込む第2書込手段として機能する。
【0118】
CPU21は、記憶領域1が使用されていないか(ステップS120→No)、または記憶領域0の消去フラグがクリアされていなかったならば(ステップS121→No)、ステップS124の処理に進む。
【0119】
ステップS124においてCPU21は、記憶領域0を使用しているか否かを判定し、更に記憶領域1の消去フラグがクリアされているか否かを判定する(ステップS125)。
CPU21は、記憶領域0が使用されており(ステップS124→Yes)、かつ記憶領域1の消去フラグがクリアされていたならば(ステップS125→Yes)、記憶領域1に参照データテーブルと地図データを書き込む(ステップS126)。ここでCPU21は、ステップS126を実行することにより、記憶領域1の特定アドレス空間にデータを書き込む第1書込手段として機能する。
CPU21は更に、記憶領域1のフッタに地図容量情報を書き込み(ステップS127)、
図13の処理を終了する。ここでCPU21は、ステップS127を実行することにより、記憶領域1の特定アドレス空間とは異なるアドレス空間にデータの容量を示す容量情報を書き込む第2書込手段として機能する。
【0120】
CPU21は、記憶領域0が使用されていないか(ステップS124→No)、または記憶領域1の消去フラグがクリアされていなかったならば(ステップS125→No)、
図13の処理を終了する。
【0121】
《第2の実施形態の効果》
記憶領域のフッタに0xFF,0xFF,…以外のデータを記憶し、フッタ部分に0xFF,0xFF,…以外のデータが記憶されているか確認することにより、書き換えが成功したか否かを判断できる。
【0122】
《第3の実施形態》
第3の実施形態の電子時計1は、各記憶領域のフッタ部分に電源電圧情報を保存している。
CPU21がフラッシュメモリの書き換えに失敗する主たる理由は、電池34の容量低下に伴い、電源電圧が降下して、CPU21が動作できなくなることである。よって、フラッシュメモリを書き換える際の電源電圧情報を記憶しておくことで、フラッシュメモリの書き換え失敗の要因を解析することができる。
【0123】
図14は、第3の実施形態における記憶領域0,1の構成を示す図である。
記憶領域0には、参照データテーブルと地図データとが記憶されている。
【0124】
参照データテーブルは、アドレス空間0x100000~0x10FFFFのうち上位のアドレス空間0x100000~(0x100002+X1)に記憶されている。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX1 Bytesの本体とで構成される。ここで、バージョン情報には、0x01,0x00の値が付与されている。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。
【0125】
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x100003+X1)~0x10FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
【0126】
地図データは、アドレス空間0x110000~0x1FFFF9のうち上位のアドレス空間0x110000~(0x110002+Y1)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY1 Bytesの本体とで構成される。ここで、バージョン情報には、0x03,0x00の値が付与されている。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。
【0127】
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x110003+Y1)~0x1FFFF9に記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x100000~0x1FFFF9である。
記憶領域0のアドレス空間0x1FFFFA~0x1FFFFBには、書込前の電源電圧情報が記憶される。アドレス空間0x1FFFFC~0x1FFFFDには、参照データテーブルのバージョン情報が記憶される。記憶領域0のアドレス空間0x1FFFFE~0x1FFFFFには、地図データのバージョン情報が記憶される。これらアドレス空間0x1FFFFA~0x1FFFFFは、記憶領域0のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
【0128】
記憶領域1には、記憶領域0と同様に参照データテーブルと地図データとが記憶されている。
参照データテーブルは、アドレス空間0x200000~0x20FFFFのうち上位のアドレス空間0x200000~(0x200002+X2)に記憶されている。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX2 Bytesの本体とで構成される。ここで、バージョン情報は、0x02,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により参照データテーブルのバージョンを特定する。
【0129】
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x200003+X1)~0x20FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
【0130】
地図データは、アドレス空間0x210000~0x2FFFF9のうち上位のアドレス空間0x210000~(0x210002+Y2)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY2 Bytesの本体とで構成される。ここで、バージョン情報は、0x04,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により地図データのバージョンを特定する。
【0131】
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x210003+Y2)~0x2FFFF9に記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x200000~0x2FFFF9である。
【0132】
記憶領域1のアドレス空間0x2FFFFA~0x2FFFFBには、書込前の電源電圧情報が記憶される。アドレス空間0x2FFFFC~0x2FFFFDには、参照データテーブルのバージョン情報が記憶される。記憶領域1のアドレス空間0x2FFFFE~0x2FFFFFには、地図データのバージョン情報が記憶される。これらアドレス空間0x2FFFFA~0x2FFFFFは、記憶領域1のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
【0133】
図15は、消去済みの領域の書き換え処理を示すフローチャートである。
この書き換え処理は、例えばユーザによる書き換え指示の操作によって実行される。
【0134】
CPU21は、記憶領域1を使用しているか否かを判定し(ステップS130)、更に記憶領域0の消去フラグがクリアされているか否かを判定する(ステップS131)。
CPU21は、記憶領域1が使用されており(ステップS130→Yes)、かつ記憶領域0の消去フラグがクリアされていたならば(ステップS131→Yes)、記憶領域0のフッタに電圧センサ211で検知した電源電圧情報を書き込む(ステップS132)。CPU21は更に、記憶領域0に参照データテーブルと地図データを書き込み(ステップS133)、フッタにバージョン情報を追記し(ステップS134)、ステップS135の処理に進む。
【0135】
CPU21は、記憶領域1が使用されていないか(ステップS130→No)、または記憶領域0の消去フラグがクリアされていなかったならば(ステップS131→No)、ステップS135の処理に進む。
【0136】
ステップS135において、CPU21は、記憶領域0を使用しているか否かを判定し、更に記憶領域1の消去フラグがクリアされているか否かを判定する(ステップS136)。
CPU21は、記憶領域0が使用されており(ステップS135→Yes)、かつ記憶領域1の消去フラグがクリアされていたならば(ステップS136→Yes)、記憶領域1のフッタに電圧センサ211で検知した電源電圧情報を書き込む(ステップS137)。CPU21は更に、記憶領域1に参照データテーブルと地図データを書き込み(ステップS138)、フッタにバージョン情報を追記し(ステップS139)、
図15の処理を終了する。
【0137】
CPU21は、記憶領域0が使用されていないか(ステップS135→No)、または記憶領域1の消去フラグがクリアされていなかったならば(ステップS136→No)、
図15の処理を終了する。
【0138】
(変形例)
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の(a)~(h)のようなものがある。
【0139】
(a) 記憶領域に書き込まれる情報は、参照データテーブルや地図データに限定されず、GPS部5のCPU52が読み込んで参照するためのデータや、GPS部5のCPU52が読み込んで実行するためのファームウェア(プログラム)であってもよい。
【0140】
(b) 記憶領域のフッタに記憶される情報は、バージョン情報のコピーに限定されない。例えばデータ本体のチェックサム値やCRC(Cyclic Redundancy Check)値など、データ本体を識別可能な他の情報が記憶されてもよい。
(c) バージョン情報は、必ずしも記憶領域の先頭に記憶されていなくてもよく、最初の書き込み動作で書き込まれるメモリ空間に記憶されていればよい。例えば、記憶領域のうち所定のオフセット(0x000080など)で示されるアドレス空間に記憶されていてもよい。
【0141】
(d) 記憶領域にデータやソフトウェアプログラムを書き込んだのち、記憶領域のフッタに書き込み日時や、データやソフトウェアプログラムの入手先などのアップデートに係る情報を書き込んでもよい。これにより、不具合が発生した場合に、アップデートに係る情報を特定可能である。
(e) 記憶領域のフッタのサイズは、フラッシュメモリの消去単位以下であればよく、限定されない。
(f) フラッシュメモリに書き込まれる情報は、CPU52が参照するデータやCPU52が実行するファームウェア(プログラム)に限定されない。CPU21が参照するデータやCPU21が実行するファームウェア(プログラム)であってもよい。
(g) 記憶領域の使用と未使用の決定処理を実行する主体は、CPU21に限られず、CPU52が実行してもよい。
(h) CPU21が読み込んで実行するためのプログラムまたはCPU21が読み込んで参照するためのデータを、CPU21自身がフラッシュメモリに書き込んでもよい。
【0142】
以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記に記載した請求項の項番は、この出願の願書に最初に添付した特許請求の範囲の通りである。
〔付記〕
【0143】
《請求項1》
プログラムまたはデータを記憶する記憶領域を有するメモリと、
前記記憶領域の特定アドレス空間に前記プログラムまたは前記データと当該プログラムまたは当該データを特定する特定情報とを書き込み、当該記憶領域の前記特定アドレス空間とは異なるアドレス空間に当該特定情報を書き込むプロセッサと、
を備えることを特徴とするデータ管理装置。
《請求項2》
前記メモリは、前記プログラムまたは前記データを記憶する記憶領域を複数含んでおり、
前記プロセッサは、各前記記憶領域の特定アドレス空間の前記プログラムまたは前記データに含まれる特定情報と各前記記憶領域の前記異なるアドレス空間に含まれる特定情報とを照合して、前記データまたは前記プログラムが正しく書き込まれているか否かを判定すると共に、正しく書き込まれていない記憶領域を消去する、
ことを特徴とする請求項1に記載のデータ管理装置。
《請求項3》
前記メモリは、前記プログラムまたは前記データを記憶する記憶領域を複数含んでおり、
前記プロセッサは、各前記記憶領域の前記特定アドレス空間の前記プログラムまたは前記データに含まれる特定情報と各前記記憶領域の前記異なるアドレス空間の特定情報とを照合して、前記データまたは前記プログラムが正しく書き込まれているか否かを判定すると共に、正しく書き込まれている記憶領域に記憶されたプログラムまたはデータを使用する、
ことを特徴とする請求項1又は2に記載のデータ管理装置。
《請求項4》
プログラムまたはデータを記憶する記憶領域を有するメモリと、
前記記憶領域の特定アドレス空間に新たなプログラムまたはデータを書き込み、当該プログラムまたは当該データの容量を示す容量情報を当該記憶領域の前記特定アドレス空間とは異なるアドレス空間に書き込むプロセッサと、
を備えることを特徴とするデータ管理装置。
《請求項5》
前記プロセッサは、前記記憶領域の前記異なるアドレス空間に記憶された前記容量情報に基づき、当該記憶領域を消去する、
ことを特徴とする請求項4に記載のデータ管理装置。
《請求項6》
第1のプロセッサと、
前記第1のプロセッサが読み込んで実行するためのプログラムまたは前記第1のプロセッサが読み込んで参照するためのデータを記憶する記憶領域を有するメモリと、
前記記憶領域の特定アドレス空間に前記プログラムまたは前記データを書き込み、当該プログラムまたは当該データを特定する特定情報を当該記憶領域の前記特定アドレス空間とは異なるアドレス空間に書き込む第2のプロセッサと、
を備えることを特徴とするデータ管理装置。
《請求項7》
前記メモリは、前記プログラムまたは前記データを記憶する記憶領域を複数含んでおり、
前記第2のプロセッサは、各前記記憶領域の前記特定アドレス空間の前記プログラムまたは前記データに含まれる特定情報と各前記記憶領域の前記異なるアドレス空間の特定情報とを照合して、前記データまたは前記プログラムが正しく書き込まれているか否かを判定すると共に、正しく書き込まれている記憶領域に記憶されたプログラムまたはデータを前記第1のプロセッサに使用させる、
ことを特徴とする請求項6に記載のデータ管理装置。
《請求項8》
前記メモリは、前記プログラムまたは前記データを記憶する記憶領域を複数含んでおり、
前記第1のプロセッサは、各前記記憶領域の前記特定アドレス空間の前記プログラムまたは前記データに含まれる特定情報と各前記記憶領域の前記異なるアドレス空間の特定情報とを照合して、前記データまたは前記プログラムが正しく書き込まれているか否かを判定すると共に、正しく書き込まれている記憶領域に記憶されたプログラムまたはデータを読み込む、
ことを特徴とする請求項6に記載のデータ管理装置。
《請求項9》
電源を供給する電池と、
前記電源の電圧を検知する電圧センサと、を備え、
前記第2のプロセッサは、前記プログラムまたは前記データを特定する特定情報と共に、前記電圧センサで検知した電源電圧情報を前記記憶領域の前記異なるアドレス空間に書き込む、
ことを特徴とする請求項6ないし8のうちいずれか1項に記載のデータ管理装置。
《請求項10》
第1のプロセッサと、
前記第1のプロセッサが読み込んで実行するためのプログラムまたは前記第1のプロセッサが読み込んで参照するためのデータを記憶する記憶領域を有するメモリと、
前記記憶領域の特定アドレス空間に新たなプログラムまたはデータを書き込み、当該プログラムまたは当該データの容量を示す容量情報を当該記憶領域の前記特定アドレス空間とは異なるアドレス空間に書き込む第2のプロセッサと、
を備えることを特徴とするデータ管理装置。
《請求項11》
前記第2のプロセッサは、前記記憶領域の前記異なるアドレス空間に記憶された前記容量情報に基づき、当該記憶領域を消去する、
ことを特徴とする請求項10に記載のデータ管理装置。
《請求項12》
請求項1ないし11のうちいずれか1項に記載のデータ管理装置と、
時刻を計数する計時部と、
前記計時部が計数する前記時刻を表示する表示部と、
を備えることを特徴とする電子時計。
《請求項13》
記憶領域の特定アドレス空間にデータまたはプログラムを特定する特定情報が記憶されると共に、前記記憶領域の前記特定アドレス空間とは異なるアドレス空間に前記特定情報と同一の特定情報が記憶されており、
前記記憶領域の前記特定アドレス空間の特定情報と前記記憶領域の前記異なるアドレス空間の特定情報とを照合して、前記データまたは前記プログラムが正しく書き込まれているか否かを判定する、
ことを特徴とするデータ管理方法。
《請求項14》
記憶領域の特定アドレス空間にデータまたはプログラムが記憶されると共に、前記記憶領域の前記特定アドレス空間とは異なるアドレス空間に前記データまたは前記プログラムの容量を示す容量情報が記憶されており、
前記記憶領域の前記異なるアドレス空間に記憶された前記容量情報に基づき、当該記憶領域を消去する、
ことを特徴とするデータ管理方法。
《請求項15》
記憶領域の特定アドレス空間にデータまたはプログラムを書き込む第1書込手段、
前記記憶領域の前記特定アドレス空間とは異なるアドレス空間に、前記データまたは前記プログラムを特定する特定情報と同一の特定情報を書き込む第2書込手段、
前記記憶領域の前記特定アドレス空間の特定情報と前記記憶領域の前記異なるアドレス空間の特定情報とを照合して、前記データまたは前記プログラムが正しく書き込まれているか否かを判定する判定手段、
としてコンピュータを機能させるためのデータ管理プログラム。
《請求項16》
記憶領域の特定アドレス空間にデータまたはプログラムを書き込む第1書込手段、
前記記憶領域の前記特定アドレス空間とは異なるアドレス空間に前記データまたは前記プログラムの容量を示す容量情報を書き込む第2書込手段、
前記記憶領域の前記異なるアドレス空間に記憶された前記容量情報に基づき、当該記憶領域を消去する消去手段、
としてコンピュータを機能させるためのデータ管理プログラム。
【符号の説明】
【0144】
1 電子時計 (データ管理装置)
2 マイクロコンピュータ
21 CPU (第2のプロセッサ)
22 RAM
23 ROM
25 発振回路
26 分周回路
27 計時回路
31 操作部
32 表示部
33 電源部
34 電池
4 通信部
41 アンテナ
5 GPS部
51 アンテナ
52 CPU (第1のプロセッサ)
53 RAM
6 フラッシュメモリ
61 領域0
62 領域1
7 振動子