(57)【要約】【課題】プログラムの格納に要する記憶容量の増大を抑制しつつ、更新用データの記憶媒体への書込に失敗した場合の復旧を可能にすること。【解決手段】不揮発性メモリ１５０に格納されたブートデータ１５１に含まれるブートプログラムの処理は、ＯＳ／アプリケーション１５３の起動を開始する前に、更新用データをサーバ１４０からダウンロードする処理を実行するダウンロード制御プログラム１５２を実行する。ダウンロード制御プログラム１５２の処理は、ダウンロードした更新用データを、ブートプログラムおよびダウンロード制御プログラム１５２が格納されている第１領域以外の第２領域に書き込むとともに、第２領域の先頭アドレスを次回起動時に実行すべきブートプログラムの格納位置として保持し、第１領域の先頭アドレスを障害時の復旧用のブートプログラムの格納位置として保持する処理を含む。【選択図】図１
2016170562.tif 000002
【特許請求の範囲】
【請求項１】
ブートプログラムと、前記ブートプログラムの処理で起動を開始される被起動プログラムと、が格納される記憶媒体と、
前記記憶媒体に格納された前記ブートプログラムを自装置の起動時に実行するプロセッサと、を備え、
前記ブートプログラムの処理は、前記被起動プログラムの起動を開始する前に、更新用データを外部装置からダウンロードするダウンロード制御プログラムを実行する処理を含み、
前記ダウンロード制御プログラムの処理は、ダウンロードした前記更新用データを、前記記憶媒体における前記ブートプログラムおよび前記ダウンロード制御プログラムが格納されている第１領域以外の第２領域に書き込むとともに、前記第２領域の先頭アドレスを自装置の次回起動時に前記プロセッサが実行すべきブートプログラムの格納位置として保持し、前記第１領域の先頭アドレスを障害時の復旧用のブートプログラムの格納位置として保持する処理を含む、
ことを特徴とする基地局装置。
【請求項２】
前記ダウンロード制御プログラムの処理は、前記ブートプログラムおよび前記ダウンロード制御プログラムの更新用データを前記外部装置からダウンロードし、前記ブートプログラムおよび前記ダウンロード制御プログラムの更新用データの前記第２領域への書込が成功した場合に、前記第２領域の先頭アドレスが、自装置の次回起動時に前記プロセッサが実行すべきブートプログラムの格納位置となるように前記記憶媒体の面切替を行う処理を含むことを特徴とする請求項１に記載の基地局装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、基地局装置に関する。
【背景技術】
【０００２】
従来、たとえば出荷後の機能更新やバグ対応のために、外部装置からのダウンロード機能を備える基地局装置等の半導体装置が知られている。また、電子機器において、１つのＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）を使用し、かつ通常の運用動作を行いつつダウンロード処理を実施する技術が知られている（たとえば、下記特許文献１参照。）。
【０００３】
また、プリンタ等において、プログラムのダウンロード時に、更新されるプログラムを格納している第１のフラッシュＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）とは別の第２のフラッシュＰＲＯＭに、更新するプログラムを格納する技術が知られている（たとえば、下記特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３３２２２８号公報
【特許文献２】特開２００１−１１７７８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では以下のような問題がある。すなわち、装置の起動時に実行される各種のプログラム群を格納する記憶領域とは別に、該プログラム群の更新用データをダウンロードして格納するための記憶領域を設ける構成とすると、プログラムの格納に要する記憶容量が増大するという問題がある。また、更新用データをダウンロードして格納するための記憶領域を設けない構成とすると、装置の起動時に実行される各種のプログラム群の更新用データの記憶媒体への書込が失敗した場合に装置の復旧ができなくなるという問題がある。
【０００６】
１つの側面では、本発明は、プログラムの格納に要する記憶容量の増大を抑制しつつ、更新用データの記憶媒体への書込に失敗した場合の復旧を可能にすることができる基地局装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、ブートプログラムと、前記ブートプログラムの処理で起動を開始される被起動プログラムと、が格納される記憶媒体と、前記記憶媒体に格納された前記ブートプログラムを自装置の起動時に実行するプロセッサと、を備え、前記ブートプログラムの処理は、前記被起動プログラムの起動を開始する前に、更新用データを外部装置からダウンロードするダウンロード制御プログラムを実行する処理を含み、前記ダウンロード制御プログラムの処理は、ダウンロードした前記更新用データを、前記記憶媒体における前記ブートプログラムおよび前記ダウンロード制御プログラムが格納されている第１領域以外の第２領域に書き込むとともに、前記第２領域の先頭アドレスを自装置の次回起動時に前記プロセッサが実行すべきブートプログラムの格納位置として保持し、前記第１領域の先頭アドレスを障害時の復旧用のブートプログラムの格納位置として保持する処理を含む基地局装置が提案される。
【発明の効果】
【０００８】
本発明の一側面によれば、プログラムの格納に要する記憶容量の増大を抑制しつつ、更新用データの記憶媒体への書込に失敗した場合の復旧を可能にすることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかる基地局装置の一例を示す図である。
【図２】図２は、実施の形態にかかる基地局装置による更新用データの１回目のダウンロード時における不揮発性メモリの状態遷移の一例を示す図である。
【図３】図３は、実施の形態にかかる基地局装置による更新用データの２回目のダウンロード時における不揮発性メモリの状態遷移の一例を示す図である。
【図４】図４は、実施の形態にかかる基地局装置による更新用データの書込が失敗した場合における不揮発性メモリの状態遷移の一例を示す図である。
【図５】図５は、実施の形態にかかる基地局装置の構成の一例を示す図である。
【図６】図６は、実施の形態にかかる基地局装置における更新用データのダウンロードおよび書込の一例を示す図である。
【図７】図７は、実施の形態にかかる基地局装置が実行するダウンロード制御プログラムの構成の一例を示す図である。
【図８】図８は、実施の形態にかかる基地局装置における面切替ロジックの一例を示す図である。
【図９】図９は、実施の形態にかかる基地局装置のＣＰＵによる起動時の処理の一例を示すフローチャートである。
【図１０】図１０は、実施の形態にかかる基地局装置のＣＰＵによるダウンロード制御プログラムに基づく処理の一例を示すフローチャートである。
【図１１】図１１は、実施の形態にかかる基地局装置におけるダウンロード制御プログラムに基づく動作の一例を示すシーケンス図（その１）である。
【図１２】図１２は、実施の形態にかかる基地局装置におけるダウンロード制御プログラムに基づく動作の一例を示すシーケンス図（その２）である。
【図１３】図１３は、実施の形態にかかる基地局装置におけるダウンロード制御プログラムに基づく動作の一例を示すシーケンス図（その３）である。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、本発明にかかる基地局装置の実施の形態を詳細に説明する。
【００１１】
（実施の形態）
図１は、実施の形態にかかる基地局装置の一例を示す図である。実施の形態にかかる基地局装置１１０は、たとえば図１に示す通信システム１００に適用することができる。通信システム１００は、基地局装置１１０と、移動局１２０と、ネットワーク１３０と、サーバ１４０と、を含む。
【００１２】
基地局装置１１０は、移動局１２０との間で無線通信が可能な基地局装置である。一例としては、基地局装置１１０は、フェムトセルを形成し、形成したフェムトセルに在圏する移動局１２０との間で無線通信を行うフェムト基地局である。ただし、基地局装置１１０はフェムト基地局に限らず、ピコセルやナノセルなどの各種のスモールセルを形成するスモール基地局や、マクロセルを形成するマクロ基地局などであってもよい。
【００１３】
また、基地局装置１１０は、ネットワーク１３０を介してサーバ１４０に接続されている。サーバ１４０は、基地局装置１１０の動作に用いられるデータを更新するための更新用データを格納する外部装置である。
【００１４】
基地局装置１１０の動作に用いられるデータは、たとえば、基地局装置１１０が実行するプログラムと、基地局装置１１０が実行するプログラムに基づく処理において参照されるパラメータと、の少なくともいずれかを含む。基地局装置１１０は、サーバ１４０に格納されたデータを、ネットワーク１３０を介してダウンロード可能である。
【００１５】
不揮発性メモリ１５０は、基地局装置１１０に設けられた記憶媒体である。不揮発性メモリ１５０は、１つの不揮発性メモリによって実現されてもよいし、複数の不揮発性メモリを組み合わせることによって実現されてもよい。「０ｘ００００」〜「０ｘＦＦＦＦ」は、不揮発性メモリ１５０における物理的なアドレスである。
【００１６】
ＣＰＵ１６０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）は、基地局装置１１０に設けられたプロセッサであり、不揮発性メモリ１５０に格納されたプログラムを実行する。たとえばＣＰＵ１６０は、基地局装置１１０の起動時に、不揮発性メモリ１５０の先頭アドレスである「０ｘ００００」の領域から順に読出を行い、読出によって得られたプログラムを実行する。
【００１７】
基地局装置１１０は、不揮発性メモリ１５０の各アドレスのうちの最上位アドレスのビットによって不揮発性メモリ１５０の記憶領域を二分割して用いる。たとえば、基地局装置１１０は、不揮発性メモリ１５０における「０ｘ００００」〜「０ｘ７ＦＦＦ」までの領域を０面、不揮発性メモリ１５０における「０ｘ８０００」〜「０ｘＦＦＦＦ」までの領域を１面とする面切替を行う。基地局装置１１０における不揮発性メモリ１５０の面切替については後述する（たとえば図２〜図４や図８参照）。
【００１８】
不揮発性メモリ１５０の先頭、すなわち「０ｘ００００」を先頭とする領域には、ブートデータ１５１、ダウンロード制御プログラム１５２およびＯＳ／アプリケーション１５３が格納されている。ブートデータ１５１は、基地局装置１１０のブート（起動）のためのデータである。たとえば、ブートデータ１５１は、基地局装置１１０がブートするためのブートプログラムや、ブートプログラムに基づくブートにおいて参照されるパラメータなどを含むデータである。
【００１９】
ブートデータ１５１に含まれるブートプログラムは、ＯＳ／アプリケーション１５３を起動する処理を含むとともに、ＯＳ／アプリケーション１５３の起動を開始する前にダウンロード制御プログラム１５２を実行する処理を含む。ＯＳ／アプリケーション１５３の起動を開始する前にダウンロード制御プログラム１５２を実行する処理は、たとえば後述のジャンプ命令による処理である。
【００２０】
ダウンロード制御プログラム１５２は、基地局装置１１０がサーバ１４０からの更新用データをダウンロードする処理を実行するプログラムである。ダウンロード制御プログラム１５２は、基地局装置１１０の起動時に、ブートデータ１５１に含まれるブートプログラムのつぎに実行されるように不揮発性メモリ１５０に格納されている。
【００２１】
たとえば、ダウンロード制御プログラム１５２は、サーバ１４０から更新用データのダウンロードを行うためのプロトコルの処理のみを行うダウンロード制御専用のプログラムである。ダウンロードを行うためのプロトコルには、一例としては、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）やＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）がある。
【００２２】
ただし、ダウンロード制御プログラム１５２は、ダウンロード制御専用のプログラムに限らない。たとえば、ダウンロード制御プログラム１５２は、ＯＳ／アプリケーション１５３とは別に不揮発性メモリ１５０に記憶されるプログラムであればよく、ダウンロード制御以外の処理を含むプログラムであってもよい。
【００２３】
ＯＳ／アプリケーション１５３は、基地局装置１１０のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：オペレーティングシステム）およびアプリケーションを含むプログラムである。また、ＯＳ／アプリケーション１５３は、ブートデータ１５１に含まれるブートプログラムによって起動を開始される被起動プログラムである。たとえば、ＯＳ／アプリケーション１５３は、基地局装置１１０の起動時に、ブートデータ１５１に含まれるブートプログラムおよびダウンロード制御プログラム１５２のつぎに実行されるように不揮発性メモリ１５０に格納されている。
【００２４】
ＯＳ／アプリケーション１５３に含まれるＯＳは、基地局装置１１０の各デバイスの初期設定や、基地局装置１１０のアプリケーションの起動を行うための基本ソフトウェアである。基地局装置１１０のアプリケーションは、基地局装置１１０の機能を実現するための各種のソフトウェアである。基地局装置１１０の機能には、たとえば、移動局１２０との間の無線通信や、ネットワーク１３０との間の通信などが含まれる。また、基地局装置１１０のアプリケーションには、ダウンロード制御プログラム１５２と同様に基地局装置１１０の起動時に用いるデータのダウンロードを行うダウンロード制御プログラムが含まれていてもよい。
【００２５】
このように、基地局装置１１０は、ブートデータ１５１やＯＳ／アプリケーション１５３とは別に、基地局装置１１０の起動時に更新用データのダウンロードを行うためのダウンロード制御プログラム１５２を不揮発性メモリ１５０に格納する。ただし、ダウンロード制御プログラム１５２は、ＯＳ／アプリケーション１５３とは別に実装されたプログラムであればよく、たとえばブートデータ１５１と一体的に実装されたプログラムであってもよい。
【００２６】
サーバ１４０には、ブートデータ１５１、ダウンロード制御プログラム１５２およびＯＳ／アプリケーション１５３の更新用データが格納されている。基地局装置１１０は、サーバ１４０から受信した更新用データを不揮発性メモリ１５０に書き込むことによって、ブートデータ１５１、ダウンロード制御プログラム１５２およびＯＳ／アプリケーション１５３の更新を行う。
【００２７】
図２は、実施の形態にかかる基地局装置による更新用データの１回目のダウンロード時における不揮発性メモリの状態遷移の一例を示す図である。図２において、図１に示した部分と同様の部分については同一の符号を付して説明を省略する。図２に示す状態２０１〜２０４は、基地局装置１１０の不揮発性メモリ１５０の各状態を示している。
【００２８】
状態２０１（ダウンロード前）は、図１に示した不揮発性メモリ１５０の状態と同様の不揮発性メモリ１５０の状態を示している。すなわち、状態２０１は、不揮発性メモリ１５０における「０ｘ００００」を先頭とする領域である０面に、ブートデータ１５１、ダウンロード制御プログラム１５２およびＯＳ／アプリケーション１５３が格納された状態である。
【００２９】
図２では、状態２０１において、基地局装置１１０が更新用データの１回目のダウンロードを行う場合について説明する。この１回目のダウンロードは、基地局装置１１０の起動時に、ＣＰＵ１６０がブートデータ１５１の後にダウンロード制御プログラム１５２を実行することにより行われる。
【００３０】
まず、基地局装置１１０は、ブートデータ１５１およびダウンロード制御プログラム１５２の更新用データとして、新ブートデータ２１１および新ダウンロード制御プログラム２１２をサーバ１４０からダウンロードする。そして、基地局装置１１０は、ダウンロードした新ブートデータ２１１および新ダウンロード制御プログラム２１２を、不揮発性メモリ１５０のうちの現在使用している０面と異なる１面、すなわち「０ｘ８０００」を先頭とする領域に書き込む。このとき、基地局装置１１０は、まず「０ｘ８０００」を先頭とする領域に新ブートデータ２１１を書き込み、新ブートデータ２１１を書き込んだ領域の直後の領域に新ダウンロード制御プログラム２１２を書き込む。
【００３１】
これにより、不揮発性メモリ１５０は状態２０２（ダウンロード中）へ遷移する。このとき、図２に示す例ではＯＳ／アプリケーション１５３は１面の領域にまで書き込まれていたため、ＯＳ／アプリケーション１５３のうちの１面の領域に書き込まれた部分は新ブートデータ２１１や新ダウンロード制御プログラム２１２によって上書きされる。
【００３２】
また、基地局装置１１０は、新ブートデータ２１１を書き込んだ不揮発性メモリ１５０の１面の先頭アドレスを、基地局装置１１０の次回起動時にＣＰＵ１６０が実行すべきブートプログラムの格納位置として保持する。また、基地局装置１１０は、ブートデータ１５１が格納された不揮発性メモリ１５０の０面の先頭アドレスを、障害時の復旧用のブートプログラムの格納位置として保持する。
【００３３】
図２に示す例では、状態２０２のように、不揮発性メモリ１５０に対する新ブートデータ２１１および新ダウンロード制御プログラム２１２の書込が成功したとする。この場合に、基地局装置１１０は、不揮発性メモリ１５０のアドレスを変換することによる面切替を行う。たとえば、基地局装置１１０は、物理アドレスの「０ｘ００００」が「０ｘ８０００」となり、物理アドレスの「０ｘ８０００」が「０ｘ００００」となるように論理的なアドレス変換を行う。
【００３４】
すなわち、基地局装置１１０は、基地局装置１１０の次回起動時にＣＰＵ１６０が実行すべきブートプログラムの格納位置として保持しておいた１面の先頭アドレスが「０ｘ００００」となるようにアドレス変換を行う。また、基地局装置１１０は、障害時の復旧用のブートプログラムの格納位置として保持しておいた０面の先頭アドレスが「０ｘ８０００」となるようにアドレス変換を行う。この面切替により、不揮発性メモリ１５０は状態２０３（ダウンロード中）へ遷移する。
【００３５】
つぎに、基地局装置１１０は、ＯＳ／アプリケーション１５３の更新用データとして、新ＯＳ／アプリケーション２１３をサーバ１４０からダウンロードする。そして、基地局装置１１０は、ダウンロードした新ＯＳ／アプリケーション２１３を、不揮発性メモリ１５０の１面における、新ダウンロード制御プログラム２１２を書き込んだ領域の直後の領域に書き込む。
【００３６】
図２に示す例では、新ＯＳ／アプリケーション２１３は、新ダウンロード制御プログラム２１２を書き込んだ領域の直後から「０ｘ７ＦＦＦ」までの領域には入りきらず、０面の「０ｘ８０００」を先頭とする領域にまで書き込まれている。したがって、０面の「０ｘ８０００」を先頭とする領域に書き込まれていたブートデータ１５１、ダウンロード制御プログラム１５２およびＯＳ／アプリケーション１５３は新ＯＳ／アプリケーション２１３によって上書きされる。これにより、不揮発性メモリ１５０は状態２０４（ダウンロード完了後）へ遷移する。
【００３７】
不揮発性メモリ１５０が状態２０４へ遷移することにより、不揮発性メモリ１５０における「０ｘ００００」を先頭とする領域に、新ブートデータ２１１、新ダウンロード制御プログラム２１２および新ＯＳ／アプリケーション２１３を書き込むことができる。これにより、以降の基地局装置１１０の起動時に、基地局装置１１０のＣＰＵ１６０は、新ブートデータ２１１、新ダウンロード制御プログラム２１２、新ＯＳ／アプリケーション２１３の順に読み出して実行する。すなわち、不揮発性メモリ１５０が状態２０４へ遷移することにより、ブートデータ１５１、ダウンロード制御プログラム１５２およびＯＳ／アプリケーション１５３の新データ（２１１〜２１３）への更新が完了する。
【００３８】
図２に示したように、基地局装置１１０は、新ブートデータ２１１および新ダウンロード制御プログラム２１２の書込が成功した後に面切替を行い、面切替の後に新ＯＳ／アプリケーション２１３の書込を行う。これにより、新ブートデータ２１１および新ダウンロード制御プログラム２１２の書込が成功する前に、新ＯＳ／アプリケーション２１３によってブートデータ１５１やダウンロード制御プログラム１５２が上書きされることを回避することができる。
【００３９】
このため、新ブートデータ２１１や新ダウンロード制御プログラム２１２の書込が失敗した場合にブートや更新用プログラムのダウンロードが実行できずに復旧不可能になることを回避することができる。新ブートデータ２１１や新ダウンロード制御プログラム２１２の書込が失敗した場合の不揮発性メモリ１５０の状態遷移については後述する（たとえば図４参照）。
【００４０】
このように、ダウンロード制御プログラム１５２による処理は、ダウンロードした更新用データを、不揮発性メモリ１５０におけるブートデータ１５１およびダウンロード制御プログラム１５２が格納されている第１領域以外の第２領域に書き込む処理を含む。図２に示した例では、第１領域は不揮発性メモリ１５０の０面であり、第２領域は不揮発性メモリ１５０の１面である。
【００４１】
また、ダウンロード制御プログラム１５２による処理は、第２領域の先頭アドレスを基地局装置１１０の次回起動時にＣＰＵ１６０が実行すべきブートプログラムの格納位置として保持する処理を含む。また、ダウンロード制御プログラム１５２による処理は、第１領域の先頭アドレスを障害時の復旧用のブートプログラムの格納位置として保持する処理を含む。これにより、ブートデータ１５１およびダウンロード制御プログラム１５２の更新用データの第２領域への書込が成功した場合に、第２領域の先頭アドレスを次回起動時に実行すべきブートプログラムの格納位置に設定する面切替が可能になる。
【００４２】
なお、図２においては状態２０１で不揮発性メモリ１５０にダウンロード制御プログラム１５２が格納されている場合について説明したが、状態２０１でダウンロード制御プログラム１５２が格納されていなくてもよい。たとえば、ＯＳ／アプリケーション１５３にダウンロード制御プログラム１５２と同様のダウンロード制御プログラムが含まれる場合は、基地局装置１１０は、ＯＳ／アプリケーション１５３に含まれるダウンロード制御プログラムを実行する。
【００４３】
これにより、状態２０１で不揮発性メモリ１５０にダウンロード制御プログラム１５２が格納されていなくても、不揮発性メモリ１５０の１面に新ブートデータ２１１、新ダウンロード制御プログラム２１２を書き込むことができる。そして、図２に示したようにアドレス変換によって不揮発性メモリ１５０の面切替を行い、不揮発性メモリ１５０の１面に新ＯＳ／アプリケーション２１３を書き込むことができる。
【００４４】
すなわち、不揮発性メモリ１５０に予めダウンロード制御プログラムが格納されていなくても、図２に示したように更新用データのダウンロードおよび書込を行うことで、不揮発性メモリ１５０にダウンロード制御プログラムが格納された状態とすることができる。
【００４５】
図３は、実施の形態にかかる基地局装置による更新用データの２回目のダウンロード時における不揮発性メモリの状態遷移の一例を示す図である。図３において、図２に示した部分と同様の部分については同一の符号を付して説明を省略する。
【００４６】
図３に示す状態２０４は、図２に示した状態２０４と同様の状態、すなわち不揮発性メモリ１５０の使用面が１面に設定され、１面に新ブートデータ２１１、新ダウンロード制御プログラム２１２および新ＯＳ／アプリケーション２１３が格納された状態である。
【００４７】
図３では、状態２０４において、基地局装置１１０が更新用データの２回目のダウンロードを行う場合について説明する。たとえば、図２に示した１回目のダウンロードより後に基地局装置１１０が再起動した場合に、ＣＰＵ１６０は、新ブートデータ２１１の後に新ダウンロード制御プログラム２１２を実行する。これにより、１回目にダウンロードした更新用データより新しい更新用データがサーバ１４０に格納されていた場合に２回目のダウンロードが行われる。
【００４８】
まず、基地局装置１１０は、新ブートデータ２１１および新ダウンロード制御プログラム２１２の更新用データとして、新新ブートデータ３１１および新新ダウンロード制御プログラム３１２をサーバ１４０からダウンロードする。そして、基地局装置１１０は、ダウンロードした新新ブートデータ３１１および新新ダウンロード制御プログラム３１２を、不揮発性メモリ１５０のうちの現在使用している１面と異なる０面、すなわち「０ｘ８０００」を先頭とする領域に書き込む。このとき、基地局装置１１０は、まず「０ｘ８０００」を先頭とする領域に新新ブートデータ３１１を書き込み、新新ブートデータ３１１を格納した領域の直後の領域に新新ダウンロード制御プログラム３１２を書き込む。
【００４９】
これにより、不揮発性メモリ１５０は状態３０１（ダウンロード中）へ遷移する。このとき、図３に示す例では新ＯＳ／アプリケーション２１３は０面の領域にまで書き込まれており、新ＯＳ／アプリケーション２１３のうちの０面に書き込まれた部分は新新ブートデータ３１１や新新ダウンロード制御プログラム３１２によって上書きされる。
【００５０】
図３に示す例では、状態３０１のように、不揮発性メモリ１５０に対する新新ブートデータ３１１および新新ダウンロード制御プログラム３１２の書込が成功したとする。この場合に、基地局装置１１０は、不揮発性メモリ１５０のアドレスを変換することによる面切替を行う。たとえば、基地局装置１１０は、物理アドレスの「０ｘ００００」が「０ｘ８０００」となり、物理アドレスの「０ｘ８０００」が「０ｘ００００」となるように論理的なアドレス変換を行う。このアドレス変換は、図２に示したアドレス変換によって変換されたアドレスを元に戻す処理である。これにより、不揮発性メモリ１５０は状態３０２（ダウンロード中）へ遷移する。
【００５１】
つぎに、基地局装置１１０は、新ＯＳ／アプリケーション２１３の更新用データとして、新新ＯＳ／アプリケーション３１３をサーバ１４０からダウンロードする。そして、基地局装置１１０は、ダウンロードした新新ＯＳ／アプリケーション３１３を、不揮発性メモリ１５０の０面における、新新ダウンロード制御プログラム３１２を書き込んだ領域の直後の領域に書き込む。
【００５２】
図３に示す例では、新新ＯＳ／アプリケーション３１３は、新新ダウンロード制御プログラム３１２を書き込んだ領域の直後から「０ｘ７ＦＦＦ」までの領域には入りきらず、不揮発性メモリ１５０の１面の領域にまで書き込まれている。したがって、１面の「０ｘ８０００」を先頭とする領域に書き込まれていた新ブートデータ２１１、新ダウンロード制御プログラム２１２および新ＯＳ／アプリケーション２１３は新新ＯＳ／アプリケーション３１３によって上書きされる。これにより、不揮発性メモリ１５０は状態３０３（ダウンロード完了後）へ遷移する。
【００５３】
不揮発性メモリ１５０が状態３０３へ遷移することにより、不揮発性メモリ１５０における「０ｘ００００」を先頭とする領域に新新ブートデータ３１１、新新ダウンロード制御プログラム３１２および新新ＯＳ／アプリケーション３１３を書き込むことができる。これにより、以降の基地局装置１１０の起動時に、ＣＰＵ１６０は、新新ブートデータ３１１、新新ダウンロード制御プログラム３１２、新新ＯＳ／アプリケーション３１３の順に読み出して実行する。すなわち、不揮発性メモリ１５０が状態３０３へ遷移することにより、新ブートデータ２１１、新ダウンロード制御プログラム２１２および新ＯＳ／アプリケーション２１３の新データ（３１１〜３１３）への更新が完了する。
【００５４】
また、状態３０３は、基地局装置１１０が起動時に実行するブートプログラムを含むブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションが不揮発性メモリ１５０の０面に格納された、図２に示した状態２０１と同様の状態である。このため、基地局装置１１０が更新用データの３回目のダウンロードを行う場合は、不揮発性メモリ１５０に対する更新用データの書込および面切替は図２に示した例と同様に行われる。
【００５５】
以降、基地局装置１１０が更新用データの奇数回目のダウンロードを行う場合は、不揮発性メモリ１５０に対する更新用データの書込および面切替は図２に示した例と同様に行われる。また、基地局装置１１０が更新用データの偶数回目のダウンロードを行う場合は、不揮発性メモリ１５０に対する更新用データの書込および面切替は図３に示した例と同様に行われる。
【００５６】
図４は、実施の形態にかかる基地局装置による更新用データの書込が失敗した場合における不揮発性メモリの状態遷移の一例を示す図である。図４において、図２に示した部分と同様の部分については同一の符号を付して説明を省略する。
【００５７】
図４に示す状態２０１，２０２は、図２に示した状態２０１，２０２と同様である。ただし、図４では、状態２０２において、不揮発性メモリ１５０に対する新ダウンロード制御プログラム２１２の書込が失敗した場合について説明する。この場合に、基地局装置１１０は、基地局装置１１０の再起動（リセット）を行う。
【００５８】
その結果、基地局装置１１０は、現在の使用面である０面、すなわち不揮発性メモリ１５０における「０ｘ００００」を先頭とする領域から読出を行い、読出によって得られたプログラムを実行する。このため、基地局装置１１０は、まずブートデータ１５１を実行し、つぎにダウンロード制御プログラム１５２を実行する。
【００５９】
ダウンロード制御プログラム１５２の実行により、基地局装置１１０は、新ブートデータ２１１および新ダウンロード制御プログラム２１２をサーバ１４０から再度ダウンロードする。そして、基地局装置１１０は、再度ダウンロードした新ブートデータ２１１および新ダウンロード制御プログラム２１２を、不揮発性メモリ１５０のうちの現在使用している０面と異なる１面、すなわち「０ｘ８０００」を先頭とする領域に書き込む。
【００６０】
これにより、不揮発性メモリ１５０は状態４０１（ダウンロード中）へ遷移する。図４に示す例では、状態４０１のように、再度ダウンロードされた新ブートデータ２１１および新ダウンロード制御プログラム２１２の不揮発性メモリ１５０に対する書込が成功したとする。このため、状態４０１は、図２に示した状態２０２と同じ状態となる。
【００６１】
つぎに、基地局装置１１０は、不揮発性メモリ１５０のアドレスを変換することによる面切替を行う。たとえば、基地局装置１１０は、物理アドレスの「０ｘ００００」が「０ｘ８０００」となり、物理アドレスの「０ｘ８０００」が「０ｘ００００」となるように論理的なアドレス変換を行う。これにより、不揮発性メモリ１５０は、図２に示した状態２０３（ダウンロード中）と同じ状態となる。
【００６２】
つぎに、基地局装置１１０は、ＯＳ／アプリケーション１５３の更新用データとして、新ＯＳ／アプリケーション２１３をサーバ１４０からダウンロードする。そして、基地局装置１１０は、ダウンロードした新ＯＳ／アプリケーション２１３を、不揮発性メモリ１５０の１面における、新ダウンロード制御プログラム２１２を書き込んだ領域の直後の領域に書き込む。これにより、不揮発性メモリ１５０は、図２に示した状態２０４（ダウンロード完了後）と同じ状態となる。
【００６３】
状態２０２において不揮発性メモリ１５０に対する新ダウンロード制御プログラム２１２の書込が失敗した場合について説明したが、状態２０２において不揮発性メモリ１５０に対する新ブートデータ２１１の書込が失敗した場合についても同様である。
【００６４】
このように、基地局装置１１０は、面切替の実行前に新ブートデータ２１１および新ダウンロード制御プログラム２１２のダウンロードおよび不揮発性メモリ１５０への書込を行う。このため、不揮発性メモリ１５０に対するダウンロード制御プログラム１５２の書込が失敗した時点において面切替は行われていない。このため、不揮発性メモリ１５０の「０ｘ００００」を先頭とする領域にはブートデータ１５１およびダウンロード制御プログラム１５２が格納されている。
【００６５】
したがって、基地局装置１１０は、再起動を行うことで、ブートデータ１５１によりブートを行うことができる。また、基地局装置１１０は、ブートを行った後に、ダウンロード制御プログラム１５２によって新ブートデータ２１１および新ダウンロード制御プログラム２１２のダウンロードおよび書込を再度行うことができる。
【００６６】
このため、新ブートデータ２１１および新ダウンロード制御プログラム２１２などの更新用データのダウンロードや不揮発性メモリ１５０への書込に失敗した場合に、ブートや更新用データのダウンロードおよび書込ができなくなることを回避することができる。
【００６７】
なお、新ＯＳ／アプリケーション２１３の不揮発性メモリ１５０への書込は、面切替の後に行われ、新ＯＳ／アプリケーション２１３の不揮発性メモリ１５０への書込によっては新ブートデータ２１１や新ダウンロード制御プログラム２１２は上書きされない。このため、新ＯＳ／アプリケーション２１３の不揮発性メモリ１５０への書込が失敗しても、基地局装置１１０は起動時に新ブートデータ２１１および新ダウンロード制御プログラム２１２を読み出して実行することにより復旧が可能である。
【００６８】
この場合に、たとえば、新ダウンロード制御プログラム２１２の実行により、新ブートデータ２１１、新ダウンロード制御プログラム２１２および新ＯＳ／アプリケーション２１３の各ダウンロードおよび書込が再度行われる。
【００６９】
このように、基地局装置１１０は、ダウンロード用のダウンロード制御プログラム１５２をＯＳ／アプリケーション１５３とは別に有し、ブートデータ１５１およびダウンロード制御プログラム１５２の更新用データの書込成功後に面切替を行うことができる。これにより、基地局装置１１０は、更新用データの書込失敗時に、再起動により更新前のブートデータ１５１およびダウンロード制御プログラム１５２を読み出して実行し、復旧することが可能になる。
【００７０】
また、この復旧を可能にするために、不揮発性メモリ１５０には、運用中の各プログラムとは別に、新ブートデータ２１１および新ダウンロード制御プログラム２１２を格納可能な記憶容量があればよい。運用中の各プログラムは、たとえばブートデータ１５１、ダウンロード制御プログラム１５２およびＯＳ／アプリケーション１５３である。すなわち、不揮発性メモリ１５０には、運用中の各プログラムとは別に新ＯＳ／アプリケーション２１３を格納可能な記憶容量までは不要である。
【００７１】
また、新ＯＳ／アプリケーション２１３は容量の大きなデータ（たとえば数ギガバイト）であるのに対して、ダウンロード用の新ダウンロード制御プログラム２１２や新ブートデータ２１１は容量の小さなデータ（たとえば数キロバイト）である。このため、基地局装置１１０によれば、運用中の各プログラムとは別に新ＯＳ／アプリケーション２１３を格納可能な記憶容量までは不要になることにより、プログラムの格納に要する不揮発性メモリ１５０の増大を抑制することができる。
【００７２】
図５は、実施の形態にかかる基地局装置の構成の一例を示す図である。図５において、図１に示した部分と同様の部分については同一の符号を付して説明を省略する。図５に示すように、実施の形態にかかる基地局装置１１０は、たとえば、不揮発性メモリ１５０と、ＣＰＵ１６０と、ＤＲＡＭ５０１と、ＰＬＤ５０２と、ＷＡＮインターフェース５０３と、無線部５０４と、アンテナ５０５と、を備える。
【００７３】
ＣＰＵ１６０は、基地局装置１１０の全体の制御を司るプロセッサである。たとえば、ＣＰＵ１６０は、上述したブートデータ１５１、ダウンロード制御プログラム１５２およびＯＳ／アプリケーション１５３や、これらを更新したプログラムを不揮発性メモリ１５０から読み出して実行する。
【００７４】
ＤＲＡＭ５０１（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）は、揮発性のメモリであり、ＣＰＵ１６０のワークエリアとして使用される。なお、基地局装置１１０の揮発性メモリはＤＲＡＭ５０１に限らず、ＤＲＡＭ５０１に代えて各種の揮発性メモリを用いることができる。
【００７５】
不揮発性メモリ１５０は、上述したブートデータ１５１、ダウンロード制御プログラム１５２およびＯＳ／アプリケーション１５３や、これらを更新したプログラムを記憶する不揮発性のメモリである。たとえば、不揮発性メモリ１５０は、磁気ディスクやフラッシュメモリなどの、データ書換が可能な各種の不揮発性のメモリにより実現することができる。不揮発性メモリ１５０に記憶されたプログラムは、ＤＲＡＭ５０１にロードされてＣＰＵ１６０によって実行される。
【００７６】
ＰＬＤ５０２（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）は、ＣＰＵ１６０からの制御により不揮発性メモリ１５０の面切替を行うロジックが記憶される回路である。ＰＬＤ５０２による面切替のロジックについては後述する（たとえば図８参照）。
【００７７】
ＷＡＮインターフェース５０３は、基地局装置１１０がＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：広域通信網）との間で通信を行うための通信インターフェースである。たとえば、ＷＡＮインターフェース５０３は、図１に示したネットワーク１３０に接続され、ネットワーク１３０を介してサーバ１４０から更新用データをダウンロードする。また、ＷＡＮインターフェース５０３は、基地局装置１１０が接続された移動体通信網に接続され、移動局１２０と移動体通信網との間の通信を中継する機能を有していてもよい。ＷＡＮインターフェース５０３による通信はＣＰＵ１６０によって制御される。
【００７８】
無線部５０４は、アンテナ５０５を介して、移動局１２０との間で無線通信を行う。たとえば、無線部５０４が行う処理には、移動局１２０への送信データに対する符号化、変調、周波数変換、増幅などが含まれる。また、無線部５０４が行う処理には、移動局１２０からの受信データに対する増幅、周波数変換、復調、復号などが含まれる。
【００７９】
図５の点線矢印に示すように、基地局装置１１０は、ＷＡＮインターフェース５０３を介してサーバ１４０から更新用データをダウンロードし、ダウンロードした更新用データをＣＰＵ１６０によってＤＲＡＭ５０１に一時的に格納する。そして、基地局装置１１０は、ＤＲＡＭ５０１に一時的に格納した更新用データをＣＰＵ１６０によって不揮発性メモリ１５０に書き込む。
【００８０】
図６は、実施の形態にかかる基地局装置における更新用データのダウンロードおよび書込の一例を示す図である。図６において、図１または図５に示した部分と同様の部分については同一の符号を付して説明を省略する。基地局装置１１０のＣＰＵ１６０は、基地局装置１１０の起動時に、たとえば図６に示すように更新用データのダウンロードおよび書込を行う。図６に示す例では、基地局装置１１０が起動時に実行すべきブートデータ１５１、ダウンロード制御プログラム１５２およびＯＳ／アプリケーション１５３が不揮発性メモリ１５０の０面に格納されている。
【００８１】
ＣＰＵ１６０は、基地局装置１１０が起動すると不揮発性メモリ１５０からブートデータ１５１を読み出して実行する。つぎに、ＣＰＵ１６０は、不揮発性メモリ１５０からダウンロード制御プログラム１５２の読出処理Ｓ６０１を行う。読出処理Ｓ６０１によって読み出されたダウンロード制御プログラム１５２は、ＣＰＵ１６０によって実行可能なように展開される。ダウンロード制御プログラム１５２の展開先は、たとえばＤＲＡＭ５０１とすることができる。以下に説明するダウンロード処理Ｓ６０２および書込処理Ｓ６０３はＣＰＵ１６０がダウンロード制御プログラム１５２を実行することにより行われる。
【００８２】
つぎに、ＣＰＵ１６０は、ＷＡＮインターフェース５０３を用いて、ネットワーク１３０を介してサーバ１４０に対して更新用データ６１０のダウンロード要求を行う。そして、ＣＰＵ１６０は、ＷＡＮインターフェース５０３を用いて、ネットワーク１３０を介してサーバ１４０から更新用データ６１０のダウンロード処理Ｓ６０２を行う。更新用データ６１０は、図６に示す例では新ブートデータ２１１および新ダウンロード制御プログラム２１２を含むデータである。ＣＰＵ１６０は、ダウンロード処理Ｓ６０２によって得られた更新用データ６１０をＤＲＡＭ５０１に格納する。
【００８３】
つぎに、ＣＰＵ１６０は、ＤＲＡＭ５０１に格納した更新用データ６１０の不揮発性メモリ１５０への書込処理Ｓ６０３を行う。図６に示す例では、上述したように更新用データ６１０は新ブートデータ２１１および新ダウンロード制御プログラム２１２を含むデータである。したがって、新ブートデータ２１１および新ダウンロード制御プログラム２１２が不揮発性メモリ１５０に書き込まれる。このとき、新ブートデータ２１１および新ダウンロード制御プログラム２１２は不揮発性メモリ１５０の１面に書き込まれる。
【００８４】
新ブートデータ２１１および新ダウンロード制御プログラム２１２の不揮発性メモリ１５０への書込処理Ｓ６０３が成功すると、ＰＬＤ５０２からの制御により不揮発性メモリ１５０の０面から１面への面切替が行われる。また、新ＯＳ／アプリケーション２１３を含む更新用データについてのダウンロードおよび書込が行われる。新ＯＳ／アプリケーション２１３を含む更新用データについてのダウンロードや書込は、図６に示した新ブートデータ２１１および新ダウンロード制御プログラム２１２を含む更新用データ６１０のダウンロード処理Ｓ６０２や書込処理Ｓ６０３と同様である。
【００８５】
図７は、実施の形態にかかる基地局装置が実行するダウンロード制御プログラムの構成の一例を示す図である。上述したダウンロード制御プログラム１５２、新ダウンロード制御プログラム２１２および新新ダウンロード制御プログラム３１２は、たとえば図７に示すダウンロード制御プログラム７００により実現することができる。
【００８６】
ダウンロード制御プログラム７００は、データチェック部７０１と、サーバ通信部７０２と、メモリ管理部７０３と、不揮発性メモリ読出部７０４と、不揮発性メモリ書込部７０５と、面切替部７０６と、を備える。
【００８７】
データチェック部７０１は、基地局装置１１０が起動時に実行するブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの各種のチェックを行う。たとえば、データチェック部７０１は、ブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの最新版数の問い合わせを行う。このデータチェック部７０１による問い合わせは、たとえばサーバ通信部７０２を介してサーバ１４０に対して行われる。
【００８８】
また、データチェック部７０１は、メモリ管理部７０３に対して、ブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの現状版数の問い合わせを行う。そして、データチェック部７０１は、問い合わせにより得られた最新版数と現状版数とを比較する版数比較を行い、最新版数と現状版数が不一致であった場合は、サーバ通信部７０２に対して更新用データのダウンロード指示を行う。
【００８９】
また、データチェック部７０１は、サーバ通信部７０２によってダウンロードされた更新用データの不揮発性メモリ１５０への書込をメモリ管理部７０３に対して指示する。また、データチェック部７０１は、不揮発性メモリ１５０へ書き込まれたデータが正常か否かを判断するデータチェックを行う。データチェック部７０１によるデータチェックには、たとえばＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ：巡回冗長検査）などの各種の誤り検出を用いることができる。また、データチェック部７０１は、面切替部７０６に対して不揮発性メモリ１５０の面切替を指示する。
【００９０】
サーバ通信部７０２は、ＦＴＰやＴＣＰ／ＩＰなどのプロトコルの処理を実行することにより、ネットワーク１３０を介してサーバ１４０との通信を行う。たとえば、サーバ通信部７０２は、データチェック部７０１からの問い合わせに応じて、ブートプログラム、ダウンロード制御プログラムおよびＯＳ／アプリケーションの最新版数をサーバ１４０から取得する。また、サーバ通信部７０２は、データチェック部７０１からの指示に応じて、ブートプログラム、ダウンロード制御プログラムおよびＯＳ／アプリケーションの各更新用データのサーバ１４０からのダウンロードを行う。
【００９１】
メモリ管理部７０３は、不揮発性メモリ１５０からのデータ読出や不揮発性メモリ１５０へのデータ書込の管理を行う。たとえば、メモリ管理部７０３は、データチェック部７０１からの指示に応じて、不揮発性メモリ読出部７０４に対して、読出アドレスを指定してデータ読出を指示する。また、メモリ管理部７０３は、データチェック部７０１からの指示に応じて、不揮発性メモリ読出部７０４によって読み出されたブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの現状版数を取得する。そして、メモリ管理部７０３は、取得した現状版数をデータチェック部７０１へ通知する。また、メモリ管理部７０３は、データチェック部７０１からの指示に応じて、不揮発性メモリ書込部７０５に対して、書込アドレスを指定してデータ書込を指示する。
【００９２】
不揮発性メモリ読出部７０４は、メモリ管理部７０３からの指示に応じて、不揮発性メモリ１５０からのデータ読出を行う。不揮発性メモリ書込部７０５は、メモリ管理部７０３からの指示に応じて、不揮発性メモリ１５０へのデータ書込を行う。
【００９３】
面切替部７０６は、データチェック部７０１からの指示に応じて、ＰＬＤ５０２のＥＯＲ回路８１０の第２入力部８１２（図８参照）の入力値を変更することにより不揮発性メモリ１５０のメモリ切替を行う。図７に示したダウンロード制御プログラム７００の各構成による動作については後述する（たとえば図１１〜図１３参照）。
【００９４】
図８は、実施の形態にかかる基地局装置における面切替ロジックの一例を示す図である。面切替ロジックを実現するＰＬＤ５０２は、図８に示すように、たとえば排他的論理和の演算を行うＥＯＲ回路８１０により実現することができる。アドレス線群８２０は、ＣＰＵ１６０が不揮発性メモリ１５０にアクセスする際にアクセス先を指定するための複数のアドレス線である。すなわち、ＣＰＵ１６０は、アドレス線群８２０を介して不揮発性メモリ１５０へ入力する信号により、不揮発性メモリ１５０に対して読出や書込の対象となるアドレスを指定する。アドレス線群８２０により不揮発性メモリ１５０へ入力される各信号は、“０”または“１”の信号である。
【００９５】
アドレス線群８２０のうちの最上位ビットに対応するアドレス線８２１は、ＥＯＲ回路８１０を経由して不揮発性メモリ１５０に接続されている。ＥＯＲ回路８１０は、第１入力部８１１および第２入力部８１２を備える。第１入力部８１１には、アドレス線８２１によってＣＰＵ１６０から出力された信号が入力される。第２入力部８１２には、バス線８３０を介してＣＰＵ１６０から設定された面切替用の値（“０”または“１”）が入力される。
【００９６】
ＥＯＲ回路８１０は、第１入力部８１１および第２入力部８１２から入力された各値の排他的論理和（ＥＯＲ）をアドレス線８２１の信号として不揮発性メモリ１５０へ出力する。これにより、ＣＰＵ１６０により第２入力部８１２の値が“０”に設定されている場合は、アドレス線８２１により不揮発性メモリ１５０へ入力される値は、ＣＰＵ１６０がアドレス線８２１により出力した値と同じ値になる。また、ＣＰＵ１６０により第２入力部８１２の値が“１”に設定されている場合は、アドレス線８２１により不揮発性メモリ１５０へ入力される値は、ＣＰＵ１６０がアドレス線８２１により出力した値を反転した値になる。
【００９７】
ＣＰＵ１６０は、基地局装置１１０の起動時に、不揮発性メモリ１５０の先頭の「０ｘ００００」をアドレス線群８２０により指定してプログラムを読み出して実行するが、実際の読出先は、第２入力部８１２の値の“０”または“１”の設定により切り替わる。
【００９８】
たとえば、第２入力部８１２の値が“０”に設定されている場合に、ＣＰＵ１６０がアドレス線群８２０により先頭の「０ｘ００００」を指定すると、不揮発性メモリ１５０に対して「０ｘ００００」が指定される。すなわち、この場合は不揮発性メモリ１５０の０面が使用される状態となる。
【００９９】
また、第２入力部８１２の値が“１”に設定されている場合に、ＣＰＵ１６０がアドレス線群８２０により先頭の「０ｘ００００」を指定すると、不揮発性メモリ１５０に対して「０ｘ８０００」が指定される。すなわち、この場合は不揮発性メモリ１５０の１面が使用される状態となる。
【０１００】
このように、ＣＰＵ１６０は、バス線８３０を用いてＥＯＲ回路８１０の第２入力部８１２の値を“０”または“１”に切り替える。これにより、ＣＰＵ１６０からアドレス線群８２０によって指定したアドレスにオフセットを与え、不揮発性メモリ１５０における０面と１面との切り替えを行う面切替を行うことができる。ＥＯＲ回路８１０の第２入力部８１２の値の切替は、たとえばＣＰＵ１６０が図７に示した面切替部７０６の処理を実行することによって行われる。
【０１０１】
また、第２入力部８１２の値は、ＣＰＵ１６０により設定されると、ＰＬＤ５０２への電源供給がなくなっても維持されるようにする。これにより、基地局装置１１０が再起動されても、不揮発性メモリ１５０における面切替の状態は維持される。
【０１０２】
ただし、基地局装置１１０における不揮発性メモリ１５０の面切替ロジックには、図８に示した面切替ロジックに限らず各種の面切替ロジックを用いることができる。
【０１０３】
図９は、実施の形態にかかる基地局装置のＣＰＵによる起動時の処理の一例を示すフローチャートである。実施の形態にかかる基地局装置１１０のＣＰＵ１６０は、基地局装置１１０の起動時に、たとえば図９に示す各ステップを行う。
【０１０４】
基地局装置１１０の起動時に、ＣＰＵ１６０は、不揮発性メモリ１５０に格納されたブートプログラムを実行する（ステップＳ９０１）。たとえば、ＣＰＵ１６０は、不揮発性メモリ１５０の先頭アドレスを指定して不揮発性メモリ１５０からの読出を行うことによりブートプログラムを読み出す。そして、ＣＰＵ１６０は、読み出したブートプログラムをＤＲＡＭ５０１に展開して実行する。
【０１０５】
つぎに、ＣＰＵ１６０は、不揮発性メモリ１５０に格納されたダウンロード制御プログラムを実行する（ステップＳ９０２）。たとえば、ＣＰＵ１６０は、ステップＳ９０１によって実行したブートプログラムの終了時に指定されたジャンプ先のアドレスを指定して不揮発性メモリ１５０からの読出を行うことによりダウンロード制御プログラムを読み出す。そして、ＣＰＵ１６０は、読み出したダウンロード制御プログラムをＤＲＡＭ５０１に展開して実行する。
【０１０６】
ダウンロード制御プログラムを実行することにより、ＣＰＵ１６０は、基地局装置１１０に適用すべき更新用データがサーバ１４０にあれば、その更新用データをダウンロードして不揮発性メモリ１５０に書き込み、基地局装置１１０の再起動を行う。このダウンロード制御プログラムに基づく処理において基地局装置１１０のリセット（再起動）が行われた場合は、ＣＰＵ１６０は、ステップＳ９０３へは移行せずに、ステップＳ９０１から処理をやり直すことになる。ダウンロード制御プログラムに基づく処理については後述する（たとえば図１０参照）。
【０１０７】
つぎに、ＣＰＵ１６０は、不揮発性メモリ１５０に格納された基地局装置１１０のＯＳを起動する（ステップＳ９０３）。たとえば、ＣＰＵ１６０は、ステップＳ９０２によって実行したダウンロード制御プログラムの終了時に指定されたジャンプ先のアドレスを指定して不揮発性メモリ１５０からの読出を行うことにより基地局装置１１０のＯＳを読み出す。そして、ＣＰＵ１６０は、読み出したＯＳをＤＲＡＭ５０１に展開して実行することによりＯＳを起動する。
【０１０８】
つぎに、ＣＰＵ１６０は、不揮発性メモリ１５０に格納された基地局装置１１０の各種の機能を実現するためのアプリケーションを起動し（ステップＳ９０４）、基地局装置１１０の起動時の一連の処理を終了する。たとえば、ＣＰＵ１６０は、ステップＳ９０３によって起動したＯＳの制御によってアプリケーションを読み出す。そして、ＣＰＵ１６０は、読み出したアプリケーションをＤＲＡＭ５０１に展開して実行することによりアプリケーションを起動する。
【０１０９】
図１０は、実施の形態にかかる基地局装置のＣＰＵによるダウンロード制御プログラムに基づく処理の一例を示すフローチャートである。実施の形態にかかる基地局装置１１０のＣＰＵ１６０は、図９に示したステップＳ９０２においてダウンロード制御プログラムを実行することにより、たとえば図１０に示す各ステップを行う。
【０１１０】
まず、ＣＰＵ１６０は、不揮発性メモリ１５０の内容が正常か否かを判断する（ステップＳ１００１）。ステップＳ１００１の判断には、たとえば、ＣＲＣなどの各種の誤り検出を用いることができる。不揮発性メモリ１５０の内容が正常でない場合（ステップＳ１００１：Ｎｏ）は、ＣＰＵ１６０は、ステップＳ１００３へ移行する。
【０１１１】
ステップＳ１００１において、不揮発性メモリ１５０の内容が正常である場合（ステップＳ１００１：Ｙｅｓ）は、ＣＰＵ１６０は、ステップＳ１００２へ移行する。すなわち、ＣＰＵ１６０は、ブートデータ等について、現状版数と最新版数が等しいか否かを判断する（ステップＳ１００２）。現状版数は、基地局装置１１０が起動時に実行するブートプログラムを含むブートデータ等の現状の版数である。最新版数は、サーバ１４０に格納され基地局装置１１０に適用可能なブートデータ等の最新の版数である。
【０１１２】
ステップＳ１００２において、現状版数と最新版数が等しい場合（ステップＳ１００２：Ｙｅｓ）は、基地局装置１１０に適用すべき更新用データがないと判断することができる。この場合は、ＣＰＵ１６０は、ダウンロード制御プログラムに基づく一連の処理を終了する。
【０１１３】
ステップＳ１００２において、現状版数と最新版数が等しくない場合（ステップＳ１００２：Ｎｏ）は、基地局装置１１０に適用すべき更新用データがあると判断することができる。この場合は、ＣＰＵ１６０は、現状のブートプログラムより新しいブートプログラムである新ブートデータのサーバ１４０からのダウンロードを行う（ステップＳ１００３）。そして、ＣＰＵ１６０は、ステップＳ１００３によってダウンロードした新ブートデータをＤＲＡＭ５０１に格納する。
【０１１４】
つぎに、ＣＰＵ１６０は、ステップＳ１００３によってダウンロードしてＤＲＡＭ５０１に格納した新ブートデータの不揮発性メモリ１５０への書込を行う（ステップＳ１００４）。つぎに、ＣＰＵ１６０は、ステップＳ１００４による不揮発性メモリ１５０への書込データが正常か否かを判断する（ステップＳ１００５）。ステップＳ１００５の判断には、たとえばＣＲＣなどの各種の誤り検出を用いることができる。
【０１１５】
ステップＳ１００５において、書込データが正常でない場合（ステップＳ１００５：Ｎｏ）は、ＣＰＵ１６０は、新ダウンロード制御プログラムや新ＯＳ／アプリケーションのダウンロードを行わずにステップＳ１０１２へ移行する。
【０１１６】
ステップＳ１００５において、書込データが正常である場合（ステップＳ１００５：Ｙｅｓ）は、ＣＰＵ１６０は、ステップＳ１００６へ移行する。すなわち、ＣＰＵ１６０は、現状のダウンロード制御プログラムより新しいダウンロード制御プログラムである新ダウンロード制御プログラムのサーバ１４０からのダウンロードを行う（ステップＳ１００６）。そして、ＣＰＵ１６０は、ステップＳ１００６によってダウンロードした新ダウンロード制御プログラムをＤＲＡＭ５０１に格納する。
【０１１７】
つぎに、ＣＰＵ１６０は、ステップＳ１００６によってダウンロードしてＤＲＡＭ５０１に格納した新ダウンロード制御プログラムの不揮発性メモリ１５０への書込を行う（ステップＳ１００７）。つぎに、ＣＰＵ１６０は、ステップＳ１００７による不揮発性メモリ１５０への書込データが正常か否かを判断する（ステップＳ１００８）。ステップＳ１００８の判断には、たとえばＣＲＣなどの各種の誤り検出を用いることができる。
【０１１８】
ステップＳ１００８において、書込データが正常でない場合（ステップＳ１００８：Ｎｏ）は、ＣＰＵ１６０は、新ＯＳ／アプリケーションのダウンロードを行わずにステップＳ１０１２へ移行する。書込データが正常である場合（ステップＳ１００８：Ｙｅｓ）は、ＣＰＵ１６０は、不揮発性メモリ１５０の使用面を切り替える面切替を行う（ステップＳ１００９）。
【０１１９】
たとえば、ＣＰＵ１６０は、ＰＬＤ５０２のＥＯＲ回路８１０の第２入力部８１２の入力値として“０”を設定していた場合、すなわち不揮発性メモリ１５０の使用面を０面に設定していた場合は、第２入力部８１２の入力値を“１”に変更する。これにより、不揮発性メモリ１５０の使用面が０面から１面に切り替わる。また、ＣＰＵ１６０は、ＰＬＤ５０２のＥＯＲ回路８１０の第２入力部８１２の入力値として“１”を設定していた場合、すなわち不揮発性メモリ１５０の使用面を１面に設定していた場合は、第２入力部８１２の入力値を“０”に変更する。これにより、不揮発性メモリ１５０の使用面が１面から０面に切り替わる。
【０１２０】
つぎに、ＣＰＵ１６０は、現状のＯＳ／アプリケーションより新しいＯＳ／アプリケーションである新ＯＳ／アプリケーションのサーバ１４０からのダウンロードを行う（ステップＳ１０１０）。そして、ＣＰＵ１６０は、ステップＳ１０１０によってダウンロードした新ＯＳ／アプリケーションをＤＲＡＭ５０１に格納する。つぎに、ＣＰＵ１６０は、ステップＳ１０１０によってダウンロードしてＤＲＡＭ５０１に格納した新ＯＳ／アプリケーションの不揮発性メモリ１５０への書込を行う（ステップＳ１０１１）。
【０１２１】
つぎに、ＣＰＵ１６０は、基地局装置１１０を再起動するリセットを行い（ステップＳ１０１２）、ステップＳ１００１へ戻る。これにより、新ブートプログラム、新ダウンロード制御プログラム、新ＯＳ／アプリケーションの少なくともいずれかが不揮発性メモリ１５０に正常に書き込まれなかった場合は、ＣＰＵ１６０はステップＳ１００１からステップＳ１００３へ移行する。このため、新ブートプログラム、新ダウンロード制御プログラムおよび新ＯＳ／アプリケーションのダウンロードおよび不揮発性メモリ１５０への書込が再度試みられる。
【０１２２】
ステップＳ１００２における比較対象の版数は、たとえばブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションに対してまとめて設定される１つの版数とすることができる。
【０１２３】
または、ステップＳ１００２における比較対象の版数は、たとえばブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションのそれぞれに対して設定される各版数としてもよい。この場合に、ステップＳ１００２の判断は、ブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの各版数のうちの少なくともいずれかが、現状版数と最新版数で一致しているか否かの判断とすることができる。
【０１２４】
これにより、ブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの少なくともいずれかについて基地局装置１１０に適用すべき更新用データがあるかを判断することができる。そして、このような更新用データがある場合は、ブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの更新用データのダウンロードおよび書込を行うことができる。
【０１２５】
図１１〜図１３は、実施の形態にかかる基地局装置におけるダウンロード制御プログラムに基づく動作の一例を示すシーケンス図である。ＣＰＵ１６０がダウンロード制御プログラムを実行することにより、図７に示したダウンロード制御プログラム７００の各構成により、基地局装置１１０において、たとえば図１１〜図１３に示す動作が行われる。図１１〜図１３においては、ブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションに対して１つの版数が設定されている場合について説明する。
【０１２６】
まず、図１１に示すように、データチェック部７０１が、サーバ通信部７０２に対して、ブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの最新版数の問い合わせを行う（ステップＳ１１０１）。つぎに、サーバ通信部７０２が、サーバ１４０との間で通信を行い、データチェック部７０１から問い合わせがあった最新版数をサーバ１４０から取得する（ステップＳ１１０２）。つぎに、サーバ通信部７０２が、ステップＳ１１０２により取得した最新版数をデータチェック部７０１へ通知する（ステップＳ１１０３）。
【０１２７】
つぎに、データチェック部７０１が、メモリ管理部７０３に対して、ブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの現状版数の問い合わせを行う（ステップＳ１１０４）。つぎに、メモリ管理部７０３が、不揮発性メモリ読出部７０４に対して、現状のブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの読出アドレスを不揮発性メモリ読出部７０４に指定してデータ読出を指示する（ステップＳ１１０５）。
【０１２８】
つぎに、不揮発性メモリ読出部７０４が、ステップＳ１１０５により指定された読出アドレスにより不揮発性メモリ１５０からのデータ読出を行う（ステップＳ１１０６）。これにより、不揮発性メモリ読出部７０４は、データ読出により得られたブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの現状版数を取得することができる。なお、ブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションの一部を読み出すことにより現状版数を取得可能である場合は、ステップＳ１１０６において該一部のみを読み出すようにしてもよい。
【０１２９】
つぎに、不揮発性メモリ読出部７０４が、ステップＳ１１０６によって取得した現状版数をメモリ管理部７０３へ通知する（ステップＳ１１０７）。つぎに、メモリ管理部７０３が、ステップＳ１１０７により通知された現状版数をデータチェック部７０１へ通知する（ステップＳ１１０８）。
【０１３０】
つぎに、データチェック部７０１が、ステップＳ１１０３により通知された最新版数と、ステップＳ１１０８により通知された現状版数と、を比較する版数比較を行う（ステップＳ１１０９）。図１１〜図１３に示す例では、ステップＳ１１０９において、最新版数と現状版数とが不一致であった場合について説明する。
【０１３１】
つぎに、データチェック部７０１が、サーバ通信部７０２に対して、新ブートデータのダウンロード指示を行う（ステップＳ１１１０）。つぎに、サーバ通信部７０２が、サーバ１４０との間で通信を行い、新ブートデータをサーバ１４０からダウンロードする（ステップＳ１１１１）。
【０１３２】
つぎに、サーバ通信部７０２が、ステップＳ１１１１によりダウンロードした新ブートデータをデータチェック部７０１へ転送する（ステップＳ１１１２）。つぎに、データチェック部７０１が、メモリ管理部７０３に対して、ステップＳ１１１２により転送された新ブートデータのデータ書込を指示する（ステップＳ１１１３）。
【０１３３】
つぎに、メモリ管理部７０３が、不揮発性メモリ書込部７０５に対して、ステップＳ１１１３によりデータ書込を指示された新ブートデータについて、書込アドレスを指定してデータ書込を指示する（ステップＳ１１１４）。ステップＳ１１１４においてメモリ管理部７０３が指定する書込アドレスは、不揮発性メモリ１５０における各面のうちの現在の使用面でない方の面の先頭アドレス（たとえば「０ｘ８０００」）である。つぎに、不揮発性メモリ書込部７０５が、ステップＳ１１１４により指定された書込アドレスにより新ブートデータの不揮発性メモリ１５０へのデータ書込を行う（ステップＳ１１１５）。
【０１３４】
また、メモリ管理部７０３が、データチェック部７０１に対して、新ブートデータの書込完了を通知する（ステップＳ１１１６）。つぎに、データチェック部７０１が、メモリ管理部７０３に対して、新ブートデータの書込データの確認指示を行う（ステップＳ１１１７）。つぎに、メモリ管理部７０３が、不揮発性メモリ読出部７０４に対して、新ブートデータの読出アドレスを指定してデータ読出を指示する（ステップＳ１１１８）。ステップＳ１１１８においてメモリ管理部７０３が指定する読出アドレスは、ステップＳ１１１４におけるデータ書込の指示においてメモリ管理部７０３が指定した書込アドレスと同じアドレスである。
【０１３５】
つぎに、不揮発性メモリ読出部７０４が、ステップＳ１１１８により指定された読出アドレスにより不揮発性メモリ１５０からのデータ読出を行う（ステップＳ１１１９）。これにより、不揮発性メモリ読出部７０４は、ステップＳ１１１５により書き込まれた新ブートデータを読み出すことができる。
【０１３６】
つぎに、不揮発性メモリ読出部７０４が、ステップＳ１１１９により読み出した新ブートデータの書込データをメモリ管理部７０３へ転送する（ステップＳ１１２０）。つぎに、メモリ管理部７０３が、ステップＳ１１２０により不揮発性メモリ読出部７０４から転送された新ブートデータの書込データをデータチェック部７０１へ出力する（ステップＳ１１２１）。
【０１３７】
つぎに、データチェック部７０１が、メモリ管理部７０３から転送された新ブートデータの書込データが正常か否かを判断するデータチェックを行う（ステップＳ１１２２）。ステップＳ１１２２におけるデータチェックには、たとえばＣＲＣなどの各種の誤り検出を用いることができる。新ブートデータの書込データが正常でなかった場合は、基地局装置１１０を再起動するリセットを行うことで、ステップＳ１１１０からの処理が再度行われる。図１１〜図１３においては、新ブートデータの書込データが正常であった場合について説明する。
【０１３８】
つぎに、図１２に示すように、データチェック部７０１が、サーバ通信部７０２に対して、新ダウンロード制御プログラムのダウンロード指示を行う（ステップＳ１１２３）。つぎに、サーバ通信部７０２が、サーバ１４０との間で通信を行い、新ダウンロード制御プログラムをサーバ１４０からダウンロードする（ステップＳ１１２４）。
【０１３９】
つぎに、サーバ通信部７０２が、ステップＳ１１２４によりダウンロードした新ダウンロード制御プログラムをデータチェック部７０１へ転送する（ステップＳ１１２５）。つぎに、データチェック部７０１が、メモリ管理部７０３に対して、ステップＳ１１２５により転送された新ダウンロード制御プログラムのデータ書込を指示する（ステップＳ１１２６）。
【０１４０】
つぎに、メモリ管理部７０３が、不揮発性メモリ書込部７０５に対して、ステップＳ１１２６によりデータ書込を指示された新ダウンロード制御プログラムについて、書込アドレスを指定してデータ書込を指示する（ステップＳ１１２７）。ステップＳ１１２７においてメモリ管理部７０３が指定する書込アドレスは、不揮発性メモリ１５０におけるステップＳ１１１５によって新ブートデータの書込を行った領域の直後の領域を示すアドレスである。つぎに、不揮発性メモリ書込部７０５が、ステップＳ１１２７により指定された書込アドレスにより新ダウンロード制御プログラムの不揮発性メモリ１５０へのデータ書込を行う（ステップＳ１１２８）。
【０１４１】
また、メモリ管理部７０３が、データチェック部７０１に対して、新ダウンロード制御プログラムの書込完了を通知する（ステップＳ１１２９）。つぎに、データチェック部７０１が、メモリ管理部７０３に対して、新ダウンロード制御プログラムの書込データの確認指示を行う（ステップＳ１１３０）。
【０１４２】
つぎに、メモリ管理部７０３が、不揮発性メモリ読出部７０４に対して、新ダウンロード制御プログラムの読出アドレスを指定してデータ読出を指示する（ステップＳ１１３１）。ステップＳ１１３１においてメモリ管理部７０３が指定する読出アドレスは、ステップＳ１１２７におけるデータ書込の指示においてメモリ管理部７０３が指定した書込アドレスと同じアドレスである。
【０１４３】
つぎに、不揮発性メモリ読出部７０４が、ステップＳ１１３１により指定された読出アドレスにより不揮発性メモリ１５０からのデータ読出を行う（ステップＳ１１３２）。これにより、不揮発性メモリ読出部７０４は、ステップＳ１１２８により書き込まれた新ダウンロード制御プログラムの書込データを読み出すことができる。
【０１４４】
つぎに、不揮発性メモリ読出部７０４が、ステップＳ１１３２により読み出した新ダウンロード制御プログラムの書込データをメモリ管理部７０３へ転送する（ステップＳ１１３３）。つぎに、メモリ管理部７０３が、ステップＳ１１３３により不揮発性メモリ読出部７０４から転送された新ダウンロード制御プログラムの書込データをデータチェック部７０１へ出力する（ステップＳ１１３４）。
【０１４５】
つぎに、データチェック部７０１が、メモリ管理部７０３から転送された新ダウンロード制御プログラムの書込データが正常か否かを判断するデータチェックを行う（ステップＳ１１３５）。ステップＳ１１３５におけるデータチェックには、たとえばＣＲＣなどの各種の誤り検出を用いることができる。新ダウンロード制御プログラムの書込データが正常でなかった場合は、基地局装置１１０を再起動するリセットを行うことで、ステップＳ１１１０における新ブートデータのダウンロードからの処理が再度行われる。図１１〜図１３においては、新ダウンロード制御プログラムの書込データが正常であった場合について説明する。
【０１４６】
つぎに、データチェック部７０１が、面切替部７０６に対して不揮発性メモリ１５０の面切替を指示する（ステップＳ１１３６）。つぎに、面切替部７０６が、ＰＬＤ５０２のＥＯＲ回路８１０の第２入力部８１２の入力値を変更することにより不揮発性メモリ１５０の面切替を行う（ステップＳ１１３７）。
【０１４７】
つぎに、図１３に示すように、データチェック部７０１が、サーバ通信部７０２に対して、新ＯＳ／アプリケーションのダウンロード指示を行う（ステップＳ１１３８）。つぎに、サーバ通信部７０２が、サーバ１４０との間で通信を行い、新ＯＳ／アプリケーションをサーバ１４０からダウンロードする（ステップＳ１１３９）。
【０１４８】
つぎに、サーバ通信部７０２が、ステップＳ１１３９によりダウンロードした新ＯＳ／アプリケーションをデータチェック部７０１へ転送する（ステップＳ１１４０）。つぎに、データチェック部７０１が、メモリ管理部７０３に対して、ステップＳ１１４０により転送された新ＯＳ／アプリケーションのデータ書込を指示する（ステップＳ１１４１）。
【０１４９】
つぎに、メモリ管理部７０３が、不揮発性メモリ書込部７０５に対して、ステップＳ１１４１によりデータ書込を指示された新ＯＳ／アプリケーションについて、書込アドレスを指定してデータ書込を指示する（ステップＳ１１４２）。ステップＳ１１４２においてメモリ管理部７０３が指定する書込アドレスは、不揮発性メモリ１５０におけるステップＳ１１２８によって新ダウンロード制御プログラムの書込を行った領域の直後の領域を示すアドレスである。つぎに、不揮発性メモリ書込部７０５が、ステップＳ１１４２により指定された書込アドレスにより新ＯＳ／アプリケーションの不揮発性メモリ１５０へのデータ書込を行う（ステップＳ１１４３）。
【０１５０】
また、メモリ管理部７０３が、データチェック部７０１に対して、新ＯＳ／アプリケーションの書込完了を通知する（ステップＳ１１４４）。つぎに、データチェック部７０１が、メモリ管理部７０３に対して、新ＯＳ／アプリケーションの書込データの確認指示を行う（ステップＳ１１４５）。
【０１５１】
つぎに、メモリ管理部７０３が、不揮発性メモリ読出部７０４に対して、新ＯＳ／アプリケーションの読出アドレスを指定してデータ読出を指示する（ステップＳ１１４６）。ステップＳ１１４６においてメモリ管理部７０３が指定する読出アドレスは、ステップＳ１１４２におけるデータ書込の指示においてメモリ管理部７０３が指定した書込アドレスと同じアドレスである。
【０１５２】
つぎに、不揮発性メモリ読出部７０４が、ステップＳ１１４６により指定された読出アドレスにより不揮発性メモリ１５０からのデータ読出を行う（ステップＳ１１４７）。これにより、不揮発性メモリ読出部７０４は、ステップＳ１１４３により書き込まれた新ＯＳ／アプリケーションの書込データを読み出すことができる。
【０１５３】
つぎに、不揮発性メモリ読出部７０４が、ステップＳ１１４７により読み出した新ＯＳ／アプリケーションの書込データをメモリ管理部７０３へ転送する（ステップＳ１１４８）。つぎに、メモリ管理部７０３が、ステップＳ１１４８により不揮発性メモリ読出部７０４から転送された新ＯＳ／アプリケーションの書込データをデータチェック部７０１へ出力する（ステップＳ１１４９）。
【０１５４】
つぎに、データチェック部７０１が、メモリ管理部７０３から転送された新ＯＳ／アプリケーションの書込データが正常か否かを判断するデータチェックを行う（ステップＳ１１５０）。ステップＳ１１５０におけるデータチェックには、たとえばＣＲＣなどの各種の誤り検出を用いることができる。新ＯＳ／アプリケーションの書込完了後は、基地局装置１１０を再起動するリセットを行うことで、新ＯＳ／アプリケーションの書込データが正常でなかった場合は、ステップＳ１１１０における新ブートデータのダウンロードからの処理が再度行われる。図１１〜図１３においては、新ＯＳ／アプリケーションの書込データが正常であった場合について説明する。
【０１５５】
図１１〜図１３に示した各ステップにより、基地局装置１１０の起動時に実行されるブートプログラムを含むブートデータ、ダウンロード制御プログラムおよびＯＳ／アプリケーションが更新される。
【０１５６】
このように、実施の形態にかかる基地局装置によれば、ダウンロード用のダウンロード制御プログラムをＯＳ／アプリケーションとは別に実装し、ブートプログラムおよびダウンロード制御プログラムの更新用データの書込成功後に面切替を行うことができる。これにより、実施の形態にかかる基地局装置によれば、更新用データの書込失敗時に、再起動によって、更新前のブートプログラムおよびダウンロード制御プログラムを読み出して実行し、復旧することが可能になる。
【０１５７】
また、この復旧を可能にするために、不揮発性メモリには、運用中のブートプログラム、ダウンロード制御プログラムおよびＯＳ／アプリケーションとは別に、ブートプログラムおよびダウンロード制御プログラムの更新用データを格納可能な記憶容量があればよい。すなわち、不揮発性メモリには、運用中のブートプログラム、ダウンロード制御プログラムおよびＯＳ／アプリケーションとは別にＯＳ／アプリケーションの更新用データを格納可能な記憶容量までは不要である。
【０１５８】
また、ＯＳ／アプリケーションの更新用データは容量の大きなデータ（たとえば数ギガバイト）であるのに対して、ダウンロード用のダウンロード制御プログラムの更新用データは容量の小さなデータ（たとえば数キロバイト）とすることができる。このため、実施の形態にかかる基地局装置によれば、運用中の各プログラムとは別にＯＳ／アプリケーションの更新用データを格納可能な記憶容量までは不要となることで、プログラムの格納に要する不揮発性メモリの記憶容量の増大を抑制することができる。
【０１５９】
なお、上述した実施の形態においては、不揮発性メモリ１５０を０面と１面の２つの面に分割して面切替を行う場合について説明したが、このような面切替に限らず、不揮発性メモリ１５０を３つ以上の面に分割して面切替を行ってもよい。
【０１６０】
以上説明したように、基地局装置によれば、プログラムの格納に要する記憶容量の増大を抑制しつつ、更新用データの記憶媒体への書込に失敗した場合の復旧を可能にすることができる。
【０１６１】
たとえば、従来、更新用データのダウンロードは不揮発性メモリへの書込で完了するが、通信回線の故障や事故、ヒューマンエラーによる電源断等により不揮発性メモリへの書込失敗が発生する場合がある。このような場合を考慮して、動作エリアとは別に、動作エリアと同様の容量の記憶領域を設けることが行われている。しかしながら、この方式では、不揮発性メモリに求められる記憶容量が大きくなり（たとえば動作エリアの２倍）、不揮発性メモリの大容量化や不揮発性メモリの数の増加を要する。
【０１６２】
また、移動通信における基地局装置では、たとえば、標準化仕様または顧客サービス仕様の変更や追加に伴って定期的にソフトウェア更新が行われるため、従来、たとえばソフトウェアの記憶領域が二重に設けられている。しかしながら、たとえばフェムト基地局等の小型の基地局装置においては、大容量の不揮発性メモリや多くの不揮発性メモリを設けることが困難である。
【０１６３】
これに対して、上述した実施の形態によれば、不揮発性メモリに、ダウンロードを実施するダウンロード制御プログラムがＯＳ／アプリケーションとは別に格納される。そして、更新用データのダウンロード時にのみ不揮発性メモリを二分割し、ブートプログラムやダウンロード制御プログラムの更新用データを、現状のブートプログラムやダウンロード制御プログラムとは別の記憶領域に書き込むことができる。これにより、不揮発性メモリの記憶容量を大きくしなくても（たとえば動作エリアの２倍にしなくても）、更新用データの不揮発性メモリへの書込に失敗した場合の復旧が可能になる。
【０１６４】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１６５】
（付記１）ブートプログラムと、前記ブートプログラムの処理で起動を開始される被起動プログラムと、が格納される記憶媒体と、
前記記憶媒体に格納された前記ブートプログラムを自装置の起動時に実行するプロセッサと、を備え、
前記ブートプログラムの処理は、前記被起動プログラムの起動を開始する前に、更新用データを外部装置からダウンロードするダウンロード制御プログラムを実行する処理を含み、
前記ダウンロード制御プログラムの処理は、ダウンロードした前記更新用データを、前記記憶媒体における前記ブートプログラムおよび前記ダウンロード制御プログラムが格納されている第１領域以外の第２領域に書き込むとともに、前記第２領域の先頭アドレスを自装置の次回起動時に前記プロセッサが実行すべきブートプログラムの格納位置として保持し、前記第１領域の先頭アドレスを障害時の復旧用のブートプログラムの格納位置として保持する処理を含む、
ことを特徴とする基地局装置。
【０１６６】
（付記２）前記ダウンロード制御プログラムの処理は、前記ブートプログラムおよび前記ダウンロード制御プログラムの更新用データを前記外部装置からダウンロードし、前記ブートプログラムおよび前記ダウンロード制御プログラムの更新用データの前記第２領域への書込が成功した場合に、前記第２領域の先頭アドレスが、自装置の次回起動時に前記プロセッサが実行すべきブートプログラムの格納位置となるように前記記憶媒体の面切替を行う処理を含むことを特徴とする付記１に記載の基地局装置。
【０１６７】
（付記３）前記ダウンロード制御プログラムの処理は、前記ブートプログラム、前記ダウンロード制御プログラムおよび前記被起動プログラムの更新用データを前記外部装置からダウンロードし、前記ブートプログラムおよび前記ダウンロード制御プログラムの更新用データの前記第２領域への書込が成功し、前記面切替を行った後に、ダウンロードした前記被起動プログラムの更新用データを前記記憶媒体における前記第２領域以外の領域に書き込む処理を含むことを特徴とする付記２に記載の基地局装置。
【０１６８】
（付記４）前記ダウンロード制御プログラムの処理は、前記ブートプログラム、前記ダウンロード制御プログラムおよび前記被起動プログラムの更新用データを前記外部装置からダウンロードし、前記ブートプログラムおよび前記ダウンロード制御プログラムの少なくともいずれかの更新用データの前記第２領域への書込が失敗した場合に、前記第１領域の先頭アドレスを自装置の次回起動時に前記プロセッサが実行すべきブートプログラムの格納位置として自装置を再起動する処理を含むことを特徴とする付記１〜３のいずれか一つに記載の基地局装置。
【符号の説明】
【０１６９】
１００  通信システム
１１０  基地局装置
１２０  移動局
１３０  ネットワーク
１４０  サーバ
１５０  不揮発性メモリ
１５１  ブートデータ
１５２，７００  ダウンロード制御プログラム
１５３  ＯＳ／アプリケーション
１６０  ＣＰＵ
２１１  新ブートデータ
２１２  新ダウンロード制御プログラム
２１３  新ＯＳ／アプリケーション
３１１  新新ブートデータ
３１２  新新ダウンロード制御プログラム
３１３  新新ＯＳ／アプリケーション
５０１  ＤＲＡＭ
５０２  ＰＬＤ
５０３  ＷＡＮインターフェース
５０４  無線部
５０５  アンテナ
Ｓ６０１  読出処理
Ｓ６０２  ダウンロード処理
Ｓ６０３  書込処理
６１０  更新用データ
７０１  データチェック部
７０２  サーバ通信部
７０３  メモリ管理部
７０４  不揮発性メモリ読出部
７０５  不揮発性メモリ書込部
７０６  面切替部
８１０  ＥＯＲ回路
８１１  第１入力部
８１２  第２入力部
８２０  アドレス線群
８２１  アドレス線
８３０  バス線
【図１】
2016170562.tif 000003
【図２】
2016170562.tif 000004
【図３】
2016170562.tif 000005
【図４】
2016170562.tif 000006
【図５】
2016170562.tif 000007
【図６】
2016170562.tif 000008
【図７】
2016170562.tif 000009
【図８】
2016170562.tif 000010
【図９】
2016170562.tif 000011
【図１０】
2016170562.tif 000012
【図１１】
2016170562.tif 000013
【図１２】
2016170562.tif 000014
【図１３】
2016170562.tif 000015