[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP7279824B2 - 電子時計、領域判定方法、およびプログラム - Google Patents

電子時計、領域判定方法、およびプログラム Download PDF

Info

Publication number
JP7279824B2
JP7279824B2 JP2022000782A JP2022000782A JP7279824B2 JP 7279824 B2 JP7279824 B2 JP 7279824B2 JP 2022000782 A JP2022000782 A JP 2022000782A JP 2022000782 A JP2022000782 A JP 2022000782A JP 7279824 B2 JP7279824 B2 JP 7279824B2
Authority
JP
Japan
Prior art keywords
area
storage area
cpu
written
0xff
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022000782A
Other languages
English (en)
Other versions
JP2022033318A (ja
Inventor
晃洋 黒羽
佑樹 尾下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP2017169142A external-priority patent/JP7009843B2/ja
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2022000782A priority Critical patent/JP7279824B2/ja
Publication of JP2022033318A publication Critical patent/JP2022033318A/ja
Priority to JP2023077016A priority patent/JP7501726B2/ja
Application granted granted Critical
Publication of JP7279824B2 publication Critical patent/JP7279824B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、子時計、領域判定方法、およびプログラムに関する。
近年、電子機器の発売後に不具合を修正させるため、または機能や性能を向上させるために、ユーザが電子機器のプログラムをアップデート可能なものが各種実用化されている。このような電子機器は、例えばインターネットに接続可能であり、ネットワーク経由でプログラムをアップデート(更新)する場合がある。
特許文献1には、制御ソフトウェアを更新する方法が開示されている。特許文献1の要約書には、「無線端末装置は自装置の運用に係る現用の制御ソフトウェアのバージョン情報を網側に接続するソフトウェア供給装置に通知し、ソフトウェア供給装置は通知されたバージョン情報を自己が蓄積管理する最新のバージョン情報と比較して更新の必要性有無を判定すると共に、更新が必要な場合は通知されたバージョンの改訂用に適合する新しい制御ソフトウェアを無線端末装置にダウンロードする。」と記載されている。
特開2001-078258号公報
電子時計では、ファームウェアの記憶領域を2つ持つことで、一方の記憶領域のファームウェアの書き換えを中断しても、他方の記憶領域のファームウェアから正常に起動可能となる。但し、このような機能を実現するためには、電子時計のプロセッサは、どちらの記憶領域が使用領域であるかを把握する必要がある。例えば、ファームウェアのヘッダ部分が書き換えられたのちに、電圧降下などにより時計LSI(Large-Scale Integration)がリセットされたならば、ヘッダ部分のバージョン情報を読み出すだけは、書き換えが成功したかどうかが判別できず、どちらの記憶領域が使用領域であるか把握できない。
そこで、本発明は、子時計、領域判定方法、およびプログラムについて、フラッシュメモリの書き換えに成功したか否かを容易に判定することを課題とする。
本発明は、上記目的を達成するため、
所定の時間間隔おきに所定の角度だけ回動する指針と、
被書き込み対象が書き込まれる2つの記憶領域を有する記憶部と、
制御部と、
を備え、
前記制御部は、
前記指針が回動する前記所定の時間間隔おきに発生するタイミングと重ならない所定のタイミングである場合に、前記2つの記憶領域のうち前記被書き込み対象が正常に書き込まれなかった記憶領域を被フォーマット領域、又は、次回に前記被書き込み対象が書き込まれる領域である書き込み領域と判定し、前記2つの記憶領域に前記被書き込み対象がどちらも正常に書き込まれている場合は前記2つの記憶領域のうち前記被書き込み対象が書き込まれたタイミングが早い記憶領域を前記被フォーマット領域、又は、前記書き込み領域と判定する被フォーマット領域決定処理を行う、
ことを特徴とする電子時計である。

本実施形態における電子時計の概略を示す構成図である。 オールクリア後のGPS処理を示すフローチャートである。 秒針の運針とGPSフラッシュ未使用領域決定処理とを示すタイミングチャートである。 第1の実施形態における記憶領域0,1の構成を示す図である。 領域の使用と未使用の決定処理を示すフローチャート(その1)である。 領域の使用と未使用の決定処理を示すフローチャート(その2)である。 未使用領域の消去処理を示すフローチャートである。 消去済みの領域の書き換え処理を示すフローチャートである。 第2の実施形態における記憶領域0,1の構成を示す図である。 領域の使用と未使用の決定処理を示すフローチャート(その1)である。 領域の使用と未使用の決定処理を示すフローチャート(その2)である。 未使用領域の消去処理を示すフローチャートである。 消去済みの領域の書き換え処理を示すフローチャートである。 第3の実施形態における記憶領域0,1の構成を示す図である。 消去済みの領域の書き換え処理を示すフローチャートである。
以降、本発明を実施するための形態を、各図を参照して詳細に説明する。
本実施形態の電子時計は、ファームウェアやデータを特定するバージョン情報を、ファームウェアやデータを書き込む記憶領域のフッタ部にコピーする。ファームウェアやデータのバージョン情報をフッタ部にコピーした場合、書き換えに失敗した場合を検知できる。
更にファームウェアやデータのブロックサイズ情報をフッタ部に書き込んだ場合、消去すべきブロックサイズが明確になるので、消去時間と消去に伴う消費電力を削減することができる。
図1は、本実施形態における電子時計1の概略を示す構成図である。
電子時計1は、特には限られないが、例えば腕に装着するためのバンドを備えた腕時計型の電子時計である。この電子時計1は、時計LSIであるマイクロコンピュータ2、操作部31、表示部32、電源部33、電池34を含んで構成される。電子時計1は更に、通信部4とアンテナ41、GPS(Global Positioning System)部5とアンテナ51、フラッシュメモリ6、振動子7を含んで構成される。なお、図ではアンテナ41,51を“ANT”と記載している。
操作部31は、例えばリュウズやボタンであり、ユーザの操作情報をマイクロコンピュータ2に伝達する。表示部32は、例えば文字盤と指針などであり、マイクロコンピュータ2の指示により現在時刻を含む各種情報を表示する。電池34と電源部33は、この電子時計1に電力を供給する。
電源部33は、例えば、電圧変換回路である。電源部33は、電子時計1内の各部の動作電圧で電力を供給する。電池34としては、例えば、ボタン型乾電池などの一次電池が用いられる。または電池34として、ソーラパネルと二次電池の組合せが用いられてもよい。
通信部4は、例えばBluetooth(登録商標) Low Energyに準拠した無線通信により、アンテナ41、を介して外部と通信する。これにより電子時計1は、新たなファームウェアを外部から受信する。
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のプロセッサである。
フラッシュメモリ6は、情報を読み出しおよび書き込み可能に記憶する不揮発性の半導体メモリである。このフラッシュメモリ6には、記憶領域0(61)および記憶領域1(62)を含んでいる。記憶領域0(61)および記憶領域1(62)は、CPU52がRAM53が読み込んで参照するためのデータが記憶される。
フラッシュメモリ6の1回の消去単位は4Kbytesであり、これをブロックと呼ぶ。それ以上のサイズ消去するときには、4Kbytesのブロックの消去を繰り返す。フラッシュメモリ6の指定されたブロックを消去すると、そのブロックのデータは全て0xFFとなる。
フラッシュメモリ6の消去済みのアドレス空間には、データを書き込むことができる。フラッシュメモリ6の1回の書き込み単位は256Bytesなので、それ以上のサイズのデータを書き込むときには、256Bytes単位の書き込みと読み込みと確認(ベリファイ)を繰り返すとよい。
CPU21は、電子時計1を統括制御する第2のプロセッサである。CPU21の処理能力は、CPU52の処理能力よりも低い。またCPU21の動作保証電圧の下限は、CPU52の動作保証電圧の下限よりも低い。電源電圧の低下によりCPU52が動作しなくなった後でも、CPU21は動作することができる。
振動子7は、例えば、水晶振動子であり、後記する発振回路25と組み合わされて固有の周波数信号を生成する。
マイクロコンピュータ2は、CPU21、RAM22を含んで構成される。マイクロコンピュータ2は更に、発振回路25、分周回路26、計時回路27を含んで構成され、外付けのROM(Read Only Memory)23に接続されている。
CPU21は、RAM22をワーク領域としてROM23やフラッシュメモリ6に記憶されたプログラムによる各種演算処理を行い、電子時計1の全体動作を統括制御するものである。RAM22は電源バックアップされているため、次回の起動時に参照する情報を好適に記憶できる。次回の起動時にCPU21が参照する情報は、RAM22に記憶される。このCPU21は、記憶領域0,1の特定アドレス空間にプログラムまたはデータとこのプログラムまたはこのデータを特定する特定情報とを書き込み、この記憶領域の特定アドレス空間とは異なるアドレス空間に特定情報を書き込む。
発振回路25は、振動子7と組み合わされて固有の周波数信号を生成して分周回路26に出力する。発振回路25としては、例えば、水晶発振回路が用いられる。
分周回路26は、発振回路25から入力された信号をCPU21や計時回路27が利用する各種周波数の信号に分周して出力する。
計時回路27は、分周回路26から入力された所定の周波数信号の回数を計数し、初期時刻に加算してゆくことで現在時刻を計数するカウンタ回路である。計時回路27により計数される現在時刻は、CPU21により読み出されて時刻表示に用いられる。この時刻の計数は、ソフトウェア的に制御されてもよい。また、振動子7、発振回路25、分周回路26、及び計時回路27により時刻を計数する計時部が構成されてもよい。
図2は、オールクリア後のGPS処理を示すフローチャートである。
ユーザが電子時計1をオールクリア(AC)したならば、この電子時計1のCPU21は、GPSフラッシュ未使用領域決定処理(図5・図6参照)を実行する(ステップS10)。オールクリアは、電池34が切れた場合や、プログラムが暴走した場合に行われる。
CPU21は、この未使用領域決定処理が成功したか否かを判定する(ステップS11)。処理に成功したと判定したならば(Yes)、CPU21は、ステップS14の処理に進む。処理に失敗したと判定したならば(No)、CPU21は、ステップS12の処理に進む。
ステップS12において、CPU21は、現在のモードが通常モードであるか否かを判定する(ステップS12)。ここで通常モードとは、電子時計1が時刻を計時するモードのことをいう。CPU21は、現在のモードが通常モードではないと判定したならば(No)、この判定処理を繰り返す。CPU21は、現在のモードが通常モードであると判定したならば(Yes)、ステップS13の処理に進む。
ステップS13において、CPU21は、ホームタイム(HT)の秒が55秒であるか否かを判定する。CPU21は、ホームタイムの秒が55秒ではなかったならば(No)、ステップS12の処理に戻り、ホームタイムの秒が55秒であったならば(Yes)、ステップS10の処理に戻る。
つまりCPU21は、現在のモードが通常モードではないか、またはホームタイムの秒が55秒でなかったならば(No)、ステップS12の処理に戻り、ステップS12,S13の判定を繰り返す。CPU21は、現在のモードが通常モードであり、かつホームタイムの秒が55秒であったならば(Yes)、ステップS10の処理に戻り、未使用領域決定処理を再び実行する。
本実施形態では、ステップS12,S13の判定処理により、未使用領域決定処理が再び実行されるタイミングは、秒針が55秒を示していたときに限定される。つまり、未使用領域決定処理のタイミングと秒針の運針タイミングとをずらし、秒針の運針が止まっていると考えられる場合を狙って、未使用領域の消去を行っている。これにより、電子時計1は、ユーザに正確な時刻を表示できる。
ステップS14において、CPU21は、現在のモードが通常モードであるか否かを判定する。CPU21は、現在のモードが通常モードではないと判定したならば(No)、ステップS17の処理に進む。CPU21は、現在のモードが通常モードであると判定したならば(Yes)、ステップS15の処理に進む。
ステップ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の処理に戻る。
つまりCPU21は、ホームタイム(HT)の時刻が午前2時~5時ではないか、または分秒が30分50秒ではないならば、ステップS14の処理に戻る。CPU21は、ホームタイム(HT)の時刻が午前2時~5時であり、かつ分秒が30分50秒であったならば、GPSフラッシュの未使用領域消去処理を実行する(ステップS19)。
またCPU21は、ステップS17において、現在のモードがストップウオッチモードであるか否かを判定する。CPU21は、現在のモードがストップウオッチモードではないと判定したならば(No)、ステップS14の処理に戻る。
更にCPU21は、現在のモードがストップウオッチモードであると判定したならば(Yes)、秒針停止から1分経過したか否かを判定する(ステップS18)。CPU21は、この判定条件が成立したならば、ステップS19に進み、GPSフラッシュの未使用領域消去処理(図7参照)を実行する。ステップS18を判定する理由は、秒針停止中の処理なら消去中の運針停止が目立たないためと、1分経過していれば、ユーザの操作がないものと想定されるためである。
その後、ステップS20において、CPU21は、記憶領域の消去が成功したか否かを判定する。CPU21は、記憶領域の消去が成功したならば(Yes)、図2の処理を終了し、記憶領域の消去が失敗したならば(No)、ステップS14の処理に戻る。
電子時計1では、消去と書き換えとを連続して行うことは消費電流の関係から極めて困難である。消去中は、時計LSI(マイクロコンピュータ2)とGPSマイコン(CPU52)の通信中に運針タイミングが来てしまう可能性があるため、消去が完了まで運針を停止しており、ユーザに時刻を表示できなかった。
図2のGPS処理により、電子時計1は、深夜の時間帯や、秒針が止まって一定時間が経過した場合等の、秒針の運針が止まっていると考えられる場合を狙って未使用領域の消去を行う。そのため、電子時計1は、運針タイミングを避けて未使用領域を消去し、ユーザに正確な時刻を表示できる。
図3は、秒針の運針とGPSフラッシュ未使用領域決定処理とを示すタイミングチャートである。
図3の上側は、秒針の運針タイミングを示しており、秒の値が12の倍数のときに運針する。GPSフラッシュの未使用領域決定処理の開始タイミングは、55秒であり、平均の処理時間は3秒である。よって、未使用領域決定処理の実行と秒針の運針とが重複することはない。
《第1の実施形態》
図4は、第1の実施形態における記憶領域0,1の構成を示す図である。
記憶領域0には、参照データテーブルと地図データとが記憶されている。
参照データテーブルは、アドレス空間0x100000~0x10FFFFのうち上位のアドレス空間0x100000~(0x100002+X1)に記憶されている。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX1 Bytesの本体とで構成される。ここで、バージョン情報は、0x01,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により参照データテーブルのバージョンを特定する。
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x100003+X1)~0x10FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
地図データは、アドレス空間0x110000~0x1FFFFBのうち上位のアドレス空間0x110000~(0x110002+Y1)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY1 Bytesの本体とで構成される。ここで、バージョン情報は、0x03,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により地図データのバージョンを特定する。
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x110003+Y1)~0x1FFFFBに記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x100000~0x1FFFFBである。
記憶領域0のアドレス空間0x1FFFFC~0x1FFFFDには、参照データテーブルのバージョン情報が記憶される。記憶領域0のアドレス空間0x1FFFFE~0x1FFFFFには、地図データのバージョン情報が記憶される。これらアドレス空間0x1FFFFC~0x1FFFFFは、記憶領域0のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
記憶領域1には、記憶領域0と同様に参照データテーブルと地図データとが記憶されており、フッタに参照データテーブルのバージョン情報と地図データのバージョン情報とがコピーされている。
参照データテーブルは、アドレス空間0x200000~0x20FFFFのうち上位のアドレス空間0x200000~(0x200002+X2)に記憶されている。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX2 Bytesの本体とで構成される。ここで、バージョン情報は、0x02,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により参照データテーブルのバージョンを特定する。
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x200003+X1)~0x20FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
地図データは、アドレス空間0x210000~0x2FFFFBのうち上位のアドレス空間0x210000~(0x210002+Y2)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY2 Bytesの本体とで構成される。ここで、バージョン情報は、0x04,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により地図データのバージョンを特定する。
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x210003+Y2)~0x2FFFFBに記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x200000~0x2FFFFBである。
記憶領域0のアドレス空間0x2FFFFC~0x2FFFFDには、参照データテーブルのバージョン情報が記憶される。記憶領域0のアドレス空間0x2FFFFE~0x2FFFFFには、地図データのバージョン情報が記憶される。これらアドレス空間0x2FFFFC~0x2FFFFFは、記憶領域0のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
第1の実施形態の電子時計1は、記憶領域0,1のうち最初に書き換えるヘッダ部分と最後に書き換えるフッタ部分に共通したバージョン情報を持っている。これらヘッダ部分とフッタ部分とは、256Bytes以上離れており書き込みブロックが異なるため、書き込みのタイミングが異なる。
書き換え途中で失敗してマイクロコンピュータ2にリセットが掛かった場合、ヘッダ部分とフッタ部分のバージョン情報が異なるため、書き換えの失敗を判断できる。消去途中で失敗してマイクロコンピュータ2にリセットが掛かった場合も同様にヘッダ部分とフッタ部分のバージョン情報が異なるため、消去の失敗を判断できる。
図5と図6は、記憶領域の使用と未使用の決定処理を示すフローチャートである。
CPU21は、記憶領域0の参照データテーブルのバージョン情報を読み出し(ステップS30)、バージョン情報が0xFF,0xFFであるか否かを判定する(ステップS31)。CPU21は、バージョン情報が0xFF,0xFFでないならば(No)、ステップS32の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS36の処理に進む。
ステップS32において、CPU21は、記憶領域0の地図データのバージョン情報を読み出し、読み出したバージョン情報が0xFF,0xFFであるか否かを判定する(ステップS33)。CPU21は、バージョン情報が0xFF,0xFFでないならば(No)、ステップS34の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS36の処理に進む。ここで、ステップS36の処理に進む理由は、記憶領域0は書き換えに失敗していると判断できるためである。記憶領域1が有効であるか否かを判定しないことにより、消費電力を抑えることができる。
つまりCPU21は、参照データテーブルのバージョン情報または地図データのバージョン情報のうちいずれかが0xFF,0xFFならば(Yes)、記憶領域0が未使用であると判定してステップS36の処理に進む。またCPU21は、両バージョン情報がいずれも0xFF,0xFFではなかったならば(No)、ステップS34の処理に進む。
ステップS34において、CPU21は、記憶領域0のフッタ部分に記憶されていた両バージョン情報を読み出す。CPU21は、読み出した両バージョン情報と、参照データテーブルおよび地図データのヘッダ部分に記憶されていた両バージョン情報とを比較する(ステップS35)。CPU21は、両バージョン情報が一致しなかったならば(No)、ステップS36の処理に進む。またCPU21は、両バージョン情報が一致したならば(Yes)、図6のステップS40の処理に進む。
なお、記憶領域0のどこかで書き換えが失敗した場合、ヘッダのバージョン情報と、フッタのバージョン情報とが一致しなくなる。そのため、ヘッダのバージョン情報と、フッタのバージョン情報を比較することにより、書き換えが失敗したか否かを判断できる。
ステップS36において、CPU21は、記憶領域1のフッタのバージョン情報を読み出して、使用すべき地図データのバージョンを確定すると共に、記憶領域1の地図データを使用することを確定する(ステップS37)。これによりCPU21は、記憶領域1に地図データが正しく書き込まれていることを判定する。
例えばRAM22上の使用先を示す変数に記憶領域1の識別子を代入し、RAM22上のバージョン変数に、使用すべき地図データのバージョンを代入するとよい。これによりCPU52は、使用先を示す変数の識別子に基づき、記憶領域0,1のいずれかに書き込まれた地図データを読み出す。
更にCPU21は、記憶領域0の消去フラグをセットし(ステップS38)、GPS電源をオフすると(ステップS39)、この処理から図2の処理に戻る。消去フラグは、例えばRAM22に配置される。これにより、CPU21は、正しく書き込まれていない記憶領域を消去する。
図6のステップS40において、CPU21は、記憶領域1の参照データテーブルのバージョン情報を読み出し、バージョン情報が0xFF,0xFFであるか否かを判定する(ステップS41)。CPU21は、バージョン情報が0xFF,0xFFでないならば(No)、ステップS42の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS47の処理に進む。
ステップS42において、CPU21は、記憶領域1の地図データのバージョン情報を読み出し、読み出したバージョン情報が0xFF,0xFFであるか否かを判定する(ステップS43)。CPU21は、バージョン情報が0xFF,0xFFでないならば、ステップS44の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS47の処理に進む。
つまりCPU21は、参照データテーブルのバージョン情報または地図データのバージョン情報のうちいずれかが0xFF,0xFFならば(Yes)、記憶領域1が未使用であると判定してステップS47の処理に進む。またCPU21は、両バージョン情報がいずれも0xFF,0xFFではなかったならば(No)、ステップS44の処理に進む。
ステップS44において、CPU21は、記憶領域1のフッタ部分に記憶されていた両バージョン情報を読み出す。CPU21は、読み出した両バージョン情報と、参照データテーブルおよび地図データのヘッダ部分に記憶されていた両バージョン情報とを比較する(ステップS45)。CPU21は、両バージョン情報が一致しなかったならば(No)、ステップS47の処理に進む。またCPU21は、両バージョン情報が一致したならば(Yes)、ステップS46の処理に進む。このとき、記憶領域0と記憶領域1の両方に正しくデータが記憶されている。そのため、2つの記憶領域のバージョンを比較して、新しいバージョンが記憶されている方を使用する。
ステップS46において、CPU21は、記憶領域0のバージョン情報と記憶領域1のバージョン情報とを比較して、記憶領域1のバージョン情報が最新であるか否かを判定する。CPU21は、記憶領域1のバージョン情報が最新ならば(Yes)、図5のステップS36の処理に進み、記憶領域1のバージョン情報が最新でないならば(No)、ステップS47の処理に進む。
ステップS47において、CPU21は、使用すべき地図データのバージョンを確定すると共に、記憶領域0の地図データを使用することを確定する。これによりCPU21は、記憶領域0に地図データが正しく書き込まれていることを判定する。
CPU21は、例えばRAM22上の使用先を示す変数に記憶領域0の識別子を代入し、RAM22上のバージョン変数に、使用すべき地図データのバージョンを代入するとよい。
更にCPU21は、記憶領域1の消去フラグをセットし(ステップS48)、GPS電源をオフすると(ステップS49)、この処理から図2の処理に戻る。
図7は、未使用領域の消去処理を示すフローチャートである。
GPSフラッシュの未使用領域消去処理は、図2のステップS19で呼び出される。
CPU21は、記憶領域0の消去フラグがセットされていれば(ステップS50→Yes)、記憶領域0を消去して(ステップS51)、この消去フラグをクリアする(ステップS52)。CPU21は、記憶領域0の消去フラグがセットされていなければ(ステップS50→No)、ステップS53の処理に進む。
CPU21は、記憶領域1の消去フラグがセットされていれば(ステップS53→Yes)、記憶領域1を消去して(ステップS54)、この消去フラグをクリアする(ステップS55)。これによりCPU21は、図7の処理を終了する。
CPU21は、記憶領域1の消去フラグがセットされていなければ(ステップS53→No)、図7の処理を終了する。
CPU21がGPSフラッシュの未使用領域消去処理を実行することで、記憶領域0,1のうちいずれかが消去され、新たなデータやファームウェアで書き換え可能な状態となる。
図8は、消去済みの領域の書き換え処理を示すフローチャートである。
この書き換え処理は、例えばユーザによる書き換え指示の操作によって実行される。
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書込手段として機能する。
CPU21は、記憶領域1が使用されていないか(ステップS60→No)、または記憶領域0の消去フラグがクリアされていなかったならば(ステップS61→No)、ステップS64の処理に進む。
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書込手段として機能する。
CPU21は、記憶領域0が使用されていないか(ステップS64→No)、または記憶領域1の消去フラグがクリアされていなかったならば(ステップS65→No)、図8の処理を終了する。
第1の実施形態の電子時計1のCPU21は、最初に書き換えるヘッダ部分と最後に書き換えるフッタ部分に共通したバージョン情報を書き込んでいる。書き換え途中に電圧降下などが発生してマイクロコンピュータ2がリセットされ、この書き換えが失敗した場合、ヘッダ部分のバージョン情報は、フッタ部分のバージョン情報と相違する。そのため、CPU21は、書き換えに失敗したことを判断可能である。
《変形例1》
本実施形態では図4に示したように、記憶領域0には、アドレス空間0x100000~0x100001とアドレス空間0x110000~0x110001に、それぞれバージョン情報を記憶している。更に両バージョン情報をアドレス空間0x1FFFFC~0x1FFFFDとアドレス空間0x1FFFFE~0x1FFFFFとにコピーしてある。
しかし、アドレス空間0x100000~0x100001に記憶されたバージョン情報のみを、対応するアドレス空間0x1FFFFE~0x1FFFFFにコピーしてもよい。このように、2面の記憶領域が複数のデータで構成される場合、代表データのバージョン情報をフッタにコピーしてもよい。
なお、記憶領域1も同様である。
《変形例2》
記憶領域0のアドレス空間0x100000~0x100001に参照データテーブルのバージョン情報が記憶されているとき、参照データテーブルの領域のフッタに相当するアドレス空間0x10FFFE~0x10FFFFにこのバージョン情報をコピーしてもよい。
同様に記憶領域0のアドレス空間0x110000~0x110001に地図データのバージョン情報が記憶されているとき、地図データの領域のフッタに相当するアドレス空間0x1FFFFE~0x1FFFFFにこのバージョン情報をコピーしてもよい。
このように、各データを記憶する各領域のフッタに、バージョン情報をコピーしてもよい。
なお、記憶領域1も同様である。
《第1の実施形態の効果》
記憶領域のフッタにバージョン情報のコピーを記憶し、ヘッダ部分とフッタ部分のバージョン情報を比較することにより、書き換えが成功したか否かを判断できる。
《第2の実施形態》
第1の実施形態の電子時計1は、各記憶領域のヘッダ部分にデータのバージョン情報と本体を書き込んだのち、各記憶領域のフッタ部分にバージョン情報をコピーしている。
これに対して第2の実施形態の電子時計1は、各記憶領域のフッタ部分に、データの容量情報を保存している。これにより、データが書き込まれている範囲をCPU21が判断でき、データが書き込まれている範囲のみを消去することで消去時間を短縮し消費電力を低減させることが可能である。これにより、時計に搭載されるボタン電池の寿命を延ばすことができる。
図9は、第2の実施形態における記憶領域0,1の構成を示す図である。
記憶領域0には、参照データテーブルと地図データとが記憶されている。
参照データテーブルは、アドレス空間0x100000~0x10FFFFのうち上位のアドレス空間0x100000~(0x100002+X1)に記憶される。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX1 Bytesの本体とで構成される。ここで、バージョン情報には、0x01,0x00の値が付与されている。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x100003+X1)~0x10FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
地図データは、アドレス空間0x110000~0x1FFFFBのうち上位のアドレス空間0x110000~(0x110002+Y1)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY1 Bytesの本体とで構成される。ここで、バージョン情報には、0x03,0x00の値が付与されている。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x110003+Y1)~0x1FFFFBに記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x100000~0x1FFFFBである。
記憶領域0のフッタであるアドレス空間0x1FFFFC~0x1FFFFFには、地図データの容量情報である(0x010002+Y1)が記憶される。アドレス空間0x1FFFFC~0x1FFFFFは、記憶領域0のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
記憶領域1には、記憶領域0と同様に参照データテーブルと地図データとが記憶されており、フッタに地図データの容量情報が記憶される。
参照データテーブルは、アドレス空間0x200000~0x20FFFFのうち上位のアドレス空間0x200000~(0x200002+X2)に記憶されている。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX2 Bytesの本体とで構成される。ここで、バージョン情報は、0x02,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により参照データテーブルのバージョンを特定する。
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x200003+X1)~0x20FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
地図データは、アドレス空間0x210000~0x2FFFFBのうち上位のアドレス空間0x210000~(0x210002+Y2)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY2 Bytesの本体とで構成される。ここで、バージョン情報は、0x04,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により地図データのバージョンを特定する。
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x210003+Y2)~0x2FFFFBに記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x200000~0x2FFFFBである。
記憶領域1のフッタであるアドレス空間0x2FFFFC~0x2FFFFFには、地図データの容量情報である(0x010002+Y2)が記憶される。アドレス空間0x1FFFFC~0x1FFFFFは、記憶領域1のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
記憶領域0,1においてフッタが最後に書き込まれるため、書き換え途中で失敗してマイクロコンピュータ2にリセットが掛かった場合、フッタ部分の容量情報が0xFF,0xFF,0xFF,0xFFとなるため、書き換えの失敗を判断できる。消去途中で失敗してマイクロコンピュータ2にリセットが掛かった場合、ヘッダ部分のパージョン情報が0xFF,0xFFになるため、消去の失敗を判断できる。
図10と図11は、記憶領域の利用と未使用の決定処理を示すフローチャートである。
CPU21は、記憶領域0の参照データテーブルのバージョン情報を読み出し(ステップS70)、バージョン情報が0xFF,0xFFであるか否かを判定する(ステップS71)。CPU21は、バージョン情報が0xFF,0xFFでないならば(No)、ステップS72の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS76の処理に進む。
ステップS72において、CPU21は、記憶領域0の地図データのバージョン情報を読み出し、読み出したバージョン情報が0xFF,0xFFであるか否かを判定する(ステップS73)。CPU21は、バージョン情報が0xFF,0xFFでないならば、ステップS74の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS76の処理に進む。ここで、ステップS76の処理に進む理由は、記憶領域0は書き換えに失敗していると判断できるためである。記憶領域1が有効であるか否かを判定しないことにより、消費電力を抑えることができる。
つまりCPU21は、参照データテーブルのバージョン情報または地図データのバージョン情報のうちいずれかが0xFF,0xFFならば(Yes)、記憶領域0が未使用であると判定してステップS76の処理に進む。またCPU21は、両バージョン情報がいずれも0xFF,0xFFではなかったならば(No)、ステップS74の処理に進む。
ステップS76において、CPU21は、記憶領域0のフッタの地図容量情報を読み出し、ステップS77の処理に進む。
ステップS74において、CPU21は、記憶領域0のフッタ部分に記憶されていた地図容量情報を読み出し、0xFF,0xFF,0xFF,0xFFと比較する(ステップS75)。CPU21は、地図容量情報が0xFF,0xFF,0xFF,0xFFと一致しなかったならば(No)、ステップS77の処理に進む。またCPU21は、地図容量情報が0xFF,0xFF,0xFF,0xFFと一致したならば(Yes)、図11のステップS82の処理に進む。
なお、記憶領域0のどこかで書き換えが失敗した場合、地図容量情報は書き込まれなくなり、消去直後の状態0xFF,0xFF,0xFF,0xFFとなる。そのため、地図容量情報と0xFF,0xFF,0xFF,0xFFとを比較することにより、書き換えが失敗したか否かを判断できる。
ステップS77において、CPU21は、記憶領域1の参照データテーブルおよび地図データのバージョン情報を読み出す。CPU21は、記憶領域1のフッタの地図容量情報を読み出す(ステップS78)。CPU21は、記憶領域1の地図データを使用することを確定すると共に、使用すべき地図データのバージョンを確定する(ステップS79)。これによりCPU21は、記憶領域1に地図データが正しく書き込まれていることを判定する。
CPU21は、例えばRAM22上の使用先を示す変数に記憶領域1の識別子を代入し、RAM22上のバージョン変数に、使用すべき地図データのバージョンを代入するとよい。
更にCPU21は、記憶領域0の消去フラグをセットし(ステップS80)、GPS電源をオフすると(ステップS81)、図2の処理に戻る。消去フラグは、例えばRAM22に配置される。
図11のステップS82において、CPU21は、記憶領域1の参照データテーブルのバージョン情報を読み出し、バージョン情報が0xFF,0xFFであるか否かを判定する(ステップS83)。CPU21は、バージョン情報が0xFF,0xFFでないならば(No)、ステップS84の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS89の処理に進む。
ステップS84において、CPU21は、記憶領域1の地図データのバージョン情報を読み出し、読み出したバージョン情報が0xFF,0xFFであるか否かを判定する(ステップS85)。CPU21は、バージョン情報が0xFF,0xFFでないならば、ステップS86の処理に進み、バージョン情報が0xFF,0xFFならば(Yes)、ステップS89の処理に進む。
つまりCPU21は、参照データテーブルのバージョン情報または地図データのバージョン情報のうちいずれかが0xFF,0xFFならば(Yes)、記憶領域1が未使用であると判定してステップS89の処理に進む。またCPU21は、両バージョン情報がいずれも0xFF,0xFFではなかったならば(No)、ステップS86の処理に進む。
ステップS89において、CPU21は、記憶領域1のフッタ部分に記憶されていた地図容量情報を読み出し、ステップS90の処理に進む。
ステップ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つの記憶領域のバージョンを比較して、新しいバージョンが記憶されている方を使用する。
ステップS88において、CPU21は、記憶領域0のバージョン情報と記憶領域1のバージョン情報とを比較し、記憶領域1のバージョン情報が最新であるか否かを判定する。CPU21は、記憶領域1のバージョン情報が最新ならば(Yes)、図10のステップS77の処理に進み、記憶領域1のバージョン情報が最新でないならば(No)、ステップS90の処理に進む。
ステップS90において、CPU21は、記憶領域0の地図データを使用することを確定し、かつ使用すべき地図データのバージョンを確定する。これによりCPU21は、記憶領域0に地図データが正しく書き込まれていることを判定する。
CPU21は、例えばRAM22上の使用先を示す変数に記憶領域0の識別子を代入し、RAM22上のバージョン変数に、使用すべき地図データのバージョンを代入するとよい。
更にCPU21は、記憶領域1の消去フラグをセットし(ステップS91)、GPS電源をオフすると(ステップS92)、この処理から図2の処理に戻る。
図12は、未使用領域の消去処理を示すフローチャートである。
GPSフラッシュの未使用領域消去処理は、図2のステップS19で呼び出される。
CPU21は、記憶領域0の消去フラグがセットされていれば(ステップS100→Yes)、記憶領域0のフッタに記憶された地図容量を読み取り(ステップS101)、消去すべきブロックサイズを算出する。ここで消去すべきブロックサイズは、参照データテーブルのブロックサイズと、地図容量を1ブロックの容量で除算した値との和である。CPU21は、記憶領域0の先頭から所定ブロックを消去し(ステップS102)、記憶領域0のフッタのブロックを消去し(ステップS103)、この消去フラグをクリアする(ステップS104)。CPU21は、記憶領域0の消去フラグがセットされていなければ(ステップS100→No)、ステップS105の処理に進む。
CPU21は、記憶領域1の消去フラグがセットされていれば(ステップS105→Yes)、記憶領域1のフッタに記憶された地図容量を読み取り(ステップS106)、消去すべきブロックサイズを算出する。ここで消去すべきブロックサイズは、参照データテーブルのブロックサイズと、地図容量を1ブロックの容量(4Kbytes)で除算した値との和である。CPU21は、記憶領域1の先頭から所定ブロックを消去し(ステップS107)、記憶領域1のフッタのブロックを消去し(ステップS108)、この消去フラグをクリアする(ステップS109)。これによりCPU21は、図12の処理を終了する。
CPU21は、記憶領域1の消去フラグがセットされていなければ(ステップS105→No)、図12の処理を終了する。
CPU21がGPSフラッシュの未使用領域消去処理を実行することで、記憶領域0,1のうちいずれかが消去され、新たなデータやファームウェアで書き換え可能な状態となる。
図13は、消去済みの領域の書き換え処理を示すフローチャートである。
この書き換え処理は、例えばユーザによる書き換え指示の操作によって実行される。
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書込手段として機能する。
CPU21は、記憶領域1が使用されていないか(ステップS120→No)、または記憶領域0の消去フラグがクリアされていなかったならば(ステップS121→No)、ステップS124の処理に進む。
ステップ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書込手段として機能する。
CPU21は、記憶領域0が使用されていないか(ステップS124→No)、または記憶領域1の消去フラグがクリアされていなかったならば(ステップS125→No)、図13の処理を終了する。
《第2の実施形態の効果》
記憶領域のフッタに0xFF,0xFF,…以外のデータを記憶し、フッタ部分に0xFF,0xFF,…以外のデータが記憶されているか確認することにより、書き換えが成功したか否かを判断できる。
《第3の実施形態》
第3の実施形態の電子時計1は、各記憶領域のフッタ部分に電源電圧情報を保存している。
CPU21がフラッシュメモリの書き換えに失敗する主たる理由は、電池34の容量低下に伴い、電源電圧が降下して、CPU21が動作できなくなることである。よって、フラッシュメモリを書き換える際の電源電圧情報を記憶しておくことで、フラッシュメモリの書き換え失敗の要因を解析することができる。
図14は、第3の実施形態における記憶領域0,1の構成を示す図である。
記憶領域0には、参照データテーブルと地図データとが記憶されている。
参照データテーブルは、アドレス空間0x100000~0x10FFFFのうち上位のアドレス空間0x100000~(0x100002+X1)に記憶されている。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX1 Bytesの本体とで構成される。ここで、バージョン情報には、0x01,0x00の値が付与されている。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x100003+X1)~0x10FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
地図データは、アドレス空間0x110000~0x1FFFF9のうち上位のアドレス空間0x110000~(0x110002+Y1)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY1 Bytesの本体とで構成される。ここで、バージョン情報には、0x03,0x00の値が付与されている。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x110003+Y1)~0x1FFFF9に記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x100000~0x1FFFF9である。
記憶領域0のアドレス空間0x1FFFFA~0x1FFFFBには、書込前の電源電圧情報が記憶される。アドレス空間0x1FFFFC~0x1FFFFDには、参照データテーブルのバージョン情報が記憶される。記憶領域0のアドレス空間0x1FFFFE~0x1FFFFFには、地図データのバージョン情報が記憶される。これらアドレス空間0x1FFFFA~0x1FFFFFは、記憶領域0のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
記憶領域1には、記憶領域0と同様に参照データテーブルと地図データとが記憶されている。
参照データテーブルは、アドレス空間0x200000~0x20FFFFのうち上位のアドレス空間0x200000~(0x200002+X2)に記憶されている。参照データテーブルは、ヘッダ部分の2バイトのバージョン情報と、それ以降のX2 Bytesの本体とで構成される。ここで、バージョン情報は、0x02,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により参照データテーブルのバージョンを特定する。
参照データテーブルの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x200003+X1)~0x20FFFFに記憶されている。リザーブ領域は全て0xFFである。このリザーブ領域により、バージョン間のサイズの相違を吸収可能である。
地図データは、アドレス空間0x210000~0x2FFFF9のうち上位のアドレス空間0x210000~(0x210002+Y2)に記憶されている。地図データは、ヘッダ部分の2バイトのバージョン情報と、それ以降のY2 Bytesの本体とで構成される。ここで、バージョン情報は、0x04,0x00である。バージョン情報は、消去済みであるか否かを判定するため、0xFF,0xFF以外の値が付与されている。CPU21は、このバージョン情報の値により地図データのバージョンを特定する。
地図データの本体以降は、リザーブ領域(Reserved)であり、アドレス空間 (0x210003+Y2)~0x2FFFF9に記憶されている。リザーブ領域は全て0xFFである。リザーブ領域により、バージョン間のサイズの相違を吸収可能である。
つまり参照データテーブルと地図データとが記憶される特定アドレス空間は、アドレス空間0x200000~0x2FFFF9である。
記憶領域1のアドレス空間0x2FFFFA~0x2FFFFBには、書込前の電源電圧情報が記憶される。アドレス空間0x2FFFFC~0x2FFFFDには、参照データテーブルのバージョン情報が記憶される。記憶領域1のアドレス空間0x2FFFFE~0x2FFFFFには、地図データのバージョン情報が記憶される。これらアドレス空間0x2FFFFA~0x2FFFFFは、記憶領域1のフッタであり、参照データテーブルや地図データを記憶する特定アドレス空間とは異なるアドレス空間である。
図15は、消去済みの領域の書き換え処理を示すフローチャートである。
この書き換え処理は、例えばユーザによる書き換え指示の操作によって実行される。
CPU21は、記憶領域1を使用しているか否かを判定し(ステップS130)、更に記憶領域0の消去フラグがクリアされているか否かを判定する(ステップS131)。
CPU21は、記憶領域1が使用されており(ステップS130→Yes)、かつ記憶領域0の消去フラグがクリアされていたならば(ステップS131→Yes)、記憶領域0のフッタに電圧センサ211で検知した電源電圧情報を書き込む(ステップS132)。CPU21は更に、記憶領域0に参照データテーブルと地図データを書き込み(ステップS133)、フッタにバージョン情報を追記し(ステップS134)、ステップS135の処理に進む。
CPU21は、記憶領域1が使用されていないか(ステップS130→No)、または記憶領域0の消去フラグがクリアされていなかったならば(ステップS131→No)、ステップS135の処理に進む。
ステップS135において、CPU21は、記憶領域0を使用しているか否かを判定し、更に記憶領域1の消去フラグがクリアされているか否かを判定する(ステップS136)。
CPU21は、記憶領域0が使用されており(ステップS135→Yes)、かつ記憶領域1の消去フラグがクリアされていたならば(ステップS136→Yes)、記憶領域1のフッタに電圧センサ211で検知した電源電圧情報を書き込む(ステップS137)。CPU21は更に、記憶領域1に参照データテーブルと地図データを書き込み(ステップS138)、フッタにバージョン情報を追記し(ステップS139)、図15の処理を終了する。
CPU21は、記憶領域0が使用されていないか(ステップS135→No)、または記憶領域1の消去フラグがクリアされていなかったならば(ステップS136→No)、図15の処理を終了する。
(変形例)
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の(a)~(h)のようなものがある。
(a) 記憶領域に書き込まれる情報は、参照データテーブルや地図データに限定されず、GPS部5のCPU52が読み込んで参照するためのデータや、GPS部5のCPU52が読み込んで実行するためのファームウェア(プログラム)であってもよい。
(b) 記憶領域のフッタに記憶される情報は、バージョン情報のコピーに限定されない。例えばデータ本体のチェックサム値やCRC(Cyclic Redundancy Check)値など、データ本体を識別可能な他の情報が記憶されてもよい。
(c) バージョン情報は、必ずしも記憶領域の先頭に記憶されていなくてもよく、最初の書き込み動作で書き込まれるメモリ空間に記憶されていればよい。例えば、記憶領域のうち所定のオフセット(0x000080など)で示されるアドレス空間に記憶されていてもよい。
(d) 記憶領域にデータやソフトウェアプログラムを書き込んだのち、記憶領域のフッタに書き込み日時や、データやソフトウェアプログラムの入手先などのアップデートに係る情報を書き込んでもよい。これにより、不具合が発生した場合に、アップデートに係る情報を特定可能である。
(e) 記憶領域のフッタのサイズは、フラッシュメモリの消去単位以下であればよく、限定されない。
(f) フラッシュメモリに書き込まれる情報は、CPU52が参照するデータやCPU52が実行するファームウェア(プログラム)に限定されない。CPU21が参照するデータやCPU21が実行するファームウェア(プログラム)であってもよい。
(g) 記憶領域の使用と未使用の決定処理を実行する主体は、CPU21に限られず、CPU52が実行してもよい。
(h) CPU21が読み込んで実行するためのプログラムまたはCPU21が読み込んで参照するためのデータを、CPU21自身がフラッシュメモリに書き込んでもよい。
以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記に記載した請求項の項番は、この出願の願書に最初に添付した特許請求の範囲の通りである。
〔付記〕
《請求項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書込手段、
前記記憶領域の前記異なるアドレス空間に記憶された前記容量情報に基づき、当該記憶領域を消去する消去手段、
としてコンピュータを機能させるためのデータ管理プログラム。
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 振動子

