(57)【要約】【課題】プログラム更新に必要とされる電池容量の制限を緩和させる。【解決手段】電子時計１０は、ＧＰＳ受信ＩＣを構成するＣＰＵ５２と、プログラムと、このプログラムが有効／無効／無効かつ未消去のうちいずれであるかを示すコードをそれぞれ記憶する記憶領域０，１（６１，６２）を記憶するフラッシュメモリ６と、コードが無効であることを示す記憶領域に新たなプログラムを書き込むと共に、この記憶領域に記憶されているコードに有効であることを示す情報を書き込み、このコードが有効であることを示していた記憶領域のコードに無効かつ未消去であることを示す情報を書き込むＣＰＵ２１とを備える。【選択図】図１
2018156351.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
前記第１のプロセッサが読み込んで実行するためのプログラムおよび当該プログラムが有効／無効／無効かつ未消去のうちいずれであるかを示すコードを記憶する記憶領域を複数記憶するメモリと、
前記コードが無効であることを示していた前記記憶領域に新たなプログラムを書き込むと共に、当該記憶領域に記憶されている前記コードに有効であることを示す情報を書き込み、前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域のコードに無効かつ未消去であることを示す情報を書き込む第２のプロセッサと、
を備えることを特徴とする電子機器。
【請求項２】
前記メモリは、前記記憶領域のうち前記コードが有効なものを読み込むブートストラップローダを記憶することを特徴とする請求項１に記載の電子機器。
【請求項３】
前記コードの前記無効かつ未消去であることを示す情報は、前記有効であることを示す情報のビット値１のいずれかが、ビット値０に設定されており、
前記コードの前記有効であることを示す情報は、前記無効であることを示す情報のビット値０のいずれかが、ビット値１に設定されている、
ことを特徴とする請求項１又は２に記載の電子機器。
【請求項４】
前記第２のプロセッサは、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域があれば、当該記憶領域を消去して、前記コードに無効を示す情報を書き込む、
ことを特徴とする請求項１乃至３のいずれか１項に記載の電子機器。
【請求項５】
前記第２のプロセッサは、プログラムを書き込む要因とは異なる要因で、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域を消去する、
ことを特徴とする請求項４に記載の電子機器。
【請求項６】
第１のプロセッサと、
前記第１のプロセッサが読み込んで実行するためのプログラムおよび当該プログラムが有効／無効／無効かつ未消去のうちいずれであるかを示すコードを記憶する記憶領域を複数記憶するメモリと、
第２のプロセッサと、
前記第２のプロセッサによりオン／オフが制御され、かつ電力を消費して駆動する負荷と、
を備え、
前記第２のプロセッサは、前記負荷の駆動をオフした状態で、前記コードが無効であることを示していた前記記憶領域にプログラムを書き込むと共に、当該記憶領域のコードに有効であることを示す情報を書き込み、前記コードが有効であることを示していた前記記憶領域のコードに無効かつ未消去であることを示す情報を書き込む、
ことを特徴とする電子時計。
【請求項７】
前記メモリは、前記記憶領域のうち前記コードが有効なものを読み込むブートストラップローダを記憶することを特徴とする請求項６に記載の電子時計。
【請求項８】
前記コードの前記無効かつ未消去であることを示す情報は、前記有効を示す情報のビット値１のいずれかが、ビット値０に設定されており、
前記コードの前記有効であることを示す情報は、前記無効でありことを示す情報のビット値１のいずれかが、ビット値０に設定されている、
ことを特徴とする請求項６又は７に記載の電子時計。
【請求項９】
前記第２のプロセッサは、前記負荷の駆動をオフした状態で、前記コードに無効かつ未消去であることを示していた前記記憶領域を消去する、
ことを特徴とする請求項６又は７に記載の電子時計。
【請求項１０】
前記第２のプロセッサは、前記負荷の起動を禁止した状態で、プログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込み、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込む、
ことを特徴とする請求項６又は７に記載の電子時計。
【請求項１１】
前記第２のプロセッサは、午前０時から午前７時のうちいずれかに、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域を消去する、
ことを特徴とする請求項６乃至９のうちいずれか１項に記載の電子時計。
【請求項１２】
前記第２のプロセッサの動作保証電圧の下限は、前記第１のプロセッサの動作保証電圧の下限よりも低い、
ことを特徴とする請求項６乃至９のうちいずれか１項に記載の電子時計。
【請求項１３】
前記第２のプロセッサの処理能力は、前記第１のプロセッサの処理能力よりも低い、
ことを特徴とする請求項６乃至９のうちいずれか１項に記載の電子時計。
【請求項１４】
前記第２のプロセッサは、前記第１のプロセッサと同一である、
ことを特徴とする請求項６乃至９のうちいずれか１項に記載の電子時計。
【請求項１５】
プログラムおよび当該プログラムの有効／無効／無効かつ未消去のうちいずれであるかを示すコードをそれぞれ記憶する複数の記憶領域のうち無効であることを示す前記コードが記憶されている前記記憶領域に新たなプログラムを書き込むステップと、
前記新たなプログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込むステップと、
前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込むステップと、
を含むことを特徴とするプログラム書込方法。
【請求項１６】
プログラムおよび当該プログラムの有効／無効／無効かつ未消去のうちいずれであるかを示すコードをそれぞれ記憶する複数の記憶領域のうち無効であることを示す前記コードが記憶されている前記記憶領域に新たなプログラムを書き込む手順、
前記新たなプログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込む手順、
前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込む手順、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器、電子時計、プログラム書込方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、電子機器の発売後に不具合を修正させるため、または機能や性能を向上させるために、ユーザが電子機器のプログラムをアップデート可能なものが各種実用化されている。このような電子機器は、例えばインターネットに接続可能であり、ネットワーク経由でプログラムをアップデート（更新）する場合がある。
【０００３】
特許文献１には、制御ソフトウェアを更新する方法が開示されている。特許文献１の要約書には、「無線端末装置は自装置の運用に係る現用の制御ソフトウェアのバージョン情報を網側に接続するソフトウェア供給装置に通知し、ソフトウェア供給装置は通知されたバージョン情報を自己が蓄積管理する最新のバージョン情報と比較して更新の必要性有無を判定すると共に、更新が必要な場合は通知されたバージョンの改訂用に適合する新しい制御ソフトウェアを無線端末装置にダウンロードする。」と記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−０７８２５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、電子腕時計のように電池の容量が小さい装置が自身のプログラムを書き込もうとした場合、電池が充分に充電された状態でしか書き込みを実行することができない。つまり、このような装置では、プログラム更新のタイミングが制限される。また、電子腕時計で使用しているボタン電池は、電池容量が小さいので、プログラムの更新に失敗した場合、すぐに書き込みを再開できない。
【０００６】
そこで、近年の電子腕時計は、フラッシュメモリの２面の記憶領域にそれぞれプログラムを記憶し、一方の記憶領域への新たなプログラムの書き込みに失敗した場合は、他方の記憶領域の古いプログラムを起動している。これにより電子腕時計は、一方の記憶領域に対する書き込みに失敗した場合の対策を行っている。
【０００７】
しかし、書き込むべきプログラムのサイズが増大すると共に、プログラムを書き込むために必要とする電力が増える。このような場合、電子腕時計は、電池が充分に充電された状態でしかプログラムを更新できない。
そこで、本発明は、プログラム更新に必要とされる電池容量の制限を緩和させることを課題とする。
【課題を解決するための手段】
【０００８】
本発明は、上記目的を達成するため、
第１のプロセッサと、
前記第１のプロセッサが読み込んで実行するためのプログラムおよび当該プログラムが有効／無効／無効かつ未消去のうちいずれであるかを示すコードを記憶する記憶領域を複数記憶するメモリと、
前記コードが無効であることを示していた前記記憶領域に新たなプログラムを書き込むと共に、当該記憶領域に記憶されている前記コードに有効であることを示す情報を書き込み、前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域のコードに無効かつ未消去であることを示す情報を書き込む第２のプロセッサと、
を備えることを特徴とする電子機器である。
【発明の効果】
【０００９】
本発明によれば、プログラム更新に必要とされる電池容量の制限を緩和させることが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態における電子時計の概略を示す構成図である。
【図２】記憶領域０，１の構成を示す図である。
【図３】ブートストラップローダによる起動処理を示すフローチャートである。
【図４】プログラム書き込みにおけるモード遷移図である。
【図５】記憶領域１の消去を示すシーケンス図である。
【図６】データＡ１の構成を示す図である。
【図７】データＡ２の構成を示す図である。
【図８】記憶領域１のアップデートを示すシーケンス図である。
【図９】データＡ３の構成を示す図である。
【図１０】データＡ４の構成を示す図である。
【図１１】データＡ５の構成を示す図である。
【図１２】データＡ６の構成を示す図である。
【図１３】データＡ７の構成を示す図である。
【図１４】記憶領域０の消去を示すシーケンス図である。
【図１５】データＢ１の構成を示す図である。
【図１６】データＢ２の構成を示す図である。
【図１７】記憶領域０のアップデートを示すシーケンス図である。
【図１８】データＢ３の構成を示す図である。
【図１９】データＢ４の構成を示す図である。
【図２０】データＢ５の構成を示す図である。
【図２１】データＢ６の構成を示す図である。
【図２２】データＢ７の構成を示す図である。
【発明を実施するための形態】
【００１１】
以降、本発明を実施するための形態を、各図を参照して詳細に説明する。
電子機器は、新たなプログラムを書き込んだ後に、そのプログラムを有効化し、古いプログラムを無効化する。本実施形態は、古いプログラムに対するフラッシュメモリのイレースを行わず、ライトするだけで無効化を行う。これにより、書き込み時の消費電流を低減することができる。
【００１２】
図１は、本実施形態における電子時計１０の概略を示す構成図である。
電子時計１０は、特には限られないが、例えば腕に装着するためのバンドを備えた腕時計型の電子時計である。この電子時計１０は、マイクロコンピュータ２、操作部３１、表示部３２、電源部３３を含んで構成される。電子時計１０は更に、通信部４とアンテナ４１、ＧＰＳ（Global Positioning System）部５とアンテナ５１、フラッシュメモリ６、振動子７を含んで構成される。なお、図ではアンテナ４１，５１を“ＡＮＴ”と記載している。
【００１３】
操作部３１は、例えばリュウズやボタンであり、ユーザの操作情報をマイクロコンピュータ２に伝達する。表示部３２は、例えば文字盤と指針などであり、マイクロコンピュータ２の指示により現在時刻を含む各種情報を表示する。電源部３３は、この電子時計１０に電力を供給する。
【００１４】
電源部３３は、例えば、バッテリ、及び電圧変換回路を備える。電源部３３は、電子時計１０内の各部の動作電圧で電力を供給する。電源部３３のバッテリとしては、例えば、ボタン型乾電池などの一次電池が用いられる。或いは、電源部３３のバッテリとして、ソーラパネルと二次電池の組み合わせが用いられてもよい。
通信部４は、例えばBluetooth（登録商標） Low Energyに準拠した無線通信により、アンテナ４１、を介して外部と通信する。これにより電子時計１０は、新たなプログラムを外部から受信する。
【００１５】
ＧＰＳ部５は、ＧＰＳ受信ＩＣで構成されており、ＧＰＳ衛星から送信される極超短波の衛星信号をアンテナ５１によって受信し、現在位置や現在時刻を計測するものである。このＧＰＳ受信ＩＣは、ＣＰＵ（Central Processing Unit）５２とＲＡＭ（Random Access Memory）５３とを備える。ＣＰＵ５２は、後記するフラッシュメモリ６の記憶領域０（６１）および記憶領域１（６２）、ブートストラップローダ６３をＲＡＭ５３に読み込んで実行する第１のプロセッサである。
フラッシュメモリ６は、情報を読み出しおよび書き込み可能に記憶する不揮発性の半導体メモリである。このフラッシュメモリ６には、記憶領域０（６１）および記憶領域１（６２）、ブートストラップローダ６３を含んでいる。記憶領域０（６１）および記憶領域１（６２）は、ＣＰＵ５２がＲＡＭ５３に読み込んで実行するためのプログラムと、このプログラムの有効／無効／無効かつ未消去のうちいずれであるかを示すコードがそれぞれ記憶される。ブートストラップローダ６３は、ＣＰＵ５２に対して、記憶領域０（６１）および記憶領域１（６２）に記憶されたプログラムのうち有効なものを読み込んで起動する処理を行わせる。
【００１６】
なお、フラッシュメモリ６の指定されたアドレス空間を消去すると、そのアドレス空間のデータは全て0xFFとなる。フラッシュメモリ６の１回の消去単位は4KBytesなので、なので、それ以上のサイズのアドレス空間を消去するときには、4KBytes単位の消去を繰り返すとよい。
フラッシュメモリ６の消去済みのアドレス空間には、データを書き込むことができる。フラッシュメモリ６の１回の書き込み単位は256Bytesなので、それ以上のサイズのデータを書き込むときには、256Bytes単位の書き込みと読み込みと確認（ベリファイ）を繰り返すとよい。
【００１７】
或るデータが書き込まれたフラッシュメモリ６に別のデータを書き込むと、書き込み前のデータのビット１が、別のデータのビット０によって書き換わる。書き込み前のデータのビット０は、別のデータのビット１によっても書き換わらず、ビット０のままである。本実施形態では、このフラッシュメモリ６の性質を利用している。
【００１８】
ＣＰＵ２１は、プログラムを、無効であることを示す情報、有効であることを示す情報、無効かつ未消去であることを示すコードで管理する第２のプロセッサである。プログラムの無効かつ未消去を示すコードは、プログラムの有効を示す情報のビット１のいずれかが、ビット０に設定されたものである。これにより、フラッシュメモリ６の消去なしに、ＣＰＵ２１は、プログラムが無効である旨を設定できる。
ＣＰＵ２１の処理能力は、ＣＰＵ５２の処理能力よりも低い。またＣＰＵ２１の動作保証電圧の下限は、ＣＰＵ５２の動作保証電圧の下限よりも低い。電源電圧の低下によりＣＰＵ５２が動作しなくなった後でも、ＣＰＵ２１は動作することができる。
【００１９】
振動子７は、例えば、水晶振動子であり、後記する発振回路２５と組み合わされて固有の周波数信号を生成する。
マイクロコンピュータ２は、ＣＰＵ２１、ＲＡＭ２２、ＲＯＭ（Read Only Memory）２３を含んで構成される。マイクロコンピュータ２は更に、発振回路２５、分周回路２６、計時回路２７を含んで構成される。
【００２０】
ＣＰＵ２１は、ＲＡＭ２２をワーク領域としてＲＯＭ２３やフラッシュメモリ６に記憶されたプログラムによる各種演算処理を行い、電子時計１０の全体動作を統括制御するものである。ＲＯＭ２３は、ＣＰＵ２１によって書き込み可能なセルフ書込領域２４を含む。セルフ書込領域２４は不揮発性の記憶領域であり、ＲＡＭ２４は電源バックアップされているため、次回の起動時に参照する情報を好適に記憶できる。次回の起動時にＣＰＵ２１が参照する情報は、セルフ書込領域２４またはＲＡＭ２２に記憶される。
このＣＰＵ２１は、コードが無効であることを示す記憶領域に新たなプログラムを書き込むと共に、この記憶領域に記憶されているコードに有効であることを示す情報を書き込む。更にＣＰＵ２１は、コードが有効であることを示していた記憶領域のコードに無効かつ未消去であることを示す情報を書き込む。これによりＣＰＵ２１は、フラッシュメモリ６の消去なしに、記憶領域に記憶されたプログラムが無効である旨を設定できる。
【００２１】
発振回路２５は、振動子７と組み合わされて固有の周波数信号を生成して分周回路２６に出力する。発振回路２５としては、例えば、水晶発振回路が用いられる。
分周回路２６は、発振回路２５から入力された信号をＣＰＵ２１や計時回路２７が利用する各種周波数の信号に分周して出力する。
【００２２】
計時回路２７は、分周回路２６から入力された所定の周波数信号の回数を計数し、初期時刻に加算していくことで現在時刻を計数するカウンタ回路である。計時回路２７により計数される現在時刻は、ＣＰＵ２１により読み出されて時刻表示に用いられる。この時刻の計数は、ソフトウェア的に制御されてもよい。
【００２３】
図２は、記憶領域０，１の構成を示す図である。
これら記憶領域０と記憶領域１は、図１に示すフラッシュメモリ６に記憶されている。記憶領域０は、アドレス空間0x100000〜0x11FFFFに配置されている。この記憶領域０は、ファイルＸのヘッダと、ファイルＸの本体と、ファイルＹのヘッダと、ファイルＹの本体を含んでいる。なお、この図２では、記憶領域０と記憶領域１に、それぞれ別個のオフセットを記載している。
【００２４】
ファイルＸのヘッダは、128Bytesであり、アドレス空間0x100000〜0x10007Fに配置されている。ファイルＸのヘッダは、記憶領域０のオフセット0x000000〜0x00007Fに位置している。ファイルＸのヘッダには、ファイルＸ本体のサイズ、格納アドレス情報、有効／無効を示すコードが記憶される。アドレス空間0x10000C〜0x10000Fには、記憶領域０のファイルＸが有効／無効いずれであるかを示すコードが記憶される。ここでは有効を示す0x4D,0x30,0x50,0x00が記憶されている。
【００２５】
ファイルＸのヘッダと本体との間は、パディング領域であり、アドレス空間0x100080〜0x100FFFに配置されている。このパディング領域は、記憶領域０のオフセット0x000080〜0x000FFFに位置しており、全て0xFFのデータで埋められている。ファイルＸのヘッダサイズとパディング領域のサイズとの和は4KBytesであり、フラッシュメモリ６の消去単位と等しい。これによりファイルＸの本体に影響を与えず、ファイルＸのヘッダのみを消去することができる。
【００２６】
ファイルＸの本体は、アドレス空間0x101000〜0x10FFFFのいずれかに配置されている。ファイルＸの本体は、記憶領域０のオフセット0x001000〜0x00FFFFのいずれかに位置している。ファイルＸのヘッダに有効コードが記憶されているとき、ファイルＸの本体は有効である。
【００２７】
ファイルＹのヘッダは、128Bytesであり、アドレス空間0x110000〜0x11007Fに配置されている。ファイルＹのヘッダは、記憶領域０のオフセット0x010000〜0x01007Fに位置している。ファイルＹのヘッダには、ファイルＹ本体のサイズ、格納アドレス情報、有効／無効を示すコードが記憶される。ヘッダのうちアドレス空間0x11000C〜0x11000Fには、記憶領域０のファイルＹが有効／無効いずれであるかを示すコードが記憶される。ここでは有効を示す0x47,0x50,0x53,0x00が記憶されている。
【００２８】
ファイルＹのヘッダと本体との間は、パディング領域であり、アドレス空間0x110080〜0x110FFFに配置されている。このパディング領域は、記憶領域０のオフセット0x010080〜0x010FFFに位置しており、全て0xFFのデータで埋められている。ファイルＹのヘッダサイズとパディング領域のサイズとの和は4KBytesであり、フラッシュメモリ６の消去単位と等しい。これによりファイルＹの本体に影響を与えず、ファイルＹのヘッダのみを消去することができる。
【００２９】
ファイルＹの本体は、アドレス空間0x111000〜0x11FFFFのいずれかに配置されている。ファイルＹの本体は、記憶領域０のオフセット0x011000〜0x01FFFFのいずれかに位置している。ファイルＹのヘッダに有効コードが記憶されているとき、ファイルＹの本体は有効である。ＣＰＵ５２は、ブートストラップローダ６３を読み込んで実行することにより、記憶領域０のファイルＸ，Ｙの本体を組み合わせたプログラムをＲＡＭ５３に読み込み、読み込んだプログラムを実行する。
【００３０】
記憶領域１は、アドレス空間0x120000〜0x13FFFFに配置されている。この記憶領域１は、ファイルＸのヘッダと、ファイルＸの本体と、ファイルＹのヘッダと、ファイルＹの本体を含んでいる。
ファイルＸのヘッダは、128Bytesであり、アドレス空間0x120000〜0x12007Fに配置されている。ファイルＸのヘッダは、記憶領域１のオフセット0x000000〜0x00007Fに位置している。ファイルＸのヘッダには、ファイルＸ本体のサイズ、格納アドレス情報、有効／無効を示すコードが記憶される。ヘッダのうちアドレス空間0x12000C〜0x12000Fには、記憶領域１のファイルＸが有効／無効いずれであるかを示すコードが記憶される。ここでは無効を示す0xFF,0xFF,0xFF,0x00が記憶されている。
【００３１】
ファイルＸのヘッダと本体との間は、パディング領域であり、アドレス空間0x120080〜0x120FFFに配置されている。このパディング領域は、記憶領域１のオフセット0x000080〜0x000FFFに位置しており、全て0xFFのデータで埋められている。ファイルＸのヘッダサイズとパディング領域のサイズとの和は4KBytesであり、フラッシュメモリ６の消去単位と等しい。これによりファイルＸの本体に影響を与えず、ファイルＸのヘッダのみを消去することができる。
【００３２】
ファイルＸの本体は、アドレス空間0x121000〜0x12FFFFに配置されている。ファイルＸの本体は、記憶領域１のオフセット0x001000〜0x00FFFFのいずれかに位置している。ファイルＸのヘッダに無効コードが記憶されているとき、ファイルＸの本体は無効である。
【００３３】
ファイルＹのヘッダは、128Bytesであり、アドレス空間0x130000〜0x13007Fに配置されている。ファイルＹのヘッダは、記憶領域１のオフセット0x010000〜0x01007Fに位置している。ファイルＹのヘッダには、ファイルＹ本体のサイズ、格納アドレス情報、有効／無効を示すコードが記憶される。ヘッダのうちアドレス空間0x13000C〜0x13000Fには、記憶領域１のファイルＹが有効／無効／無効かつ未消去のいずれであるかを示すコードが記憶される。ここでは無効を示す0xFF,0xFF,0xFF,0x00が記憶されている。
【００３４】
ファイルＹのヘッダと本体との間は、パディング領域であり、アドレス空間0x130080〜0x130FFFに配置されている。このパディング領域は、記憶領域１のオフセット0x010080〜0x010FFFに位置しており、全て0xFFのデータで埋められている。ファイルＹのヘッダサイズとパディング領域のサイズとの和は4KBytesであり、フラッシュメモリ６の消去単位と等しい。これによりファイルＹの本体に影響を与えず、ファイルＹのヘッダのみを消去することができる。
【００３５】
ファイルＹの本体は、アドレス空間0x131000〜0x13FFFFに配置されている。ファイルＹの本体は、記憶領域１のオフセット0x011000〜0x01FFFFのいずれかに位置している。ファイルＹのヘッダに無効コードが記憶されているとき、ファイルＹの本体は無効である。ＣＰＵ５２は、ブートストラップローダ６３を読み込んで実行することにより、記憶領域１のファイルＸ，Ｙの本体を組み合わせたプログラムをＲＡＭ５３に読み込み、読み込んだプログラムを実行する。
【００３６】
図３は、ブートストラップローダ６３による起動処理を示すフローチャートである。
マイクロコンピュータ２が電源リセットされると、ＣＰＵ５２は、ブートストラップローダ６３を読み込んで実行し、図３の起動処理を開始する。
ＣＰＵ５２は、記憶領域１のファイルＸのヘッダを読み込んだのち（ステップＳ１０）、ファイルＹのヘッダを読み込む（ステップＳ１１）。ＣＰＵ５２は、記憶領域０のファイルＸのヘッダを読み込んだのち（ステップＳ１２）、ファイルＹのヘッダを読み込む（ステップＳ１３）。
【００３７】
ステップＳ１４において、ＣＰＵ５２は、記憶領域１が有効であり、かつ記憶領域０が無効であるか否かを判定する。つまりＣＰＵ５２は、記憶領域１のファイルＸのヘッダとファイルＹのヘッダの両方に有効コードが記憶されているならば、記憶領域１が有効であると判定する。ＣＰＵ５２は、記憶領域０のファイルＸのヘッダとファイルＹのヘッダの両方に無効コードが記憶されているならば、記憶領域０が無効であると判定する。ＣＰＵ５２は、記憶領域１が有効かつ記憶領域０が無効ならば（ステップＳ１４→Ｙｅｓ）、記憶領域１を読み込んで起動し（ステップＳ１５）、図３の処理を終了する。それ以外の場合（ステップＳ１４→Ｎｏ）、ＣＰＵ５２は、ステップＳ１６の処理に進む。
【００３８】
ステップＳ１６において、ＣＰＵ５２は、記憶領域０が有効であり、かつ記憶領域１が無効であるか否かを判定する。つまりＣＰＵ５２は、記憶領域０のファイルＸのヘッダとファイルＹのヘッダの両方に有効コードが記憶されているならば、記憶領域０が有効であると判定する。ＣＰＵ５２は、記憶領域１のファイルＸのヘッダとファイルＹのヘッダの両方に無効コードが記憶されているならば、記憶領域１が無効であると判定する。ＣＰＵ５２は、記憶領域０が有効かつ記憶領域１が無効ならば（ステップＳ１６→Ｙｅｓ）、記憶領域０を読み込んで起動し（ステップＳ１７）、図３の処理を終了する。それ以外の場合（ステップＳ１６→Ｎｏ）、ＣＰＵ５２は、異常終了の処理を実行する。
【００３９】
なお、記憶領域１のファイルＸのヘッダが有効であり、かつファイルＹのヘッダが無効である場合には、記憶領域１の有効／無効が判定できない。記憶領域１のファイルＸのヘッダが全て0xFFである場合や、ファイルＹのヘッダが全て0xFFである場合も同様である。記憶領域１のファイルＸのヘッダが無効であり、かつファイルＹのヘッダが有効である場合も同様である。同様に、記憶領域０のファイルＸのヘッダが有効であり、かつファイルＹのヘッダが無効である場合には、記憶領域０の有効／無効が判定できない。記憶領域０のファイルＸのヘッダが全て0xFFである場合や、ファイルＹのヘッダが全て0xFFである場合も同様である。記憶領域０のファイルＸのヘッダが無効であり、かつファイルＹのヘッダが有効である場合も同様である。このような場合、ステップＳ１４，１６の判定は成立しないため、ＣＰＵ５２は異常終了の処理を実行する。
【００４０】
このように、電子時計１０は、フラッシュメモリ６の記憶領域０，１にそれぞれプログラムを記憶可能とし、記憶領域０、記憶領域１の順番でプログラムの有効／無効を判断し、有効なプログラムを起動している。これにより電子時計１０は、いずれかの記憶領域に対する書き込みに失敗した場合の対策を行っている。
【００４１】
図４は、プログラム書き込みにおけるモード遷移図である。
工場出荷時における電子時計１０の状態は、モードＭ１２である。モードＭ１２において、記憶領域０のファイルＸ，Ｙは有効であり、ＣＰＵ５２は記憶領域０からブート（起動）可能である。記憶領域１のファイルＸ，Ｙは無効であり、記憶領域１はアップデート（更新）可能である。モードＭ１２において、ＣＰＵ２１がプログラムをアップデート（更新）すると、モードＭ１３に遷移する。このアップデートは、例えばユーザの指示によって行われる。
【００４２】
モードＭ１３において、記憶領域０のファイルＸ，Ｙは無効かつ未消去であり、記憶領域０はアップデート（更新）不可である。記憶領域１のファイルＸ，Ｙは有効であり、ＣＰＵ５２は記憶領域１からブート（起動）可能である。モードＭ１３において、ＣＰＵ２１が記憶領域０を消去すると、モードＭ１０に遷移する。この記憶領域０の消去は、例えば深夜や早朝など、電子時計１０を使用していないときに行われる。
【００４３】
モードＭ１０において、記憶領域０のファイルＸ，Ｙは無効であり、記憶領域０はアップデート（更新）可能である。記憶領域１のファイルＸ，Ｙは有効であり、ＣＰＵ５２は記憶領域１からブート（起動）可能である。モードＭ１０において、ＣＰＵ２１がプログラムをアップデート（更新）すると、モードＭ１１に遷移する。このアップデートは、例えばユーザの指示によって行われる。
【００４４】
モードＭ１１において、記憶領域０のファイルＸ，Ｙは有効であり、ＣＰＵ５２は記憶領域０からブート（起動）可能である。記憶領域１のファイルＸ，Ｙは無効かつ未消去であり、記憶領域１はアップデート（更新）不可である。モードＭ１１において、ＣＰＵ２１が記憶領域１を消去すると、モードＭ１２に遷移する。この記憶領域１の消去は、例えば深夜や早朝など、電子時計１０を使用していないときに行われる。
【００４５】
プログラムのアップデートは、ユーザの指示によって開始することが望ましい。また、記憶領域０，１の消去は、ユーザがこの電子時計１０を操作していない時に実行することが望ましく、例えば午前０時から午前７時までの間のいずれかである。
【００４６】
図５は、記憶領域１の消去を示すシーケンス図であり、後記する図６、図７を適宜参照しつつ説明する。記憶領域１の消去前は、図４に示したモードＭ１１である。この消去により、電子時計１０は、モードＭ１２に遷移する。つまりＣＰＵ２１は、記憶領域０，１のうちコードに無効かつ未消去を示す情報が書き込まれた記憶領域があれば、この記憶領域を消去して、コードに無効を示す情報を書き込む。ここでＣＰＵ２１は、記憶領域１が無効であると判定する。ＣＰＵ２１が記憶領域１を消去する要因は、例えば時刻が深夜や早朝（午前０時〜午前７時）であるというものであり、プログラムの書き込み要因とは異なる。
【００４７】
ステップＳ２０において、ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に記憶されていたファイルＸ，Ｙの本体を消去（イレース）する。これにより、記憶領域１のファイルＸ，Ｙの本体は、0xFFで消去される。
ＣＰＵ２１は、フラッシュメモリ６の記憶領域１のファイルＸ，Ｙの本体が配置されていた範囲を読み込み（ステップＳ２１）、これらの範囲が正しく消去されたか否かをベリファイ（確認）する（ステップＳ２２）。
【００４８】
図４のモードＭ１１から、ステップＳ２２の処理を実行するまでの間に電源オフされて再び電源オンした場合、ＣＰＵ５２は、ブートストラップローダ６３により、記憶領域０のファイルＸ，Ｙの本体を読み込んで起動する。
ステップＳ２３〜Ｓ３４を実行している期間は、ＣＰＵ２１がＧＰＳ受信を禁止している。この期間において、ＣＰＵ２１は、プログラムの有効／無効コードとして0xFF,0xFF,0xFF,0x00を書き込んでいる。この有効／無効コードが不定であるため、ＣＰＵ５２がプログラムを正常に起動できないおそれがあるためである。更に、ＧＰＳ受信ＩＣの消費電流により、電池の電圧が低下するおそれがあるためである。
【００４９】
ステップＳ２３〜Ｓ２８は、記憶領域１のファイルＸのヘッダを変更する処理である。ステップＳ２９〜Ｓ３４は、記憶領域１のファイルＹのヘッダを変更する処理である。ＣＰＵ２１は、これらヘッダを変更する一連の処理中に電源オフなどが発生しないように、ユーザの操作情報等を受け付けない。
【００５０】
ステップＳ２３において、ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＸのヘッダを消去（イレース）する。フラッシュメモリ６の消去単位は4KBytesなので、アドレス空間0x120000〜0x120FFFが0xFFで消去される。これによりファイルＸのヘッダと、その直後のパディング領域が消去される。ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＸのヘッダを読み込み（ステップＳ２４）、これら領域が正しく消去されたか否かをベリファイ（確認）する（ステップＳ２５）。
【００５１】
このとき、記憶領域１のファイルＸのヘッダは全て0xFFかつ記憶領域０が有効である。ブートストラップローダ６３によるＣＰＵ５２の起動処理は、記憶領域１のファイルＸのヘッダが全て0xFFならば異常終了する。よって、ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＸのヘッダに、図６に示したデータＡ１を書き込む（ステップＳ２６）。これにより、ＣＰＵ５２は、起動処理を正しく行えるようになる。
【００５２】
図６のデータＡ１は、記憶領域１のアドレス空間0x120000〜0x1200FFに書き込まれるものである。以下の図ではデータの構成を、先頭からのデータのオフセットと、データの値と意味と種別とで示し、更に各データが書き込まれるアドレス空間を示している。
【００５３】
データＡ１は、記憶領域１のＸヘッダ固定値情報と、ファイルＸの無効を意味する0xFF,0xFF,0xFF,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するＸヘッダ固定値情報は、アドレス空間0x120000〜0x12000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するＸヘッダ固定値情報は、アドレス空間0x120010〜0x12007Fに書き込まれる。
【００５４】
オフセット0x00000C〜0x00000Fに位置するファイルＸの無効コードは、アドレス空間0x12000C〜0x12000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x120080〜0x1200FFに書き込まれる。
【００５５】
図５に戻り、ステップＳ２６の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＸのヘッダを読み込み（ステップＳ２７）、これら記憶領域にデータＡ１が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ２８）。
ステップＳ２９において、ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＹのヘッダを消去（イレース）する。フラッシュメモリ６の消去単位は4KBytesなので、アドレス空間0x130000〜0x130FFFが0xFFで消去される。これによりファイルＹのヘッダと、その直後のパディング領域が消去される。ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＹのヘッダを読み込み（ステップＳ３０）、これら記憶領域が正しく消去されたか否かをベリファイ（確認）する（ステップＳ３１）。
【００５６】
このとき、記憶領域１のファイルＹのヘッダは全て0xFFかつ記憶領域０が有効である。ブートストラップローダ６３によるＣＰＵ５２の起動処理は、記憶領域１のファイルＹのヘッダが全て0xFFならば異常終了する。よって、ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＹのヘッダに、図７に示したデータＡ２を書き込む（ステップＳ３２）。これにより、ＣＰＵ５２は、起動処理を正しく行えるようになる。
【００５７】
図７のデータＡ２は、記憶領域１のアドレス空間0x130000〜0x1300FFに書き込まれるものである。データＡ２は、記憶領域１のＹヘッダ固定値情報と、ファイルＹの無効を意味する0xFF,0xFF,0xFF,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するＹヘッダ固定値情報は、アドレス空間0x130000〜0x13000Bに書き込まれる。記憶領域１のオフセット0x000010〜0x00007Fに位置するＹヘッダ固定値情報は、アドレス空間0x130010〜0x13007Fに書き込まれる。
【００５８】
オフセット0x00000C〜0x00000Fに位置するファイルＹの無効コードは、アドレス空間0x13000C〜0x13000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x130080〜0x1300FFに書き込まれる。
【００５９】
図５に戻り、ステップＳ３２の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＹのヘッダを読み込み（ステップＳ３３）、これら記憶領域にデータＡ２が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ３４）。ステップＳ３４の後、ＣＰＵ２１は、ＧＰＳ受信禁止を解除する。これ以降、ＣＰＵ５２は、記憶領域０に記憶されたプログラムで起動することが可能となる。
【００６０】
その後ＣＰＵ２１は、書換準備完了フラグをオンし（ステップＳ３５）、記憶領域１の消去済みフラグをオンする（ステップＳ３６）。書換準備完了フラグと記憶領域１の消去済みフラグは、セルフ書込領域２４またはＲＡＭ２２に記憶される。
【００６１】
図８は、記憶領域１のアップデートを示すシーケンス図である。図５に示した一連の処理が完了していると、ＣＰＵ２１は、ユーザの指示に基づき、プログラム・アップデートを開始する。このように、ＣＰＵ２１が記憶領域１をアップデートする要因は、記憶領域１を消去する要因とは異なる。
【００６２】
最初、ＣＰＵ２１は、通信部４により、不図示の外部装置に、現在のプログラムのバージョン番号を送信する（ステップＳ４０）。この外部装置とは、例えばタブレット端末やスマートフォンなどである。外部装置は、インターネット経由でサーバにアクセスし、現バージョンよりも新しいバージョンのプログラムがあれば、これをダウンロードする。以下、新しいバージョンのプログラムが存在した場合について説明する。
【００６３】
不図示の外部装置は、電子時計１０に新しいプログラムのバージョン番号とファイルサイズを送信する。ＣＰＵ２１は、通信部４により、この外部装置から新しいプログラムのバージョン番号とファイルサイズを受信する（ステップＳ４１）。なお、図ではプログラムのことを“ＰＲＧ”と省略記載している場合がある。
【００６４】
次いで、ＣＰＵ２１は、外部装置からデータＡ３（図９参照）を受信しつつ、フラッシュメモリ６の記憶領域１に受信したデータＡ３を書き込む（ステップＳ４２）。
【００６５】
図９のデータＡ３は、記憶領域１のアドレス空間0x120000〜0x13FFFFに書き込まれるものである。データＡ３は、ファイルＸのヘッダ情報およびファイルＸ本体、ファイルＹのヘッダ情報およびファイルＸ本体、それ以外のパディングデータを含んでいる。ファイルＸのヘッダ情報は、オフセット0x000000〜0x00007Fに位置し、かつファイルＸの無効コードを含んでいる。ファイルＸ本体は、オフセット0x001000〜0x00FFFFに位置している。ファイルＹのヘッダ情報は、オフセット0x010000〜0x01007Fに位置し、ファイルＹの無効コードを含んでいる。ファイルＹ本体は、オフセット0x011000〜0x01FFFFに位置している。これにより、データＡ３の書き込みが異常により中断した場合、記憶領域１に書き込まれたファイルＸ，Ｙは無効なので、ＧＰＳ部５のＣＰＵ５２は、記憶領域０に書き込まれたファイルＸ，Ｙで起動可能である。
【００６６】
図８のステップＳ４３に戻って説明する。ＣＰＵ２１は、記憶領域１からデータを読み込み、これがデータＡ３と一致していることを確認（ベリファイ）する（ステップＳ４４）。これらステップＳ４２〜Ｓ４４の処理は、実際には256Bytes毎に繰り返されるが、ここでは記載を省略している。
【００６７】
ＣＰＵ２１は、外部装置から送信されるデータＡ３を256Bytes毎に受信しながら、フラッシュメモリ６の記憶領域１に書き込む。例えば、ＣＰＵ２１が最初の256Bytesが正常に受信し、その後の256Bytesの受信に失敗した場合を考える。このときＣＰＵ２１は、最初の256Bytesだけをフラッシュメモリ６の記憶領域１に書き込み、その後の処理を中断する。ステップＳ４０〜Ｓ４４を実行している期間において、電子時計１０がパワーオンリセットされたならば、ＣＰＵ５２は、記憶領域０で起動する。
【００６８】
ステップＳ４５〜Ｓ５７を実行している期間は、ＣＰＵ２１がＧＰＳ受信を禁止している。この期間において、ＣＰＵ２１は、プログラムの有効／無効コードとして0xFF,0xFF,0xFF,0x00を書き込んでいる。例えばＣＰＵ２１は、この期間において記憶領域１に有効コードを書込み、記憶領域０に無効コードを書き込む。この有効／無効コードが不定であるため、ＣＰＵ５２がプログラムを正常に起動できないおそれがあるためである。更に、ＧＰＳ受信ＩＣの消費電流により、電池の電圧が低下するおそれがあるためである。
【００６９】
ＣＰＵ２１は、記憶領域１のファイルＹを有効化するため、フラッシュメモリ６の記憶領域１のＹヘッダに、データＡ４（図１０）を書き込む（ステップＳ４５）。
【００７０】
図１０のデータＡ４は、記憶領域１のアドレス空間0x130000〜0x1300FFに書き込まれるものである。データＡ４は、記憶領域１のＹヘッダ固定値情報と、ファイルＹの有効コードを意味する0x47,0x50,0x53,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するＹヘッダ固定値情報は、アドレス空間0x130000〜0x13000Bに書き込まれる。記憶領域１のオフセット0x000010〜0x00007Fに位置するＹヘッダ固定値情報は、アドレス空間0x130010〜0x13007Fに書き込まれる。
【００７１】
オフセット0x00000C〜0x00000Fに位置するファイルＹの有効コードは、アドレス空間0x13000C〜0x13000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x130080〜0x1300FFに書き込まれる。
【００７２】
図８に戻り、ステップＳ４５の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＹのヘッダを読み込み（ステップＳ４６）、これら記憶領域にデータＡ４が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ４７）。
ＣＰＵ２１は、記憶領域１のファイルＸを有効化するため、フラッシュメモリ６の記憶領域１のＸヘッダに、データＡ５（図１１）を書き込む（ステップＳ４８）。
【００７３】
図１１のデータＡ５は、記憶領域１のアドレス空間0x120000〜0x1200FFに書き込まれるものである。データＡ５は、記憶領域１のＸヘッダ固定値情報と、ファイルＸの有効コードを意味する0x4D,0x30,0x50,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するＸヘッダ固定値情報は、アドレス空間0x120000〜0x12000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するＸヘッダ固定値情報は、アドレス空間0x120010〜0x12007Fに書き込まれる。
【００７４】
オフセット0x00000C〜0x00000Fに位置するファイルＸの有効コードは、アドレス空間0x12000C〜0x12000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x120080〜0x1200FFに書き込まれる。
【００７５】
図８に戻り、ステップＳ４８の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＸのヘッダを読み込み（ステップＳ４９）、これら記憶領域にデータＡ５が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ５０）。ここでデータＡ５が正しく書き込まれたならば、ＧＰＳ部５のＣＰＵ５２は、記憶領域１に書き込まれたファイルＸ，Ｙで起動可能である。
【００７６】
ＣＰＵ２１は、記憶領域０のファイルＸを無効化するため、フラッシュメモリ６の記憶領域０のＸヘッダに、データＡ６（図１２）を書き込む（ステップＳ５１）。
【００７７】
図１２のデータＡ６は、記憶領域０のアドレス空間0x100000〜0x1000FFに書き込まれるものである。データＡ６は、記憶領域０のＸヘッダ固定値情報と、ファイルＸの無効かつ未消去を意味する0x40,0x10,0x40,0x00（第２無効コード）と、全て0xFFであるパディングデータを含んでいる。この第２無効コードは、有効コードに含まれるビット１のいずれかにビット０を書き込んだものである。このように第２無効コードを設定することで、記憶領域０のファイルＸのヘッダ情報を消去することなく、このファイルＸを無効化することができる。
【００７８】
オフセット0x000000〜0x00000Bに位置するＸヘッダ固定値情報は、アドレス空間0x100000〜0x10000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するＸヘッダ固定値情報は、アドレス空間0x100010〜0x10007Fに書き込まれる。
【００７９】
オフセット0x00000C〜0x00000Fに位置するファイルＸの第２無効コードは、アドレス空間0x10000C〜0x10000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x100080〜0x1000FFに書き込まれる。
【００８０】
図８に戻り、ステップＳ５１の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＸのヘッダを読み込み（ステップＳ５２）、これら記憶領域にデータＡ６が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ５３）。
ＣＰＵ２１は、記憶領域０のファイルＹを無効化するため、フラッシュメモリ６の記憶領域０のＹヘッダに、データＡ７（図１３）を書き込む（ステップＳ５４）。
【００８１】
図１３のデータＡ７は、記憶領域０のアドレス空間0x110000〜0x1100FFに書き込まれるものである。データＡ７は、記憶領域０のＹヘッダ固定値情報と、ファイルＹの無効かつ未消去を意味する0x40,0x10,0x40,0x00（第２無効コード）と、全て0xFFであるパディングデータを含んでいる。
【００８２】
オフセット0x000000〜0x00000Bに位置するＹヘッダ固定値情報は、アドレス空間0x110000〜0x11000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するＹヘッダ固定値情報は、アドレス空間0x110010〜0x11007Fに書き込まれる。
【００８３】
オフセット0x00000C〜0x00000Fに位置するファイルＹの第２無効コードは、アドレス空間0x11000C〜0x11000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x110080〜0x1100FFに書き込まれる。
【００８４】
図８に戻り、ステップＳ５４の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＹのヘッダを読み込み（ステップＳ５５）、これら記憶領域にデータＡ７が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ５６）。
ＣＰＵ２１は、プログラム有効領域として記憶領域１の開始アドレスを設定する（ステップＳ５７）。プログラム有効領域が記憶されるのは、セルフ書込領域２４とＲＡＭ２２のいずれであってもよい。
ステップＳ５７の処理が終了すると、ＣＰＵ２１がＧＰＳ受信を再び許可する。
【００８５】
図１４は、記憶領域０の消去を示すシーケンス図であり、後記する図１５、図１６を適宜参照しつつ説明する。記憶領域０の消去前は、図４に示したモードＭ１３である。この消去により、電子時計１０は、モードＭ１０に遷移する。つまりＣＰＵ２１は、記憶領域０，１のうちコードに無効を示す情報が書き込まれた記憶領域があれば、この記憶領域を消去して、コードに無効を示す情報を書き込む。ここでＣＰＵ２１は、記憶領域０が無効であると判定する。ＣＰＵ２１が記憶領域０を消去する要因は、例えば時刻が深夜（午前０時〜午前７時）であるというものであり、プログラムの書き込み要因とは異なる。
【００８６】
ステップＳ６０において、ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に記憶されていたファイルＸ，Ｙの本体を消去（イレース）する。これにより、記憶領域０のファイルＸ，Ｙの本体は、0xFFで消去される。
ＣＰＵ２１は、フラッシュメモリ６の記憶領域０のファイルＸ，Ｙの本体が配置されていた範囲を読み込み（ステップＳ６１）、これらの範囲が正しく消去されたか否かをベリファイ（確認）する（ステップＳ６２）。
【００８７】
図１４の処理が開始する前のモードＭ１３と、上記したステップＳ６２の処理を実行するまでの間において、マイクロコンピュータ２がリセットされたならば、ＣＰＵ５２は、ブートストラップローダ６３により、記憶領域１のファイルＸ，Ｙの本体を読み込んで起動する。
【００８８】
ステップＳ６３〜Ｓ７４を実行している期間は、ＣＰＵ２１がＧＰＳ受信を禁止している。この期間において、ＣＰＵ２１は、プログラムの有効／無効コードとして0xFF,0xFF,0xFF,0x00を書き込んでいる。この有効／無効コードが不定であるため、ＣＰＵ２１がプログラムを正常に起動できないおそれがあるためである。
【００８９】
ステップＳ６３において、ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＸのヘッダを消去（イレース）する。フラッシュメモリ６の消去単位は4KBytesなので、アドレス空間0x100000〜0x100FFFが0xFFで消去される。これによりファイルＸのヘッダと、その直後のパディング領域が消去される。ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＸのヘッダを読み込み（ステップＳ６４）、これら記憶領域が正しく消去されたか否かをベリファイ（確認）する（ステップＳ６５）。
【００９０】
このとき、記憶領域０のファイルＸのヘッダは全て0xFFかつ記憶領域１が有効である。よって、ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＸのヘッダに、図１５に示したデータＢ１を書き込む（ステップＳ６６）。これにより、ＣＰＵ２１は、バックアップを正しく行えるようにする。
【００９１】
図１５のデータＢ１は、記憶領域０のアドレス空間0x100000〜0x1000FFに書き込まれるものである。データＢ１は、記憶領域０のＸヘッダ固定値情報と、ファイルＸの無効を意味する0xFF,0xFF,0xFF,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するＸヘッダ固定値情報は、アドレス空間0x100000〜0x10000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するＸヘッダ固定値情報は、アドレス空間0x100010〜0x10007Fに書き込まれる。
【００９２】
オフセット0x00000C〜0x00000Fに位置するファイルＸの無効コードは、アドレス空間0x10000C〜0x10000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x100080〜0x1000FFに書き込まれる。
【００９３】
図１４に戻り、ステップＳ６６の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＸのヘッダを読み込み（ステップＳ６７）、これら記憶領域にデータＢ１が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ６８）。
ステップＳ６９において、ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＹのヘッダを消去（イレース）する。フラッシュメモリ６の消去単位は4KBytesなので、アドレス空間0x110000〜0x110FFFが0xFFで消去される。これによりファイルＹのヘッダと、その直後のパディング領域が消去される。ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＹのヘッダを読み込み（ステップＳ７０）、これら記憶領域が正しく消去されたか否かをベリファイ（確認）する（ステップＳ７１）。
【００９４】
このとき、記憶領域０のファイルＹのヘッダは全て0xFFかつ記憶領域１が有効である。よって、ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＹのヘッダに、図１６に示したデータＢ２を書き込む（ステップＳ７２）。
【００９５】
図１６のデータＢ２は、記憶領域０のアドレス空間0x110000〜0x1100FFに書き込まれるものである。データＢ２は、記憶領域０のＹヘッダ固定値情報と、ファイルＹの無効を意味する0xFF,0xFF,0xFF,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するＹヘッダ固定値情報は、アドレス空間0x110000〜0x11000Bに書き込まれる。記憶領域０のオフセット0x000010〜0x00007Fに位置するＹヘッダ固定値情報は、アドレス空間0x110010〜0x11007Fに書き込まれる。
【００９６】
オフセット0x00000C〜0x00000Fに位置するファイルＹの無効コードは、アドレス空間0x11000C〜0x11000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x110080〜0x1100FFに書き込まれる。
【００９７】
図１４に戻り、ステップＳ７２の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＹのヘッダを読み込み（ステップＳ７３）、これら記憶領域にデータＢ２が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ７４）。ステップＳ７４の後、ＣＰＵ２１は、ＧＰＳ受信禁止を解除する。これ以降、ＣＰＵ５２は、記憶領域１に記憶されたプログラムで起動することが可能となる。
【００９８】
その後ＣＰＵ２１は、書換準備完了フラグをオンし（ステップＳ７５）、記憶領域０の消去済みフラグをオンする（ステップＳ７６）。書換準備完了フラグと記憶領域０の消去済みフラグは、セルフ書込領域２４またはＲＡＭ２２に記憶される。これにより電子時計１０は、新たなプログラムの更新を受け付けることができる。
【００９９】
図１７は、記憶領域０のアップデートを示すシーケンス図である。図１４に示した一連の処理が完了していると、ＣＰＵ２１は、ユーザの指示に基づき、プログラム・アップデートを開始する。このように、ＣＰＵ２１が記憶領域０をアップデートする要因は、記憶領域０を消去する要因とは異なる。
【０１００】
最初、ＣＰＵ２１は、通信部４により、不図示の外部装置に、現在のプログラムのバージョン番号を送信する（ステップＳ８０）。この外部装置とは、例えばタブレット端末やスマートフォンなどである。外部装置は、インターネット経由でサーバにアクセスし、現バージョンよりも新しいバージョンのプログラムがあれば、これをダウンロードする。以下、新しいバージョンのプログラムが存在した場合について説明する。
【０１０１】
不図示の外部装置は、電子時計１０に新しいプログラムのバージョン番号とファイルサイズを送信する。ＣＰＵ２１は、通信部４により、この外部装置から新しいプログラムのバージョン番号とファイルサイズを受信する（ステップＳ８１）。
次いで、ＣＰＵ２１は、外部装置からデータＢ３（図１８参照）を受信しつつ、フラッシュメモリ６の記憶領域０に受信したデータＢ３を書き込む（ステップＳ８２）。
【０１０２】
図１８のデータＢ３は、記憶領域０のアドレス空間0x100000〜0x11FFFFに書き込まれるものである。データＢ３は、ファイルＸのヘッダ情報およびファイルＸ本体、ファイルＹのヘッダ情報およびファイルＸ本体、それ以外のパディングデータを含んでいる。ファイルＸのヘッダ情報は、オフセット0x000000〜0x00007Fに位置し、かつファイルＸの無効コードを含んでいる。ファイルＸ本体は、オフセット0x001000〜0x00FFFFに位置している。ファイルＹのヘッダ情報は、オフセット0x010000〜0x01007Fに位置し、ファイルＹの無効コードを含んでいる。ファイルＹ本体は、オフセット0x011000〜0x01FFFFに位置している。これにより、データＢ３の書き込みが異常により中断した場合、記憶領域０に書き込まれたファイルＸ，Ｙは無効なので、電子時計１０のＣＰＵ２１は、記憶領域１に書き込まれたファイルＸ，Ｙで起動可能である。
【０１０３】
図１７のステップＳ８３に戻って説明する。ＣＰＵ２１は、記憶領域０からデータを読み込み、これがデータＢ３と一致していることを確認（ベリファイ）する（ステップＳ８４）。これらステップＳ８２〜Ｓ８４の処理は、実際には256Bytes毎に繰り返されるが、ここでは記載を省略している。
【０１０４】
ＣＰＵ２１は、外部装置から送信されるデータＡ３を256Bytes毎に受信しながら、フラッシュメモリ６の記憶領域１に書き込む。例えば、ＣＰＵ２１が最初の256Bytesが正常に受信し、その後の256Bytesの受信に失敗した場合を考える。このときＣＰＵ２１は、最初の256Bytesだけをフラッシュメモリ６の記憶領域１に書き込み、その後の処理を中断する。ステップＳ８０〜Ｓ８４を実行している期間において、電子時計１０がパワーオンリセットされたならば、ＣＰＵ２１は、記憶領域１で起動する。
【０１０５】
ＣＰＵ２１は、記憶領域０のファイルＹを有効化するため、フラッシュメモリ６の記憶領域０のＹヘッダに、データＢ４（図１９）を書き込む（ステップＳ８５）。
ステップＳ８５〜Ｓ９７を実行している期間は、ＣＰＵ２１がＧＰＳ受信を禁止している。この期間において、ＣＰＵ２１は、プログラムの有効／無効コードとして0xFF,0xFF,0xFF,0x00を書き込んでいる。例えばＣＰＵ２１は、この期間において記憶領域０に有効コードを書込み、記憶領域１に無効コードを書き込む。この有効／無効コードが不定であるため、ＣＰＵ２１がプログラムを正常に起動できないおそれがあるためである。
【０１０６】
図１９のデータＢ４は、記憶領域０のアドレス空間0x110000〜0x1100FFに書き込まれるものである。データＢ４は、記憶領域０のＹヘッダ固定値情報と、ファイルＹの有効コードを意味する0x47,0x50,0x53,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するＹヘッダ固定値情報は、アドレス空間0x110000〜0x11000Bに書き込まれる。記憶領域０のオフセット0x000010〜0x00007Fに位置するＹヘッダ固定値情報は、アドレス空間0x110010〜0x11007Fに書き込まれる。
【０１０７】
オフセット0x00000C〜0x00000Fに位置するファイルＹの有効コードは、アドレス空間0x11000C〜0x11000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x110080〜0x1100FFに書き込まれる。
【０１０８】
図１７に戻り、ステップＳ８５の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＹのヘッダを読み込み（ステップＳ８６）、これら記憶領域にデータＢ４が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ８７）。
ＣＰＵ２１は、記憶領域０のファイルＸを有効化するため、フラッシュメモリ６の記憶領域０のＸヘッダに、データＢ５（図２０）を書き込む（ステップＳ８８）。
【０１０９】
図２０のデータＢ５は、記憶領域０のアドレス空間0x100000〜0x1000FFに書き込まれるものである。データＢ５は、記憶領域０のＸヘッダ固定値情報と、ファイルＸの有効コードを意味する0x4D,0x30,0x50,0x00と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するＸヘッダ固定値情報は、アドレス空間0x100000〜0x10000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するＸヘッダ固定値情報は、アドレス空間0x100010〜0x10007Fに書き込まれる。
【０１１０】
オフセット0x00000C〜0x00000Fに位置するファイルＸの有効コードは、アドレス空間0x10000C〜0x10000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x100080〜0x1000FFに書き込まれる。
【０１１１】
図１７に戻り、ステップＳ８８の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域０に位置するファイルＸのヘッダを読み込み（ステップＳ８９）、これら記憶領域にデータＢ５が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ９０）。
【０１１２】
ＣＰＵ２１は、記憶領域１のファイルＸを無効化するため、フラッシュメモリ６の記憶領域１のＸヘッダに、データＢ６（図２１）を書き込む（ステップＳ９１）。
【０１１３】
図２１のデータＢ６は、記憶領域１のアドレス空間0x120000〜0x1200FFに書き込まれるものである。データＢ６は、記憶領域１のＸヘッダ固定値情報と、ファイルＸの無効かつ未消去を意味する0x40,0x10,0x40,0x00（第２無効コード）と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するＸヘッダ固定値情報は、アドレス空間0x120000〜0x12000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するＸヘッダ固定値情報は、アドレス空間0x120010〜0x12007Fに書き込まれる。
【０１１４】
オフセット0x00000C〜0x00000Fに位置するファイルＸの第２無効コードは、アドレス空間0x12000C〜0x12000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x120080〜0x1200FFに書き込まれる。
【０１１５】
図１７に戻り、ステップＳ９１の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＸのヘッダを読み込み（ステップＳ９２）、これら記憶領域にデータＢ６が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ９３）。
ＣＰＵ２１は、記憶領域１のファイルＹを無効化するため、フラッシュメモリ６の記憶領域１のＹヘッダに、データＢ７（図２２）を書き込む（ステップＳ９４）。
【０１１６】
図２２のデータＢ７は、記憶領域１のアドレス空間0x130000〜0x1300FFに書き込まれるものである。データＢ７は、記憶領域１のＹヘッダ固定値情報と、ファイルＹの無効かつ未消去を意味する0x40,0x10,0x40,0x00（第２無効コード）と、全て0xFFであるパディングデータを含んでいる。オフセット0x000000〜0x00000Bに位置するＹヘッダ固定値情報は、アドレス空間0x130000〜0x13000Bに書き込まれる。オフセット0x000010〜0x00007Fに位置するＹヘッダ固定値情報は、アドレス空間0x130010〜0x13007Fに書き込まれる。
【０１１７】
オフセット0x00000C〜0x00000Fに位置するファイルＹの第２無効コードは、アドレス空間0x13000C〜0x13000Fに書き込まれる。オフセット0x000080〜0x0000FFに位置するパディングデータは、アドレス空間0x130080〜0x1300FFに書き込まれる。
【０１１８】
図１７に戻り、ステップＳ９４の後を説明する。ＣＰＵ２１は、フラッシュメモリ６の記憶領域１に位置するファイルＹのヘッダを読み込み（ステップＳ９５）、これら記憶領域にデータＢ７が正しく書き込まれたか否かをベリファイ（確認）する（ステップＳ９６）。ここでデータＢ７が正しく書き込まれたならば、電子時計１０のＣＰＵ２１は、記憶領域０に書き込まれたファイルＸ，Ｙで起動可能である。
【０１１９】
ＣＰＵ２１は、プログラム有効領域として記憶領域０の開始アドレスを設定する（ステップＳ９７）。プログラム有効領域が記憶されるのは、セルフ書込領域２４とＲＡＭ２２のいずれであってもよい。ステップＳ９７の処理が終了すると、ＣＰＵ２１がＧＰＳ受信を再び許可する。
【０１２０】
（変形例）
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の（ａ）〜（ｇ）のようなものがある。
（ａ）  プログラムは、ファイルＸ，Ｙで構成されるものに限定されない。単一のファイルで構成されていてもよく、また、３以上のファイルで構成されてもよい。
【０１２１】
（ｂ）  有効コードは、0x00と0xFF以外であればよい。また、第２無効コードは、有効コードのビット値１のいずれかのビットデータをビット値０に変更したものであればよい。
（ｃ）  無効を示すコードは、0xFF,0xFF,0xFF,0x00に限られず、有効を示すコードのビット値０のいずれかのビットデータをビット値１に変更したものであればよい。このとき、有効を示すコードが、無効を示すコードのビット値１のいずれかのビットデータをビット値０に変更したものとなる。
【０１２２】
（ｄ）  プログラムを構成するファイルを有効化することに動作禁止とする機能は、ＧＰＳ受信に限定されない。マイクロコンピュータによってオン／オフが制御され、かつ電力を消費して駆動する負荷によって実行される機能であればよい。このような負荷の例は、温度センサ、湿度センサ、気圧センサ、タッチパネルなどである。
【０１２３】
（ｅ）  プログラムの取得は、通信部を介して外部から受信することに限定されない。プログラムは、例えばメディア経由で取得してもよい。
（ｆ）  記憶領域０，１に記憶されるプログラムは、ＣＰＵ５２が実行するプログラムに限定されず、ＣＰＵ２１が実行するプログラムであってもよい。
（ｇ）  記憶領域０，１に記憶されるプログラムを書き込む主体は、ＣＰＵ２１に限定されない。ＣＰＵ５２がプログラムの書き込みを実行してもよい。
以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記に記載した請求項の項番は、この出願の願書に最初に添付した特許請求の範囲の通りである。
〔付記〕
【０１２４】
《請求項１》
第１のプロセッサと、
前記第１のプロセッサが読み込んで実行するためのプログラムおよび当該プログラムが有効／無効／無効かつ未消去のうちいずれであるかを示すコードを記憶する記憶領域を複数記憶するメモリと、
前記コードが無効であることを示していた前記記憶領域に新たなプログラムを書き込むと共に、当該記憶領域に記憶されている前記コードに有効であることを示す情報を書き込み、前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域のコードに無効かつ未消去であることを示す情報を書き込む第２のプロセッサと、
を備えることを特徴とする電子機器。
《請求項２》
前記メモリは、前記記憶領域のうち前記コードが有効なものを読み込むブートストラップローダを記憶することを特徴とする請求項１に記載の電子機器。
《請求項３》
前記コードの前記無効かつ未消去であることを示す情報は、前記有効であることを示す情報のビット値１のいずれかが、ビット値０に設定されており、
前記コードの前記有効であることを示す情報は、前記無効であることを示す情報のビット値０のいずれかが、ビット値１に設定されている、
ことを特徴とする請求項１又は２に記載の電子機器。
《請求項４》
前記第２のプロセッサは、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域があれば、当該記憶領域を消去して、前記コードに無効を示す情報を書き込む、
ことを特徴とする請求項１乃至３のいずれか１項に記載の電子機器。
《請求項５》
前記第２のプロセッサは、プログラムを書き込む要因とは異なる要因で、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域を消去する、
ことを特徴とする請求項４に記載の電子機器。
《請求項６》
第１のプロセッサと、
前記第１のプロセッサが読み込んで実行するためのプログラムおよび当該プログラムが有効／無効／無効かつ未消去のうちいずれであるかを示すコードを記憶する記憶領域を複数記憶するメモリと、
第２のプロセッサと、
前記第２のプロセッサによりオン／オフが制御され、かつ電力を消費して駆動する負荷と、
を備え、
前記第２のプロセッサは、前記負荷の駆動をオフした状態で、前記コードが無効であることを示していた前記記憶領域にプログラムを書き込むと共に、当該記憶領域のコードに有効であることを示す情報を書き込み、前記コードが有効であることを示していた前記記憶領域のコードに無効かつ未消去であることを示す情報を書き込む、
ことを特徴とする電子時計。
《請求項７》
前記メモリは、前記記憶領域のうち前記コードが有効なものを読み込むブートストラップローダを記憶することを特徴とする請求項６に記載の電子時計。
《請求項８》
前記コードの前記無効かつ未消去であることを示す情報は、前記有効を示す情報のビット値１のいずれかが、ビット値０に設定されており、
前記コードの前記有効であることを示す情報は、前記無効でありことを示す情報のビット値１のいずれかが、ビット値０に設定されている、
ことを特徴とする請求項６又は７に記載の電子時計。
《請求項９》
前記第２のプロセッサは、前記負荷の駆動をオフした状態で、前記コードに無効かつ未消去であることを示していた前記記憶領域を消去する、
ことを特徴とする請求項６又は７に記載の電子時計。
《請求項１０》
前記第２のプロセッサは、前記負荷の起動を禁止した状態で、プログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込み、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込む、
ことを特徴とする請求項６又は７に記載の電子時計。
《請求項１１》
前記第２のプロセッサは、午前０時から午前７時のうちいずれかに、前記コードに無効かつ未消去を示す情報が書き込まれた前記記憶領域を消去する、
ことを特徴とする請求項６乃至９のうちいずれか１項に記載の電子時計。
《請求項１２》
前記第２のプロセッサの動作保証電圧の下限は、前記第１のプロセッサの動作保証電圧の下限よりも低い、
ことを特徴とする請求項６乃至９のうちいずれか１項に記載の電子時計。
《請求項１３》
前記第２のプロセッサの処理能力は、前記第１のプロセッサの処理能力よりも低い、
ことを特徴とする請求項６乃至９のうちいずれか１項に記載の電子時計。
《請求項１４》
前記第２のプロセッサは、前記第１のプロセッサと同一である、
ことを特徴とする請求項６乃至９のうちいずれか１項に記載の電子時計。
《請求項１５》
プログラムおよび当該プログラムの有効／無効／無効かつ未消去のうちいずれであるかを示すコードをそれぞれ記憶する複数の記憶領域のうち無効であることを示す前記コードが記憶されている前記記憶領域に新たなプログラムを書き込むステップと、
前記新たなプログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込むステップと、
前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込むステップと、
を含むことを特徴とするプログラム書込方法。
《請求項１６》
プログラムおよび当該プログラムの有効／無効／無効かつ未消去のうちいずれであるかを示すコードをそれぞれ記憶する複数の記憶領域のうち無効であることを示す前記コードが記憶されている前記記憶領域に新たなプログラムを書き込む手順、
前記新たなプログラムを書き込んだ前記記憶領域の前記コードに有効であることを示す情報を書き込む手順、
前記新たなプログラムを書き込んだ前記記憶領域以外の前記記憶領域であって、前記コードが有効であることを示していた前記記憶領域の前記コードに無効かつ未消去であることを示す情報を書き込む手順、
をコンピュータに実行させるためのプログラム。
【符号の説明】
【０１２５】
１０  電子時計  （電子機器）
２  マイクロコンピュータ
２１  ＣＰＵ  （第２のプロセッサ）
２２  ＲＡＭ
２３  ＲＯＭ
２４  セルフ書込領域
２５  発振回路
２６  分周回路
２７  計時回路
３１  操作部
３２  表示部
３３  電源部
４  通信部
４１  アンテナ
５  ＧＰＳ部  （負荷）
５１  アンテナ
５２  ＣＰＵ  （第１のプロセッサ）
５３  ＲＡＭ
６  フラッシュメモリ
６１  記憶領域０
６２  記憶領域１
６３  ブートストラップローダ
７  振動子
【図１】
2018156351.tif 000003
【図２】
2018156351.tif 000004
【図３】
2018156351.tif 000005
【図４】
2018156351.tif 000006
【図５】
2018156351.tif 000007
【図６】
2018156351.tif 000008
【図７】
2018156351.tif 000009
【図８】
2018156351.tif 000010
【図９】
2018156351.tif 000011
【図１０】
2018156351.tif 000012
【図１１】
2018156351.tif 000013
【図１２】
2018156351.tif 000014
【図１３】
2018156351.tif 000015
【図１４】
2018156351.tif 000016
【図１５】
2018156351.tif 000017
【図１６】
2018156351.tif 000018
【図１７】
2018156351.tif 000019
【図１８】
2018156351.tif 000020
【図１９】
2018156351.tif 000021
【図２０】
2018156351.tif 000022
【図２１】
2018156351.tif 000023
【図２２】
2018156351.tif 000024