JP6903968B2 - 電子機器、電子時計、プログラム書込方法、およびプログラム - Google Patents

電子機器、電子時計、プログラム書込方法、およびプログラム Download PDF

Info

Publication number
JP6903968B2
JP6903968B2 JP2017052157A JP2017052157A JP6903968B2 JP 6903968 B2 JP6903968 B2 JP 6903968B2 JP 2017052157 A JP2017052157 A JP 2017052157A JP 2017052157 A JP2017052157 A JP 2017052157A JP 6903968 B2 JP6903968 B2 JP 6903968B2
Authority
JP
Japan
Prior art keywords
storage area
code
program
invalid
valid
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
JP2017052157A
Other languages
English (en)
Other versions
JP2018156351A (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
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2017052157A priority Critical patent/JP6903968B2/ja
Publication of JP2018156351A publication Critical patent/JP2018156351A/ja
Application granted granted Critical
Publication of JP6903968B2 publication Critical patent/JP6903968B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electric Clocks (AREA)
  • Stored Programmes (AREA)

Description

本発明は、電子機器、電子時計、プログラム書込方法、およびプログラムに関する。
近年、電子機器の発売後に不具合を修正させるため、または機能や性能を向上させるために、ユーザが電子機器のプログラムをアップデート可能なものが各種実用化されている。このような電子機器は、例えばインターネットに接続可能であり、ネットワーク経由でプログラムをアップデート(更新)する場合がある。
特許文献1には、制御ソフトウェアを更新する方法が開示されている。特許文献1の要約書には、「無線端末装置は自装置の運用に係る現用の制御ソフトウェアのバージョン情報を網側に接続するソフトウェア供給装置に通知し、ソフトウェア供給装置は通知されたバージョン情報を自己が蓄積管理する最新のバージョン情報と比較して更新の必要性有無を判定すると共に、更新が必要な場合は通知されたバージョンの改訂用に適合する新しい制御ソフトウェアを無線端末装置にダウンロードする。」と記載されている。
特開2001−078258号公報
しかし、電子腕時計のように電池の容量が小さい装置が自身のプログラムを書き込もうとした場合、電池が充分に充電された状態でしか書き込みを実行することができない。つまり、このような装置では、プログラム更新のタイミングが制限される。また、電子腕時計で使用しているボタン電池は、電池容量が小さいので、プログラムの更新に失敗した場合、すぐに書き込みを再開できない。
そこで、近年の電子腕時計は、フラッシュメモリの2面の記憶領域にそれぞれプログラムを記憶し、一方の記憶領域への新たなプログラムの書き込みに失敗した場合は、他方の記憶領域の古いプログラムを起動している。これにより電子腕時計は、一方の記憶領域に対する書き込みに失敗した場合の対策を行っている。
しかし、書き込むべきプログラムのサイズが増大すると共に、プログラムを書き込むために必要とする電力が増える。このような場合、電子腕時計は、電池が充分に充電された状態でしかプログラムを更新できない。
そこで、本発明は、プログラム更新に必要とされる電池容量の制限を緩和させることを課題とする。
本発明は、上記目的を達成するため、
現在の電源電圧が第1の動作電圧の下限以上である場合に動作する第1のプロセッサと、
前記第1のプロセッサが読み込んで実行するためのプログラムおよび当該プログラムが有効/無効/無効かつ未消去のうちいずれであるかを示すコードを記憶する記憶領域を複数記憶するメモリと、
現在の電源電圧が第2の動作電圧の下限以上である場合に、前記コードが無効であることを示していた前記記憶領域に新たなプログラムを書き込むと共に、当該記憶領域に記憶されている前記コードに有効であることを示す情報を書き込み、前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域のコードに無効かつ未消去であることを示す情報を書き込む第2のプロセッサと、
を備え、
前記第2の動作電圧の下限は、前記第1の動作電圧の下限よりも低いことを特徴とする電子機器である。
本発明によれば、プログラム更新に必要とされる電池容量の制限を緩和させることが可能となる。
本実施形態における電子時計の概略を示す構成図である。 記憶領域0,1の構成を示す図である。 ブートストラップローダによる起動処理を示すフローチャートである。 プログラム書き込みにおけるモード遷移図である。 記憶領域1の消去を示すシーケンス図である。 データA1の構成を示す図である。 データA2の構成を示す図である。 記憶領域1のアップデートを示すシーケンス図である。 データA3の構成を示す図である。 データA4の構成を示す図である。 データA5の構成を示す図である。 データA6の構成を示す図である。 データA7の構成を示す図である。 記憶領域0の消去を示すシーケンス図である。 データB1の構成を示す図である。 データB2の構成を示す図である。 記憶領域0のアップデートを示すシーケンス図である。 データB3の構成を示す図である。 データB4の構成を示す図である。 データB5の構成を示す図である。 データB6の構成を示す図である。 データB7の構成を示す図である。
以降、本発明を実施するための形態を、各図を参照して詳細に説明する。
電子機器は、新たなプログラムを書き込んだ後に、そのプログラムを有効化し、古いプログラムを無効化する。本実施形態は、古いプログラムに対するフラッシュメモリのイレースを行わず、ライトするだけで無効化を行う。これにより、書き込み時の消費電流を低減することができる。
図1は、本実施形態における電子時計10の概略を示す構成図である。
電子時計10は、特には限られないが、例えば腕に装着するためのバンドを備えた腕時計型の電子時計である。この電子時計10は、マイクロコンピュータ2、操作部31、表示部32、電源部33を含んで構成される。電子時計10は更に、通信部4とアンテナ41、GPS(Global Positioning System)部5とアンテナ51、フラッシュメモリ6、振動子7を含んで構成される。なお、図ではアンテナ41,51を“ANT”と記載している。
操作部31は、例えばリュウズやボタンであり、ユーザの操作情報をマイクロコンピュータ2に伝達する。表示部32は、例えば文字盤と指針などであり、マイクロコンピュータ2の指示により現在時刻を含む各種情報を表示する。電源部33は、この電子時計10に電力を供給する。
電源部33は、例えば、バッテリ、及び電圧変換回路を備える。電源部33は、電子時計10内の各部の動作電圧で電力を供給する。電源部33のバッテリとしては、例えば、ボタン型乾電池などの一次電池が用いられる。或いは、電源部33のバッテリとして、ソーラパネルと二次電池の組み合わせが用いられてもよい。
通信部4は、例えばBluetooth(登録商標) Low Energyに準拠した無線通信により、アンテナ41、を介して外部と通信する。これにより電子時計10は、新たなプログラムを外部から受信する。
GPS部5は、GPS受信ICで構成されており、GPS衛星から送信される極超短波の衛星信号をアンテナ51によって受信し、現在位置や現在時刻を計測するものである。このGPS受信ICは、CPU(Central Processing Unit)52とRAM(Random Access Memory)53とを備える。CPU52は、後記するフラッシュメモリ6の記憶領域0(61)および記憶領域1(62)、ブートストラップローダ63をRAM53に読み込んで実行する第1のプロセッサである。
フラッシュメモリ6は、情報を読み出しおよび書き込み可能に記憶する不揮発性の半導体メモリである。このフラッシュメモリ6には、記憶領域0(61)および記憶領域1(62)、ブートストラップローダ63を含んでいる。記憶領域0(61)および記憶領域1(62)は、CPU52がRAM53に読み込んで実行するためのプログラムと、このプログラムの有効/無効/無効かつ未消去のうちいずれであるかを示すコードがそれぞれ記憶される。ブートストラップローダ63は、CPU52に対して、記憶領域0(61)および記憶領域1(62)に記憶されたプログラムのうち有効なものを読み込んで起動する処理を行わせる。
なお、フラッシュメモリ6の指定されたアドレス空間を消去すると、そのアドレス空間のデータは全て0xFFとなる。フラッシュメモリ6の1回の消去単位は4KBytesなので、なので、それ以上のサイズのアドレス空間を消去するときには、4KBytes単位の消去を繰り返すとよい。
フラッシュメモリ6の消去済みのアドレス空間には、データを書き込むことができる。フラッシュメモリ6の1回の書き込み単位は256Bytesなので、それ以上のサイズのデータを書き込むときには、256Bytes単位の書き込みと読み込みと確認(ベリファイ)を繰り返すとよい。
或るデータが書き込まれたフラッシュメモリ6に別のデータを書き込むと、書き込み前のデータのビット1が、別のデータのビット0によって書き換わる。書き込み前のデータのビット0は、別のデータのビット1によっても書き換わらず、ビット0のままである。本実施形態では、このフラッシュメモリ6の性質を利用している。
CPU21は、プログラムを、無効であることを示す情報、有効であることを示す情報、無効かつ未消去であることを示すコードで管理する第2のプロセッサである。プログラムの無効かつ未消去を示すコードは、プログラムの有効を示す情報のビット1のいずれかが、ビット0に設定されたものである。これにより、フラッシュメモリ6の消去なしに、CPU21は、プログラムが無効である旨を設定できる。
CPU21の処理能力は、CPU52の処理能力よりも低い。またCPU21の動作保証電圧の下限は、CPU52の動作保証電圧の下限よりも低い。電源電圧の低下によりCPU52が動作しなくなった後でも、CPU21は動作することができる。
振動子7は、例えば、水晶振動子であり、後記する発振回路25と組み合わされて固有の周波数信号を生成する。
マイクロコンピュータ2は、CPU21、RAM22、ROM(Read Only Memory)23を含んで構成される。マイクロコンピュータ2は更に、発振回路25、分周回路26、計時回路27を含んで構成される。
CPU21は、RAM22をワーク領域としてROM23やフラッシュメモリ6に記憶されたプログラムによる各種演算処理を行い、電子時計10の全体動作を統括制御するものである。ROM23は、CPU21によって書き込み可能なセルフ書込領域24を含む。セルフ書込領域24は不揮発性の記憶領域であり、RAM24は電源バックアップされているため、次回の起動時に参照する情報を好適に記憶できる。次回の起動時にCPU21が参照する情報は、セルフ書込領域24またはRAM22に記憶される。
このCPU21は、コードが無効であることを示す記憶領域に新たなプログラムを書き込むと共に、この記憶領域に記憶されているコードに有効であることを示す情報を書き込む。更にCPU21は、コードが有効であることを示していた記憶領域のコードに無効かつ未消去であることを示す情報を書き込む。これによりCPU21は、フラッシュメモリ6の消去なしに、記憶領域に記憶されたプログラムが無効である旨を設定できる。
発振回路25は、振動子7と組み合わされて固有の周波数信号を生成して分周回路26に出力する。発振回路25としては、例えば、水晶発振回路が用いられる。
分周回路26は、発振回路25から入力された信号をCPU21や計時回路27が利用する各種周波数の信号に分周して出力する。
計時回路27は、分周回路26から入力された所定の周波数信号の回数を計数し、初期時刻に加算していくことで現在時刻を計数するカウンタ回路である。計時回路27により計数される現在時刻は、CPU21により読み出されて時刻表示に用いられる。この時刻の計数は、ソフトウェア的に制御されてもよい。
図2は、記憶領域0,1の構成を示す図である。
これら記憶領域0と記憶領域1は、図1に示すフラッシュメモリ6に記憶されている。記憶領域0は、アドレス空間0x100000〜0x11FFFFに配置されている。この記憶領域0は、ファイルXのヘッダと、ファイルXの本体と、ファイルYのヘッダと、ファイルYの本体を含んでいる。なお、この図2では、記憶領域0と記憶領域1に、それぞれ別個のオフセットを記載している。
ファイルXのヘッダは、128Bytesであり、アドレス空間0x100000〜0x10007Fに配置されている。ファイルXのヘッダは、記憶領域0のオフセット0x000000〜0x00007Fに位置している。ファイルXのヘッダには、ファイルX本体のサイズ、格納アドレス情報、有効/無効を示すコードが記憶される。アドレス空間0x10000C〜0x10000Fには、記憶領域0のファイルXが有効/無効いずれであるかを示すコードが記憶される。ここでは有効を示す0x4D,0x30,0x50,0x00が記憶されている。
ファイルXのヘッダと本体との間は、パディング領域であり、アドレス空間0x100080〜0x100FFFに配置されている。このパディング領域は、記憶領域0のオフセット0x000080〜0x000FFFに位置しており、全て0xFFのデータで埋められている。ファイルXのヘッダサイズとパディング領域のサイズとの和は4KBytesであり、フラッシュメモリ6の消去単位と等しい。これによりファイルXの本体に影響を与えず、ファイルXのヘッダのみを消去することができる。
ファイルXの本体は、アドレス空間0x101000〜0x10FFFFのいずれかに配置されている。ファイルXの本体は、記憶領域0のオフセット0x001000〜0x00FFFFのいずれかに位置している。ファイルXのヘッダに有効コードが記憶されているとき、ファイルXの本体は有効である。
ファイルYのヘッダは、128Bytesであり、アドレス空間0x110000〜0x11007Fに配置されている。ファイルYのヘッダは、記憶領域0のオフセット0x010000〜0x01007Fに位置している。ファイルYのヘッダには、ファイルY本体のサイズ、格納アドレス情報、有効/無効を示すコードが記憶される。ヘッダのうちアドレス空間0x11000C〜0x11000Fには、記憶領域0のファイルYが有効/無効いずれであるかを示すコードが記憶される。ここでは有効を示す0x47,0x50,0x53,0x00が記憶されている。
ファイルYのヘッダと本体との間は、パディング領域であり、アドレス空間0x110080〜0x110FFFに配置されている。このパディング領域は、記憶領域0のオフセット0x010080〜0x010FFFに位置しており、全て0xFFのデータで埋められている。ファイルYのヘッダサイズとパディング領域のサイズとの和は4KBytesであり、フラッシュメモリ6の消去単位と等しい。これによりファイルYの本体に影響を与えず、ファイルYのヘッダのみを消去することができる。
ファイルYの本体は、アドレス空間0x111000〜0x11FFFFのいずれかに配置されている。ファイルYの本体は、記憶領域0のオフセット0x011000〜0x01FFFFのいずれかに位置している。ファイルYのヘッダに有効コードが記憶されているとき、ファイルYの本体は有効である。CPU52は、ブートストラップローダ63を読み込んで実行することにより、記憶領域0のファイルX,Yの本体を組み合わせたプログラムをRAM53に読み込み、読み込んだプログラムを実行する。
記憶領域1は、アドレス空間0x120000〜0x13FFFFに配置されている。この記憶領域1は、ファイルXのヘッダと、ファイルXの本体と、ファイルYのヘッダと、ファイルYの本体を含んでいる。
ファイルXのヘッダは、128Bytesであり、アドレス空間0x120000〜0x12007Fに配置されている。ファイルXのヘッダは、記憶領域1のオフセット0x000000〜0x00007Fに位置している。ファイルXのヘッダには、ファイルX本体のサイズ、格納アドレス情報、有効/無効を示すコードが記憶される。ヘッダのうちアドレス空間0x12000C〜0x12000Fには、記憶領域1のファイルXが有効/無効いずれであるかを示すコードが記憶される。ここでは無効を示す0xFF,0xFF,0xFF,0x00が記憶されている。
ファイルXのヘッダと本体との間は、パディング領域であり、アドレス空間0x120080〜0x120FFFに配置されている。このパディング領域は、記憶領域1のオフセット0x000080〜0x000FFFに位置しており、全て0xFFのデータで埋められている。ファイルXのヘッダサイズとパディング領域のサイズとの和は4KBytesであり、フラッシュメモリ6の消去単位と等しい。これによりファイルXの本体に影響を与えず、ファイルXのヘッダのみを消去することができる。
ファイルXの本体は、アドレス空間0x121000〜0x12FFFFに配置されている。ファイルXの本体は、記憶領域1のオフセット0x001000〜0x00FFFFのいずれかに位置している。ファイルXのヘッダに無効コードが記憶されているとき、ファイルXの本体は無効である。
ファイルYのヘッダは、128Bytesであり、アドレス空間0x130000〜0x13007Fに配置されている。ファイルYのヘッダは、記憶領域1のオフセット0x010000〜0x01007Fに位置している。ファイルYのヘッダには、ファイルY本体のサイズ、格納アドレス情報、有効/無効を示すコードが記憶される。ヘッダのうちアドレス空間0x13000C〜0x13000Fには、記憶領域1のファイルYが有効/無効/無効かつ未消去のいずれであるかを示すコードが記憶される。ここでは無効を示す0xFF,0xFF,0xFF,0x00が記憶されている。
ファイルYのヘッダと本体との間は、パディング領域であり、アドレス空間0x130080〜0x130FFFに配置されている。このパディング領域は、記憶領域1のオフセット0x010080〜0x010FFFに位置しており、全て0xFFのデータで埋められている。ファイルYのヘッダサイズとパディング領域のサイズとの和は4KBytesであり、フラッシュメモリ6の消去単位と等しい。これによりファイルYの本体に影響を与えず、ファイルYのヘッダのみを消去することができる。
ファイルYの本体は、アドレス空間0x131000〜0x13FFFFに配置されている。ファイルYの本体は、記憶領域1のオフセット0x011000〜0x01FFFFのいずれかに位置している。ファイルYのヘッダに無効コードが記憶されているとき、ファイルYの本体は無効である。CPU52は、ブートストラップローダ63を読み込んで実行することにより、記憶領域1のファイルX,Yの本体を組み合わせたプログラムをRAM53に読み込み、読み込んだプログラムを実行する。
図3は、ブートストラップローダ63による起動処理を示すフローチャートである。
マイクロコンピュータ2が電源リセットされると、CPU52は、ブートストラップローダ63を読み込んで実行し、図3の起動処理を開始する。
CPU52は、記憶領域1のファイルXのヘッダを読み込んだのち(ステップS10)、ファイルYのヘッダを読み込む(ステップS11)。CPU52は、記憶領域0のファイルXのヘッダを読み込んだのち(ステップS12)、ファイルYのヘッダを読み込む(ステップS13)。
ステップS14において、CPU52は、記憶領域1が有効であり、かつ記憶領域0が無効であるか否かを判定する。つまりCPU52は、記憶領域1のファイルXのヘッダとファイルYのヘッダの両方に有効コードが記憶されているならば、記憶領域1が有効であると判定する。CPU52は、記憶領域0のファイルXのヘッダとファイルYのヘッダの両方に無効コードが記憶されているならば、記憶領域0が無効であると判定する。CPU52は、記憶領域1が有効かつ記憶領域0が無効ならば(ステップS14→Yes)、記憶領域1を読み込んで起動し(ステップS15)、図3の処理を終了する。それ以外の場合(ステップS14→No)、CPU52は、ステップS16の処理に進む。
ステップS16において、CPU52は、記憶領域0が有効であり、かつ記憶領域1が無効であるか否かを判定する。つまりCPU52は、記憶領域0のファイルXのヘッダとファイルYのヘッダの両方に有効コードが記憶されているならば、記憶領域0が有効であると判定する。CPU52は、記憶領域1のファイルXのヘッダとファイルYのヘッダの両方に無効コードが記憶されているならば、記憶領域1が無効であると判定する。CPU52は、記憶領域0が有効かつ記憶領域1が無効ならば(ステップS16→Yes)、記憶領域0を読み込んで起動し(ステップS17)、図3の処理を終了する。それ以外の場合(ステップS16→No)、CPU52は、異常終了の処理を実行する。
なお、記憶領域1のファイルXのヘッダが有効であり、かつファイルYのヘッダが無効である場合には、記憶領域1の有効/無効が判定できない。記憶領域1のファイルXのヘッダが全て0xFFである場合や、ファイルYのヘッダが全て0xFFである場合も同様である。記憶領域1のファイルXのヘッダが無効であり、かつファイルYのヘッダが有効である場合も同様である。同様に、記憶領域0のファイルXのヘッダが有効であり、かつファイルYのヘッダが無効である場合には、記憶領域0の有効/無効が判定できない。記憶領域0のファイルXのヘッダが全て0xFFである場合や、ファイルYのヘッダが全て0xFFである場合も同様である。記憶領域0のファイルXのヘッダが無効であり、かつファイルYのヘッダが有効である場合も同様である。このような場合、ステップS14,16の判定は成立しないため、CPU52は異常終了の処理を実行する。
このように、電子時計10は、フラッシュメモリ6の記憶領域0,1にそれぞれプログラムを記憶可能とし、記憶領域0、記憶領域1の順番でプログラムの有効/無効を判断し、有効なプログラムを起動している。これにより電子時計10は、いずれかの記憶領域に対する書き込みに失敗した場合の対策を行っている。
図4は、プログラム書き込みにおけるモード遷移図である。
工場出荷時における電子時計10の状態は、モードM12である。モードM12において、記憶領域0のファイルX,Yは有効であり、CPU52は記憶領域0からブート(起動)可能である。記憶領域1のファイルX,Yは無効であり、記憶領域1はアップデート(更新)可能である。モードM12において、CPU21がプログラムをアップデート(更新)すると、モードM13に遷移する。このアップデートは、例えばユーザの指示によって行われる。
モードM13において、記憶領域0のファイルX,Yは無効かつ未消去であり、記憶領域0はアップデート(更新)不可である。記憶領域1のファイルX,Yは有効であり、CPU52は記憶領域1からブート(起動)可能である。モードM13において、CPU21が記憶領域0を消去すると、モードM10に遷移する。この記憶領域0の消去は、例えば深夜や早朝など、電子時計10を使用していないときに行われる。
モードM10において、記憶領域0のファイルX,Yは無効であり、記憶領域0はアップデート(更新)可能である。記憶領域1のファイルX,Yは有効であり、CPU52は記憶領域1からブート(起動)可能である。モードM10において、CPU21がプログラムをアップデート(更新)すると、モードM11に遷移する。このアップデートは、例えばユーザの指示によって行われる。
モードM11において、記憶領域0のファイルX,Yは有効であり、CPU52は記憶領域0からブート(起動)可能である。記憶領域1のファイルX,Yは無効かつ未消去であり、記憶領域1はアップデート(更新)不可である。モードM11において、CPU21が記憶領域1を消去すると、モードM12に遷移する。この記憶領域1の消去は、例えば深夜や早朝など、電子時計10を使用していないときに行われる。
プログラムのアップデートは、ユーザの指示によって開始することが望ましい。また、記憶領域0,1の消去は、ユーザがこの電子時計10を操作していない時に実行することが望ましく、例えば午前0時から午前7時までの間のいずれかである。
図5は、記憶領域1の消去を示すシーケンス図であり、後記する図6、図7を適宜参照しつつ説明する。記憶領域1の消去前は、図4に示したモードM11である。この消去により、電子時計10は、モードM12に遷移する。つまりCPU21は、記憶領域0,1のうちコードに無効かつ未消去を示す情報が書き込まれた記憶領域があれば、この記憶領域を消去して、コードに無効を示す情報を書き込む。ここでCPU21は、記憶領域1が無効であると判定する。CPU21が記憶領域1を消去する要因は、例えば時刻が深夜や早朝(午前0時〜午前7時)であるというものであり、プログラムの書き込み要因とは異なる。
ステップS20において、CPU21は、フラッシュメモリ6の記憶領域1に記憶されていたファイルX,Yの本体を消去(イレース)する。これにより、記憶領域1のファイルX,Yの本体は、0xFFで消去される。
CPU21は、フラッシュメモリ6の記憶領域1のファイルX,Yの本体が配置されていた範囲を読み込み(ステップS21)、これらの範囲が正しく消去されたか否かをベリファイ(確認)する(ステップS22)。
図4のモードM11から、ステップS22の処理を実行するまでの間に電源オフされて再び電源オンした場合、CPU52は、ブートストラップローダ63により、記憶領域0のファイルX,Yの本体を読み込んで起動する。
ステップS23〜S34を実行している期間は、CPU21がGPS受信を禁止している。この期間において、CPU21は、プログラムの有効/無効コードとして0xFF,0xFF,0xFF,0x00を書き込んでいる。この有効/無効コードが不定であるため、CPU52がプログラムを正常に起動できないおそれがあるためである。更に、GPS受信ICの消費電流により、電池の電圧が低下するおそれがあるためである。
ステップS23〜S28は、記憶領域1のファイルXのヘッダを変更する処理である。ステップS29〜S34は、記憶領域1のファイルYのヘッダを変更する処理である。CPU21は、これらヘッダを変更する一連の処理中に電源オフなどが発生しないように、ユーザの操作情報等を受け付けない。
ステップS23において、CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルXのヘッダを消去(イレース)する。フラッシュメモリ6の消去単位は4KBytesなので、アドレス空間0x120000〜0x120FFFが0xFFで消去される。これによりファイルXのヘッダと、その直後のパディング領域が消去される。CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルXのヘッダを読み込み(ステップS24)、これら領域が正しく消去されたか否かをベリファイ(確認)する(ステップS25)。
このとき、記憶領域1のファイルXのヘッダは全て0xFFかつ記憶領域0が有効である。ブートストラップローダ63によるCPU52の起動処理は、記憶領域1のファイルXのヘッダが全て0xFFならば異常終了する。よって、CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルXのヘッダに、図6に示したデータA1を書き込む(ステップS26)。これにより、CPU52は、起動処理を正しく行えるようになる。
図6のデータA1は、記憶領域1のアドレス空間0x120000〜0x1200FFに書き込まれるものである。以下の図ではデータの構成を、先頭からのデータのオフセットと、データの値と意味と種別とで示し、更に各データが書き込まれるアドレス空間を示している。
データA1は、記憶領域1のXヘッダ固定値情報と、ファイルXの無効を意味する0xFF,0xFF,0xFF,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するXヘッダ固定値情報は、アドレス空間0x120000〜0x12000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するXヘッダ固定値情報は、アドレス空間0x120010〜0x12007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルXの無効コードは、アドレス空間0x12000C〜0x12000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x120080〜0x1200FFに書き込まれる。
図5に戻り、ステップS26の後を説明する。CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルXのヘッダを読み込み(ステップS27)、これら記憶領域にデータA1が正しく書き込まれたか否かをベリファイ(確認)する(ステップS28)。
ステップS29において、CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルYのヘッダを消去(イレース)する。フラッシュメモリ6の消去単位は4KBytesなので、アドレス空間0x130000〜0x130FFFが0xFFで消去される。これによりファイルYのヘッダと、その直後のパディング領域が消去される。CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルYのヘッダを読み込み(ステップS30)、これら記憶領域が正しく消去されたか否かをベリファイ(確認)する(ステップS31)。
このとき、記憶領域1のファイルYのヘッダは全て0xFFかつ記憶領域0が有効である。ブートストラップローダ63によるCPU52の起動処理は、記憶領域1のファイルYのヘッダが全て0xFFならば異常終了する。よって、CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルYのヘッダに、図7に示したデータA2を書き込む(ステップS32)。これにより、CPU52は、起動処理を正しく行えるようになる。
図7のデータA2は、記憶領域1のアドレス空間0x130000〜0x1300FFに書き込まれるものである。データA2は、記憶領域1のYヘッダ固定値情報と、ファイルYの無効を意味する0xFF,0xFF,0xFF,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するYヘッダ固定値情報は、アドレス空間0x130000〜0x13000Bに書き込まれる。記憶領域1のオフセット0x000010〜0x00007Fに位置するYヘッダ固定値情報は、アドレス空間0x130010〜0x13007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルYの無効コードは、アドレス空間0x13000C〜0x13000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x130080〜0x1300FFに書き込まれる。
図5に戻り、ステップS32の後を説明する。CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルYのヘッダを読み込み(ステップS33)、これら記憶領域にデータA2が正しく書き込まれたか否かをベリファイ(確認)する(ステップS34)。ステップS34の後、CPU21は、GPS受信禁止を解除する。これ以降、CPU52は、記憶領域0に記憶されたプログラムで起動することが可能となる。
その後CPU21は、書換準備完了フラグをオンし(ステップS35)、記憶領域1の消去済みフラグをオンする(ステップS36)。書換準備完了フラグと記憶領域1の消去済みフラグは、セルフ書込領域24またはRAM22に記憶される。
図8は、記憶領域1のアップデートを示すシーケンス図である。図5に示した一連の処理が完了していると、CPU21は、ユーザの指示に基づき、プログラム・アップデートを開始する。このように、CPU21が記憶領域1をアップデートする要因は、記憶領域1を消去する要因とは異なる。
最初、CPU21は、通信部4により、不図示の外部装置に、現在のプログラムのバージョン番号を送信する(ステップS40)。この外部装置とは、例えばタブレット端末やスマートフォンなどである。外部装置は、インターネット経由でサーバにアクセスし、現バージョンよりも新しいバージョンのプログラムがあれば、これをダウンロードする。以下、新しいバージョンのプログラムが存在した場合について説明する。
不図示の外部装置は、電子時計10に新しいプログラムのバージョン番号とファイルサイズを送信する。CPU21は、通信部4により、この外部装置から新しいプログラムのバージョン番号とファイルサイズを受信する(ステップS41)。なお、図ではプログラムのことを“PRG”と省略記載している場合がある。
次いで、CPU21は、外部装置からデータA3(図9参照)を受信しつつ、フラッシュメモリ6の記憶領域1に受信したデータA3を書き込む(ステップS42)。
図9のデータA3は、記憶領域1のアドレス空間0x120000〜0x13FFFFに書き込まれるものである。データA3は、ファイルXのヘッダ情報およびファイルX本体、ファイルYのヘッダ情報およびファイルX本体、それ以外のパディングデータを含んでいる。ファイルXのヘッダ情報は、オフセット0x000000〜0x00007Fに位置し、かつファイルXの無効コードを含んでいる。ファイルX本体は、オフセット0x001000〜0x00FFFFに位置している。ファイルYのヘッダ情報は、オフセット0x010000〜0x01007Fに位置し、ファイルYの無効コードを含んでいる。ファイルY本体は、オフセット0x011000〜0x01FFFFに位置している。これにより、データA3の書き込みが異常により中断した場合、記憶領域1に書き込まれたファイルX,Yは無効なので、GPS部5のCPU52は、記憶領域0に書き込まれたファイルX,Yで起動可能である。
図8のステップS43に戻って説明する。CPU21は、記憶領域1からデータを読み込み、これがデータA3と一致していることを確認(ベリファイ)する(ステップS44)。これらステップS42〜S44の処理は、実際には256Bytes毎に繰り返されるが、ここでは記載を省略している。
CPU21は、外部装置から送信されるデータA3を256Bytes毎に受信しながら、フラッシュメモリ6の記憶領域1に書き込む。例えば、CPU21が最初の256Bytesが正常に受信し、その後の256Bytesの受信に失敗した場合を考える。このときCPU21は、最初の256Bytesだけをフラッシュメモリ6の記憶領域1に書き込み、その後の処理を中断する。ステップS40〜S44を実行している期間において、電子時計10がパワーオンリセットされたならば、CPU52は、記憶領域0で起動する。
ステップS45〜S57を実行している期間は、CPU21がGPS受信を禁止している。この期間において、CPU21は、プログラムの有効/無効コードとして0xFF,0xFF,0xFF,0x00を書き込んでいる。例えばCPU21は、この期間において記憶領域1に有効コードを書込み、記憶領域0に無効コードを書き込む。この有効/無効コードが不定であるため、CPU52がプログラムを正常に起動できないおそれがあるためである。更に、GPS受信ICの消費電流により、電池の電圧が低下するおそれがあるためである。
CPU21は、記憶領域1のファイルYを有効化するため、フラッシュメモリ6の記憶領域1のYヘッダに、データA4(図10)を書き込む(ステップS45)。
図10のデータA4は、記憶領域1のアドレス空間0x130000〜0x1300FFに書き込まれるものである。データA4は、記憶領域1のYヘッダ固定値情報と、ファイルYの有効コードを意味する0x47,0x50,0x53,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するYヘッダ固定値情報は、アドレス空間0x130000〜0x13000Bに書き込まれる。記憶領域1のオフセット0x000010〜0x00007Fに位置するYヘッダ固定値情報は、アドレス空間0x130010〜0x13007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルYの有効コードは、アドレス空間0x13000C〜0x13000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x130080〜0x1300FFに書き込まれる。
図8に戻り、ステップS45の後を説明する。CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルYのヘッダを読み込み(ステップS46)、これら記憶領域にデータA4が正しく書き込まれたか否かをベリファイ(確認)する(ステップS47)。
CPU21は、記憶領域1のファイルXを有効化するため、フラッシュメモリ6の記憶領域1のXヘッダに、データA5(図11)を書き込む(ステップS48)。
図11のデータA5は、記憶領域1のアドレス空間0x120000〜0x1200FFに書き込まれるものである。データA5は、記憶領域1のXヘッダ固定値情報と、ファイルXの有効コードを意味する0x4D,0x30,0x50,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するXヘッダ固定値情報は、アドレス空間0x120000〜0x12000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するXヘッダ固定値情報は、アドレス空間0x120010〜0x12007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルXの有効コードは、アドレス空間0x12000C〜0x12000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x120080〜0x1200FFに書き込まれる。
図8に戻り、ステップS48の後を説明する。CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルXのヘッダを読み込み(ステップS49)、これら記憶領域にデータA5が正しく書き込まれたか否かをベリファイ(確認)する(ステップS50)。ここでデータA5が正しく書き込まれたならば、GPS部5のCPU52は、記憶領域1に書き込まれたファイルX,Yで起動可能である。
CPU21は、記憶領域0のファイルXを無効化するため、フラッシュメモリ6の記憶領域0のXヘッダに、データA6(図12)を書き込む(ステップS51)。
図12のデータA6は、記憶領域0のアドレス空間0x100000〜0x1000FFに書き込まれるものである。データA6は、記憶領域0のXヘッダ固定値情報と、ファイルXの無効かつ未消去を意味する0x40,0x10,0x40,0x00(第2無効コード)と、全て0xFFであるパディングデータを含んでいる。この第2無効コードは、有効コードに含まれるビット1のいずれかにビット0を書き込んだものである。このように第2無効コードを設定することで、記憶領域0のファイルXのヘッダ情報を消去することなく、このファイルXを無効化することができる。
オフセット0x000000〜0x00000Bに位置するXヘッダ固定値情報は、アドレス空間0x100000〜0x10000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するXヘッダ固定値情報は、アドレス空間0x100010〜0x10007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルXの第2無効コードは、アドレス空間0x10000C〜0x10000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x100080〜0x1000FFに書き込まれる。
図8に戻り、ステップS51の後を説明する。CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルXのヘッダを読み込み(ステップS52)、これら記憶領域にデータA6が正しく書き込まれたか否かをベリファイ(確認)する(ステップS53)。
CPU21は、記憶領域0のファイルYを無効化するため、フラッシュメモリ6の記憶領域0のYヘッダに、データA7(図13)を書き込む(ステップS54)。
図13のデータA7は、記憶領域0のアドレス空間0x110000〜0x1100FFに書き込まれるものである。データA7は、記憶領域0のYヘッダ固定値情報と、ファイルYの無効かつ未消去を意味する0x40,0x10,0x40,0x00(第2無効コード)と、全て0xFFであるパディングデータを含んでいる。
オフセット0x000000〜0x00000Bに位置するYヘッダ固定値情報は、アドレス空間0x110000〜0x11000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するYヘッダ固定値情報は、アドレス空間0x110010〜0x11007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルYの第2無効コードは、アドレス空間0x11000C〜0x11000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x110080〜0x1100FFに書き込まれる。
図8に戻り、ステップS54の後を説明する。CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルYのヘッダを読み込み(ステップS55)、これら記憶領域にデータA7が正しく書き込まれたか否かをベリファイ(確認)する(ステップS56)。
CPU21は、プログラム有効領域として記憶領域1の開始アドレスを設定する(ステップS57)。プログラム有効領域が記憶されるのは、セルフ書込領域24とRAM22のいずれであってもよい。
ステップS57の処理が終了すると、CPU21がGPS受信を再び許可する。
図14は、記憶領域0の消去を示すシーケンス図であり、後記する図15、図16を適宜参照しつつ説明する。記憶領域0の消去前は、図4に示したモードM13である。この消去により、電子時計10は、モードM10に遷移する。つまりCPU21は、記憶領域0,1のうちコードに無効を示す情報が書き込まれた記憶領域があれば、この記憶領域を消去して、コードに無効を示す情報を書き込む。ここでCPU21は、記憶領域0が無効であると判定する。CPU21が記憶領域0を消去する要因は、例えば時刻が深夜(午前0時〜午前7時)であるというものであり、プログラムの書き込み要因とは異なる。
ステップS60において、CPU21は、フラッシュメモリ6の記憶領域0に記憶されていたファイルX,Yの本体を消去(イレース)する。これにより、記憶領域0のファイルX,Yの本体は、0xFFで消去される。
CPU21は、フラッシュメモリ6の記憶領域0のファイルX,Yの本体が配置されていた範囲を読み込み(ステップS61)、これらの範囲が正しく消去されたか否かをベリファイ(確認)する(ステップS62)。
図14の処理が開始する前のモードM13と、上記したステップS62の処理を実行するまでの間において、マイクロコンピュータ2がリセットされたならば、CPU52は、ブートストラップローダ63により、記憶領域1のファイルX,Yの本体を読み込んで起動する。
ステップS63〜S74を実行している期間は、CPU21がGPS受信を禁止している。この期間において、CPU21は、プログラムの有効/無効コードとして0xFF,0xFF,0xFF,0x00を書き込んでいる。この有効/無効コードが不定であるため、CPU21がプログラムを正常に起動できないおそれがあるためである。
ステップS63において、CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルXのヘッダを消去(イレース)する。フラッシュメモリ6の消去単位は4KBytesなので、アドレス空間0x100000〜0x100FFFが0xFFで消去される。これによりファイルXのヘッダと、その直後のパディング領域が消去される。CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルXのヘッダを読み込み(ステップS64)、これら記憶領域が正しく消去されたか否かをベリファイ(確認)する(ステップS65)。
このとき、記憶領域0のファイルXのヘッダは全て0xFFかつ記憶領域1が有効である。よって、CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルXのヘッダに、図15に示したデータB1を書き込む(ステップS66)。これにより、CPU21は、バックアップを正しく行えるようにする。
図15のデータB1は、記憶領域0のアドレス空間0x100000〜0x1000FFに書き込まれるものである。データB1は、記憶領域0のXヘッダ固定値情報と、ファイルXの無効を意味する0xFF,0xFF,0xFF,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するXヘッダ固定値情報は、アドレス空間0x100000〜0x10000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するXヘッダ固定値情報は、アドレス空間0x100010〜0x10007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルXの無効コードは、アドレス空間0x10000C〜0x10000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x100080〜0x1000FFに書き込まれる。
図14に戻り、ステップS66の後を説明する。CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルXのヘッダを読み込み(ステップS67)、これら記憶領域にデータB1が正しく書き込まれたか否かをベリファイ(確認)する(ステップS68)。
ステップS69において、CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルYのヘッダを消去(イレース)する。フラッシュメモリ6の消去単位は4KBytesなので、アドレス空間0x110000〜0x110FFFが0xFFで消去される。これによりファイルYのヘッダと、その直後のパディング領域が消去される。CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルYのヘッダを読み込み(ステップS70)、これら記憶領域が正しく消去されたか否かをベリファイ(確認)する(ステップS71)。
このとき、記憶領域0のファイルYのヘッダは全て0xFFかつ記憶領域1が有効である。よって、CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルYのヘッダに、図16に示したデータB2を書き込む(ステップS72)。
図16のデータB2は、記憶領域0のアドレス空間0x110000〜0x1100FFに書き込まれるものである。データB2は、記憶領域0のYヘッダ固定値情報と、ファイルYの無効を意味する0xFF,0xFF,0xFF,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するYヘッダ固定値情報は、アドレス空間0x110000〜0x11000Bに書き込まれる。記憶領域0のオフセット0x000010〜0x00007Fに位置するYヘッダ固定値情報は、アドレス空間0x110010〜0x11007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルYの無効コードは、アドレス空間0x11000C〜0x11000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x110080〜0x1100FFに書き込まれる。
図14に戻り、ステップS72の後を説明する。CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルYのヘッダを読み込み(ステップS73)、これら記憶領域にデータB2が正しく書き込まれたか否かをベリファイ(確認)する(ステップS74)。ステップS74の後、CPU21は、GPS受信禁止を解除する。これ以降、CPU52は、記憶領域1に記憶されたプログラムで起動することが可能となる。
その後CPU21は、書換準備完了フラグをオンし(ステップS75)、記憶領域0の消去済みフラグをオンする(ステップS76)。書換準備完了フラグと記憶領域0の消去済みフラグは、セルフ書込領域24またはRAM22に記憶される。これにより電子時計10は、新たなプログラムの更新を受け付けることができる。
図17は、記憶領域0のアップデートを示すシーケンス図である。図14に示した一連の処理が完了していると、CPU21は、ユーザの指示に基づき、プログラム・アップデートを開始する。このように、CPU21が記憶領域0をアップデートする要因は、記憶領域0を消去する要因とは異なる。
最初、CPU21は、通信部4により、不図示の外部装置に、現在のプログラムのバージョン番号を送信する(ステップS80)。この外部装置とは、例えばタブレット端末やスマートフォンなどである。外部装置は、インターネット経由でサーバにアクセスし、現バージョンよりも新しいバージョンのプログラムがあれば、これをダウンロードする。以下、新しいバージョンのプログラムが存在した場合について説明する。
不図示の外部装置は、電子時計10に新しいプログラムのバージョン番号とファイルサイズを送信する。CPU21は、通信部4により、この外部装置から新しいプログラムのバージョン番号とファイルサイズを受信する(ステップS81)。
次いで、CPU21は、外部装置からデータB3(図18参照)を受信しつつ、フラッシュメモリ6の記憶領域0に受信したデータB3を書き込む(ステップS82)。
図18のデータB3は、記憶領域0のアドレス空間0x100000〜0x11FFFFに書き込まれるものである。データB3は、ファイルXのヘッダ情報およびファイルX本体、ファイルYのヘッダ情報およびファイルX本体、それ以外のパディングデータを含んでいる。ファイルXのヘッダ情報は、オフセット0x000000〜0x00007Fに位置し、かつファイルXの無効コードを含んでいる。ファイルX本体は、オフセット0x001000〜0x00FFFFに位置している。ファイルYのヘッダ情報は、オフセット0x010000〜0x01007Fに位置し、ファイルYの無効コードを含んでいる。ファイルY本体は、オフセット0x011000〜0x01FFFFに位置している。これにより、データB3の書き込みが異常により中断した場合、記憶領域0に書き込まれたファイルX,Yは無効なので、電子時計10のCPU21は、記憶領域1に書き込まれたファイルX,Yで起動可能である。
図17のステップS83に戻って説明する。CPU21は、記憶領域0からデータを読み込み、これがデータB3と一致していることを確認(ベリファイ)する(ステップS84)。これらステップS82〜S84の処理は、実際には256Bytes毎に繰り返されるが、ここでは記載を省略している。
CPU21は、外部装置から送信されるデータA3を256Bytes毎に受信しながら、フラッシュメモリ6の記憶領域1に書き込む。例えば、CPU21が最初の256Bytesが正常に受信し、その後の256Bytesの受信に失敗した場合を考える。このときCPU21は、最初の256Bytesだけをフラッシュメモリ6の記憶領域1に書き込み、その後の処理を中断する。ステップS80〜S84を実行している期間において、電子時計10がパワーオンリセットされたならば、CPU21は、記憶領域1で起動する。
CPU21は、記憶領域0のファイルYを有効化するため、フラッシュメモリ6の記憶領域0のYヘッダに、データB4(図19)を書き込む(ステップS85)。
ステップS85〜S97を実行している期間は、CPU21がGPS受信を禁止している。この期間において、CPU21は、プログラムの有効/無効コードとして0xFF,0xFF,0xFF,0x00を書き込んでいる。例えばCPU21は、この期間において記憶領域0に有効コードを書込み、記憶領域1に無効コードを書き込む。この有効/無効コードが不定であるため、CPU21がプログラムを正常に起動できないおそれがあるためである。
図19のデータB4は、記憶領域0のアドレス空間0x110000〜0x1100FFに書き込まれるものである。データB4は、記憶領域0のYヘッダ固定値情報と、ファイルYの有効コードを意味する0x47,0x50,0x53,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するYヘッダ固定値情報は、アドレス空間0x110000〜0x11000Bに書き込まれる。記憶領域0のオフセット0x000010〜0x00007Fに位置するYヘッダ固定値情報は、アドレス空間0x110010〜0x11007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルYの有効コードは、アドレス空間0x11000C〜0x11000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x110080〜0x1100FFに書き込まれる。
図17に戻り、ステップS85の後を説明する。CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルYのヘッダを読み込み(ステップS86)、これら記憶領域にデータB4が正しく書き込まれたか否かをベリファイ(確認)する(ステップS87)。
CPU21は、記憶領域0のファイルXを有効化するため、フラッシュメモリ6の記憶領域0のXヘッダに、データB5(図20)を書き込む(ステップS88)。
図20のデータB5は、記憶領域0のアドレス空間0x100000〜0x1000FFに書き込まれるものである。データB5は、記憶領域0のXヘッダ固定値情報と、ファイルXの有効コードを意味する0x4D,0x30,0x50,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するXヘッダ固定値情報は、アドレス空間0x100000〜0x10000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するXヘッダ固定値情報は、アドレス空間0x100010〜0x10007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルXの有効コードは、アドレス空間0x10000C〜0x10000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x100080〜0x1000FFに書き込まれる。
図17に戻り、ステップS88の後を説明する。CPU21は、フラッシュメモリ6の記憶領域0に位置するファイルXのヘッダを読み込み(ステップS89)、これら記憶領域にデータB5が正しく書き込まれたか否かをベリファイ(確認)する(ステップS90)。
CPU21は、記憶領域1のファイルXを無効化するため、フラッシュメモリ6の記憶領域1のXヘッダに、データB6(図21)を書き込む(ステップS91)。
図21のデータB6は、記憶領域1のアドレス空間0x120000〜0x1200FFに書き込まれるものである。データB6は、記憶領域1のXヘッダ固定値情報と、ファイルXの無効かつ未消去を意味する0x40,0x10,0x40,0x00(第2無効コード)と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するXヘッダ固定値情報は、アドレス空間0x120000〜0x12000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するXヘッダ固定値情報は、アドレス空間0x120010〜0x12007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルXの第2無効コードは、アドレス空間0x12000C〜0x12000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x120080〜0x1200FFに書き込まれる。
図17に戻り、ステップS91の後を説明する。CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルXのヘッダを読み込み(ステップS92)、これら記憶領域にデータB6が正しく書き込まれたか否かをベリファイ(確認)する(ステップS93)。
CPU21は、記憶領域1のファイルYを無効化するため、フラッシュメモリ6の記憶領域1のYヘッダに、データB7(図22)を書き込む(ステップS94)。
図22のデータB7は、記憶領域1のアドレス空間0x130000〜0x1300FFに書き込まれるものである。データB7は、記憶領域1のYヘッダ固定値情報と、ファイルYの無効かつ未消去を意味する0x40,0x10,0x40,0x00(第2無効コード)と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するYヘッダ固定値情報は、アドレス空間0x130000〜0x13000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するYヘッダ固定値情報は、アドレス空間0x130010〜0x13007Fに書き込まれる。
オフセット0x00000C〜0x00000Fに位置するファイルYの第2無効コードは、アドレス空間0x13000C〜0x13000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x130080〜0x1300FFに書き込まれる。
図17に戻り、ステップS94の後を説明する。CPU21は、フラッシュメモリ6の記憶領域1に位置するファイルYのヘッダを読み込み(ステップS95)、これら記憶領域にデータB7が正しく書き込まれたか否かをベリファイ(確認)する(ステップS96)。ここでデータB7が正しく書き込まれたならば、電子時計10のCPU21は、記憶領域0に書き込まれたファイルX,Yで起動可能である。
CPU21は、プログラム有効領域として記憶領域0の開始アドレスを設定する(ステップS97)。プログラム有効領域が記憶されるのは、セルフ書込領域24とRAM22のいずれであってもよい。ステップS97の処理が終了すると、CPU21がGPS受信を再び許可する。
(変形例)
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の(a)〜(g)のようなものがある。
(a) プログラムは、ファイルX,Yで構成されるものに限定されない。単一のファイルで構成されていてもよく、また、3以上のファイルで構成されてもよい。
(b) 有効コードは、0x00と0xFF以外であればよい。また、第2無効コードは、有効コードのビット値1のいずれかのビットデータをビット値0に変更したものであればよい。
(c) 無効を示すコードは、0xFF,0xFF,0xFF,0x00に限られず、有効を示すコードのビット値0のいずれかのビットデータをビット値1に変更したものであればよい。このとき、有効を示すコードが、無効を示すコードのビット値1のいずれかのビットデータをビット値0に変更したものとなる。
(d) プログラムを構成するファイルを有効化することに動作禁止とする機能は、GPS受信に限定されない。マイクロコンピュータによってオン/オフが制御され、かつ電力を消費して駆動する負荷によって実行される機能であればよい。このような負荷の例は、温度センサ、湿度センサ、気圧センサ、タッチパネルなどである。
(e) プログラムの取得は、通信部を介して外部から受信することに限定されない。プログラムは、例えばメディア経由で取得してもよい。
(f) 記憶領域0,1に記憶されるプログラムは、CPU52が実行するプログラムに限定されず、CPU21が実行するプログラムであってもよい。
(g) 記憶領域0,1に記憶されるプログラムを書き込む主体は、CPU21に限定されない。CPU52がプログラムの書き込みを実行してもよい。
以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記に記載した請求項の項番は、この出願の願書に最初に添付した特許請求の範囲の通りである。
〔付記〕
《請求項1》
第1のプロセッサと、
前記第1のプロセッサが読み込んで実行するためのプログラムおよび当該プログラムが有効/無効/無効かつ未消去のうちいずれであるかを示すコードを記憶する記憶領域を複数記憶するメモリと、
前記コードが無効であることを示していた前記記憶領域に新たなプログラムを書き込むと共に、当該記憶領域に記憶されている前記コードに有効であることを示す情報を書き込み、前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域のコードに無効かつ未消去であることを示す情報を書き込む第2のプロセッサと、
を備えることを特徴とする電子機器。
《請求項2》
前記メモリは、前記記憶領域のうち前記コードが有効なものを読み込むブートストラップローダを記憶することを特徴とする請求項1に記載の電子機器。
《請求項3》
前記コードの前記無効かつ未消去であることを示す情報は、前記有効であることを示す情報のビット値1のいずれかが、ビット値0に設定されており、
前記コードの前記有効であることを示す情報は、前記無効であることを示す情報のビット値0のいずれかが、ビット値1に設定されている、
ことを特徴とする請求項1又は2に記載の電子機器。
《請求項4》
前記第2のプロセッサは、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域があれば、当該記憶領域を消去して、前記コードに無効を示す情報を書き込む、
ことを特徴とする請求項1乃至3のいずれか1項に記載の電子機器。
《請求項5》
前記第2のプロセッサは、プログラムを書き込む要因とは異なる要因で、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域を消去する、
ことを特徴とする請求項4に記載の電子機器。
《請求項6》
第1のプロセッサと、
前記第1のプロセッサが読み込んで実行するためのプログラムおよび当該プログラムが有効/無効/無効かつ未消去のうちいずれであるかを示すコードを記憶する記憶領域を複数記憶するメモリと、
第2のプロセッサと、
前記第2のプロセッサによりオン/オフが制御され、かつ電力を消費して駆動する負荷と、
を備え、
前記第2のプロセッサは、前記負荷の駆動をオフした状態で、前記コードが無効であることを示していた前記記憶領域にプログラムを書き込むと共に、当該記憶領域のコードに有効であることを示す情報を書き込み、前記コードが有効であることを示していた前記記憶領域のコードに無効かつ未消去であることを示す情報を書き込む、
ことを特徴とする電子時計。
《請求項7》
前記メモリは、前記記憶領域のうち前記コードが有効なものを読み込むブートストラップローダを記憶することを特徴とする請求項6に記載の電子時計。
《請求項8》
前記コードの前記無効かつ未消去であることを示す情報は、前記有効を示す情報のビット値1のいずれかが、ビット値0に設定されており、
前記コードの前記有効であることを示す情報は、前記無効でありことを示す情報のビット値1のいずれかが、ビット値0に設定されている、
ことを特徴とする請求項6又は7に記載の電子時計。
《請求項9》
前記第2のプロセッサは、前記負荷の駆動をオフした状態で、前記コードに無効かつ未消去であることを示していた前記記憶領域を消去する、
ことを特徴とする請求項6又は7に記載の電子時計。
《請求項10》
前記第2のプロセッサは、前記負荷の起動を禁止した状態で、プログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込み、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込む、
ことを特徴とする請求項6又は7に記載の電子時計。
《請求項11》
前記第2のプロセッサは、午前0時から午前7時のうちいずれかに、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域を消去する、
ことを特徴とする請求項6乃至9のうちいずれか1項に記載の電子時計。
《請求項12》
前記第2のプロセッサの動作保証電圧の下限は、前記第1のプロセッサの動作保証電圧の下限よりも低い、
ことを特徴とする請求項6乃至9のうちいずれか1項に記載の電子時計。
《請求項13》
前記第2のプロセッサの処理能力は、前記第1のプロセッサの処理能力よりも低い、
ことを特徴とする請求項6乃至9のうちいずれか1項に記載の電子時計。
《請求項14》
前記第2のプロセッサは、前記第1のプロセッサと同一である、
ことを特徴とする請求項6乃至9のうちいずれか1項に記載の電子時計。
《請求項15》
プログラムおよび当該プログラムの有効/無効/無効かつ未消去のうちいずれであるかを示すコードをそれぞれ記憶する複数の記憶領域のうち無効であることを示す前記コードが記憶されている前記記憶領域に新たなプログラムを書き込むステップと、
前記新たなプログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込むステップと、
前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込むステップと、
を含むことを特徴とするプログラム書込方法。
《請求項16》
プログラムおよび当該プログラムの有効/無効/無効かつ未消去のうちいずれであるかを示すコードをそれぞれ記憶する複数の記憶領域のうち無効であることを示す前記コードが記憶されている前記記憶領域に新たなプログラムを書き込む手順、
前記新たなプログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込む手順、
前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込む手順、
をコンピュータに実行させるためのプログラム。
10 電子時計 (電子機器)
2 マイクロコンピュータ
21 CPU (第2のプロセッサ)
22 RAM
23 ROM
24 セルフ書込領域
25 発振回路
26 分周回路
27 計時回路
31 操作部
32 表示部
33 電源部
4 通信部
41 アンテナ
5 GPS部 (負荷)
51 アンテナ
52 CPU (第1のプロセッサ)
53 RAM
6 フラッシュメモリ
61 記憶領域0
62 記憶領域1
63 ブートストラップローダ
7 振動子

Claims (14)

  1. 現在の電源電圧が第1の動作電圧の下限以上である場合に動作する第1のプロセッサと、
    前記第1のプロセッサが読み込んで実行するためのプログラムおよび当該プログラムが有効/無効/無効かつ未消去のうちいずれであるかを示すコードを記憶する記憶領域を複数記憶するメモリと、
    現在の電源電圧が第2の動作電圧の下限以上である場合に、前記コードが無効であることを示していた前記記憶領域に新たなプログラムを書き込むと共に、当該記憶領域に記憶されている前記コードに有効であることを示す情報を書き込み、前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域のコードに無効かつ未消去であることを示す情報を書き込む第2のプロセッサと、
    を備え、
    前記第2の動作電圧の下限は、前記第1の動作電圧の下限よりも低いことを特徴とする電子機器。
  2. 前記メモリは、前記記憶領域のうち前記コードが有効なものを読み込むブートストラップローダを記憶することを特徴とする請求項1に記載の電子機器。
  3. 前記コードの前記無効かつ未消去であることを示す情報は、前記有効であることを示す情報のビット値1のいずれかが、ビット値0に設定されており、
    前記コードの前記有効であることを示す情報は、前記無効であることを示す情報のビット値0のいずれかが、ビット値1に設定されている、
    ことを特徴とする請求項1又は2に記載の電子機器。
  4. 前記第2のプロセッサは、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域があれば、当該記憶領域を消去して、前記コードに無効を示す情報を書き込む、
    ことを特徴とする請求項1乃至3のいずれか1項に記載の電子機器。
  5. 前記第2のプロセッサは、プログラムを書き込む要因とは異なる要因で、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域を消去する、
    ことを特徴とする請求項4に記載の電子機器。
  6. 前記第2のプロセッサによりオン/オフが制御され、かつ電力を消費して駆動する負荷を更に備え、
    前記第2のプロセッサは、前記負荷の駆動をオフした状態で、前記コードが無効であることを示していた前記記憶領域にプログラムを書き込むと共に、当該記憶領域のコードに有効であることを示す情報を書き込み、前記コードが有効であることを示していた前記記憶領域のコードに無効かつ未消去であることを示す情報を書き込む、
    ことを特徴とする請求項1乃至5に記載の電子機器
  7. 前記メモリは、前記記憶領域のうち前記コードが有効なものを読み込むブートストラップローダを記憶することを特徴とする請求項6に記載の電子機器
  8. 前記第2のプロセッサは、前記負荷の駆動をオフした状態で、前記コードに無効かつ未消去であることを示していた前記記憶領域を消去する、
    ことを特徴とする請求項7に記載の電子機器
  9. 前記第2のプロセッサは、前記負荷の起動を禁止した状態で、プログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込み、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込む、
    ことを特徴とする請求項7又は8に記載の電子機器
  10. 前記第2のプロセッサは、午前0時から午前7時のうちいずれかに、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域を消去する、
    ことを特徴とする請求項6乃至9のうちいずれか1項に記載の電子機器
  11. 前記第2のプロセッサの処理能力は、前記第1のプロセッサの処理能力よりも低い、
    ことを特徴とする請求項6乃至9のうちいずれか1項に記載の電子機器
  12. 請求項1乃至11に記載の電子機器を備える電子時計。
  13. 現在の電源電圧が第1の動作電圧の下限以上である場合に動作する第1のプロセッサと、現在の電源電圧が第2の動作電圧の下限以上である場合に動作する第2のプロセッサとを備えた電子機器のプログラム書込方法であって、
    プログラムおよび当該プログラムの有効/無効/無効かつ未消去のうちいずれであるかを示すコードをそれぞれ記憶する複数の記憶領域のうち無効であることを示す前記コードが記憶されている前記記憶領域に新たなプログラムを書き込むステップと、
    前記新たなプログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込むステップと、
    前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込むステップと、
    を含み、
    前記第2の動作電圧の下限は、前記第1の動作電圧の下限よりも低いことを特徴とするプログラム書込方法。
  14. 現在の電源電圧が第1の動作電圧の下限以上である場合に動作する第1のプロセッサと、現在の電源電圧が第2の動作電圧の下限以上である場合に動作する第2のプロセッサとを備えた電子機器のコンピュータに実行させるプログラムであって、
    プログラムおよび当該プログラムの有効/無効/無効かつ未消去のうちいずれであるかを示すコードをそれぞれ記憶する複数の記憶領域のうち無効であることを示す前記コードが記憶されている前記記憶領域に新たなプログラムを書き込む手順、
    前記新たなプログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込む手順、
    前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込む手順、
    含むプログラムであって、
    前記第2の動作電圧の下限は、前記第1の動作電圧の下限よりも低いこと特徴とする。
JP2017052157A 2017-03-17 2017-03-17 電子機器、電子時計、プログラム書込方法、およびプログラム Active JP6903968B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017052157A JP6903968B2 (ja) 2017-03-17 2017-03-17 電子機器、電子時計、プログラム書込方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017052157A JP6903968B2 (ja) 2017-03-17 2017-03-17 電子機器、電子時計、プログラム書込方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2018156351A JP2018156351A (ja) 2018-10-04
JP6903968B2 true JP6903968B2 (ja) 2021-07-14

Family

ID=63718025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017052157A Active JP6903968B2 (ja) 2017-03-17 2017-03-17 電子機器、電子時計、プログラム書込方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP6903968B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5315744B2 (ja) * 2008-03-26 2013-10-16 セイコーエプソン株式会社 衛星信号受信装置および衛星信号受信装置の制御方法
JP6070360B2 (ja) * 2013-03-29 2017-02-01 沖電気工業株式会社 情報処理装置およびその処理方法
JP6471425B2 (ja) * 2014-08-07 2019-02-20 セイコーエプソン株式会社 通信装置、電子時計、および通信装置の制御方法
JP6550921B2 (ja) * 2015-05-22 2019-07-31 セイコーエプソン株式会社 電子時計、通信装置および通信システム

Also Published As

Publication number Publication date
JP2018156351A (ja) 2018-10-04

Similar Documents

Publication Publication Date Title
US11372472B2 (en) System on chip for reducing wake-up time, method of operating same, and computer system including same
US8130596B2 (en) Electronic circuit controlling the operation of peripheral members of the watch
US9164756B2 (en) Software updating process for an embedded device
CN106909211B (zh) 信息处理装置及控制方法
US20050177709A1 (en) Apparatus and method for updating firmware
US20130055267A1 (en) Information processing apparatus, computer-readable recording medium, and method for controlling information
JP2004303208A (ja) 発振器とこれを用いた電子機器
KR20130015643A (ko) 메모리 컨트롤러의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 메모리 시스템
JP6903968B2 (ja) 電子機器、電子時計、プログラム書込方法、およびプログラム
JP2022003571A (ja) データ管理装置、電子時計、データ管理方法、およびデータ管理プログラム
US20080082616A1 (en) Information processing apparatus and mail receiving method
JP7279824B2 (ja) 電子時計、領域判定方法、およびプログラム
JP7040081B2 (ja) タイマ計測装置、電子時計、タイマ計測方法及びプログラム
US20030065984A1 (en) Processor device equipped with flash memory and debugger apparatus
CN111026441B (zh) 电子设备、信息处理方法以及存储有信息处理程序的存储介质
JP2023090881A (ja) 電子時計、方法、およびプログラム
JP4702343B2 (ja) 携帯端末装置
JP7015897B2 (ja) 携帯型電子機器
JP6841106B2 (ja) 無線通信装置、電子時計、無線通信方法、及びプログラム
JP2023161696A (ja) リアルタイムクロックモジュール及び電子機器
JP2007218670A (ja) 時刻校正装置
CN116243997A (zh) 芯片系统及其启动方法、电子设备
JPH11231963A (ja) マイクロコンピュータ
JPH11231964A (ja) マイクロコンピュータ
JPH11231962A (ja) マイクロコンピュータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200306

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210209

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210405

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: 20210525

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210607

R150 Certificate of patent or registration of utility model

Ref document number: 6903968

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150