Claims (7)

  1. 所定の時間間隔おきに所定の角度だけ回動する指針と、
    被書き込み対象が書き込まれる2つの記憶領域を有する記憶部と、
    制御部と、
    を備え、
    前記制御部は、
    前記指針が回動する前記所定の時間間隔おきに発生するタイミングと重ならない所定のタイミングである場合に前記2つの記憶領域のうち前記被書き込み対象が正常に書き込まれなかった記憶領域を被フォーマット領域、又は、次回に前記被書き込み対象が書き込まれる領域である書き込み領域と判定し、前記2つの記憶領域に前記被書き込み対象がどちらも正常に書き込まれている場合は前記2つの記憶領域のうち前記被書き込み対象が書き込まれたタイミングが早い記憶領域を前記被フォーマット領域、又は、前記書き込み領域と判定する被フォーマット領域決定処理を行う、
    ことを特徴とする電子時計。
  2. 現在時刻を計時する計時部をさらに備え、
    前記制御部は、
    前記計時部が計時する前記現在時刻が所定の時刻である場合に、前記被フォーマット領域決定処理で前記被フォーマット領域と判定された記憶領域のフォーマットを開始する、
    ことを特徴とする請求項1に記載の電子時計。
  3. 経過時間を計時する計時部をさらに備え、
    前記制御部は、
    前記指針を回動させて前記計時部が計時する前記経過時間を表示するストップウォッチモードを実行している場合であって、前記指針が所定の時間以上回動していない場合に、前記被フォーマット領域決定処理において前記被フォーマット領域と判定された記憶領域のフォーマットを開始する、
    ことを特徴とする請求項1に記載の電子時計。
  4. 前記被書き込み対象とは、地図データである、
    ことを特徴とする請求項1に記載の電子時計。
  5. 前記制御部は、
    前記被フォーマット領域決定処理において前記被フォーマット領域と判定された記憶領域をフォーマットし次回に前記被書き込み対象が書き込まれる領域として設定する、
    ことを特徴とする請求項1に記載の電子時計。
  6. 所定の時間間隔おきに所定の角度だけ回動する指針と、
    被書き込み対象が書き込まれる2つの記憶領域を有する記憶部と、
    を備える電子時計が実行する領域判定方法であって、
    前記指針が回動する前記所定の時間間隔おきに発生するタイミングと重ならない所定のタイミングである場合に、前記2つの記憶領域のうち前記被書き込み対象が正常に書き込まれなかった記憶領域を被フォーマット領域、又は、次回に前記被書き込み対象が書き込まれる領域である書き込み領域と判定し、前記2つの記憶領域に前記被書き込み対象がどちらも正常に書き込まれている場合は前記2つの記憶領域のうち前記被書き込み対象が書き込まれたタイミングが早い記憶領域を前記被フォーマット領域、又は、前記書き込み領域と判定する被フォーマット領域決定処理を行う、制御処理
    を有することを特徴とする領域判定方法。
  7. 所定の時間間隔おきに所定の角度だけ回動する指針と、
    被書き込み対象が書き込まれる2つの記憶領域を有する記憶部と、
    を備える電子時計のコンピュータを、
    前記指針が回動する前記所定の時間間隔おきに発生するタイミングと重ならない所定のタイミングである場合に、前記2つの記憶領域のうち前記被書き込み対象が正常に書き込まれなかった記憶領域を被フォーマット領域、又は、次回に前記被書き込み対象が書き込まれる領域である書き込み領域と判定し、前記2つの記憶領域に前記被書き込み対象がどちらも正常に書き込まれている場合は前記2つの記憶領域のうち前記被書き込み対象が書き込まれたタイミングが早い記憶領域を前記被フォーマット領域、又は、前記書き込み領域と判定する被フォーマット領域決定処理を行う、制御手段
    として機能させることを特徴とするプログラム。
