(57)【要約】【課題】装置を再起動しなくてもソフトウェアを更新すること。【解決手段】プロセッサ１１０は、第１のプログラム１２１に割り当てられている物理アドレスと対応付けられた実効アドレスを用いて第１のプログラム１２１を実行する。更新部１３０は、プロセッサ１１０の実行対象１１１を、第１のプログラム１２１に含まれる第１のループ処理１２１ｂに移行させ、実効アドレスと対応する物理アドレスを、第２のプログラム１２２に割り当てられている物理アドレスに切り替えることにより、プロセッサ１１０の実行対象１１１を第２のプログラム１２２に含まれる第２のループ処理１２２ａに移行させる。【選択図】図１
2018116375.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラムに割り当てられている物理アドレスと対応付けられた実効アドレスを用いて前記第１のプログラムを実行するプロセッサの実行対象を、前記第１のプログラムに含まれる第１のループ処理に移行させ、
前記実効アドレスと対応する物理アドレスを、前記第１のプログラムと異なる第２のプログラムに割り当てられている物理アドレスに切り替えることにより、前記プロセッサの実行対象を前記第２のプログラムに含まれる第２のループ処理に移行させる、
ことを特徴とするソフトウェア更新方法。
【請求項２】
前記第２のプログラムにおける前記第２のループ処理の相対アドレスは、前記第１のプログラムにおける前記第１のループ処理の相対アドレスと同じであることを特徴とする請求項１に記載のソフトウェア更新方法。
【請求項３】
第１のプログラムに割り当てられている物理アドレスと対応付けられた実効アドレスを用いて前記第１のプログラムを実行するプロセッサと、
前記プロセッサの実行対象を、前記第１のプログラムに含まれる第１のループ処理に移行させ、前記実効アドレスと対応する物理アドレスを、前記第１のプログラムと異なる第２のプログラムに割り当てられている物理アドレスに切り替えることにより、前記プロセッサの実行対象を前記第２のプログラムに含まれる第２のループ処理に移行させる更新部と、
を備えることを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア更新方法および通信装置に関する。
【背景技術】
【０００２】
従来、３ＧＰＰにおいて、第３世代移動通信システム（３Ｇ）、第３．９世代移動通信システムに対応するＬＴＥ、第４世代移動通信システムに対応するＬＴＥ−Ａｄｖａｎｃｅｄなどの移動通信システムの仕様が検討されている。３ＧＰＰは３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ  Ｐａｒｔｎｅｒｓｈｉｐ  Ｐｒｏｊｅｃｔの略である。ＬＴＥはＬｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎの略である。また、第５世代移動通信システム（５Ｇ）に関する技術の検討も開始されている。
【０００３】
また、ＩＴＵ−Ｔにおいて規定された通信規格としてＯＴＮが知られている。ＩＴＵ−ＴはＩｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｎｉｏｎ−Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  ｓｅｃｔｏｒの略である。ＯＴＮはＯｐｔｉｃａｌ  Ｔｒａｎｓｐｏｒｔ  Ｎｅｔｗｏｒｋ（光伝達網）の略である。また、電子機器の動作を制御するソフトウェアを更新する技術が知られている（たとえば、下記特許文献１，２参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２４０７１７号公報
【特許文献２】特開２００６−３０１７６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、たとえば通信装置が呼処理等の通信処理を行うためのソフトウェアを更新する際に、その通信装置の再起動を要するという問題がある。
【０００６】
１つの側面では、本発明は、装置を再起動しなくてもソフトウェアを更新することができるソフトウェア更新方法および通信装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、１つの実施態様では、第１のプログラムに割り当てられている物理アドレスと対応付けられた実効アドレスを用いて前記第１のプログラムを実行するプロセッサの実行対象を、前記第１のプログラムに含まれる第１のループ処理に移行させ、前記実効アドレスと対応する物理アドレスを、前記第１のプログラムと異なる第２のプログラムに割り当てられている物理アドレスに切り替えることにより、前記プロセッサの実行対象を前記第２のプログラムに含まれる第２のループ処理に移行させるソフトウェア更新方法および通信装置が提案される。
【発明の効果】
【０００８】
本発明の一側面によれば、装置を再起動しなくてもソフトウェアを更新することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかる通信装置の一例を示す図である。
【図２】図２は、実施の形態にかかる更新対象のソフトウェアが格納されるメモリの一例を示す図である。
【図３】図３は、実施の形態にかかるＲＡＭにおける呼処理ＰＲＧの配置の一例を示す図である。
【図４】図４は、実施の形態にかかる通信装置によるアドレスの対応の切り替えの一例を示す図である。
【図５】図５は、実施の形態にかかるリンカによるプログラムの固定割り当ておよびループ処理の一例を示す図である。
【図６】図６は、実施の形態にかかる通信装置の構成の一例を示す図である。
【図７】図７は、実施の形態にかかる通信装置によるソフトウェア更新処理の一例を示すシーケンス図（その１）である。
【図８】図８は、実施の形態にかかる通信装置によるソフトウェア更新処理の一例を示すシーケンス図（その２）である。
【図９】図９は、実施の形態にかかるファイル入れ替え部による処理の一例を示すフローチャートである。
【図１０】図１０は、実施の形態にかかる呼処理プログラムによる処理の一例を示すフローチャートである。
【図１１】図１１は、実施の形態にかかる呼処理プログラムのループ処理の一例を示すフローチャートである。
【図１２】図１２は、実施の形態にかかる通信装置を適用可能な無線通信システムの一例を示す図である。
【図１３】図１３は、実施の形態にかかる通信装置を適用可能な光伝送システムの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、本発明にかかるソフトウェア更新方法および通信装置の実施の形態を詳細に説明する。
【００１１】
（実施の形態）
（実施の形態にかかる通信装置）
図１は、実施の形態にかかる通信装置の一例を示す図である。図１に示すように、実施の形態にかかる通信装置１００は、更新部１３０と、プロセッサ１１０と、メモリ１２０と、を備える。
【００１２】
プロセッサ１１０は、メモリ１２０に展開されたプログラムを実行する。図１に示す例では、メモリ１２０には第１のプログラム１２１および第２のプログラム１２２が展開されている。第１のプログラム１２１および第２のプログラム１２２は、たとえばファームウェアやアプリケーションソフトウェアなどの各種のソフトウェアとすることができる。
【００１３】
第１のプログラム１２１には処理１２１ａおよび第１のループ処理１２１ｂの各コードが含まれる。処理１２１ａは、たとえば通信装置１００による通信に関する処理である。通信装置１００による通信に関する処理は、一例としては通信装置１００による呼制御である。第１のループ処理１２１ｂは、処理１２１ａと異なるループ処理である。
【００１４】
第２のプログラム１２２には第２のループ処理１２２ａおよび処理１２２ｂの各コードが含まれる。第２のループ処理１２２ａは、たとえば第１のループ処理１２１ｂと同じ（同内容の）ループ処理である。処理１２２ｂは、第２のループ処理１２２ａと異なる処理であって、たとえば処理１２１ａの更新版の処理である。すなわち、第２のプログラム１２２は、たとえば第１のプログラム１２１の処理１２１ａの部分を処理１２２ｂに改変した更新版のプログラムである。
【００１５】
更新部１３０は、通信装置１００の実行対象１１１を制御することにより、通信装置１００が実行するソフトウェアを第１のプログラム１２１から第２のプログラム１２２に更新する。
【００１６】
通信装置１００のソフトウェアの更新前において、プロセッサ１１０は、第１のプログラム１２１に割り当てられている物理アドレスと対応付けられた実効アドレスを用いて、第１のプログラム１２１を実行している。たとえば、プロセッサ１１０は、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ：メモリ管理ユニット）を介してメモリ１２０にアクセスする。そして、プロセッサ１１０は、ＭＭＵにおいて物理アドレスと対応付けられた実効アドレスを用いてＭＭＵにメモリ１２０へのアクセスを指示することによって第１のプログラム１２１を読み出し、読み出した第１のプログラム１２１を実行する。
【００１７】
たとえば、更新部１３０は、プロセッサ１１０の実行対象１１１が処理１２１ａになっている状態において、プロセッサ１１０の実行対象１１１を第１のループ処理１２１ｂに移行させる。そして、更新部１３０は、この時点で第１のプログラム１２１に割り当てられている物理アドレスと対応付けられていた実効アドレスと対応する物理アドレスを、第２のプログラム１２２に割り当てられている物理アドレスに切り替える。
【００１８】
たとえば、更新部１３０は、ＭＭＵにおける物理アドレスと実効アドレスとの対応情報を変更する制御を行うことにより、物理アドレスと対応付けられていた実効アドレスと対応する物理アドレスを物理アドレスに切り替える。
【００１９】
これにより、プロセッサ１１０が元の実効アドレスを用いたメモリ１２０へのアクセスを継続しつつ、プロセッサ１１０の実行対象１１１を第１のループ処理１２１ｂから第２のループ処理１２２ａに移行させることができる。このため、通信装置１００が実行するソフトウェアを第１のプログラム１２１から第２のプログラム１２２に更新できる。
【００２０】
そして、更新部１３０は、たとえば、プロセッサ１１０の実行対象１１１を第２のループ処理１２２ａから処理１２２ｂへ移行させる。これにより、プロセッサ１１０の実行対象１１１を、第１のプログラム１２１の処理１２１ａから第２のプログラム１２２の処理１２２ｂへ切り替えることができる。
【００２１】
このように、更新部１３０によれば、プロセッサ１１０の実行対象１１１を第１のプログラム１２１の第１のループ処理１２１ｂに移行させることができる。そして、第１のプログラム１２１に割り当てられている物理アドレスと対応付けられていた実効アドレスと対応する物理アドレスを、第２のプログラム１２２に割り当てられている物理アドレスに切り替えることができる。
【００２２】
これにより、プロセッサ１１０の実行対象１１１を第１のプログラム１２１の第１のループ処理１２１ｂから第２のプログラム１２２の第２のループ処理１２２ａに切り替えることができる。このため、通信装置１００を再起動しなくても、通信装置１００のソフトウェアを第１のプログラム１２１から第２のプログラム１２２へ更新することができる。
【００２３】
また、第２のプログラム１２２は、第２のプログラム１２２における第２のループ処理１２２ａの相対アドレスが、第１のプログラム１２１における第１のループ処理１２１ｂの相対アドレスと同じになるように生成されたプログラムであってもよい。第２のプログラム１２２における第２のループ処理１２２ａの相対アドレスは、たとえば、第２のプログラム１２２の先頭と第２のループ処理１２２ａの位置との間の差分である。第１のプログラム１２１における第１のループ処理１２１ｂの相対アドレスは、たとえば、第１のプログラム１２１の先頭と第１のループ処理１２１ｂの位置との間の差分である。
【００２４】
このような第２のプログラム１２２は、たとえば、リンカ（リンケージエディタ：連係編集プログラム）が、第２のプログラム１２２における第２のループ処理１２２ａの相対アドレスを固定的に割り当てることにより生成することができる。一例としては、リンカは、第１のプログラム１２１における第１のループ処理１２１ｂの相対アドレスが＋１０番地である場合に、第２のプログラム１２２における第２のループ処理１２２ａの相対アドレスを＋１０番地に固定的に割り当てる。
【００２５】
これにより、実効アドレスと対応する物理アドレスを切り替えた際に、プロセッサ１１０の実行対象１１１を第１のプログラム１２１の第１のループ処理１２１ｂから第２のプログラム１２２の第２のループ処理１２２ａに確実に切り替えることができる。
【００２６】
また、更新部１３０が通信装置１００に設けられる構成について説明したが、更新部１３０は通信装置１００の外部（たとえば通信装置１００の外部のソフトウェア更新装置）に設けられてもよい。この場合に、更新部１３０は、たとえば外部から通信装置１００の実行対象１１１を制御することにより、通信装置１００が実行するソフトウェアを第１のプログラム１２１から第２のプログラム１２２に更新する。
【００２７】
通信装置１００のソフトウェアを更新する構成について説明したが、実施の形態にかかるソフトウェア更新方法やソフトウェア更新装置は、通信装置１００に限らず各種のコンピュータのソフトウェアの更新に適用することも可能である。
【００２８】
（実施の形態にかかる更新対象のソフトウェアが格納されるメモリ）
図２は、実施の形態にかかる更新対象のソフトウェアが格納されるメモリの一例を示す図である。図２に示すＲＡＭ２１０は、実施の形態にかかる通信装置１００による更新対象のソフトウェアを実行する通信装置１００のメインメモリである。ＲＡＭはＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ランダムアクセスメモリ）の略である。図１に示したメモリ１２０は、たとえばＲＡＭ２１０により実現することができる。
【００２９】
図２に示すＲＯＭ２２０は、実施の形態にかかる通信装置１００による更新対象のソフトウェアを実行する通信装置１００の不揮発性メモリである。ＲＯＭはＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略である。
【００３０】
通信装置１００のＣＰＵは、たとえば通信装置１００による呼制御に関する呼処理ＰＲＧ（呼処理プログラム）をＲＡＭ２１０にロードして常駐させることにより呼処理ＰＲＧを実行する。ＣＰＵはＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（中央処理装置）の略である。ＰＲＧはプログラムの略である。呼処理ＰＲＧは、たとえば通信装置１００において常時動作（常駐）する基本プログラムである。また、通信装置１００のＣＰＵは、ＲＯＭ２２０に格納されたオーバーレイＰＲＧ（オーバーレイプログラム）のうち実行対象の一部分をＲＡＭ２１０にロードすることによりオーバーレイＰＲＧを実行する。
【００３１】
オーバーレイＰＲＧは、たとえば、障害処理や異常処理などの監視系やその他のプログラムを含み、常住させなくてもよいプログラムである。このように、プログラムの一部を動的にＲＯＭ２２０からＲＡＭ２１０にロードして実行するオーバーレイ起動によってオーバーレイＰＲＧを実行することで、オーバーレイＰＲＧによるＲＡＭ２１０の使用容量を少なくすることができる。
【００３２】
旧呼処理ＰＲＧ２３１は、通信装置１００のＣＰＵが実行中の旧バージョンの呼処理ＰＲＧである。図１に示した第１のプログラム１２１は、たとえば旧呼処理ＰＲＧ２３１により実現することができる。新呼処理ＰＲＧ２３２は、旧呼処理ＰＲＧ２３１の新しいバージョンである。図１に示した第２のプログラム１２２は、たとえば新呼処理ＰＲＧ２３２により実現することができる。更新部１３０は、通信装置１００のリセット（再起動）を行わずに、通信装置１００が実行する呼処理ＰＲＧを旧呼処理ＰＲＧ２３１から新呼処理ＰＲＧ２３２に更新する。
【００３３】
旧オーバーレイＰＲＧ２４１は、通信装置１００のＣＰＵが実行中の旧バージョンのオーバーレイＰＲＧである。旧オーバーレイＰＲＧ２４１ａは、オーバーレイ起動によってＲＡＭ２１０におけるオーバーレイ用の領域にロードされた旧オーバーレイＰＲＧ２４１の一部である。新オーバーレイＰＲＧ２４２は、旧オーバーレイＰＲＧ２４１の新しいバージョンである。更新部１３０は、通信装置１００のリセットを行わずに、ＲＯＭ２２０のオーバーレイＰＲＧを旧オーバーレイＰＲＧ２４１から新オーバーレイＰＲＧ２４２に更新する。
【００３４】
呼処理ＰＲＧやオーバーレイＰＲＧなどのソフトウェアの更新時には、図２に示すように、呼処理ＰＲＧはＲＡＭ２１０にロードされ、オーバーレイＰＲＧはＲＯＭ２２０にロードされる。すなわち、通信装置１００は、ソフトウェアの更新時に、ＲＡＭ２１０の新バージョン領域に新バージョンの呼処理ＰＲＧをロードし、ＲＯＭ２２０の新バージョン領域にオーバーレイＰＲＧをロードしておく。
【００３５】
（実施の形態にかかるＲＡＭにおける呼処理ＰＲＧの配置）
図３は、実施の形態にかかるＲＡＭにおける呼処理ＰＲＧの配置の一例を示す図である。図３において、旧バージョン領域３１１は、図２に示したＲＡＭ２１０のうち旧バージョンの呼処理ＰＲＧが格納される領域である。図３に示す例では、旧バージョン領域３１１は、開始位置の物理アドレスが“０ｘ００００００００”である領域である。図２に示した旧呼処理ＰＲＧ２３１は旧バージョン領域３１１に格納される。
【００３６】
新バージョン領域３１２は、図２に示したＲＡＭ２１０のうち新バージョンの呼処理ＰＲＧが格納される領域である。図３に示す例では、新バージョン領域３１２は、開始位置の物理アドレスが“０ｘ４０００００００”である領域である。図２に示した新呼処理ＰＲＧ２３２は、新バージョン領域３１２に格納される。
【００３７】
図３に示すＣＰＵ３２０は、ＭＭＵ３３０を介してＲＡＭ２１０へアクセス可能な通信装置１００のプロセッサである。図１に示したプロセッサ１１０は、たとえばＣＰＵ３２０により実現することができる。図３に示すＭＭＵ３３０は、ＣＰＵ３２０から、実効アドレスを用いたＲＡＭ２１０へのアクセス指示を受け付ける。そして、ＭＭＵ３３０は、受け付けたアクセス指示の実効アドレスを、実効アドレスと物理アドレスとの対応情報に基づいて物理アドレスに変換し、変換した物理アドレスによってＲＡＭ２１０へのアクセスを行う。
【００３８】
図３に示す例では、物理アドレス＝“０ｘ００００００００”は、実効アドレス＝“０ｘ００００００００”と対応付けられている。したがって、ＭＭＵ３３０は、たとえばＣＰＵ３２０から物理アドレス＝“０ｘ００００００００”を指定したアクセス指示を受け付けると、ＲＡＭ２１０の物理アドレス＝“０ｘ００００００００”の領域にアクセスする。また、ＭＭＵ３３０は、たとえばＣＰＵ３２０から物理アドレス＝“０ｘ０００００１００”を指定したアクセス指示を受け付けると、ＲＡＭ２１０の物理アドレス＝“０ｘ０００００１００”の領域にアクセスする。
【００３９】
ＣＰＵ３２０は、ＭＭＵ３３０を介してＲＡＭ２１０にアクセスすることによりＲＡＭ２１０にロードされたプログラムを実行する。たとえば、ＣＰＵ３２０は、実効アドレスを用いてＲＡＭ２１０へのアクセス指示をＭＭＵ３３０に対して行うことで、ＭＭＵ３３０を介してＲＡＭ２１０へアクセスする。
【００４０】
たとえば、ＣＰＵ３２０は、旧呼処理ＰＲＧ２３１の物理アドレスに対応する実効アドレスを用いてＲＡＭ２１０からの読み出しをＭＭＵ３３０に指示する。図３に示す例では、旧呼処理ＰＲＧ２３１の物理アドレスは、“０ｘ００００００００”と“０ｘ４０００００００”との間の物理アドレスである。
【００４１】
ＭＭＵ３３０は、ＣＰＵ３２０から受け付けた読み出し指示の実効アドレスをＲＡＭ２１０の物理アドレスに変換し、変換した物理アドレスを用いてＲＡＭ２１０からの読み出しを行うことで旧呼処理ＰＲＧ２３１を読み出す。そして、ＭＭＵ３３０は、読み出した旧呼処理ＰＲＧ２３１をＣＰＵ３２０へ出力する。ＣＰＵ３２０は、ＭＭＵ３３０から出力された旧呼処理ＰＲＧ２３１を実行する。
【００４２】
（実施の形態にかかる通信装置によるアドレスの対応の切り替え）
図４は、実施の形態にかかる通信装置によるアドレスの対応の切り替えの一例を示す図である。図４において、図３に示した部分と同様の部分については同一の符号を付して説明を省略する。通信装置１００は、たとえば図３に示した状態において、ＭＭＵ３３０における物理アドレスと実効アドレスとの対応情報を切り替える。この対応情報の切り替えは、通信装置１００がＭＭＵ３３０に対してＭＭＵ命令を出力することによって行うことができる。
【００４３】
たとえば、通信装置１００は、旧バージョン領域３１１の物理アドレスと実効アドレスの関係を、新バージョン領域３１２の物理アドレスと実効アドレスに入れ替える。すなわち、図３に示した状態では旧バージョン領域３１１の物理アドレスに対応していた実効アドレスが新バージョン領域３１２の物理アドレスに対応するようにＭＭＵ３３０の対応情報を切り替える。
【００４４】
図４に示す例では、物理アドレス＝“０ｘ４０００００００”が実効アドレス＝“０ｘ００００００００”と対応付けられている。したがって、ＭＭＵ３３０は、たとえばＣＰＵ３２０から物理アドレス＝“０ｘ００００００００”を指定したアクセス指示を受け付けると、ＲＡＭ２１０の物理アドレス＝“０ｘ４０００００００”の領域にアクセスする。また、ＭＭＵ３３０は、たとえばＣＰＵ３２０から物理アドレス＝“０ｘ０００００１００”を指定したアクセス指示を受け付けると、ＲＡＭ２１０の物理アドレス＝“０ｘ４００００１００”の領域にアクセスする。
【００４５】
これにより、図３に示した状態で旧呼処理ＰＲＧ２３１の物理アドレスに対応していた実効アドレスを用いてＣＰＵ３２０がＭＭＵ３３０に呼処理ＰＲＧの読み出しを指示すると、図４に示した状態においては新呼処理ＰＲＧ２３２が読み出される。これにより、旧呼処理ＰＲＧ２３１に新呼処理ＰＲＧ２３２の該当アドレスへのジャンプ処理が含まれていなくても、ＣＰＵ３２０が実行する呼処理ＰＲＧを旧呼処理ＰＲＧ２３１から新呼処理ＰＲＧ２３２に切り替えることができる。
【００４６】
すなわち、ＣＰＵ３２０の実効アドレスカウンタは、ＭＭＵ３３０で処理された実効アドレスを参照しているので、異なる物理アドレスをＭＭＵ３３０で同じ実効アドレスに対応付けることができる。このとき、入れ替えるのはプログラムのみでデータ領域の入れ替えは行わないため、旧呼処理ＰＲＧ２３１で使われていたデータはそのまま新呼処理ＰＲＧ２３２で使われることで、データの不整合も発生しない。
【００４７】
（実施の形態にかかるリンカによるプログラムの固定割り当ておよびループ処理）
図５は、実施の形態にかかるリンカによるプログラムの固定割り当ておよびループ処理の一例を示す図である。図５において、図４に示した部分と同様の部分については同一の符号を付して説明を省略する。図４において説明したように、ＭＭＵ３３０の対応情報の切り替えにより、ＣＰＵ３２０が実行する呼処理ＰＲＧを旧呼処理ＰＲＧ２３１から新呼処理ＰＲＧ２３２に切り替えることができる。
【００４８】
ただし、新呼処理ＰＲＧ２３２は旧呼処理ＰＲＧ２３１に対して変更を加えたプログラムであるため、旧呼処理ＰＲＧ２３１と新呼処理ＰＲＧ２３２との間でメモリの配置が異なっている場合がある。すなわち、ＭＭＵ３３０の対応情報の切り替えによって旧呼処理ＰＲＧ２３１から新呼処理ＰＲＧ２３２にジャンプした際に、ジャンプ先の新呼処理ＰＲＧ２３２のコードが、ジャンプ元の旧呼処理ＰＲＧ２３１のコードと対応していない場合がある。この場合は、新呼処理ＰＲＧ２３２における想定外の位置から動作が開始され、動作異常となり得る。
【００４９】
そこで、旧呼処理ＰＲＧ２３１および新呼処理ＰＲＧ２３２に、それぞれ同一のループプログラム５１１，５１２を含めておく。ループプログラム５１１，５１２は、たとえば、外部から変更可能な固定アドレスのデータ（ループ脱出データ）が所定条件を満たすまで所定のループ処理を行うことを指示するループプログラムである。
【００５０】
また、ループプログラム５１１，５１２は、それぞれ固定アドレス（物理アドレス）に割り当てられ、ＲＡＭ２１０の所定のアドレスの領域に配置される。このような固定アドレスへの割り当ては、たとえばリンカによって実現することができる。リンカは、たとえばアセンブラやコンパイラがソースコードを処理することによって得られたオブジェクトファイルを結合して実行可能なファイルを生成するプログラムである。
【００５１】
たとえば、旧呼処理ＰＲＧ２３１や新呼処理ＰＲＧ２３２のファイルを生成（たとえばビルドやＲＯＭ化）する際に、リンカを用いて、ループプログラム５１１，５１２が決まったアドレスにメモリ配置されるようにする。これにより、ＣＰＵ３２０が旧呼処理ＰＲＧ２３１のループプログラム５１１を実行中にＭＭＵ３３０の対応情報を切り替えると、ＣＰＵ３２０の実行対象がループプログラム５１１から新呼処理ＰＲＧ２３２のループプログラム５１２にジャンプする。
【００５２】
通信装置１００は、ＭＭＵ３３０の対応情報を切り替える前に、旧呼処理ＰＲＧ２３１によってＣＰＵ３２０が実行する呼処理を、そのループプログラム５１１によるループ処理にジャンプさせる。これにより、通信装置１００がＭＭＵ３３０の対応情報を切り替えると、ＣＰＵ３２０の実行対象は、旧呼処理ＰＲＧ２３１のループ処理から新呼処理ＰＲＧ２３２のループ処理に切り替わる。
【００５３】
そして、通信装置１００は、ＭＭＵ３３０の対応情報を切り替えた後に、ループ脱出データの値を変更し、ＣＰＵ３２０の実行対象をループ処理から脱出させる。これにより、新呼処理ＰＲＧ２３２における想定外の位置から動作が開始されることによる動作異常を回避しつつ、ＣＰＵ３２０が実行する呼処理ＰＲＧを旧呼処理ＰＲＧ２３１から新呼処理ＰＲＧ２３２に切り替えることができる。
【００５４】
いいかえると、ＣＰＵ３２０が実行する呼処理ＰＲＧを旧呼処理ＰＲＧ２３１から新呼処理ＰＲＧ２３２に切り替えても、ＣＰＵ３２０においては、切り替えの前後で同じプログラムが動作しているように認識される。これにより、旧呼処理ＰＲＧ２３１のコードに対して新呼処理ＰＲＧ２３２のコードに増減があっても、切り替えの前後の実効箇所を同じループ処理とし、不整合が発生することを回避することができる。
【００５５】
（実施の形態にかかる通信装置の構成）
図６は、実施の形態にかかる通信装置の構成の一例を示す図である。図６において、図２〜図５に示した部分と同様の部分については同一の符号を付して説明を省略する。通信装置１００は、たとえば図６に示すコンピュータ６１０により実現することができる。
【００５６】
コンピュータ６１０は、ＣＰＵ３２０と、ＭＭＵ３３０と、ＲＡＭ２１０と、ＲＯＭ２２０と、ＰＨＹデバイス６１５と、ＵＡＲＴ６１６と、を備える。ＵＡＲＴ（ユーアート）はＵｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ  Ｔｒａｎｓｍｉｔｔｅｒの略である。コンピュータ６１０のこれらの各デバイスは、たとえばバスによって互いに接続される。
【００５７】
ＣＰＵ３２０は、信号処理を行うプロセッサであり、たとえばコンピュータ６１０の全体の制御を司る。また、ＣＰＵ３２０は、ＭＭＵ３３０に対してアドレスの対応（上述の対応情報）の切り替えを指示するＭＭＵ命令６１１を出力可能である。また、ＣＰＵ３２０は、複数のプロセッサコアを含むマルチコアのＣＰＵであってもよい。また、ＣＰＵ３２０にはマルチプロセッシングが可能な複数のＣＰＵが含まれてもよい。
【００５８】
ＭＭＵ３３０は、上述のように、実効アドレスと物理アドレスとの変換により、ＣＰＵ３２０によるＲＡＭ２１０へのアクセスを仲介する。また、ＭＭＵ３３０は、ＣＰＵ３２０からのＭＭＵ命令６１１に応じて、実効アドレスと物理アドレスとの変換に用いる実効アドレスと物理アドレスとの対応情報を切り替える。
【００５９】
ＲＡＭ２１０は、ＣＰＵ３２０のワークエリアとして使用される。ＲＡＭ２１０には、たとえば上述した旧バージョン領域３１１や新バージョン領域３１２が含まれる。また、ＲＡＭ２１０は、さらにデータ、キャッシュ、ヒープ等の領域が含まれてもよい。
【００６０】
ＲＯＭ２２０は、たとえば磁気ディスク、光ディスク、フラッシュメモリなどの不揮発メモリである。ＲＯＭ２２０には、コンピュータ６１０を動作させる各種のプログラムが記憶される。ＲＯＭ２２０に記憶されたプログラムは、ＲＡＭ２１０にロードされてＣＰＵ３２０によって実行される。たとえば、ＲＯＭ２２０には、上述した旧呼処理ＰＲＧ２３１、新呼処理ＰＲＧ２３２、旧オーバーレイＰＲＧ２４１、新オーバーレイＰＲＧ２４２が格納される。また、ＲＯＭ２２０には、上述した固定割り当てのループ処理の脱出条件の判定のためのループ脱出データ６１４が格納されてもよい。ただし、ループ脱出データ６１４は、ＲＯＭ２２０ではなくＲＡＭ２１０のデータ領域等に格納されてもよい。
【００６１】
ＰＨＹデバイス６１５は、サーバ６０２から更新用の新バージョンのプログラム（たとえば新呼処理ＰＲＧ２３２や新オーバーレイＰＲＧ２４２）のファイルを転送するためのＰＨＹデバイスである。たとえば、ＰＨＹデバイス６１５は、ＦＴＰを用いてサーバ６０２からプログラムのファイルを転送する。ＦＴＰはＦｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ（ファイル転送プロトコル）の略である。
【００６２】
ＵＡＲＴ６１６は、たとえばユーザ端末６０１からのソフトウェア更新要求を受け付けるためのシリアルインタフェースである。ソフトウェア更新要求には、たとえば、更新対象の新バージョンのプログラムを示す情報が含まれる。
【００６３】
デバイスドライバ６２１は、コンピュータ６１０の各デバイスのドライバである。たとえば、デバイスドライバ６２１は、ＣＰＵ３２０、ＲＡＭ２１０およびＲＯＭ２２０に対して書き込みアクセス（ｗｒｉｔｅ）および読み出しアクセス（ｒｅａｄ）が可能である。また、デバイスドライバ６２１は、ＰＨＹデバイス６１５およびＵＡＲＴ６１６に対して読み出しアクセス（ｒｅａｄ）が可能である。
【００６４】
ＯＳ６２２は、ＣＰＵ３２０により実行される、コンピュータ６１０のオペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）である。ＯＳ６２２は、デバイスドライバ６２１を介してコンピュータ６１０の各デバイスへアクセスする。
【００６５】
プログラム６３０は、ＯＳ６２２において実行されるプログラムである。プログラム６３０は、ファイル入れ替え部６３１と、ＦＴＰ処理部６３２と、呼処理部６３３と、監視等処理部６３４と、呼規制部６３５と、を含む。プログラム６３０の各処理部は、たとえばマルチタスクまたはマルチコアでそれぞれ独立して動作する。図１に示した更新部１３０は、たとえばファイル入れ替え部６３１によって実現することができる。
【００６６】
ファイル入れ替え部６３１は、プログラム（たとえば新呼処理ＰＲＧや新オーバーレイＰＲＧ）のファイルの入れ替え、すなわちソフトウェアの更新を制御する。たとえば、ファイル入れ替え部６３１は、ＵＡＲＴ６１６によって受け付けられたソフトウェア更新要求をＯＳ６２２から取得すると、ＦＴＰ処理部６３２、呼処理部６３３、監視等処理部６３４および呼規制部６３５を制御してソフトウェア更新を実行する。ファイル入れ替え部６３１は、たとえばＲＡＭ２１０に展開されたプログラムをＣＰＵ３２０が実行することによって実現される。
【００６７】
ＦＴＰ処理部６３２は、ファイル入れ替え部６３１からの制御に従って、ＰＨＹデバイス６１５を制御して、サーバ６０２の新バージョンのプログラムのファイルをＦＴＰにより転送してＲＯＭ２２０に格納する。ＦＴＰ処理部６３２は、たとえばＲＡＭ２１０に展開されたプログラムをＣＰＵ３２０が実行することによって実現される。
【００６８】
呼処理部６３３は、コンピュータ６１０によって実現される通信装置１００の機能として呼の制御を行う。呼処理部６３３は、たとえばＲＡＭ２１０に展開された呼処理ＰＲＧをＣＰＵ３２０が実行することによって実現される。呼処理部６３３の呼処理ＰＲＧに基づく処理には、上述した固定割り当てのループ処理６３３ａが含まれる。たとえば、呼処理部６３３は、ＯＳ６２２を介したデータ監視やＯＳ６２２を介したＣＰＵ３２０の制御（ＣＰＵ制御）によって呼の制御を行う。
【００６９】
監視等処理部６３４は、動的にＲＯＭ２２０からＲＡＭ２１０に展開されたオーバーレイＰＲＧの一部分をＣＰＵ３２０が実行するオーバーレイ起動によって実現される。監視等処理部６３４によるオーバーレイＰＲＧのオーバーレイ起動による処理には、上述した監視系の処理等の常駐が不要な処理が含まれる。
【００７０】
呼規制部６３５は、ファイル入れ替え部６３１からの制御にしたがって、呼処理部６３３による呼の制御を規制する呼規制を行う。呼規制部６３５は、たとえばＲＡＭ２１０に展開されたプログラムをＣＰＵ３２０が実行することによって実現される。
【００７１】
ユーザ端末６０１は、コンピュータ６１０のＵＡＲＴ６１６に対して接続可能な端末である。ユーザ端末６０１は、たとえば、ユーザ端末６０１のユーザからの操作に従って、コンピュータ６１０に対してソフトウェア更新要求を入力する。
【００７２】
サーバ６０２は、コンピュータ６１０のＰＨＹデバイス６１５がアクセス可能なコンピュータである。サーバ６０２には、更新用の新バージョンのプログラム（たとえば新呼処理ＰＲＧ２３２や新オーバーレイＰＲＧ２４２）のファイルが格納されている。
【００７３】
さらに、コンピュータ６１０は、呼処理部６３３による呼制御に関する通信を行う通信インタフェースを備えてもよい。通信インタフェースは、たとえば無線による通信を行う通信インタフェースであってもよいし、有線（光または電気）による通信を行う通信インタフェースであってもよい。通信インタフェースはＣＰＵ３２０によって制御される。
【００７４】
また、ファイル入れ替え部６３１、ＦＴＰ処理部６３２、呼規制部６３５の少なくともいずれかは監視等処理部６３４に含まれてもよい。ファイル入れ替え部６３１、ＦＴＰ処理部６３２、呼規制部６３５の少なくともいずれかは、ＲＡＭ２１０に展開されたオーバーレイＰＲＧをＣＰＵ３２０が実行することにより実現されてもよい。
【００７５】
（実施の形態にかかる通信装置によるソフトウェア更新処理）
図７および図８は、実施の形態にかかる通信装置によるソフトウェア更新処理の一例を示すシーケンス図である。通信装置１００においては、ソフトウェア更新処理として、たとえば図７，図８に示す各ステップが実行される。
【００７６】
初期状態として、ＲＯＭ２２０のループ脱出データ６１４はループ処理から脱出しないことを示す“０ｘ０”になっている。また、ＭＭＵ３３０における物理アドレスと実効アドレスとの対応情報においては、図３に示したように物理アドレス＝“０ｘ００００００００”が実効アドレス＝“０ｘ００００００００”と対応付けられている。
【００７７】
まず、ユーザ端末６０１から、ファイル入れ替え部６３１に対して、ソフトウェア更新要求が入力される（ステップＳ７０１）。ステップＳ７０１は、一例としては図６に示したＵＡＲＴ６１６などのインタフェースを用いて行われる。つぎに、ファイル入れ替え部６３１が、サーバ６０２からのファイルの転送を要求するファイル転送要求をＦＴＰ処理部６３２へ出力する（ステップＳ７０２）。
【００７８】
つぎに、ＦＴＰ処理部６３２が、サーバ６０２との間でＦＴＰ通信を行うことにより新呼処理ＰＲＧ２３２および新オーバーレイＰＲＧ２４２をダウンロードする。そして、ＦＴＰ処理部６３２が、ダウンロードした新呼処理ＰＲＧ２３２および新オーバーレイＰＲＧ２４２をＲＯＭ２２０へ転送する（ステップＳ７０３）。これにより、新呼処理ＰＲＧ２３２および新オーバーレイＰＲＧ２４２がＲＯＭ２２０に書き込まれる。
【００７９】
つぎに、ＦＴＰ処理部６３２が、新呼処理ＰＲＧ２３２および新オーバーレイＰＲＧ２４２の転送が完了したことを示す完了通知をファイル入れ替え部６３１へ出力する（ステップＳ７０４）。
【００８０】
つぎに、ファイル入れ替え部６３１が、呼制御の規制を要求する呼規制要求を呼規制部６３５へ出力する（ステップＳ７０５）。つぎに、呼規制部６３５が、呼制御の規制を要求する呼規制要求を呼処理部６３３へ出力する（ステップＳ７０６）。ステップＳ７０６によって出力される呼規制要求は、たとえば新たな呼の追加の停止を要求する制御情報である。これにより、呼処理部６３３が新たな呼の追加を停止し、呼処理部６３３が実行中の呼が終了するごとに、呼処理部６３３における呼のトラフィックが徐々に少なくなる。
【００８１】
つぎに、呼規制部６３５は、呼処理部６３３における呼制御状態を監視し、呼処理部６３３における呼がなくなる（呼のトラフィックが０％になる）まで待機する（ステップＳ７０７）。つぎに、呼規制部６３５は、呼の規制が完了したことを示す完了通知をファイル入れ替え部６３１へ出力する（ステップＳ７０８）。
【００８２】
つぎに、ファイル入れ替え部６３１が、ＲＯＭ２２０から新呼処理ＰＲＧ２３２を読み出してＲＡＭ２１０の新バージョン領域３１２に展開する（ステップＳ７０９）。新バージョン領域３１２は、たとえば図３に示したように開始位置の物理アドレスが“０ｘ４０００００００”である領域である。
【００８３】
つぎに、ファイル入れ替え部６３１が、ファイル入れ替えモードへの遷移を要求する遷移要求を呼処理部６３３へ出力する（ステップＳ７１０）。つぎに、呼処理部６３３が、ソフトウェアの更新時の所定のループ処理に強制ジャンプする（ステップＳ７１１）。たとえば、呼処理部６３３は、実行中の旧呼処理ＰＲＧ２３１に含まれるループプログラム５１１（たとえば図５参照）へ強制ジャンプする。これにより、呼処理部６３３はファイル入れ替えモードへ遷移する。また、呼処理部６３３は、ステップＳ７１１において、呼のトラフィックが０％になっていることを確認してから所定のループ処理に強制ジャンプしてもよい。
【００８４】
所定のループ処理は、上述のようにリンカによってアドレスが固定割り当てされたループプログラム５１１に基づく処理である。また、所定のループ処理は、たとえばＲＯＭ２２０の所定領域に格納されたループ脱出データの監視を繰り返す処理である。ステップＳ７１１の時点では、ループ脱出データは、上述のようにループ処理から脱出しないことを示す“０ｘ０”となっている。そして、呼処理部６３３は、ループ脱出データが“０ｘ１”になるまでループ処理を脱出しない。
【００８５】
つぎに、呼処理部６３３が、ファイル入れ替えモードへの遷移が完了したことを示す完了通知をファイル入れ替え部６３１へ出力する（ステップＳ７１２）。
【００８６】
つぎに、ファイル入れ替え部６３１が、新バージョン領域３１２の物理アドレスを旧バージョン領域３１１の実効アドレスに割り当てることを指示するＭＭＵ命令６１１をＭＭＵ３３０へ出力する（ステップＳ７１３）。ステップＳ７１３により、ＭＭＵ３３０における物理アドレスと実効アドレスとの対応情報が、たとえば図４に示したように物理アドレス＝“０ｘ４０００００００”が実効アドレス＝“０ｘ００００００００”と対応付けられている対応情報に切り替わる。また、ファイル入れ替え部６３１は、旧バージョン領域３１１の物理アドレスを新バージョン領域３１２の実効アドレスに割り当てることを指示するＭＭＵ命令をＭＭＵ３３０へ出力してもよい。
【００８７】
ステップＳ７１３により、ＣＰＵ３２０が実効アドレスによってアクセス指定した場合のＭＭＵ３３０によるＲＡＭ２１０の参照先が、旧バージョン領域３１１から新バージョン領域３１２に切り替わる。そして、呼処理部６３３は、ステップＳ７１３の直前において旧呼処理ＰＲＧ２３１のループプログラム５１１を実行している。このため、ステップＳ７１３によって、呼処理部６３３は、ループプログラム５１１とともにアドレスが固定割り当てされた新呼処理ＰＲＧ２３２のループプログラム５１２へジャンプする。
【００８８】
つぎに、ファイル入れ替え部６３１は、ループ脱出データを“０ｘ１”に書き換えることを要求するループ脱出データ書き換え要求をＲＯＭ２２０へ出力する（ステップＳ７１４）。これにより、ＲＯＭ２２０のループ脱出データが“０ｘ０”から“０ｘ１”に書き換わる。そして、呼処理部６３３は、ループ処理において監視するループ脱出データが“０ｘ１”になったため、ループ処理から脱出して呼処理へ復帰する（ステップＳ７１５）。このとき、復帰先は新バージョン領域３１２になっているため、復帰した呼処理は新バージョンの新呼処理ＰＲＧ２３２による呼処理になる。
【００８９】
つぎに、ファイル入れ替え部６３１が、新オーバーレイＰＲＧ２４２のオーバーレイ起動を要求するオーバーレイ起動要求を監視等処理部６３４へ出力する（ステップＳ７１６）。つぎに、監視等処理部６３４が、ＲＯＭ２２０から新オーバーレイＰＲＧ２４２の一部のプログラム２４２ａを読み出してＲＡＭ２１０に展開する（ステップＳ７１７）。これにより新オーバーレイＰＲＧ２４２がオーバーレイ起動される。つぎに、監視等処理部６３４が、新オーバーレイＰＲＧ２４２のオーバーレイ起動が完了したことを示す完了通知をファイル入れ替え部６３１へ出力する（ステップＳ７１８）。
【００９０】
つぎに、ファイル入れ替え部６３１が、呼制御の規制解除を要求する呼規制解除要求を呼規制部６３５へ出力する（ステップＳ７１９）。つぎに、呼規制部６３５が、呼制御の規制解除を要求する呼規制解除要求を呼処理部６３３へ出力する（ステップＳ７２０）。ステップＳ７２０によって出力される呼規制解除要求は、たとえば新たな呼の追加の再開を要求する制御情報である。これにより、呼処理部６３３が新たな呼の追加を再開し、呼処理部６３３が新たな呼を追加するごとに、呼処理部６３３における呼のトラフィックが徐々に多くなる。
【００９１】
つぎに、呼規制部６３５は、呼処理部６３３における呼制御状態を監視し、呼処理部６３３における呼のトラフィックがたとえば１００％になるまで待機する（ステップＳ７２１）。つぎに、呼規制部６３５は、呼の規制解除が完了したことを示す完了通知をファイル入れ替え部６３１へ出力する（ステップＳ７２２）。
【００９２】
図７，図８に示した各ステップにより、コンピュータ６１０のリセットなしで、旧呼処理ＰＲＧ２３１が新呼処理ＰＲＧ２３２に更新され、旧オーバーレイＰＲＧ２４１が新オーバーレイＰＲＧ２４２に更新され、ソフトウェア更新処理が完了する。これにより、たとえばコンピュータ６１０のリセットを行うソフトウェア更新方法と比べて、ソフトウェア更新によって呼処理部６３３の呼処理が行われない時間を短くすることが可能になる。
【００９３】
図７，図８に示した各ステップは、たとえば、図６に示したプログラム６３０の各処理部をＣＰＵ３２０によるマルチタスクまたはマルチコアで動作させることによって実行される。たとえば、少なくともファイル入れ替え部６３１と呼処理部６３３が、マルチタスクまたはマルチコアによって並列に動作する。これにより、呼処理部６３３による処理が所定のループ処理に移行しても、ソフトウェア更新処理が停止することを回避することができる。
【００９４】
（実施の形態にかかるファイル入れ替え部による処理）
図９は、実施の形態にかかるファイル入れ替え部による処理の一例を示すフローチャートである。ファイル入れ替え部６３１は、たとえば図９に示す各ステップを実行する。まず、ファイル入れ替え部６３１は、ユーザ端末６０１からのソフトウェア更新要求を受け付ける（ステップＳ９０１）。
【００９５】
つぎに、ファイル入れ替え部６３１は、新呼処理ＰＲＧ２３２および新オーバーレイＰＲＧ２４２をサーバ６０２からＲＯＭ２２０へ転送させる制御を行う（ステップＳ９０２）。たとえば、ファイル入れ替え部６３１は、サーバ６０２からのファイルの転送を要求するファイル転送要求をＦＴＰ処理部６３２へ出力する。そして、ファイル入れ替え部６３１は、新呼処理ＰＲＧ２３２および新オーバーレイＰＲＧ２４２の転送が完了したことを示す完了通知をＦＴＰ処理部６３２から取得する。
【００９６】
つぎに、ファイル入れ替え部６３１は、呼処理部６３３による呼制御を規制させる制御を行う（ステップＳ９０３）。たとえば、ファイル入れ替え部６３１は、呼制御の規制を要求する呼規制要求を呼規制部６３５へ出力する。そして、ファイル入れ替え部６３１は、呼の規制が完了したことを示す完了通知を呼規制部６３５から取得する。
【００９７】
つぎに、ファイル入れ替え部６３１は、新呼処理ＰＲＧ２３２をＲＡＭ２１０に展開する（ステップＳ９０４）。たとえば、ファイル入れ替え部６３１は、ＲＯＭ２２０から新呼処理ＰＲＧ２３２を読み出してＲＡＭ２１０の新バージョン領域３１２に展開する。
【００９８】
つぎに、ファイル入れ替え部６３１は、呼処理部６３３による処理を所定のループ処理に強制ジャンプさせる制御を行う（ステップＳ９０５）。たとえば、ファイル入れ替え部６３１は、ファイル入れ替えモードへの遷移を要求する遷移要求を呼処理部６３３へ出力する。そして、ファイル入れ替え部６３１は、ファイル入れ替えモードへの遷移が完了したことを示す完了通知を呼処理部６３３から取得する。
【００９９】
つぎに、ファイル入れ替え部６３１は、ＭＭＵ３３０に対してアドレスの対応を切り替えさせる制御を行う（ステップＳ９０６）。たとえば、ファイル入れ替え部６３１は、新バージョン領域３１２の物理アドレスを旧バージョン領域３１１の実効アドレスに割り当てることを指示するＭＭＵ命令をＭＭＵ３３０へ出力する。
【０１００】
つぎに、ファイル入れ替え部６３１は、呼処理部６３３による処理をループ処理から脱出させる制御を行う（ステップＳ９０７）。たとえば、ファイル入れ替え部６３１は、ループ脱出データを“０ｘ１”に書き換えることを要求するループ脱出データ書き換え要求をＲＯＭ２２０へ出力する。
【０１０１】
つぎに、ファイル入れ替え部６３１は、新オーバーレイＰＲＧ２４２をオーバーレイ起動させる制御を行う（ステップＳ９０８）。たとえば、ファイル入れ替え部６３１は、新オーバーレイＰＲＧ２４２のオーバーレイ起動を要求するオーバーレイ起動要求を監視等処理部６３４へ出力する。そして、ファイル入れ替え部６３１は、新オーバーレイＰＲＧ２４２のオーバーレイ起動が完了したことを示す完了通知を監視等処理部６３４から取得する。
【０１０２】
つぎに、ファイル入れ替え部６３１が、呼処理部６３３による呼制御の規制を解除させる制御を行い（ステップＳ９０９）、一連の処理を終了する。ステップＳ９０９において、たとえば、ファイル入れ替え部６３１は、呼制御の規制解除を要求する呼規制解除要求を呼規制部６３５へ出力する。そして、ファイル入れ替え部６３１は、呼の規制解除が完了したことを示す完了通知を呼規制部６３５から取得する。
【０１０３】
（実施の形態にかかる呼処理プログラムによる処理）
図１０は、実施の形態にかかる呼処理プログラムによる処理の一例を示すフローチャートである。呼処理部６３３は、呼処理プログラム（呼処理ＰＲＧ）により、たとえば図１０に示す各ステップを実行する。まず、呼処理部６３３は、ファイル入れ替え部６３１からファイル入れ替えモードへの遷移要求を受け付けたか否かを判断する（ステップＳ１００１）。ファイル入れ替えモードへの遷移要求を受け付けていない場合（ステップＳ１００１：Ｎｏ）は、呼処理部６３３は、所定の呼処理を行う（ステップＳ１００２）。
【０１０４】
つぎに、呼処理部６３３は、呼処理の所定の終了条件を満たしたか否かを判断する（ステップＳ１００３）。呼処理の終了条件は、たとえば、外部からの終了コマンドの受け付けや、自装置のシャットダウンなどである。終了条件を満たした場合（ステップＳ１００３：Ｙｅｓ）は、呼処理部６３３は、一連の呼処理プログラムによる処理を終了する。終了条件を満たしていない場合（ステップＳ１００３：Ｎｏ）は、呼処理部６３３は、ステップＳ１００１へ戻る。
【０１０５】
ステップＳ１００１において、ファイル入れ替えモードへの遷移要求を受け付けた場合（ステップＳ１００１：Ｙｅｓ）は、呼処理部６３３は、呼処理プログラムに基づく処理に含まれる所定のループ処理へ強制ジャンプする（ステップＳ１００４）。ループ処理については後述する（たとえば図１１参照）。そして、呼処理部６３３は、ループ処理を終了（ループ処理から脱出）すると、ステップＳ１００３へ移行する。
【０１０６】
旧呼処理ＰＲＧ２３１および新呼処理ＰＲＧ２３２は、それぞれ図１０に示した各ステップを含む。そして、新呼処理ＰＲＧ２３２は、旧呼処理ＰＲＧ２３１に対して、たとえばステップＳ１００２における呼処理やステップＳ１００３における終了条件などが変更されたプログラムである。
【０１０７】
一方、ステップＳ１００４のループ処理は、旧呼処理ＰＲＧ２３１および新呼処理ＰＲＧ２３２の両方において同じ処理であり、かつリンカによって固定アドレス（一例としては“０ｘ１０”番地）に割り当てられている。このため、ループ処理は旧呼処理ＰＲＧ２３１および新呼処理ＰＲＧ２３２で同じ相対アドレスを有する。したがって、ステップＳ１００４のループ処理を実行中にＭＭＵ命令によりアドレスの対応を切り替えても、切り替えの前後で同じループ処理が動作することになる。
【０１０８】
（実施の形態にかかる呼処理プログラムのループ処理）
図１１は、実施の形態にかかる呼処理プログラムのループ処理の一例を示すフローチャートである。呼処理部６３３は、たとえば図１０に示したステップＳ１００４において、ループ処理としてたとえば図１１に示す各ステップを実行する。図１１に示す各ステップは、呼処理部６３３から起動されたリンカによってプログラムが固定割り当てされたループプログラムに基づく処理である。
【０１０９】
まず、呼処理部６３３は、ループ脱出データをたとえばＲＯＭ２２０から読み出す（ステップＳ１１０１）。つぎに、呼処理部６３３は、ステップＳ１１０１によって読み出したループ脱出データが“０ｘ１”であるか否かを判断する（ステップＳ１１０２）。
【０１１０】
ステップＳ１１０２において、読み出したループ脱出データが“０ｘ１”でない場合（ステップＳ１１０２：Ｎｏ）は、呼処理部６３３は、ステップＳ１１０１へ戻る。読み出したループ脱出データが“０ｘ１”である場合（ステップＳ１１０２：Ｙｅｓ）は、呼処理部６３３は、一連のループ処理を終了（脱出）する。
【０１１１】
（実施の形態にかかる通信装置を適用可能な無線通信システム）
図１２は、実施の形態にかかる通信装置を適用可能な無線通信システムの一例を示す図である。図１２に示す無線通信システム１２００は、たとえば、コアネットワーク１２１０と、無線基地局１２２０と、無線端末１２３１，１２３２と、を含む。たとえば、無線通信システム１２００は、３Ｇ、ＬＴＥ、ＬＴＥ−Ａ、５Ｇなどの無線通信システムである。コアネットワーク１２１０は、たとえばＥＰＣ（Ｅｖｏｌｖｅｄ  Ｐａｃｋｅｔ  Ｃｏｒｅ）などの、無線基地局１２２０の上位装置を含むネットワークである。また、コアネットワーク１２１０はインターネット１２０１に接続されている。
【０１１２】
無線基地局１２２０は、コアネットワーク１２１０に接続されたｅＮＢ（ｅｖｏｌｖｅｄ  Ｎｏｄｅ  Ｂ）などの無線基地局である。無線基地局１２２０は、比較的広いマクロセルを形成するマクロ基地局であってもよいし、比較的狭いスモールセルを形成するスモール基地局であってもよい。
【０１１３】
実施の形態にかかる通信装置１００は、一例としては無線通信システム１２００の無線基地局１２２０に適用することができる。たとえば、無線基地局１２２０は、無線通信システム１２００における呼処理を行うための呼処理ＰＲＧ（たとえばファームウェア）を実行する。
【０１１４】
この場合に、通信装置１００は、無線基地局１２２０の呼処理ＰＲＧを新バージョンに更新する。これにより、無線基地局１２２０のリセットを行わなくても無線基地局１２２０の呼処理ＰＲＧを新バージョンに更新することができる。ただし、通信装置１００によるソフトウェア更新は、これに限らず、たとえば無線基地局１２２０の他のソフトウェアの更新や、コアネットワーク１２１０における無線基地局１２２０の上位装置のソフトウェアの更新に適用することもできる。また、通信装置１００によるソフトウェア更新は、無線端末１２３１，１２３２のソフトウェアの更新に適用することもできる。
【０１１５】
（実施の形態にかかる通信装置を適用可能な光伝送システム）
図１３は、実施の形態にかかる通信装置を適用可能な光伝送システムの一例を示す図である。図１３に示す光伝送システム１３００は、たとえば、ＯＡＤＭ１３１１〜１３１４と、トランスポンダ１３２１，１３２２と、を含む。ＯＡＤＭはＯｐｔｉｃａｌ  Ａｄｄ  Ｄｒｏｐ  Ｍｕｌｔｉｐｌｅｘｅｒ（光挿入分岐装置）の略である。光伝送システム１３００は、たとえば１ＦＩＮＩＴＹ伝送装置ネットワークである。１ＦＩＮＩＴＹは登録商標である。
【０１１６】
ＯＡＤＭ１３１１〜１３１４は、たとえば光ファイバなどによりリング状に接続されている。ＯＡＤＭ１３１１〜１３１４のそれぞれは、光信号の挿入および分岐を行う。たとえば、ＯＡＤＭ１３１４は、トランスポンダ１３２１から出力された光信号を、ＯＡＤＭ１３１３へ出力する信号光に挿入する。また、ＯＡＤＭ１３１４は、ＯＡＤＭ１３１１から出力された信号光に含まれる光信号を分岐してトランスポンダ１３２２へ出力する。
【０１１７】
トランスポンダ１３２１は、入力された電気信号を光信号に変換し、変換した光信号をＯＡＤＭ１３１４へ出力する。トランスポンダ１３２２は、ＯＡＤＭ１３１４から出力された光信号を電気信号に変換し、変換した電気信号を出力する。
【０１１８】
実施の形態にかかる通信装置１００は、一例としては光伝送システム１３００のＯＡＤＭ１３１４に適用することができる。たとえば、ＯＡＤＭ１３１４は、光伝送システム１３００によって伝送されるＯＴＮ（Ｏｐｔｉｃａｌ  Ｔｒａｎｓｐｏｒｔ  Ｎｅｔｗｏｒｋ：光伝達網）信号の制御を行う制御ＰＲＧを実行する。この場合に、通信装置１００は、ＯＡＤＭ１３１４の制御ＰＲＧを新バージョンに更新する。これにより、ＯＡＤＭ１３１４のリセットを行わなくてもＯＡＤＭ１３１４の制御ＰＲＧを新バージョンに更新することができる。
【０１１９】
ただし、通信装置１００によるソフトウェア更新の適用先は、ＯＡＤＭ１３１４の制御ＰＲＧの更新に限らない。たとえば、トランスポンダ１３２１，１３２２は、光伝送システム１３００によって伝送されるＯＴＮ信号の制御を行う制御ＰＲＧを実行する。この場合に、通信装置１００は、トランスポンダ１３２１，１３２２の制御ＰＲＧの更新に適用することもできる。
【０１２０】
または、通信装置１００によるソフトウェア更新は、たとえばＯＡＤＭ１３１４の他のソフトウェアの更新や、ＯＡＤＭ１３１１〜１３１３のソフトウェアの更新に適用することもできる。また、通信装置１００によるソフトウェア更新は、たとえばトランスポンダ１３２１，１３２２の他のソフトウェアの更新に適用することもできる。
【０１２１】
このように、実施の形態にかかる通信装置１００によれば、ＣＰＵ３２０の実行対象を旧呼処理ＰＲＧ２３１のループ処理に移行させることができる。そして、旧呼処理ＰＲＧ２３１に割り当てられている物理アドレスと対応付けられていた実効アドレスと対応する物理アドレスを、新呼処理ＰＲＧ２３２に割り当てられている物理アドレスに切り替えることができる。
【０１２２】
これにより、ＣＰＵ３２０の実行対象を旧呼処理ＰＲＧ２３１のループ処理から新呼処理ＰＲＧ２３２のループ処理に切り替えることができる。このため、コンピュータ６１０を再起動しなくても、コンピュータ６１０のソフトウェアを旧呼処理ＰＲＧ２３１から新呼処理ＰＲＧ２３２へ更新することができる。
【０１２３】
また、新呼処理ＰＲＧ２３２は、新呼処理ＰＲＧ２３２におけるループ処理の相対アドレスが、旧呼処理ＰＲＧ２３１におけるループ処理の相対アドレスと同じになるように生成されたプログラムであってもよい。これにより、実効アドレスと対応する物理アドレスを切り替えた際に、ＣＰＵ３２０の実行対象を旧呼処理ＰＲＧ２３１のループ処理から新呼処理ＰＲＧ２３２のループ処理に確実に切り替えることができる。
【０１２４】
なお、たとえば旧呼処理ＰＲＧ２３１を新呼処理ＰＲＧ２３２に更新し、旧オーバーレイＰＲＧ２４１を新オーバーレイＰＲＧ２４２に更新する構成について説明したが、このような構成に限らない。たとえば、旧呼処理ＰＲＧ２３１を新呼処理ＰＲＧ２３２に更新し、オーバーレイＰＲＧについては更新しない構成としてもよい。また、監視系やその他のプログラムをオーバーレイ起動する構成について説明したが、このような構成に限らない。たとえば、コンピュータ６１０のＣＰＵ３２０は、監視系やその他のプログラムのすべてをＲＡＭ２１０にロードして実行してもよい。
【０１２５】
以上説明したように、ソフトウェア更新方法および通信装置によれば、装置を再起動しなくてもソフトウェアを更新することができる。
【０１２６】
たとえば、従来、基地局装置のソフトウェアシステムや伝送装置のソフトウェアシステムにおけるソフトウェア（ファームウェアを含む）のバージョンアップは、たとえば呼規制をかけて動作する呼を停止してから行われる。また、旧バージョンから新バージョンへのバージョンアップの後はリセット動作を要する。このため、新バージョンのソフトウェアにバージョンアップする際に、新バージョンのソフトウェアが入った装置をリセットする間は運用動作（たとえば呼処理）が停止してしまうという問題があった。
【０１２７】
これに対して、上述した各実施の形態によれば、新バージョンのソフトウェアにバージョンアップした際に装置のリセットを必要としないファイル入れ替えサービスを提供することができる。また、たとえば、入れ替えるのはプログラムのみでデータ領域の入れ替えは行わないため、旧バージョンで使われていたデータはそのまま新バージョンで使われることで、データの不整合も発生しない。これにより、ソフトウェアのバージョンアップによる運用動作への影響を抑制することができる。
【０１２８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１２９】
（付記１）第１のプログラムに割り当てられている物理アドレスと対応付けられた実効アドレスを用いて前記第１のプログラムを実行するプロセッサの実行対象を、前記第１のプログラムに含まれる第１のループ処理に移行させ、
前記実効アドレスと対応する物理アドレスを、前記第１のプログラムと異なる第２のプログラムに割り当てられている物理アドレスに切り替えることにより、前記プロセッサの実行対象を前記第２のプログラムに含まれる第２のループ処理に移行させる、
ことを特徴とするソフトウェア更新方法。
【０１３０】
（付記２）前記第２のループ処理は、前記第１のループ処理と同じループ処理であることを特徴とする付記１に記載のソフトウェア更新方法。
【０１３１】
（付記３）前記実効アドレスと対応する物理アドレスを前記第２のプログラムに割り当てられている物理アドレスに切り替えた後に、前記プロセッサの実行対象を前記第２のプログラムに含まれ前記第２のループ処理と異なる処理に移行させることを特徴とする付記１または２に記載のソフトウェア更新方法。
【０１３２】
（付記４）前記第１のループ処理および前記第２のループ処理は、所定データの値が所定値になるまで前記所定データの監視を繰り返すループ処理であり、
前記所定データを前記所定値と異なる値から前記所定値へ変更することにより、前記プロセッサの実行対象を前記第２のプログラムに含まれ前記第２のループ処理と異なる処理に移行させる、
ことを特徴とする付記３に記載のソフトウェア更新方法。
【０１３３】
（付記５）前記第２のプログラムにおける前記第２のループ処理の相対アドレスは、前記第１のプログラムにおける前記第１のループ処理の相対アドレスと同じであることを特徴とする付記１〜４のいずれか一つに記載のソフトウェア更新方法。
【０１３４】
（付記６）前記第２のプログラムは、前記第２のプログラムにおける前記第２のループ処理の相対アドレスが、前記第１のプログラムにおける前記第１のループ処理の相対アドレスと同じになるように、前記第２のループ処理の相対アドレスをリンカによって固定的に割り当てることにより生成されたプログラムであることを特徴とする付記５に記載のソフトウェア更新方法。
【０１３５】
（付記７）前記第１のプログラムおよび前記第２のプログラムは、前記プロセッサがメモリ管理ユニットを介してアクセス可能なメモリに展開され、
前記メモリ管理ユニットにおける物理アドレスと実効アドレスとの対応情報を変更することにより、前記実効アドレスと対応する物理アドレスを前記第２のプログラムに割り当てられている物理アドレスに切り替える、
ことを特徴とする付記１〜６のいずれか一つに記載のソフトウェア更新方法。
【０１３６】
（付記８）前記第１のプログラムおよび前記第２のプログラムは、それぞれ通信装置が呼制御を行うためのプログラムであり、
前記プロセッサの実行対象が前記第１のプログラムに含まれ前記呼制御に関する処理である場合に、前記呼制御を停止させた後に前記実効アドレスと対応する物理アドレスを前記第２のプログラムに割り当てられている物理アドレスに切り替える、
ことを特徴とする付記１〜７のいずれか一つに記載のソフトウェア更新方法。
【０１３７】
（付記９）前記実効アドレスと対応する物理アドレスを前記第２のプログラムに割り当てられている物理アドレスに切り替えた後に、前記プロセッサの実行対象を、前記第２のプログラムに含まれ前記呼制御に関する処理に移行させることを特徴とする付記８に記載のソフトウェア更新方法。
【０１３８】
（付記１０）第１のプログラムに割り当てられている物理アドレスと対応付けられた実効アドレスを用いて前記第１のプログラムを実行するプロセッサと、
前記プロセッサの実行対象を、前記第１のプログラムに含まれる第１のループ処理に移行させ、前記実効アドレスと対応する物理アドレスを、前記第１のプログラムと異なる第２のプログラムに割り当てられている物理アドレスに切り替えることにより、前記プロセッサの実行対象を前記第２のプログラムに含まれる第２のループ処理に移行させる更新部と、
を備えることを特徴とする通信装置。
【符号の説明】
【０１３９】
１００  通信装置
１１０  プロセッサ
１１１  実行対象
１２０  メモリ
１２１  第１のプログラム
１２１ａ，１２２ｂ  処理
１２１ｂ  第１のループ処理
１２２  第２のプログラム
１２２ａ  第２のループ処理
１３０  更新部
２１０  ＲＡＭ
２２０  ＲＯＭ
２３１  旧呼処理ＰＲＧ
２３２  新呼処理ＰＲＧ
２４１，２４１ａ  旧オーバーレイＰＲＧ
２４２  新オーバーレイＰＲＧ
２４２ａ，６３０  プログラム
３１１  旧バージョン領域
３１２  新バージョン領域
３２０  ＣＰＵ
３３０  ＭＭＵ
５１１，５１２  ループプログラム
６０１  ユーザ端末
６０２  サーバ
６１０  コンピュータ
６１１  ＭＭＵ命令
６１４  ループ脱出データ
６１５  ＰＨＹデバイス
６１６  ＵＡＲＴ
６２１  デバイスドライバ
６２２  ＯＳ
６３１  ファイル入れ替え部
６３２  ＦＴＰ処理部
６３３  呼処理部
６３３ａ  ループ処理
６３４  監視等処理部
６３５  呼規制部
１２００  無線通信システム
１２０１  インターネット
１２１０  コアネットワーク
１２２０  無線基地局
１２３１，１２３２  無線端末
１３００  光伝送システム
１３１１〜１３１４  ＯＡＤＭ
１３２１，１３２２  トランスポンダ
【図１】
2018116375.tif 000003
【図２】
2018116375.tif 000004
【図３】
2018116375.tif 000005
【図４】
2018116375.tif 000006
【図５】
2018116375.tif 000007
【図６】
2018116375.tif 000008
【図７】
2018116375.tif 000009
【図８】
2018116375.tif 000010
【図９】
2018116375.tif 000011
【図１０】
2018116375.tif 000012
【図１１】
2018116375.tif 000013
【図１２】
2018116375.tif 000014
【図１３】
2018116375.tif 000015