(57)【要約】【課題】プログラムを安全に更新する技術を提供する。【解決手段】プログラム用メモリ３０は、ブート領域、アプリケーション領域６２を有する。追加メモリ２４は、アプリケーション領域に書き込まれたアプリケーションプログラムを更新するためのアプリケーションプログラムを書き込み可能である。データ用メモリ３２は更新フラグを記憶する。通信インターフェイス３４は、追加メモリ２４に書き込むべきアプリケーションプログラムを受信する。制御部３６は、ブート領域に書き込まれたブートプログラムを実行しながら、データ用メモリ３２に記憶した更新フラグが不存在を示していれば、アプリケーション領域に書き込まれたアプリケーションプログラムを起動する。【選択図】図６
2020017315.tif 000002
【特許請求の範囲】
【請求項１】
ブートプログラムを書き込むためのブート領域、アプリケーションプログラムを書き込み可能なアプリケーション領域を有するプログラム用メモリと、
前記プログラム用メモリにおける前記アプリケーション領域に書き込まれたアプリケーションプログラムを更新するためのアプリケーションプログラムを書き込み可能な追加メモリと、
前記追加メモリにおける更新可能なアプリケーションプログラムの存在あるいは不存在が示された更新フラグを記憶するデータ用メモリと、
前記追加メモリに書き込むべきアプリケーションプログラムを受信する受信部と、
前記プログラム用メモリにおける前記ブート領域に書き込まれたブートプログラムを実行しながら、前記データ用メモリに記憶した前記更新フラグが不存在を示していれば、前記プログラム用メモリにおける前記アプリケーション領域に書き込まれたアプリケーションプログラムを起動する制御部とを備え、
前記制御部は、前記受信部において受信したアプリケーションプログラムを前記追加メモリに書き込んでから、前記データ用メモリに記憶した前記更新フラグを存在を示すように変更して、再起動させ、
前記制御部は、前記プログラム用メモリにおける前記ブート領域に書き込まれたブートプログラムを実行しながら、前記データ用メモリに記憶した前記更新フラグが存在を示していれば、前記追加メモリに書き込まれたアプリケーションプログラムを前記プログラム用メモリにおけるアプリケーション領域にコピーしてから、前記データ用メモリに記憶した前記更新フラグを不存在を示すように変更して、再起動させることを特徴とする通信装置。
【請求項２】
前記制御部は、前記受信部がアプリケーションプログラムの受信に失敗した場合、あるいは前記受信部において受信したアプリケーションプログラムの書き込みに失敗した場合、前記データ用メモリに記憶した前記更新フラグを維持することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記追加メモリは、アプリケーションプログラムを書き込み可能な第１領域と第２領域とを有し、
前記データ用メモリは、前記追加メモリにおける前記第１領域と前記第２領域のいずれかが選択された領域選択フラグも記憶し、
前記制御部は、前記受信部において受信したアプリケーションプログラムを、前記データ用メモリに記憶した前記領域選択フラグでの非選択に応じて、前記追加メモリにおける前記第１領域あるいは前記第２領域に書き込んでから、前記データ用メモリに記憶した前記領域選択フラグも変更して、再起動させ、
前記制御部は、前記データ用メモリに記憶した前記領域選択フラグでの選択に応じて、前記追加メモリにおける前記第１領域あるいは前記第２領域に書き込まれたアプリケーションプログラムを前記プログラム用メモリにおけるアプリケーション領域にコピーすることを特徴とする請求項２に記載の通信装置。
【請求項４】
前記制御部は、前記受信部がアプリケーションプログラムの受信に失敗した場合、あるいは前記受信部において受信したアプリケーションプログラムの書き込みに失敗した場合、前記データ用メモリに記憶した前記更新フラグおよび前記領域選択フラグを維持することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記プログラム用メモリにおける前記アプリケーション領域には、本通信装置の検査プログラムが書き込まれていることを特徴とする請求項１から４のいずれか１項に記載の通信装置。
【請求項６】
ブートプログラムを書き込むためのブート領域、アプリケーションプログラムを書き込み可能なアプリケーション領域を有するプログラム用メモリと、前記プログラム用メモリにおける前記アプリケーション領域に書き込まれたアプリケーションプログラムを更新するためのアプリケーションプログラムを書き込み可能な追加メモリと、前記追加メモリにおける更新可能なアプリケーションプログラムの存在あるいは不存在が示された更新フラグを記憶するデータ用メモリと、前記追加メモリに書き込むべきアプリケーションプログラムを受信する受信部とを備える通信装置における制御方法であって、
前記プログラム用メモリにおける前記ブート領域に書き込まれたブートプログラムを実行しながら、前記データ用メモリに記憶した前記更新フラグが不存在を示していれば、前記プログラム用メモリにおける前記アプリケーション領域に書き込まれたアプリケーションプログラムを起動するステップと、
前記受信部において受信したアプリケーションプログラムを前記追加メモリに書き込んでから、前記データ用メモリに記憶した前記更新フラグを存在を示すように変更して、再起動させるステップと、
前記プログラム用メモリにおける前記ブート領域に書き込まれたブートプログラムを実行しながら、前記データ用メモリに記憶した前記更新フラグが存在を示していれば、前記追加メモリに書き込まれたアプリケーションプログラムを前記プログラム用メモリにおけるアプリケーション領域にコピーしてから、前記データ用メモリに記憶した前記更新フラグを不存在を示すように変更して、再起動させるステップと、
を備えることを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御技術に関し、特にアプリケーションプログラムを更新する制御方法およびそれを利用した通信装置に関する。
【背景技術】
【０００２】
携帯通信端末は、通信方式に対応したプログラムを起動することによって、通信を実行する。このプログラムは、エアーダウンロードによって更新される。つまり、携帯通信端末は、更新用データをダウンロードし、更新用データを使用して旧バージョンのプログラムを新バージョンのプログラムに書き換える（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−４４５７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
携帯電話通信におけるプログラムの規模は、一般的に大きいので、旧バージョンと新バージョンとの差分である更新用データだけがダウンロードされる。そのため、更新用データの取得に失敗するような場合であっても、旧バージョンのプログラムを使用することによって、携帯通信端末は通信を続行できる。一方、短距離間で小電力で動作するような無線通信装置でも、通信を実行するためにプログラムを起動させるが、そのプログラムの規模は、携帯電話通信でのプログラム規模と比較して小さい場合が多い。無線通信装置は、処理を簡易にするために、新バージョンのプログラムをダウンロードし、それを旧バージョンのプログラムに置き換える。この場合、旧バージョンのプログラムが消去されてしまうので、新バージョンのプログラムの取得に失敗すると、無線通信装置は通信を実行できなくなる。
【０００５】
本発明はこうした状況に鑑みなされたものであり、その目的は、プログラムを安全に更新する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の通信装置は、ブートプログラムを書き込むためのブート領域、アプリケーションプログラムを書き込み可能なアプリケーション領域を有するプログラム用メモリと、プログラム用メモリにおけるアプリケーション領域に書き込まれたアプリケーションプログラムを更新するためのアプリケーションプログラムを書き込み可能な追加メモリと、追加メモリにおける更新可能なアプリケーションプログラムの存在あるいは不存在が示された更新フラグを記憶するデータ用メモリと、追加メモリに書き込むべきアプリケーションプログラムを受信する受信部と、プログラム用メモリにおけるブート領域に書き込まれたブートプログラムを実行しながら、データ用メモリに記憶した更新フラグが不存在を示していれば、プログラム用メモリにおけるアプリケーション領域に書き込まれたアプリケーションプログラムを起動する制御部とを備える。制御部は、受信部において受信したアプリケーションプログラムを追加メモリに書き込んでから、データ用メモリに記憶した更新フラグを存在を示すように変更して、再起動させ、制御部は、プログラム用メモリにおけるブート領域に書き込まれたブートプログラムを実行しながら、データ用メモリに記憶した更新フラグが存在を示していれば、追加メモリに書き込まれたアプリケーションプログラムをプログラム用メモリにおけるアプリケーション領域にコピーしてから、データ用メモリに記憶した更新フラグを不存在を示すように変更して、再起動させる。
【０００７】
本発明の別の態様は、制御方法である。この方法は、ブートプログラムを書き込むためのブート領域、アプリケーションプログラムを書き込み可能なアプリケーション領域を有するプログラム用メモリと、プログラム用メモリにおけるアプリケーション領域に書き込まれたアプリケーションプログラムを更新するためのアプリケーションプログラムを書き込み可能な追加メモリと、追加メモリにおける更新可能なアプリケーションプログラムの存在あるいは不存在が示された更新フラグを記憶するデータ用メモリと、追加メモリに書き込むべきアプリケーションプログラムを受信する受信部とを備える通信装置における制御方法であって、プログラム用メモリにおけるブート領域に書き込まれたブートプログラムを実行しながら、データ用メモリに記憶した更新フラグが不存在を示していれば、プログラム用メモリにおけるアプリケーション領域に書き込まれたアプリケーションプログラムを起動するステップと、受信部において受信したアプリケーションプログラムを追加メモリに書き込んでから、データ用メモリに記憶した更新フラグを存在を示すように変更して、再起動させるステップと、プログラム用メモリにおけるブート領域に書き込まれたブートプログラムを実行しながら、データ用メモリに記憶した更新フラグが存在を示していれば、追加メモリに書き込まれたアプリケーションプログラムをプログラム用メモリにおけるアプリケーション領域にコピーしてから、データ用メモリに記憶した更新フラグを不存在を示すように変更して、再起動させるステップと、を備える。
【０００８】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、プログラムを安全に更新できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例１に係る通信システムの構成を示す図である。
【図２】図１の通信装置の構成を示す図である。
【図３】図２のプログラム用メモリのデータ構造を示す図である。
【図４】図２のデータ用メモリのデータ構造を示す図である。
【図５】図５（ａ）−（ｂ）は、図２の通信装置による処理手順を示すフローチャートである。
【図６】本発明の実施例２に係る通信装置の構成を示す図である。
【図７】図７（ａ）−（ｂ）は、図６のプログラム用メモリ、追加メモリのデータ構造を示す図である。
【図８】図６のデータ用メモリのデータ構造を示す図である。
【図９】図９（ａ）−（ｂ）は、図６の通信装置による処理手順を示すフローチャートである。
【図１０】図１０（ａ）−（ｂ）は、本発明の実施例３に係るプログラム用メモリ、追加メモリのデータ構造を示す図である。
【図１１】本発明の実施例３に係るデータ用メモリのデータ構造を示す図である。
【図１２】図１２（ａ）−（ｂ）は、本発明の実施例３に係る通信装置による処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
（実施例１）
本発明を具体的に説明する前に、概要を述べる。本発明の実施例１は、短距離／小電力機器に対応した通信装置に関する。短距離／小電力機器は、低消費電力であり、かつ長期間の電池動作が可能で免許不要な無線技術を使用する。このような通信装置は、火災警報機等のホームセキュリティ、ホームオートメーション等に使用される。また、通信装置は、携帯電話端末と異なり、ＯＳ（オペレーティングシステム）やファイルシステムを持たない。一般的に、短距離／小電力機器における通信装置では、製造時に、マイクロコントロールユニット（ＭＣＵ）の不揮発性メモリにアプリケーションプログラムが書き込まれ、出荷後のアプリケーションプログラムの変更には対応していない。しかしながら、通信手順の変更や、システムへ新たな通信装置をアドオンするために、出荷後にアプリケーションプログラムを更新することが求められる。
【００１２】
そのため、ＯＳやファイルシステムを有さない通信装置においても、簡易に、かつ安全にアプリケーションプログラムを更新するために、本実施例では、次の処理を実行する。通信装置は、ＭＣＵの不揮発性メモリに、アプリケーションプログラムを書き込み可能な２つの領域を設ける。２つの領域は、例えば、第１領域、第２領域とされる。また、通信装置は、ＭＣＵのＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）に、領域選択フラグを記憶する。領域選択フラグでは、第１領域、第２領域のいずれか一方が示される。
【００１３】
通信装置におけるＭＣＵのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、起動する際に領域選択フラグを参照し、領域選択フラグにおいて示されている方の領域に書き込まれたアプリケーションプログラムを起動する。一方、ＣＰＵは、更新用のアプリケーションプログラムを受信した場合に、領域選択フラグにおいて示されていない方の領域に、更新用のアプリケーションプログラムを書き込む。書込終了後、ＣＰＵは、領域選択フラグを変更してから、通信装置を再起動させる。
【００１４】
図１は、本発明の実施例１に係る通信システム１００の構成を示す。通信システム１００は、通信装置１０、基地局装置１２、ネットワーク１４、サーバ装置１６を含む。通信装置１０と基地局装置１２とは、短距離／小電力機器における無線通信方式によって、双方向の通信を実行する。通信装置１０と基地局装置１２は、例えば、サービス受給者の家屋内に設置される。基地局装置１２は、ネットワーク１４を介してサーバ装置１６に接続される。ネットワーク１４は、例えば、インターネット等であり、有線回線であってもよく、携帯電話網のような無線回線であってもよい。サーバ装置１６は、サービス事業者側に設置される。
【００１５】
このような構成によって、通信装置１０は、基地局装置１２、ネットワーク１４を介してサーバ装置１６と通信する。例えば、通信装置１０が火災報知機である場合、通信装置１０は、火災の検知によって生成された警報をサーバ装置１６に送信する。また、サーバ装置１６は、通信装置１０における更新用のアプリケーションプログラムを通信装置１０に送信する。以下では、更新用のアプリケーションプログラムを受信した場合における通信装置１０の処理を説明する。
【００１６】
図２は、通信装置１０の構成を示す。通信装置１０は、マイクロコントロールユニット２０、通信部２２を含む。また、マイクロコントロールユニット２０は、プログラム用メモリ３０、データ用メモリ３２、通信インターフェイス３４、制御部３６、ＲＡＭ３８を含む。
【００１７】
プログラム用メモリ３０は、書換可能な不揮発性メモリであり、例えば、内蔵Ｆｌａｓｈ  ＲＯＭに相当する。図３は、プログラム用メモリ３０のデータ構造を示す。プログラム用メモリ３０は、ブート領域４０、第１領域４２、第２領域４４を含む。ここで、ブート領域４０は、アドレス「０ｘ００００００００」からアドレス「０ｘ００００１ＦＦＦ」で特定される。また、第１領域４２は、アドレス「０ｘ００００２０００」からアドレス「０ｘ０００１０ＦＦＦ」で特定される。さらに、第２領域４４は、アドレス「０ｘ０００１１０００」からアドレス「０ｘ０００１ＦＦＦＦ」で特定される。ブート領域４０には、ブートプログラムが書き込まれる。ブートプログラムは、ブートローダとも呼ばれ、通信装置１０の起動時に、後述の制御部３６が最初に実行させるプログラムである。このブートプログラムには、公知の技術が使用されればよいが、後述のデータ用メモリ３２に記憶された領域選択フラグを確認するように動作する。
【００１８】
第１領域４２、第２領域４４は、アプリケーションプログラムを書き込み可能な領域である。ここでは、第１領域４２と第２領域４４には、異なったバージョンのアプリケーションプログラムが書き込まれることを想定する。つまり、第１領域４２に書き込まれたアプリケーションプログラムと、第２領域４４に書き込まれたアプリケーションプログラムのいずれか一方が新しいバージョンのアプリケーションプログラムに相当する。なお、通信システム１００の出荷時には、例えば、第１領域４２だけにアプリケーションプログラムが書き込まれる。図２に戻る。
【００１９】
データ用メモリ３２は、書換可能な不揮発性メモリであり、例えば、前述のＥＥＰＲＯＭに相当する。図４は、データ用メモリ３２のデータ構造を示す。データ用メモリ３２は、領域選択フラグ４６を含む。領域選択フラグ４６では、プログラム用メモリ３０における第１領域４２と第２領域４４のいずれかが選択されて示される。そのため、領域選択フラグ４６は、第１領域４２を示すための「１」、第２領域４４を示すための「２」のいずれかの値を有する。なお、「１」と「２」の代わりに、「０」と「１」が使用されてもよく、その場合、領域選択フラグ４６は、１ビットで構成される。なお、以下では、説明を容易にするために、前者であるとする。また、通信装置１０の出荷時において、領域選択フラグ４６は、第１領域４２を示すための「１」に設定される。図２に戻る。なお、データ用メモリ３２は、マイクロコントロールユニット２０に内蔵されず、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）やＩ２Ｃ（Ｉｎｔｅｒ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）のインターフェイス経由で外付けされてもよい。
【００２０】
通信部２２は、短距離／小電力機器における無線通信方式を実行することによって、図示しない基地局装置１２と通信する。通信インターフェイス３４は、マイクロコントロールユニット２０における通信部２２とのインターフェイスであり、通信部２２に接続する。通信インターフェイス３４は、例えば、ＳＰＩ等に相当する。例えば、通信インターフェイス３４は、プログラム用メモリ３０に書き込むべきアプリケーションプログラム、つまり前述の更新用のアプリケーションプログラムを通信部２２から受信する。
【００２１】
制御部３６は、通信装置１０の動作を制御する。ここでは、特に、アプリケーションプログラムの起動および更新を中心に説明する。その際、制御部３６は、ＲＡＭ３８を適宜使用する。なお、ＲＡＭ３８には公知の技術が使用されればよいので、ここでは説明を省略する。まず、起動を説明する。制御部３６は、起動の際、プログラム用メモリ３０におけるブート領域４０に書き込まれたブートプログラムをまず実行する。ブートプログラムは、データ用メモリ３２に記憶した領域選択フラグ４６での選択に応じて、プログラム用メモリ３０における第１領域４２あるいは第２領域４４に書き込まれたアプリケーションプログラムを起動させる。つまり、制御部３６は、領域選択フラグ４６が第１領域４２を示すための「１」である場合、プログラム用メモリ３０のアドレス「０ｘ００００２０００」にアクセスする。アドレス「０ｘ００００２０００」は第１領域４２の先頭アドレスであるので、制御部３６は、第１領域４２に書き込まれたアプリケーションプログラムを起動する。
【００２２】
一方、制御部３６は、領域選択フラグ４６が第２領域４４を示すための「２」である場合、プログラム用メモリ３０のアドレス「０ｘ０００１１０００」にアクセスする。アドレス「０ｘ０００１１０００」は第２領域４４の先頭アドレスであるので、制御部３６は、第２領域４４に書き込まれたアプリケーションプログラムを起動する。また、前述のごとく、通信装置１０の出荷時において、領域選択フラグ４６は「１」に設定されているので、制御部３６は、第１領域４２に書き込まれたアプリケーションプログラムを起動する。
【００２３】
次に、更新を説明する。通信インターフェイス３４が更新用のアプリケーションプログラムを入力した場合、制御部３６は、データ用メモリ３２に記憶した領域選択フラグ４６を確認する。制御部３６は、領域選択フラグ４６での非選択に応じて、プログラム用メモリ３０における第１領域４２あるいは第２領域４４に、更新用のアプリケーションプログラムを書き込む。例えば、領域選択フラグ４６が第１領域４２を示すための「１」である場合、制御部３６は、非選択である第２領域４４に更新用のアプリケーションプログラムを書き込む。一方、領域選択フラグ４６が第２領域４４を示すための「２」である場合、制御部３６は、非選択である第１領域４２に更新用のアプリケーションプログラムを書き込む。
【００２４】
また、制御部３６は、更新用のアプリケーションプログラムの書込を終了すると、データ用メモリ３２に記憶した領域選択フラグ４６を変更する。例えば、領域選択フラグ４６が第１領域４２を示すための「１」である場合、制御部３６は、第２領域４４を示すための「２」に領域選択フラグ４６を変更する。一方、領域選択フラグ４６が第２領域４４を示すための「２」である場合、制御部３６は、第１領域４２を示すための「１」に領域選択フラグ４６を変更する。制御部３６は、領域選択フラグ４６の変更を終了すると、通信装置１０を再起動させる。その結果、前述の起動の処理が開始される。
【００２５】
ここで、制御部３６は、通信部２２、通信インターフェイス３４がアプリケーションプログラムの受信に失敗した場合、データ用メモリ３２に記憶した領域選択フラグ４６を維持する。つまり、制御部３６は、領域選択フラグ４６を変更しない。また、制御部３６は、通信インターフェイス３４において受信したアプリケーションプログラムの書き込みに失敗した場合も、データ用メモリ３２に記憶した領域選択フラグ４６を維持する。
【００２６】
この構成は、ハードウエア的には、任意のコンピュータのＣＰＵ、メモリ、その他のＬＳＩで実現でき、ソフトウエア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ハードウエアとソフトウエアの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【００２７】
以上の構成による通信システム１００の動作を説明する。図５（ａ）−（ｂ）は、通信装置１０による処理手順を示すフローチャートである。図５（ａ）は、起動処理の手順を示す。制御部３６は、ブート領域４０に書き込まれたブートプログラムを実行する（Ｓ１０）。データ用メモリ３２に記憶した領域選択フラグ４６が「１」である場合（Ｓ１２のＹ）、制御部３６は、第１領域４２に書き込まれたアプリケーションプログラムを起動する（Ｓ１４）。一方、データ用メモリ３２に記憶した領域選択フラグ４６が「１」でない場合（Ｓ１２のＮ）、制御部３６は、第２領域４４に書き込まれたアプリケーションプログラムを起動する（Ｓ１６）。
【００２８】
図５（ｂ）は、更新処理の手順を示す。通信インターフェイス３４は、アプリケーションプログラムを受信する（Ｓ２０）。データ用メモリ３２に記憶した領域選択フラグ４６が「１」であれば（Ｓ２２のＹ）、制御部３６は、第２領域４４にアプリケーションプログラムを書き込み（Ｓ２４）、領域選択フラグ４６を「２」に変更する（Ｓ２６）。一方、データ用メモリ３２に記憶した領域選択フラグ４６が「１」でなければ（Ｓ２２のＮ）、制御部３６は、第１領域４２にアプリケーションプログラムを書き込み（Ｓ２８）、領域選択フラグ４６を「１」に変更する（Ｓ３０）。制御部３６は、通信装置１０を再起動させる（Ｓ３２）。
【００２９】
本発明の実施例によれば、プログラム用メモリに第１領域と第２領域を設け、それを選択するための領域選択フラグを使用するので、使用中のアプリケーションプログラムが書き込まれた領域とは別の領域を更新用のアプリケーションプログラムの書込のために使用できる。また、使用中のアプリケーションプログラムと更新用のアプリケーションプログラムとを別の領域に書き込むので、使用中のアプリケーションプログラムに影響を与えずに、更新用のアプリケーションプログラムを書き込むことができる。また、使用中のアプリケーションプログラムに影響を与えずに、更新用のアプリケーションプログラムが書き込まれるので、アプリケーションプログラムを安全に更新できる。
【００３０】
また、領域選択フラグでの選択にしたがってアプリケーションプログラムを起動し、領域選択フラグでの非選択にしたがってアプリケーションプログラムを書き込むので、１つの領域選択フラグだけでアプリケーションプログラムの起動と書込を制御できる。また、１つの領域選択フラグだけを変更すればよいので、処理を簡易にできる。また、アプリケーションプログラムの受信に失敗した場合、あるいはアプリケーションプログラムの書き込みに失敗した場合、領域選択フラグを変更しないので、安全性を向上できる。
【００３１】
本発明の一態様の概要は、次の通りである。本発明のある態様の通信装置１０は、ブートプログラムを書き込むためのブート領域４０、アプリケーションプログラムを書き込み可能な第１領域４２と第２領域４４とを有するプログラム用メモリ３０と、プログラム用メモリ３０における第１領域４２と第２領域４４のいずれかが選択された領域選択フラグ４６を記憶するデータ用メモリ３２と、プログラム用メモリ３０に書き込むべきアプリケーションプログラムを受信する通信インターフェイス３４と、プログラム用メモリ３０におけるブート領域４０に書き込まれたブートプログラムを実行しながら、データ用メモリ３２に記憶した領域選択フラグ４６での選択に応じて、プログラム用メモリ３０における第１領域４２あるいは第２領域４４に書き込まれたアプリケーションプログラムを起動する制御部３６とを備える。制御部３６は、通信インターフェイス３４において受信したアプリケーションプログラムを、データ用メモリ３２に記憶した領域選択フラグ４６での非選択に応じて、プログラム用メモリ３０における第１領域４２あるいは第２領域４４に書き込んでから、データ用メモリ３２に記憶した領域選択フラグ４６を変更して、再起動させる。
【００３２】
制御部３６は、データ用メモリ３２に記憶した領域選択フラグ４６が第１領域４２を選択している場合、プログラム用メモリ３０における第１領域４２に書き込まれたアプリケーションプログラムを起動し、制御部３６は、データ用メモリ３２に記憶した領域選択フラグ４６が第１領域４２を選択している場合、プログラム用メモリ３０における第２領域４４に、通信インターフェイス３４において受信したアプリケーションプログラムを書き込んでから、データ用メモリ３２に記憶した領域選択フラグ４６を第２領域４４に変更してもよい。
【００３３】
制御部３６は、通信インターフェイス３４がアプリケーションプログラムの受信に失敗した場合、あるいは通信インターフェイス３４において受信したアプリケーションプログラムの書き込みに失敗した場合、データ用メモリ３２に記憶した領域選択フラグ４６を維持してもよい。
【００３４】
プログラム用メモリ３０における第１領域４２あるいは第２領域４４には、本通信装置１０の検査プログラムが書き込まれていてもよい。
【００３５】
本発明のさらに別の態様は、制御方法である。この方法は、ブートプログラムを書き込むためのブート領域４０、アプリケーションプログラムを書き込み可能な第１領域４２と第２領域４４とを有するプログラム用メモリ３０と、プログラム用メモリ３０における第１領域４２と第２領域４４のいずれかが選択された領域選択フラグ４６を記憶するデータ用メモリ３２と、プログラム用メモリ３０に書き込むべきアプリケーションプログラムを受信する通信インターフェイス３４とを備える通信装置１０における制御方法であって、プログラム用メモリ３０におけるブート領域４０に書き込まれたブートプログラムを実行しながら、データ用メモリ３２に記憶した領域選択フラグ４６での選択に応じて、プログラム用メモリ３０における第１領域４２あるいは第２領域４４に書き込まれたアプリケーションプログラムを起動するステップと、通信インターフェイス３４において受信したアプリケーションプログラムを、データ用メモリ３２に記憶した領域選択フラグ４６での非選択に応じて、プログラム用メモリ３０における第１領域４２あるいは第２領域４４に書き込んでから、データ用メモリ３２に記憶した領域選択フラグ４６を変更して、再起動させるステップと、を備える。
【００３６】
（実施例２）
次に、実施例２を説明する。実施例２は、実施例１と同様に、短距離／小電力機器に対応した通信装置に関し、簡易に、かつ安全にアプリケーションプログラムを更新することを目的とする。さらに、実施例２では、実施例１よりもアプリケーションプログラムのサイズが大きい場合を想定する。その場合、実施例１のように、ＭＣＵの不揮発性メモリに、アプリケーションプログラムを書き込み可能な２つの領域を設けることが困難になる。そのため、実施例２では、外付けのメモリをＭＣＵに接続し、更新用のアプリケーションプログラムは、外付けのメモリに書き込ませる。また、通信装置は、ＭＣＵのＥＥＰＲＯＭに、更新フラグを記憶する。更新フラグは、更新用のアプリケーションプログラムが外付けのメモリに存在するか否かを示す。
【００３７】
通信装置におけるＭＣＵのＣＰＵは、起動する際に更新フラグを参照し、更新用のアプリケーションプログラムが外付けのメモリに存在しなければ、ＭＣＵの不揮発性メモリに書き込まれたアプリケーションプログラムを起動する。一方、更新用のアプリケーションプログラムが外付けのメモリに存在すれば、ＣＰＵは、外付けメモリからＭＣＵの不揮発性メモリに更新用のアプリケーションプログラムをコピーする。コピー終了後、ＣＰＵは、更新フラグを変更してから、通信装置を再起動させる。実施例２に係る通信システム１００は、図１と同様のタイプである。ここでは、差異を中心に説明する。
【００３８】
図６は、本発明の実施例２に係る通信装置１０の構成を示す。通信装置１０は、マイクロコントロールユニット２０、通信部２２、追加メモリ２４を含む。また、マイクロコントロールユニット２０は、プログラム用メモリ３０、データ用メモリ３２、通信インターフェイス３４、制御部３６、ＲＡＭ３８、メモリインターフェイス５０を含む。
【００３９】
プログラム用メモリ３０は、これまでとデータ構造が異なる。図７（ａ）−（ｂ）は、プログラム用メモリ３０、追加メモリ２４のデータ構造を示し、特に、図７（ａ）は、プログラム用メモリ３０のデータ構造を示す。プログラム用メモリ３０は、ブート領域６０、アプリケーション領域６２を含む。ここで、ブート領域６０は、アドレス「０ｘ００００００００」からアドレス「０ｘ００００１ＦＦＦ」で特定される。また、アプリケーション領域６２は、アドレス「０ｘ００００２０００」からアドレス「０ｘ０００１ＦＦＦＦ」で特定される。ブート領域６０は、これまでのブート領域４０と同様であるので、ここでは説明を省略する。なお、ブートプログラムは、後述のデータ用メモリ３２に記憶された更新フラグを確認するように動作する。
【００４０】
アプリケーション領域６２は、アプリケーションプログラムを書き込み可能な領域である。アプリケーション領域６２は、これまでの第１領域４２、第２領域４４と同様の機能を有するが、それらよりもサイズが大きい。つまり、アプリケーション領域６２には、第１領域４２、第２領域４４よりも大きなサイズのアプリケーションプログラムを書き込み可能である。図６に戻る。
【００４１】
追加メモリ２４は、外付けＦｌａｓｈ  ＲＯＭであり、前述の外付けメモリに相当する。メモリインターフェイス５０は、マイクロコントロールユニット２０における追加メモリ２４とのインターフェイスであり、追加メモリ２４に接続する。メモリインターフェイス５０は、例えば、ＳＰＩ等に相当する。図７（ｂ）は、追加メモリ２４のデータ構造を示す。追加メモリ２４は、追加領域６４、未使用領域６６を含む。ここで、追加領域６４は、アドレス「０ｘ００００００００」からアドレス「０ｘ０００１Ｅ０００」で特定される。また、未使用領域６６は、アドレス「０ｘ０００１Ｅ００１」からアドレス「０ｘ０００１ＦＦＦＦ」で特定される。つまり、追加領域６４とアプリケーション領域６２は同一のサイズであり、未使用領域６６とブート領域６０は同一のサイズであり、追加メモリ２４とプログラム用メモリ３０も同一のサイズである。追加領域６４は、更新用のアプリケーションプログラムを書き込み可能な領域である。更新用のアプリケーションプログラムは、プログラム用メモリ３０におけるアプリケーション領域６２に書き込まれたアプリケーションプログラムを更新するために使用される。図６に戻る。
【００４２】
データ用メモリ３２は、これまでとデータ構造が異なる。図８は、データ用メモリ３２のデータ構造を示す。データ用メモリ３２は、更新フラグ６８を含む。更新フラグ６８では、追加メモリ２４における更新可能なアプリケーションプログラムの存在あるいは不存在が示される。ここで、更新フラグ６８は、更新可能なアプリケーションプログラムが追加メモリ２４に存在する場合、「１」の値を有し、更新可能なアプリケーションプログラムが追加メモリ２４に不存在である場合、「０」の値を有する。そのため、更新フラグ６８は、１ビットで構成される。また、通信装置１０の出荷時において、更新フラグ６８は、更新可能なアプリケーションプログラムが追加メモリ２４に不存在であることを示す「０」に設定される。図６に戻る。通信部２２および通信インターフェイス３４は、これまでと同様であるので、ここでは説明を省略する。
【００４３】
制御部３６に関して、ここでも、特に、アプリケーションプログラムの起動および更新を中心に説明する。まず、起動を説明する。制御部３６は、起動の際、プログラム用メモリ３０におけるブート領域６０に書き込まれたブートプログラムをまず実行する。ブートプログラムは、データ用メモリ３２に記憶した更新フラグ６８が不存在の「０」であれば、プログラム用メモリ３０のアドレス「０ｘ００００２０００」にアクセスする。アドレス「０ｘ００００２０００」はアプリケーション領域６２の先頭アドレスであるので、制御部３６は、アプリケーション領域６２に書き込まれたアプリケーションプログラムを起動する。なお、データ用メモリ３２に記憶した更新フラグ６８が存在の「１」である場合の処理については、後述する。また、前述のごとく、通信装置１０の出荷時において、更新フラグ６８は「０」に設定されているので、制御部３６は、アプリケーション領域６２に書き込まれたアプリケーションプログラムを起動する。
【００４４】
次に、更新を説明する。通信インターフェイス３４が更新用のアプリケーションプログラムを入力した場合、制御部３６は、更新用のアプリケーションプログラムを追加メモリ２４の追加領域６４に書き込む。また、制御部３６は、更新用のアプリケーションプログラムの書込を終了すると、データ用メモリ３２に記憶した更新フラグ６８を変更する。具体的に説明すると、制御部３６は、更新可能なアプリケーションプログラムが追加メモリ２４に存在することを示す「１」に更新フラグ６８を変更する。さらに、制御部３６は、更新フラグ６８の変更を終了すると、通信装置１０を再起動させる。
【００４５】
これに続いて、前述の起動の処理が実行されるが、ブートプログラムは、データ用メモリ３２に記憶した更新フラグ６８を確認する。更新フラグ６８が存在の「１」である場合、制御部３６は、追加メモリ２４の追加領域６４に書き込まれたアプリケーションプログラムをプログラム用メモリ３０におけるアプリケーション領域６２にコピーする。また、制御部３６は、コピーが終了すると、データ用メモリ３２に記憶した更新フラグ６８を、不存在の「０」に変更する。さらに、制御部３６は、更新フラグ６８の変更を終了すると、通信装置１０を再起動させる。その結果、前述の起動の処理が開始される。
【００４６】
ここで、制御部３６は、通信部２２、通信インターフェイス３４がアプリケーションプログラムの受信に失敗した場合、データ用メモリ３２に記憶した更新フラグ６８を維持する。つまり、制御部３６は、更新フラグ６８を変更しない。また、制御部３６は、通信インターフェイス３４において受信したアプリケーションプログラムの書き込みに失敗した場合も、データ用メモリ３２に記憶した更新フラグ６８を維持する。
【００４７】
以上の構成による通信システム１００の動作を説明する。図９（ａ）−（ｂ）は、通信装置１０による処理手順を示すフローチャートである。図９（ａ）は、起動処理の手順を示す。制御部３６は、ブート領域６０に書き込まれたブートプログラムを実行する（Ｓ５０）。データ用メモリ３２に記憶した更新フラグ６８が「０」である場合（Ｓ５２のＹ）、制御部３６は、アプリケーション領域６２に書き込まれたアプリケーションプログラムを起動する（Ｓ５４）。一方、データ用メモリ３２に記憶した更新フラグ６８が「０」でない場合（Ｓ５２のＮ）、制御部３６は、追加メモリ２４からアプリケーション領域６２にアプリケーションプログラムをコピーする（Ｓ５６）。制御部３６は、データ用メモリ３２に記憶した更新フラグ６８を「０」に変更する（Ｓ５８）。制御部３６は、通信装置１０を再起動させる（Ｓ６０）。
【００４８】
図９（ｂ）は、更新処理の手順を示す。通信インターフェイス３４は、アプリケーションプログラムを受信する（Ｓ７０）。制御部３６は、アプリケーションプログラムを追加メモリ２４に書き込み（Ｓ７２）、データ用メモリ３２に記憶した更新フラグ６８を「１」に変更する（Ｓ７４）。制御部３６は、通信装置１０を再起動させる（Ｓ７６）。
【００４９】
本発明の実施例によれば、アプリケーション領域が設けられたプログラム用メモリとは別に追加メモリを使用するので、使用中のアプリケーションプログラムと更新用のアプリケーションプログラムとを別のメモリに書き込むことができる。また、使用中のアプリケーションプログラムと更新用のアプリケーションプログラムとが別のメモリに書き込まれるので、大きなサイズのアプリケーションプログラムに対応できる。また、使用中のアプリケーションプログラムと更新用のアプリケーションプログラムとを別のメモリに書き込むので、使用中のアプリケーションプログラムに影響を与えずに、更新用のアプリケーションプログラムを書き込むことができる。また、使用中のアプリケーションプログラムに影響を与えずに、更新用のアプリケーションプログラムが書き込まれるので、アプリケーションプログラムを安全に更新できる。
【００５０】
また、更新フラグでの選択にしたがってアプリケーションプログラムを起動し、更新フラグでの非選択にしたがってアプリケーションプログラムをコピーするので、１つの更新フラグだけでアプリケーションプログラムの起動とコピーを制御できる。また、１つの更新フラグだけを変更すればよいので、処理を簡易にできる。また、アプリケーションプログラムの受信に失敗した場合、あるいはアプリケーションプログラムの書き込みに失敗した場合、更新フラグを変更しないので、安全性を向上できる。
【００５１】
本発明の一態様の概要は、次の通りである。本発明の別の態様もまた、通信装置１０である。この装置は、ブートプログラムを書き込むためのブート領域６０、アプリケーションプログラムを書き込み可能なアプリケーション領域６２を有するプログラム用メモリ３０と、プログラム用メモリ３０におけるアプリケーション領域６２に書き込まれたアプリケーションプログラムを更新するためのアプリケーションプログラムを書き込み可能な追加メモリ２４と、追加メモリ２４における更新可能なアプリケーションプログラムの存在あるいは不存在が示された更新フラグ６８を記憶するデータ用メモリ３２と、追加メモリ２４に書き込むべきアプリケーションプログラムを受信する通信インターフェイス３４と、プログラム用メモリ３０におけるブート領域６０に書き込まれたブートプログラムを実行しながら、データ用メモリ３２に記憶した更新フラグ６８が不存在を示していれば、プログラム用メモリ３０におけるアプリケーション領域６２に書き込まれたアプリケーションプログラムを起動する制御部３６とを備える。制御部３６は、通信インターフェイス３４において受信したアプリケーションプログラムを追加メモリ２４に書き込んでから、データ用メモリ３２に記憶した更新フラグ６８を存在を示すように変更して、再起動させ、制御部３６は、プログラム用メモリ３０におけるブート領域６０に書き込まれたブートプログラムを実行しながら、データ用メモリ３２に記憶した更新フラグ６８が存在を示していれば、追加メモリ２４に書き込まれたアプリケーションプログラムをプログラム用メモリ３０におけるアプリケーション領域６２にコピーしてから、データ用メモリ３２に記憶した更新フラグ６８を不存在を示すように変更して、再起動させる。
【００５２】
制御部３６は、通信インターフェイス３４がアプリケーションプログラムの受信に失敗した場合、あるいは通信インターフェイス３４において受信したアプリケーションプログラムの書き込みに失敗した場合、データ用メモリ３２に記憶した更新フラグ６８を維持してもよい。
【００５３】
プログラム用メモリ３０におけるアプリケーション領域６２には、本通信装置１０の検査プログラムが書き込まれていてもよい。
【００５４】
本発明のさらに別の態様もまた、制御方法である。この方法は、ブートプログラムを書き込むためのブート領域６０、アプリケーションプログラムを書き込み可能なアプリケーション領域６２を有するプログラム用メモリ３０と、プログラム用メモリ３０におけるアプリケーション領域６２に書き込まれたアプリケーションプログラムを更新するためのアプリケーションプログラムを書き込み可能な追加メモリ２４と、追加メモリ２４における更新可能なアプリケーションプログラムの存在あるいは不存在が示された更新フラグ６８を記憶するデータ用メモリ３２と、追加メモリ２４に書き込むべきアプリケーションプログラムを受信する通信インターフェイス３４とを備える通信装置１０における制御方法であって、プログラム用メモリ３０におけるブート領域６０に書き込まれたブートプログラムを実行しながら、データ用メモリ３２に記憶した更新フラグ６８が不存在を示していれば、プログラム用メモリ３０におけるアプリケーション領域６２に書き込まれたアプリケーションプログラムを起動するステップと、通信インターフェイス３４において受信したアプリケーションプログラムを追加メモリ２４に書き込んでから、データ用メモリ３２に記憶した更新フラグ６８を存在を示すように変更して、再起動させるステップと、プログラム用メモリ３０におけるブート領域６０に書き込まれたブートプログラムを実行しながら、データ用メモリ３２に記憶した更新フラグ６８が存在を示していれば、追加メモリ２４に書き込まれたアプリケーションプログラムをプログラム用メモリ３０におけるアプリケーション領域６２にコピーしてから、データ用メモリ３２に記憶した更新フラグ６８を不存在を示すように変更して、再起動させるステップと、を備える。
【００５５】
（実施例３）
次に、実施例３を説明する。実施例３は、実施例２に実施例１を組み合わせた通信装置に関する。そのため、外付けメモリには、アプリケーションプログラムを書き込み可能な第１領域と第２領域とが設けられる。また、第１領域と第２領域とを識別するために、領域選択フラグも使用される。実施例３に係る通信システム１００、通信装置１０は、図１、図６と同様のタイプである。ここでは、差異を中心に説明する。
【００５６】
図６の追加メモリ２４は、これまでとデータ構造が異なる。図１０（ａ）−（ｂ）は、本発明の実施例３に係るプログラム用メモリ３０、追加メモリ２４のデータ構造を示す。図１０（ａ）は、プログラム用メモリ３０のデータ構造を示すが、図７（ａ）と同様であるので、ここでは説明を省略する。図１０（ｂ）は、追加メモリ２４のデータ構造を示す。追加メモリ２４は、第１領域７０、第２領域７２、未使用領域６６を含む。ここで、第１領域７０は、アドレス「０ｘ００００００００」からアドレス「０ｘ０００１ＤＦＦＦ」で特定される。また、第２領域７２は、アドレス「０ｘ０００１Ｅ０００」からアドレス「０ｘ０００３ＢＦＦＦ」で特定される。さらに、未使用領域６６は、アドレス「０ｘ０００３Ｃ０００」からアドレス「０ｘ０００１ＦＦＦＦ」で特定される。第１領域７０と第２領域７２は、更新用のアプリケーションプログラムを書き込み可能な領域である。前述のごとく、更新用のアプリケーションプログラムは、プログラム用メモリ３０におけるアプリケーション領域６２に書き込まれたアプリケーションプログラムを更新するために使用される。図６に戻る。
【００５７】
データ用メモリ３２は、これまでとデータ構造が異なる。図１１は、本発明の実施例３に係るデータ用メモリ３２のデータ構造を示す。データ用メモリ３２は、更新フラグ６８に加えて、領域選択フラグ４６も含む。領域選択フラグ４６では、追加メモリ２４における第１領域７０と第２領域７２のいずれかが選択される。そのため、領域選択フラグ４６は、第１領域７０を示すための「１」、第２領域７２を示すための「２」のいずれかの値を有する。なお、領域選択フラグ４６は、実施例１と同様に示されてもよい。また、通信装置１０の出荷時において、更新フラグ６８は、更新可能なアプリケーションプログラムが追加メモリ２４に不存在であることを示す「０」に設定されるとともに、領域選択フラグ４６は、第２領域７２を示すための「２」に設定される。図６に戻る。
【００５８】
制御部３６に関して、ここでも、特に、アプリケーションプログラムの起動および更新を中心に説明する。まず、起動を説明する。制御部３６は、起動の際、プログラム用メモリ３０におけるブート領域６０に書き込まれたブートプログラムをまず実行する。ブートプログラムは、データ用メモリ３２に記憶した更新フラグ６８が不存在の「０」であれば、プログラム用メモリ３０のアドレス「０ｘ００００２０００」にアクセスする。その際、ブートプログラムは、データ用メモリ３２に記憶した領域選択フラグ４６を確認しない。
アドレス「０ｘ００００２０００」はアプリケーション領域６２の先頭アドレスであるので、制御部３６は、アプリケーション領域６２に書き込まれたアプリケーションプログラムを起動する。なお、データ用メモリ３２に記憶した更新フラグ６８が存在の「１」である場合の処理については、後述する。また、前述のごとく、通信装置１０の出荷時において、更新フラグ６８は「０」に設定されているので、制御部３６は、アプリケーション領域６２に書き込まれたアプリケーションプログラムを起動する。
【００５９】
次に、更新を説明する。通信インターフェイス３４が更新用のアプリケーションプログラムを入力した場合、制御部３６は、データ用メモリ３２に記憶した領域選択フラグ４６を確認する。制御部３６は、領域選択フラグ４６での非選択に応じて、追加メモリ２４における第１領域７０あるいは第２領域７２に、更新用のアプリケーションプログラムを書き込む。さらに、制御部３６は、書込を終了すると、データ用メモリ３２に記憶した領域選択フラグ４６を変更する。例えば、領域選択フラグ４６が第１領域７０を示すための「１」である場合、制御部３６は、非選択である第２領域７２に更新用のアプリケーションプログラムを書き込み、領域選択フラグ４６を「２」に変更する。一方、領域選択フラグ４６が第２領域７２を示すための「２」である場合、制御部３６は、非選択である第１領域７０に更新用のアプリケーションプログラムを書き込み、領域選択フラグ４６を「１」に変更する。これに続いて、制御部３６は、データ用メモリ３２に記憶した更新フラグ６８を変更する。具体的に説明すると、制御部３６は、更新可能なアプリケーションプログラムが追加メモリ２４に存在することを示す「１」に更新フラグ６８を変更する。さらに、制御部３６は、更新フラグ６８の変更を終了すると、通信装置１０を再起動させる。
【００６０】
これに続いて、前述の起動の処理が実行されるが、ブートプログラムは、データ用メモリ３２に記憶した更新フラグ６８および領域選択フラグ４６を確認する。更新フラグ６８が存在の「１」である場合、領域選択フラグ４６での選択に応じて、追加メモリ２４における第１領域７０あるいは第２領域７２に書き込まれたアプリケーションプログラムをプログラム用メモリ３０におけるアプリケーション領域６２にコピーする。具体的に説明すると、領域選択フラグ４６が第１領域７０を示すための「１」である場合、制御部３６は、第１領域７０に書き込まれた更新用のアプリケーションプログラムをアプリケーション領域６２に複写する。一方、領域選択フラグ４６が第２領域７２を示すための「２」である場合、制御部３６は、第２領域７２に書き込まれた更新用のアプリケーションプログラムをアプリケーション領域６２に複写する。また、制御部３６は、コピーが終了すると、データ用メモリ３２に記憶した更新フラグ６８を、不存在の「０」に変更する。さらに、制御部３６は、更新フラグ６８の変更を終了すると、通信装置１０を再起動させる。その結果、前述の起動の処理が開始される。
【００６１】
ここで、制御部３６は、通信部２２、通信インターフェイス３４がアプリケーションプログラムの受信に失敗した場合、データ用メモリ３２に記憶した更新フラグ６８および領域選択フラグ４６を維持する。つまり、制御部３６は、更新フラグ６８および領域選択フラグ４６を変更しない。また、制御部３６は、通信インターフェイス３４において受信したアプリケーションプログラムの書き込みに失敗した場合も、データ用メモリ３２に記憶した更新フラグ６８および領域選択フラグ４６を維持する。
【００６２】
以上の構成による通信システム１００の動作を説明する。図１２（ａ）−（ｂ）は、本発明の実施例３に係る通信装置１０による処理手順を示すフローチャートである。図１２（ａ）は、起動処理の手順を示す。制御部３６は、ブート領域６０に書き込まれたブートプログラムを実行する（Ｓ１００）。データ用メモリ３２に記憶した更新フラグ６８が「０」である場合（Ｓ１０２のＹ）、制御部３６は、アプリケーション領域６２に書き込まれたアプリケーションプログラムを起動する（Ｓ１０４）。
【００６３】
一方、データ用メモリ３２に記憶した更新フラグ６８が「０」でない場合（Ｓ１０２のＮ）、データ用メモリ３２に記憶した領域選択フラグ４６が「１」であれば（Ｓ１０６のＹ）、制御部３６は、第１領域７０からアプリケーション領域６２にアプリケーションプログラムをコピーする（Ｓ１０８）。一方、データ用メモリ３２に記憶した領域選択フラグ４６が「１」でない場合（Ｓ１０６のＮ）、制御部３６は、第２領域７２からアプリケーション領域６２にアプリケーションプログラムをコピーする（Ｓ１１０）。制御部３６は、データ用メモリ３２に記憶した更新フラグ６８を「０」に変更する（Ｓ１１２）。制御部３６は、通信装置１０を再起動させる（Ｓ１１４）。
【００６４】
図１２（ｂ）は、更新処理の手順を示す。通信インターフェイス３４は、アプリケーションプログラムを受信する（Ｓ１２０）。データ用メモリ３２に記憶した領域選択フラグ４６が「１」であれば（Ｓ１２２のＹ）、制御部３６は、第２領域７２にアプリケーションプログラムを書き込み（Ｓ１２４）、領域選択フラグ４６を「２」に変更する（Ｓ１２６）。一方、データ用メモリ３２に記憶した領域選択フラグ４６が「１」でなければ（Ｓ１２２のＮ）、制御部３６は、第１領域７０にアプリケーションプログラムを書き込み（Ｓ１２８）、領域選択フラグ４６を「１」に変更する（Ｓ１３０）。制御部３６は、データ用メモリ３２に記憶した更新フラグ６８を「１」に変更する（Ｓ１３２）。制御部３６は、通信装置１０を再起動させる（Ｓ１３４）。
【００６５】
本発明の実施例によれば、追加メモリに２つの領域を設けるので、異なったバージョンの更新用のアプリケーションプログラムを書き込むことができる。また、異なったバージョンの更新用のアプリケーションプログラムが書き込まれるので、最新の更新用のアプリケーションプログラムに不具合が生じた場合であっても前の更新用のアプリケーションプログラムに戻すことができる。また、前の更新用のアプリケーションプログラムに戻されるので、通信装置の運用に与える影響を低減できる。また、前の更新用のアプリケーションプログラムに戻されるので、アプリケーションプログラムを安全に更新できる。
【００６６】
また、更新フラグでの選択にしたがってアプリケーションプログラムを起動し、更新フラグと領域制御フラグでの非選択にしたがってアプリケーションプログラムをコピーするので、更新フラグと領域制御フラグだけでアプリケーションプログラムの起動とコピーを制御できる。また、更新フラグと領域制御フラグだけを変更すればよいので、処理を簡易にできる。また、アプリケーションプログラムの受信に失敗した場合、あるいはアプリケーションプログラムの書き込みに失敗した場合、更新フラグと領域制御フラグを変更しないので、安全性を向上できる。
【００６７】
本発明の一態様の概要は、次の通りである。追加メモリ２４は、アプリケーションプログラムを書き込み可能な第１領域７０と第２領域７２とを有してもよい。データ用メモリ３２は、追加メモリ２４における第１領域７０と第２領域７２のいずれかが選択された領域選択フラグ４６も記憶し、制御部３６は、通信インターフェイス３４において受信したアプリケーションプログラムを、データ用メモリ３２に記憶した領域選択フラグ４６での非選択に応じて、追加メモリ２４における第１領域７０あるいは第２領域７２に書き込んでから、データ用メモリ３２に記憶した領域選択フラグ４６も変更して、再起動させ、制御部３６は、データ用メモリ３２に記憶した領域選択フラグ４６での選択に応じて、追加メモリ２４における第１領域７０あるいは第２領域７２に書き込まれたアプリケーションプログラムをプログラム用メモリ３０におけるアプリケーション領域６２にコピーしてもよい。
【００６８】
制御部３６は、通信インターフェイス３４がアプリケーションプログラムの受信に失敗した場合、あるいは通信インターフェイス３４において受信したアプリケーションプログラムの書き込みに失敗した場合、データ用メモリ３２に記憶した更新フラグ６８および領域選択フラグ４６を維持してもよい。
【００６９】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素あるいは各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７０】
実施例１において、プログラム用メモリ３０は次のように使用されてもよい。例えば、プログラム用メモリ３０における第１領域４２に、製造時に使用すべき本通信装置１０の検査プログラムが書き込まれ、第２領域４４に、アプリケーションプログラムが書き込まれてもよい。この場合、領域選択フラグ４６によって、製造時に第１領域４２が選択され、出荷時に第２領域４４が選択される。なお、第１領域４２にアプリケーションプログラムが書き込まれ、第２領域４４に検査プログラムが書き込まれてもよい。本変形例によれば、第１領域４２に書き込まれた検査プログラムは将来的に消去されるので、製造検査時しか使わない検査プログラムによるメモリの消費を抑制できる。
【００７１】
実施例２、３において、プログラム用メモリ３０、追加メモリ２４は次のように使用されてもよい。例えば、プログラム用メモリ３０におけるアプリケーション領域６２に、本通信装置１０の検査プログラムが書き込まれ、追加メモリ２４に、アプリケーションプログラムが書き込まれてもよい。この場合、更新フラグ６８によって、製造時に検査プログラムが起動され、出荷時にアプリケーションプログラムのコピーが実行される。本変形例によれば、アプリケーション領域６２に書き込まれた検査プログラムは出荷時に消去されるので、製造検査時しか使わない検査プログラムによるメモリの消費を抑制できる。
【００７２】
実施例１乃至３において、マイクロコントロールユニット２０は、通信インターフェイス３４を含み、通信インターフェイス３４は、通信部２２に接続される。しかしながらこれに限らず例えば、マイクロコントロールユニット２０は、通信インターフェイス３４の代わりに通信部２２を含んでもよい。ここで、マイクロコントロールユニット２０に含まれた通信インターフェイス３４は、受信部とされてもよい。本変形例によれば、構成の自由度を向上できる。
【符号の説明】
【００７３】
１０  通信装置、  １２  基地局装置、  １４  ネットワーク、  １６  サーバ装置、  ２０  マイクロコントロールユニット、  ２２  通信部、  ３０  プログラム用メモリ、  ３２  データ用メモリ、  ３４  通信インターフェイス（受信部）、  ３６  制御部、  ３８  ＲＡＭ、  １００  通信システム。
【図１】
2020017315.tif 000003
【図２】
2020017315.tif 000004
【図３】
2020017315.tif 000005
【図４】
2020017315.tif 000006
【図５】
2020017315.tif 000007
【図６】
2020017315.tif 000008
【図７】
2020017315.tif 000009
【図８】
2020017315.tif 000010
【図９】
2020017315.tif 000011
【図１０】
2020017315.tif 000012
【図１１】
2020017315.tif 000013
【図１２】
2020017315.tif 000014