JP2022000782A 2017-09-04 2022-01-06 電子時計、領域判定方法、およびプログラム Active JP7279824B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022000782A JP7279824B2 (ja) 2017-09-04 2022-01-06 電子時計、領域判定方法、およびプログラム
JP2023077016A JP7501726B2 (ja) 2022-01-06 2023-05-09 電子時計、方法、およびプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017169142A JP7009843B2 (ja) 2017-09-04 2017-09-04 データ管理装置、電子時計、データ管理方法、およびデータ管理プログラム
JP2022000782A JP7279824B2 (ja) 2017-09-04 2022-01-06 電子時計、領域判定方法、およびプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017169142A Division JP7009843B2 (ja) 2017-09-04 2017-09-04 データ管理装置、電子時計、データ管理方法、およびデータ管理プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023077016A Division JP7501726B2 (ja) 2022-01-06 2023-05-09 電子時計、方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2022033318A JP2022033318A (ja) 2022-02-28
JP7279824B2 true JP7279824B2 (ja) 2023-05-23

Family

ID=87852602

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022000782A Active JP7279824B2 (ja) 2017-09-04 2022-01-06 電子時計、領域判定方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP7279824B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011164827A (ja) 2010-02-08 2011-08-25 Nippon Avionics Co Ltd フラッシュメモリを備えた電子機器およびフラッシュメモリに格納されたプログラムの更新方法
JP2015175808A (ja) 2014-03-18 2015-10-05 セイコーエプソン株式会社 電波時計及び受信制御方法
JP2016121877A (ja) 2014-12-24 2016-07-07 シチズンホールディングス株式会社 電子機器
JP2016200508A (ja) 2015-04-10 2016-12-01 セイコーエプソン株式会社 通信システム、電子時計および通信装置
US20170123640A1 (en) 2014-08-02 2017-05-04 Apple Inc. Context-specific user interfaces

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011164827A (ja) 2010-02-08 2011-08-25 Nippon Avionics Co Ltd フラッシュメモリを備えた電子機器およびフラッシュメモリに格納されたプログラムの更新方法
JP2015175808A (ja) 2014-03-18 2015-10-05 セイコーエプソン株式会社 電波時計及び受信制御方法
US20170123640A1 (en) 2014-08-02 2017-05-04 Apple Inc. Context-specific user interfaces
JP2016121877A (ja) 2014-12-24 2016-07-07 シチズンホールディングス株式会社 電子機器
JP2016200508A (ja) 2015-04-10 2016-12-01 セイコーエプソン株式会社 通信システム、電子時計および通信装置

Also Published As

Publication number Publication date
JP2022033318A (ja) 2022-02-28

Similar Documents

Publication Publication Date Title
JP2002333990A (ja) プログラム更新装置およびプログラム更新方法
JP2022003571A (ja) データ管理装置、電子時計、データ管理方法、およびデータ管理プログラム
JP7279824B2 (ja) 電子時計、領域判定方法、およびプログラム
JP7501726B2 (ja) 電子時計、方法、およびプログラム
US8321626B2 (en) Management of configuration data using persistent memories requiring block-wise erase before rewriting
JP6903968B2 (ja) 電子機器、電子時計、プログラム書込方法、およびプログラム
CN110133987B (zh) 计时测量装置、电子时钟、计时测量方法、存储有程序的存储介质
JP6658610B2 (ja) 情報通知方法、情報通知装置、及びプログラム
JP4680686B2 (ja) コンピュータ端末用記憶媒体
JP6048118B2 (ja) 発電機能付き携帯電子機器
CN108519735A (zh) 电子表、显示控制方法及记录介质
JP4032069B2 (ja) 電波修正機能付き時計
EP1160637A1 (en) Check for plausibility of time information provided by real time clock of a mobile terminal
CN109426138B (zh) 电子钟表、处理选择方法以及存储介质
CN111026441B (zh) 电子设备、信息处理方法以及存储有信息处理程序的存储介质
JP6702246B2 (ja) 衛星電波受信装置、電子時計、日時取得方法及びプログラム
JP6841106B2 (ja) 無線通信装置、電子時計、無線通信方法、及びプログラム
JP2004054421A (ja) メモリ、情報処理装置、記憶方法および情報処理方法
JP2019158632A (ja) 衛星電波受信装置、電子時計及び日時取得方法
JP6950469B2 (ja) 表示装置、電子時計、表示方法、及びプログラム
JP6958201B2 (ja) 無線通信装置、電子時計、無線通信方法、及びプログラム
US20200103832A1 (en) Timepiece, control method for change of time, and storage medium
JP2017054372A (ja) 制御方法およびそれを利用した通信装置
JP7127319B2 (ja) 電子端末、電子時計、セキュリティ設定方法及びプログラム
JP6866712B2 (ja) 電子時計、受信動作制御方法及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220126

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230406

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230411

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230424

R150 Certificate of patent or registration of utility model

Ref document number: 7279824

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150