(57)【要約】【課題】高速に起動することができる通信装置及びブート方法を提供すること。【解決手段】電源が投入された場合に、不揮発性メモリに記憶されている各種プログラムを揮発性メモリに転送し、転送処理の完了後に、起動対象の全てのプロセッサに対して起動指示を行うとともに、各プロセッサを、アプリケーションの実行を制御するプロセッサ、又は、通信処理を制御するプロセッサのいずれかにすることを決定し、各プロセッサは、起動指示を受け付けた場合に、初期起動プログラムを実行して起動した後、前述において決定された役割に応じたプログラムを揮発性メモリから読み出して実行する。【選択図】図１
2011113137.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを起動させる初期起動プログラムと、アプリケーションの実行を制御するアプリ基本プログラムと、通信処理を制御する通信基本プログラムと、通信処理における演算を行う通信処理プログラムとを記憶する不揮発性メモリと、
起動時に、前記不揮発性メモリに記憶されているアプリ基本プログラムと、通信基本プログラムと、通信処理プログラムとを揮発性メモリに転送する転送部と、
前記転送部による転送処理が完了した場合に、起動対象の全てのプロセッサに対して起動指示を行う起動指示部と、
前記起動指示部によって起動指示が行われた場合に、アプリケーションの実行を制御するプロセッサと、通信処理を制御するプロセッサとを決定する決定部と、
前記起動指示部から起動指示を受け付けた場合に、前記不揮発性メモリに記憶されている初期起動プログラムを実行した後、前記決定部によってアプリケーションの実行を制御することが決定された場合に、前記揮発性メモリに記憶されているアプリ基本プログラムを実行する第１のプロセッサと、
前記起動指示部から起動指示を受け付けた場合に、前記不揮発性メモリに記憶されている初期起動プログラムを実行した後、前記決定部によって通信処理を制御することが決定された場合に、前記揮発性メモリに記憶されている通信基本プログラムを実行する第２のプロセッサと、
通信処理における演算を行うことが予め決められており、前記起動指示部から起動指示を受け付けた場合に、前記揮発性メモリに記憶されている通信処理プログラムを実行する第３のプロセッサと
を備えたことを特徴とする通信装置。
【請求項２】
前記第３のプロセッサを複数有し、
無線通信の品質の良否を判定する無線状態判定部をさらに備え、
前記不揮発性メモリは、通信処理プログラムを通信規格毎に記憶し、
前記転送部は、前記不揮発性メモリに記憶されている通信規格毎の通信処理プログラムを揮発性メモリに転送し、
前記第３のプロセッサは、前記起動指示部から起動指示を受け付けた場合に、予め割り当てられている通信規格に対応する前記揮発性メモリ上の通信処理プログラムを実行するとともに、該通信規格における無線通信の品質を測定し、
前記無線状態判定部は、複数の前記第３のプロセッサによって測定された無線品質が良好である通信規格による無線通信を行うことを決定することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記通信基本プログラムは、通信規格毎に、通信処理を制御するサブプログラムを含み、
前記決定部は、通信処理を制御する複数の通信プロセッサを決定し、該通信プロセッサのうち、他の通信プロセッサを制御するマスタ通信プロセッサと、該マスタ通信プロセッサによって制御されるスレーブ通信プロセッサとを決定し、
前記第２のプロセッサは、前記決定部によってマスタ通信プロセッサであることが決定された場合に、前記スレーブ通信プロセッサに対して、前記通信基本プログラムの所定のサブプログラムを実行するように指示し、前記決定部によってスレーブ通信プロセッサであることが決定された場合に、前記マスタ通信プロセッサから指示されたサブプログラムを実行することを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記決定部は、アクセスされるたびに、所定のカウンタの値を出力するとともに、前記カウンタをインクリメントもしくはデクリメントし、
前記第１のプロセッサ及び前記第２のプロセッサは、前記初期起動プログラムを実行した後、前記決定部にアクセスすることで取得したカウンタ値に基づいて、アプリケーションの実行を制御するプロセッサ、又は、通信処理を制御するプロセッサのいずれであるかを判定することを特徴とする請求項１〜３のいずれか一つに記載の通信装置。
【請求項５】
プロセッサを起動させる初期起動プログラムと、アプリケーションの実行を制御するアプリ基本プログラムと、通信処理を制御する通信基本プログラムと、通信処理における演算を行う通信処理プログラムとを記憶する不揮発性メモリと、
第１のプロセッサと、第２のプロセッサと、通信処理における演算を行うことが予め決められている第３のプロセッサとを有する通信装置におけるブート方法であって、
前記通信装置が、
前記通信装置の起動時に、前記不揮発性メモリに記憶されているアプリ基本プログラムと、通信基本プログラムと、通信処理プログラムとを揮発性メモリに転送する転送ステップと、
前記転送ステップによる転送処理が完了した場合に、起動対象の全てのプロセッサに対して起動指示を行う起動指示ステップと、
前記起動指示ステップによって起動指示が行われた場合に、アプリケーションの実行を制御するプロセッサと、通信処理を制御するプロセッサとを決定する決定ステップとを含み、
第１のプロセッサが、
前記起動指示ステップによる起動指示を受け付けた場合に、前記不揮発性メモリに記憶されている初期起動プログラムを実行する第１のブートステップと、
前記決定ステップによってアプリケーションの実行を制御することが決定された場合に、前記揮発性メモリに記憶されているアプリ基本プログラムを実行する第１の実行ステップとを含み、
第２のプロセッサが、
前記起動指示ステップによる起動指示を受け付けた場合に、前記不揮発性メモリに記憶されている初期起動プログラムを実行する第２のブートステップと、
前記決定ステップによって通信処理を制御することが決定された場合に、前記揮発性メモリに記憶されている通信基本プログラムを実行する第２の実行ステップとを含み、
第３のプロセッサが、
前記起動指示ステップによる起動指示を受け付けた場合に、前記揮発性メモリに記憶されている通信処理プログラムを実行する第２の実行ステップ
を含んだことを特徴とするブート方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及びブート方法に関する。
【背景技術】
【０００２】
従来、携帯端末などのように、無線通信を用いた音声通信処理やデータ通信処理に加え、アプリケーション処理など複数の処理を実行する通信装置が利用されている。このような通信装置は、アプリケーション用のプロセッサ（以下、「ＡＣＰＵ：Application  CPU」と言う）と、無線通信を制御するプロセッサ（以下、「ＣＣＰＵ：Communication  Central  Processing  Unit」と言う）との２系統のプロセッサを搭載している。また、通信装置は、ディジタル信号を処理するＤＳＰ（Digital  Signal  Processor）を搭載することが多い。一般に、通信装置は、複数の通信規格に対応する場合には、通信規格毎にＤＳＰを搭載する。
【０００３】
このような複数のプロセッサを搭載する通信装置は、一般的に、ＡＣＰＵ又はＣＣＰＵのいずれかが、各ＣＰＵのブート処理を制御するブートマスタになる。例えば、ＡＣＰＵがブートマスタである場合、ＡＣＰＵは、自身がブートした後に、ＣＣＰＵをブートさせる。そして、ＣＣＰＵは、自身がブートした後にＤＳＰをブートさせる。ＡＣＰＵやＣＣＰＵは、ブートした後に、所定のＲＡＭ（Random  Access  Memory）に記憶されているプログラムを実行することにより、ＯＳ（Operating  System）を起動する。ＡＣＰＵやＣＣＰＵによるＯＳ起動処理が完了した場合に、通信装置の起動処理は完了する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−９３８８号公報
【特許文献２】特開２００６−２０２２００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来の通信装置には、起動に時間がかかるという問題があった。具体的には、従来の通信装置は、ＡＣＰＵや、ＣＣＰＵ、ＤＳＰが順にブートするので、全てのＣＰＵ及びＤＳＰが起動するまでに時間がかかっていた。
【０００６】
近年では、通信装置は、無線処理を高速化するために、複数のＣＰＵや複数のＤＳＰを搭載することが多い。また、ＬＴＥ（Long  Term  Evolution）などの新たな通信規格に対応する通信装置は、かかる通信規格に対応するＤＳＰを新たに搭載することになる。このため、今後、通信装置は、例えば、ＷＣＤＭＡ（Wideband  Code  Division  Multiple  Access）に対応するＤＳＰと、ＧＳＭ（Global  System  for  Mobile  Communications）に対応するＤＳＰに加えて、ＬＴＥに対応するＤＳＰを搭載することが考えられる。このように、近年の通信装置は、多数のＣＰＵを搭載する傾向にあるので、起動時間が長くなってしまうという問題がある。
【０００７】
開示の技術は、上記に鑑みてなされたものであって、高速に起動することができる通信装置及びブート方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本願の開示する通信装置は、一つの態様において、プロセッサを起動させる初期起動プログラムと、アプリケーションの実行を制御するアプリ基本プログラムと、通信処理を制御する通信基本プログラムと、通信処理における演算を行う通信処理プログラムとを記憶する不揮発性メモリと、起動時に、前記不揮発性メモリに記憶されているアプリ基本プログラムと、通信基本プログラムと、通信処理プログラムとを揮発性メモリに転送する転送部と、前記転送部による転送処理が完了した場合に、起動対象の全てのプロセッサに対して起動指示を行う起動指示部と、前記起動指示部によって起動指示が行われた場合に、アプリケーションの実行を制御するプロセッサと、通信処理を制御するプロセッサとを決定する決定部と、前記起動指示部から起動指示を受け付けた場合に、前記不揮発性メモリに記憶されている初期起動プログラムを実行した後、前記決定部によってアプリケーションの実行を制御することが決定された場合に、前記揮発性メモリに記憶されているアプリ基本プログラムを実行する第１のプロセッサと、前記起動指示部から起動指示を受け付けた場合に、前記不揮発性メモリに記憶されている初期起動プログラムを実行した後、前記決定部によって通信処理を制御することが決定された場合に、前記揮発性メモリに記憶されている通信基本プログラムを実行する第２のプロセッサと、通信処理における演算を行うことが予め決められており、前記起動指示部から起動指示を受け付けた場合に、前記揮発性メモリに記憶されている通信処理プログラムを実行する第３のプロセッサとを備える。
【発明の効果】
【０００９】
本願の開示する通信装置の一つの態様によれば、高速に起動することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係る通信装置の構成例を示す図である。
【図２】図２は、実施例２に係る通信装置の構成例を示す図である。
【図３】図３は、チップセレクタによるアドレス変換処理の一例を示す図である。
【図４】図４は、無線状態判定部の状態遷移の一例を示す図である。
【図５】図５は、実施例２に係る通信装置による起動時の処理の流れを示すシーケンス図である。
【図６】図６は、実施例２におけるＣＰＵによる起動処理手順を示すフローチャートである。
【図７】図７は、実施例２におけるＤＳＰによる起動処理手順を示すフローチャートである。
【図８】図８は、実施例２に係る通信装置による起動時間を説明するための図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する通信装置及びブート方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により本願の開示する通信装置及びブート方法が限定されるものではない。
【実施例１】
【００１２】
まず、図１を用いて、実施例１に係る通信装置１の構成について説明する。図１は、実施例１に係る通信装置１の構成例を示す図である。図１に示すように、通信装置１は、不揮発性メモリ１０と、転送部２０と、揮発性メモリ３０と、起動指示部４０と、決定部５０と、第１プロセッサ６１と、第２プロセッサ６２と、第３プロセッサ６３とを有する。
【００１３】
不揮発性メモリ１０は、初期起動プログラム１１と、アプリ基本プログラム１２と、通信基本プログラム１３と、通信処理プログラム１４とを記憶する。初期起動プログラム１１は、プロセッサを立ち上げるプログラムである。アプリ基本プログラム１２は、アプリケーションの実行を制御するプログラムである。通信基本プログラム１３は、通信処理を制御するプログラムである。通信処理プログラム１４は、通信処理における演算を行うプログラムである。
【００１４】
転送部２０は、通信装置１が起動した場合に、不揮発性メモリ１０に記憶されているアプリ基本プログラム１２、通信基本プログラム１３、通信処理プログラム１４を揮発性メモリ３０に転送する。これにより、揮発性メモリ３０は、図１に示すように、アプリ基本プログラム１２、通信基本プログラム１３、通信処理プログラム１４を記憶する。
【００１５】
起動指示部４０は、転送部２０による転送処理が完了した場合に、起動対象の全てのプロセッサに対して起動指示を行う。なお、図１に示した例では、第１プロセッサ６１、第２プロセッサ６２、第３プロセッサ６３は、起動対象のプロセッサであるものとする。すなわち、起動指示部４０は、第１プロセッサ６１、第２プロセッサ６２、第３プロセッサ６３に対して起動指示を行う。
【００１６】
決定部５０は、起動指示部４０によって起動指示が行われた場合に、第１プロセッサ６１又は第２プロセッサ６２のいずれかを、アプリケーションの実行を制御するプロセッサにすることを決定する。また、決定部５０は、第１プロセッサ６１又は第２プロセッサ６２のいずれかを、通信処理を制御するプロセッサにすることを決定する。なお、図１に示した例では、決定部５０は、第１プロセッサ６１を、アプリケーションの実行を制御するプロセッサにすることを決定し、第２プロセッサ６２を、通信処理を制御するプロセッサにすることを決定するものとする。
【００１７】
第１プロセッサ６１は、起動指示部４０から起動指示を受け付けた場合に、不揮発性メモリ１０に記憶されている初期起動プログラム１１を実行する。これにより、第１プロセッサ６１は立ち上がる。その後に、第１プロセッサ６１は、決定部５０によってアプリケーションの実行を制御するプロセッサになることが決定されたので、揮発性メモリ３０に記憶されているアプリ基本プログラム１２を実行する。これにより、第１プロセッサ６１は、アプリケーションの実行を制御するプロセッサとして動作する。
【００１８】
第２プロセッサ６２は、起動指示部４０から起動指示を受け付けた場合に、不揮発性メモリ１０に記憶されている初期起動プログラム１１を実行する。これにより、第２プロセッサ６２は立ち上がる。その後に、第２プロセッサ６２は、決定部５０によって、通信処理を制御するプロセッサになることが決定されたので、揮発性メモリ３０に記憶されている通信基本プログラム１３を実行する。これにより、第２プロセッサ６２は、通信処理を制御するプロセッサとして動作する。
【００１９】
第３プロセッサ６３は、通信処理における演算を行うことが予め決められている。かかる第３プロセッサ６３は、起動指示部４０から起動指示を受け付けた場合に、揮発性メモリ３０に記憶されている通信処理プログラム１４を実行する。なお、通信処理プログラム１４には、プロセッサを起動させるためのブートコードが含まれており、第３プロセッサ６３は、通信処理プログラム１４を実行することで、ブートした後に、通信処理における演算を行うプロセッサとして動作する。
【００２０】
上述してきたように、実施例１に係る通信装置１は、役割が予め決められていない第１プロセッサ６１及び第２プロセッサ６２と、通信処理における演算を行うことが予め決められている第３プロセッサ６３とを有する。そして、実施例１における転送部２０は、起動時に不揮発性メモリ１０に記憶されている各種プログラムを揮発性メモリ３０に転送する。その後に、起動指示部４０は、第１プロセッサ６１、第２プロセッサ６２、第３プロセッサ６３に対して起動指示を行う。また、決定部５０は、第１プロセッサ６１及び第２プロセッサ６２の役割を決定する。そして、第１プロセッサ６１及び第２プロセッサ６２は、起動指示を受け付けた場合に、決定部５０によって決定された役割に応じて、揮発性メモリ３０に記憶されているプログラムを実行する。また、第３プロセッサ６３は、起動指示を受け付けた場合に、予め決められている役割に対応するプログラムを実行する。
【００２１】
このように、実施例１に係る通信装置１は、各プロセッサに起動指示を行うブートマスタが予め決められておらず、起動指示部４０によって各プロセッサに対して起動指示が行われる。また、実施例１に係る通信装置１は、電源投入後に決定部５０によって各プロセッサの役割が決定される。そして、実施例１における各プロセッサは、起動指示を受け付けた場合に、決定された役割に応じたプログラムを実行する。これにより、実施例１における第１プロセッサ６１、第２プロセッサ６２、第３プロセッサ６３は、並行して起動処理を行うことができる。例えば、実施例１における各プロセッサは、起動指示部４０から同時に起動指示を受け付けた場合には、他のプロセッサがブートするまで待ち状態にならず、同時にブート処理を開始することができる。以上のことから、実施例１に係る通信装置１は、高速に起動することができる。
【実施例２】
【００２２】
次に、上記実施例１において説明した通信装置について具体例を用いて説明する。実施例２では、ＧＳＭとＷＣＤＭＡとＬＴＥとの通信規格における無線通信を行うことができる携帯端末装置を例に挙げて説明する。
【００２３】
［実施例２に係る通信装置の構成］
まず、図２を用いて、実施例２に係る通信装置１００の構成について説明する。図２は、実施例２に係る通信装置１００の構成例を示す図である。図２に示した通信装置１００は、例えば、携帯電話機やＰＤＡ（Personal  Digital  Assistant）などの携帯端末装置である。
【００２４】
図２に示すように、実施例２に係る通信装置１００は、不揮発性メモリ１１０と、ＳＤＲＡＭ（Synchronous  Dynamic  RAM）１２０と、リセット解除部１２１と、コピー部１２２と、チップセレクタ１２３と、セマフォ部１２４と、無線状態判定部１２５と、割込レジスタ１２６と、ＣＰＵ１３１〜１３４と、ＤＳＰ１４１〜１４３と、ＲＡＭ１５１〜１５３と、アンテナ１６０とを有する。
【００２５】
上記の不揮発性メモリ１１０、ＳＤＲＡＭ１２０、リセット解除部１２１、コピー部１２２、セマフォ部１２４、チップセレクタ１２３、割込レジスタ１２６、ＣＰＵ１３１〜１３４、ＤＳＰ１４１〜１４３は、汎用バス１８１によって相互に接続されている。また、無線状態判定部１２５、ＤＳＰ１４１〜１４３、アンテナ１６０は、ローカルバス１８２によって相互に接続されている。
【００２６】
不揮発性メモリ１１０は、例えば、フラッシュメモリ（Flash  Memory）であり、通信装置１００によって提供される各種サービスや各種機能を実現するプログラムを記憶する。具体的には、不揮発性メモリ１１０は、図２に示すように、初期ブート用プログラム１１１と、ＡＣＰＵ用プログラム１１２と、ＣＣＰＵ用プログラム１１３と、ＤＳＰ用プログラム１１４〜１１６とを記憶する。
【００２７】
初期ブート用プログラム１１１は、ＣＰＵ１３１〜１３４を立ち上げるプログラム群である。具体的には、初期ブート用プログラム１１１は、ＣＰＵ１３１〜１３４を初期起動させる初期起動用ＲＯＭコードを含む。かかる初期起動用ＲＯＭコードは、例えば、ＢＩＯＳ（Basic  Input  Output  System）である。なお、初期起動用ＲＯＭコードは、ＣＰＵ１３１〜１３４のリセットベクタに格納される。ここで言う「リセットベクタ」とは、ＣＰＵがリセット後にメモリから最初に命令を読み出すメモリアドレスを示す。一般的には、リセットベクタは「０ｘ００００００００」番地であるので、初期起動用ＲＯＭコードは、不揮発性メモリ１１０の「０ｘ００００００００」番地に格納させる。
【００２８】
ＡＣＰＵ用プログラム１１２は、ＡＣＰＵとして動作するＣＰＵによって実行される各種プログラムを含む。具体的には、ＡＣＰＵ用プログラム１１２は、ＡＣＰＵ用のブートローダや、ＩＰＬ（Initial  Program  Loader）、ＡＣＰＵ用のＲＴＯＳ（Real  time  OS）や、通信装置１００によって提供されるサービスやアプリケーションの実行を制御するプログラム群を含む。例えば、ＡＣＰＵ用プログラム１１２は、液晶ディスプレイ等の表示部に待受画面を表示制御するプログラムを含む。
【００２９】
ＣＣＰＵ用プログラム１１３は、ＣＣＰＵとして動作するＣＰＵによって実行される各種プログラムを含む。具体的には、ＣＣＰＵ用プログラム１１３は、ＣＣＰＵ用のブートローダや、ＩＰＬ、ＣＣＰＵ用のＲＴＯＳ、通信処理を制御するプログラム群を含む。例えば、ＣＣＰＵ用プログラム１１３は、無線通信に関する各処理のジョブ管理、タスク管理等を実現するプログラムを含む。なお、実施例２におけるＣＣＰＵ用プログラム１１３は、通信規格毎に異なるプログラムに分離されていないものとする。ＣＣＰＵ用プログラム１１３の構造については後述する。
【００３０】
ＤＳＰ用プログラム１１４〜１１６は、ＤＳＰ用のブートローダや、通信処理における演算を行うプログラム群である。なお、実施例２では、ＤＳＰ用プログラム１１４は、ＬＴＥに準拠した無線通信時に行われる各種演算を処理するプログラム群であるものとする。また、ＤＳＰ用プログラム１１５は、ＷＣＤＭＡに準拠した無線通信時に行われる各種演算を処理するプログラム群であり、ＤＳＰ用プログラム１１６は、ＧＳＭに準拠した無線通信時に行われる各種演算を処理するプログラム群であるものとする。
【００３１】
なお、不揮発性メモリ１１０は、例えば、図１に示した不揮発性メモリ１０に対応する。また、初期ブート用プログラム１１１は、例えば、図１に示した初期起動プログラム１１に対応する。また、ＡＣＰＵ用プログラム１１２は、例えば、図１に示したアプリ基本プログラム１２に対応する。また、ＣＣＰＵ用プログラム１１３は、例えば、図１に示した通信基本プログラム１３に対応する。また、ＤＳＰ用プログラム１１４〜１１６は、例えば、図１に示した通信処理プログラム１４に対応する。
【００３２】
ＳＤＲＡＭ１２０は、ＣＰＵ１３１〜１３４や、ＤＳＰ１４１〜１４３などによって実行される各種プログラムを記憶する。かかるＳＤＲＡＭ１２０は、通信装置１００の起動前には各種プログラムを保持しておらず、通信装置１００の起動後に、後述するコピー部１２２によって、不揮発性メモリ１１０に記憶されている各種プログラムが格納される。なお、図２では、メモリマップに対応する形式でＳＤＲＡＭ１２０を図示している。すなわち、ＳＤＲＡＭ１２０は、物理的に異なる複数のＳＤＲＡＭであってもよい。なお、ＳＤＲＡＭ１２０は、例えば、図１に示した揮発性メモリ３０に対応する。
【００３３】
リセット解除部１２１は、通信装置１００に電源が投入された場合に、コピー部１２２を動作させる。例えば、リセット解除部１２１は、通信装置１００に電源が投入された場合に、コピー部１２２に電源が供給されるように制御する。また、リセット解除部１２１は、コピー部１２２によるコピー処理が終了した場合に、ＣＰＵ１３１〜１３４、ＤＳＰ１４１〜１４３に対して、リセット解除処理を行う。
【００３４】
ここで、リセット解除部１２１によるリセット解除処理について、ＣＰＵ１３１を例に挙げて説明する。ＣＰＵ１３１は、通信装置１００に電源が投入された場合に、電源が供給される。電源が供給されたＣＰＵ１３１は、リセットベクタに格納されている命令を読み出さないように制御された状態（以下、「リセット状態」と言う）となる。リセット解除部１２１は、コピー部１２２によるコピー処理が終了した場合に、ＣＰＵ１３１のリセット状態を解除する。リセット状態が解除されたＣＰＵ１３１は、リセットベクタに格納されている命令を読み出して、読み出した命令を実行することになる。リセット解除部１２１は、ＣＰＵ１３２〜１３４、ＤＳＰ１４１〜１４３に対しても、同様のリセット解除処理を行う。
【００３５】
なお、リセット解除部１２１は、例えば、図１に示した起動指示部４０に対応する。また、リセット解除部１２１は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ(Field  Programmable  Gate  Array)などの集積回路である。
【００３６】
コピー部１２２は、リセット解除部１２１から動作開始指示を受け付けた場合に、不揮発性メモリ１１０に記憶されている各種プログラムを、ＳＤＲＡＭ１２０やＲＡＭ１５１〜１５３に格納する。例えば、コピー部１２２は、ＤＭＡ（Direct  Memory  Access）制御方式により、不揮発性メモリ１１０から、ＳＤＲＡＭ１２０やＲＡＭ１５１〜１５３へ各種プログラムを転送する。
【００３７】
図２に示した例では、コピー部１２２は、不揮発性メモリ１１０に記憶されているＡＣＰＵ用プログラム１１２、ＣＣＰＵ用プログラム１１３、ＤＳＰ用プログラム１１４〜１１６を読み出す。そして、コピー部１２２は、読み出した初期ブート用プログラム１１１、ＡＣＰＵ用プログラム１１２、ＣＣＰＵ用プログラム１１３、ＤＳＰ用プログラム１１４〜１１６をＳＤＲＡＭ１２０に格納する。
【００３８】
このとき、コピー部１２２は、初期ブート用プログラム１１１の先頭アドレスと、ＣＰＵ１３１〜１３４のリセットベクタとが一致するように、初期ブート用プログラム１１１をＳＤＲＡＭ１２０に格納する。例えば、ＣＰＵ１３１〜１３４のリセットベクタがＳＤＲＡＭ１２０のメモリアドレス「０ｘ００００００００」番地であるものとする。かかる場合には、コピー部１２２は、初期ブート用プログラム１１１の先頭アドレスがメモリアドレス「０ｘ００００００００」番地になるように格納する。
【００３９】
また、コピー部１２２は、ＤＳＰ用プログラム１１４の先頭アドレスと、ＤＳＰ１４１のリセットベクタとが一致するように、ＤＳＰ用プログラム１１４をＳＤＲＡＭ１２０に格納する。また、コピー部１２２は、ＤＳＰ用プログラム１１５の先頭アドレスと、ＤＳＰ１４２のリセットベクタとが一致するように、ＤＳＰ用プログラム１１５をＳＤＲＡＭ１２０に格納する。また、コピー部１２２は、ＤＳＰ用プログラム１１６の先頭アドレスと、ＤＳＰ１４３のリセットベクタとが一致するように、ＤＳＰ用プログラム１１６をＳＤＲＡＭ１２０に格納する。
【００４０】
なお、実施例２では、コピー部１２２が、初期ブート用プログラム１１１をＳＤＲＡＭ１２０に格納する例を示した。しかし、コピー部１２２は、初期ブート用プログラム１１１をＳＤＲＡＭ１２０に格納しなくてもよい。また、コピー部１２２は、例えば、図１に示した転送部２０に対応する。また、コピー部１２２は、例えば、ＡＳＩＣやＦＰＧＡなどの集積回路である。
【００４１】
チップセレクタ１２３は、ＤＳＰ１４１〜１４３によって、ＳＤＲＡＭ１２０からＤＳＰ用プログラム１１４〜１１６を読み出す処理が行われる場合に、メモリアドレスの変換を行う。
【００４２】
ここで、図３を用いて、チップセレクタ１２３によるアドレス変換処理について説明する。図３は、チップセレクタ１２３によるアドレス変換処理の一例を示す図である。図３に示した例では、ＤＳＰ用プログラム１１４は、ＳＤＲＡＭ１２０のメモリアドレス「０ｘＡ０００００００」番地から所定のメモリアドレスまでの記憶領域に格納されている。また、ＤＳＰ用プログラム１１５は、ＳＤＲＡＭ１２０のメモリアドレス「０ｘＢ０００００００」番地から所定のメモリアドレスまでの記憶領域に格納されている。また、ＤＳＰ用プログラム１１６は、ＳＤＲＡＭ１２０のメモリアドレス「０ｘＣ０００００００」番地から所定のメモリアドレスまでの記憶領域に格納されている。
【００４３】
図３に示した例において、チップセレクタ１２３は、ＤＳＰ１４３のリセットベクタと、ＤＳＰ用プログラム１１６が記憶されているＳＤＲＡＭ１２０の記憶領域の先頭メモリアドレスとの差を予め保持している。以下では、かかる差を「データライトオフセット」と表記する場合がある。例えば、ＤＳＰ１４３のリセットベクタがＲＡＭ１５３のメモリアドレス「０ｘ００００００００」であるものとする。かかる場合に、チップセレクタ１２３は、ＤＳＰ１４３のリセットベクタと、ＤＳＰ用プログラム１１６の先頭メモリアドレスとの差であるデータライトオフセットとして、「０ｘＣ０００００００」を保持する。
【００４４】
ここで、図３に示した例において、チップセレクタ１２３は、例えば、ＤＳＰ１４３から、ＤＳＰ１４３のリセットベクタであるメモリアドレス「０ｘ００００００００」を受け付けたものとする。かかる場合に、チップセレクタ１２３は、メモリアドレス「０ｘ００００００００」にデータライトオフセット「０ｘＣ０００００００」を加算した「０ｘＣ０００００００」に変換する。これにより、ＤＳＰ１４３は、メモリアドレス「０ｘ００００００００」にアクセスした場合であっても、ＳＤＲＡＭ１２０のメモリアドレス「０ｘＣ０００００００」にアクセスして、ＤＳＰ用プログラム１１６を読み出すことが可能になる。
【００４５】
同様に、チップセレクタ１２３は、ＤＳＰ１４１のリセットベクタと、ＤＳＰ用プログラム１１４が記憶されている記憶領域の先頭メモリアドレスとの差であるデータライトオフセットを保持する。また、チップセレクタ１２３は、ＤＳＰ１４２のリセットベクタと、ＤＳＰ用プログラム１１５が記憶されている記憶領域の先頭メモリアドレスとの差であるデータライトオフセットを保持する。そして、チップセレクタ１２３は、ＤＳＰ１４１によってＤＳＰ用プログラム１１５を読み出す処理や、ＤＳＰ１４２によってＤＳＰ用プログラム１１６を読み出す処理が行われる場合に、メモリアドレスの変換を行う。
【００４６】
図２の説明に戻って、セマフォ部１２４は、ＣＰＵ１３１〜１３４からアクセスされるたびに、セマフォカウンタの値を出力するとともに、かかるセマフォカウンタをインクリメントする。例えば、セマフォカウンタの初期値が「０」であるものとする。また、セマフォ部１２４は、通信装置１００の起動後にＣＰＵ１３１からアクセスされたものとする。かかる場合に、セマフォ部１２４は、ＣＰＵ１３１へセマフォカウンタ「０」を出力し、セマフォカウンタを「０」から「１」にインクリメントする。その後に、例えば、ＣＰＵ１３２からアクセスされた場合には、セマフォ部１２４は、ＣＰＵ１３２へセマフォカウンタ「１」を送信し、セマフォカウンタを「１」から「２」にインクリメントする。
【００４７】
なお、セマフォ部１２４は、通信装置１００が停止して起動するたびにセマフォカウンタを初期値にリセットする。上記例の場合、セマフォ部１２４は、通信装置１００が起動するたびに、セマフォカウンタを初期値「０」にリセットする。また、上記では、アクセスされるたびにセマフォカウンタをインクリメントする例を示したが、セマフォ部１２４は、アクセスされるたびにセマフォカウンタをデクリメントしてもよい。
【００４８】
なお、セマフォ部１２４は、例えば、図１に示した決定部５０に対応する。また、セマフォ部１２４は、例えば、ＡＳＩＣやＦＰＧＡなどの集積回路である。
【００４９】
無線状態判定部１２５は、通信規格毎に、無線状態の良否を判定し、通信装置１００によって行われる無線通信の通信規格を決定する。具体的には、無線状態判定部１２５は、ＤＳＰ１４１〜１４３に対して、無線状態を測定する要求（以下、「無線状態測定要求」と言う）を送信する。そして、無線状態判定部１２５は、ＤＳＰ１４１〜１４３から無線測定結果を受信した場合に、かかる無線測定結果に基づいて、無線状態の良否を判定する。そして、無線状態判定部１２５は、後述する割込レジスタ１２６に、無線状態が最も良好である通信規格を示す情報等を書き込む。なお、無線状態判定部１２５は、例えば、ＡＳＩＣやＦＰＧＡなどの集積回路である。
【００５０】
ここで、図４を用いて、無線状態判定部１２５の状態遷移について説明する。図４は、無線状態判定部１２５の状態遷移の一例を示す図である。図４に示すように、無線状態判定部１２５は、電源投入された場合に、まず、各種設定情報を初期化する未アクセス状態に遷移する（Ｓ１）。続いて、無線状態判定部１２５は、ＤＳＰ１４１〜１４３が起動した後に、未アクセス状態から測定状態へ遷移する（Ｓ２）。測定状態における無線状態判定部１２５は、ＤＳＰ１４１〜１４３へ無線状態測定要求を送信し、無線状態測定要求に対する応答を受信するまで待ち状態となる。続いて、無線状態判定部１２５は、ＤＳＰ１４１〜１４３から無線測定結果を受信した場合に、測定状態からアクセス状態へ遷移する（Ｓ３）。アクセス状態における無線状態判定部１２５は、無線測定結果に基づいて、無線状態が最も良好である通信規格による無線通信を行うことを決定し、決定した通信規格を割込レジスタ１２６に書き込む。
【００５１】
割込レジスタ１２６は、無線状態判定部１２５によって無線状態が最も良好である通信規格を示す情報や、アクティブなＤＳＰを示す情報などが書き込まれる記憶領域である。なお、割込レジスタ１２６は、後述するＣＰＵ１３１〜１３４のいずれかによって読み込まれる。割込レジスタ１２６から各種情報を読み出したＣＰＵは、割込処理を行う。なお、ＣＰＵ１３１〜１３４による割込処理については後述する。
【００５２】
ＣＰＵ１３１〜１３４は、各種演算処理を実行する。具体的には、ＣＰＵ１３１〜１３４は、リセット解除部１２１によってリセット解除された場合に、リセットベクタにアクセスすることにより、不揮発性メモリ１１０に記憶されている初期ブート用プログラム１１１の初期起動用ＲＯＭコードを実行する。その後に、ＣＰＵ１３１〜１３４は、セマフォ部１２４にアクセスして、セマフォカウンタを取得する。ＣＰＵ１３１〜１３４は、取得したセマフォカウンタに基づいて、自身の役割を決定する。具体的には、ＣＰＵ１３１〜１３４は、自身の役割をＡＣＰＵ又はＣＣＰＵのいずれかに決定する。また、ＣＣＰＵとして動作するＣＰＵは、自身の役割を、他のＣＣＰＵを制御するマスタＣＣＰＵ、又は、マスタＣＣＰＵによって制御されるスレーブＣＣＰＵのいずれかに決定する。そして、ＡＣＰＵとして動作するＣＰＵは、ＳＤＲＡＭ１２０に記憶されているＡＣＰＵ用プログラム１１２を実行する。また、ＣＣＰＵとして動作するＣＰＵは、ＳＤＲＡＭ１２０に記憶されているＣＣＰＵ用プログラム１１３を実行する。なお、ＣＰＵ１３１〜１３４は、例えば、図１に示した第１プロセッサ６１及び６２に対応する。
【００５３】
なお、実施例２では、セマフォカウンタ「０」を取得したＣＰＵは、ＡＣＰＵとして動作し、セマフォカウンタ「１」〜「３」を取得したＣＰＵは、ＣＣＰＵとして動作するものとする。また、実施例２では、セマフォカウンタ「１」を取得したＣＰＵは、マスタＣＣＰＵとして動作し、セマフォカウンタ「２」又は「３」を取得したＣＰＵは、スレーブＣＣＰＵとして動作するものとする。
【００５４】
ここで、マスタＣＣＰＵ及びスレーブＣＣＰＵによる処理について説明する。マスタＣＣＰＵは、ＣＣＰＵ用のＲＴＯＳを起動して、スレーブＣＣＰＵを制御する。スレーブＣＣＰＵは、ＣＣＰＵ用のＲＴＯＳを起動させずに、マスタＣＣＰＵから動作指示を受け付けるまで待機状態となる。これにより、実施例２に係る通信装置１００では、ＣＣＰＵとして動作するＣＰＵが複数ある場合であっても、ＲＴＯＳを起動するＣＰＵを１個にすることができる。そして、ＲＴＯＳを起動させないＣＰＵが待機状態になるので、消費電力を低減することができる。
【００５５】
上記のマスタＣＣＰＵによる動作指示についてより詳細に説明する。実施例２におけるＣＣＰＵ用プログラム１１３は、マスタＣＣＰＵ及びスレーブＣＣＰＵの双方に実行される共通サブルーチンと、マスタＣＣＰＵに実行されるマスタサブルーチンと、スレーブＣＣＰＵに実行されるスレーブサブルーチンとを含む。
【００５６】
マスタＣＣＰＵは、このようなＣＣＰＵ用プログラム１１３のうち、上記の共通サブルーチンやマスタサブルーチンを実行することで、ＲＴＯＳの起動や、スレーブＣＣＰＵに対する動作指示を行う。具体的には、マスタＣＣＰＵは、ＳＤＲＡＭ１２０の所定のメモリアドレスが示す記憶領域（以下、「指示領域」と言う）に、スレーブＣＣＰＵに実行させるサブルーチンの先頭ポインタや先頭アドレスを格納する。
【００５７】
また、スレーブＣＣＰＵは、上記の共通サブルーチンやスレーブサブルーチンを実行することで、所定の初期化処理や、マスタＣＣＰＵから動作指示を受け付ける処理を行う。待機状態であるスレーブＣＣＰＵは、上記の指示領域に記憶される情報が更新されたか否かを判定する。そして、スレーブＣＣＰＵは、指示領域が更新された場合には、指示領域に記憶されている先頭ポインタにジャンプし、かかる先頭ポインタが示す共通サブルーチンやスレーブサブルーチンを実行する。そして、スレーブＣＣＰＵは、サブルーチンの実行が終了した場合に、再度、待機状態となる。このように、ＣＣＰＵ用プログラム１１３は、マスタＣＣＰＵから指示される先頭ポインタをポーリングするランデブプログラムである。以下では、マスタＣＣＰＵが指示領域に格納する先頭ポインタなどの情報を「ランデブコード」と表記する場合がある。
【００５８】
ＤＳＰ１４１〜１４３は、通信処理における各種演算処理を実行する。具体的には、ＤＳＰ１４１は、リセット解除部１２１によってリセット解除された場合に、リセットベクタにアクセスすることにより、ＳＤＲＡＭ１２０に記憶されているＤＳＰ用プログラム１１４のブートローダを実行する。なお、上述したように、ＤＳＰ１４１によって指定されるメモリアドレスは、チップセレクタ１２３によって変換される。その後、ＤＳＰ１４１は、ＳＤＲＡＭ１２０に記憶されているＤＳＰ用プログラム１１４を、ＲＡＭ１５１に格納する。そして、ＤＳＰ１４１は、ＲＡＭ１５１に格納したＤＳＰ用プログラム１１４を実行する。同様に、ＤＳＰ１４２は、ＤＳＰ用プログラム１１５のブートローダを実行した後に、ＤＳＰ用プログラム１１５をＲＡＭ１５２に格納する。また、ＤＳＰ１４３は、ＤＳＰ用プログラム１１６のブートローダを実行した後に、ＤＳＰ用プログラム１１６をＲＡＭ１５３に格納する。
【００５９】
実施例２におけるＤＳＰ１４１〜１４３は、予め処理対象の通信規格が割り当てられており、割り当てられている通信規格に対応するＤＳＰ用プログラムを実行する。実施例２では、ＤＳＰ１４１がＬＴＥにおける各種演算を行い、ＤＳＰ１４２がＷＣＤＭＡにおける各種演算を行い、ＤＳＰ１４３がＧＳＭにおける各種演算を行うことが決められているものとする。なお、ＤＳＰ１４１〜１４３は、例えば、図１に示した第３プロセッサ６３に対応する。
【００６０】
アンテナ１６０は、外部へ信号を送信したり、外部から信号を受信したりする。例えば、アンテナ１６０は、ＤＳＰ１４１〜１４３によって符号化、変調された信号を入力された場合に、かかる信号を外部へ送信する。また、例えば、アンテナ１６０は、外部から信号を受信した場合に、受信した信号をＤＳＰ１４１〜１４３へ出力する。
【００６１】
［実施例２に係る通信装置による起動シーケンス］
次に、図５を用いて、実施例２に係る通信装置１００による起動時の処理について説明する。図５は、実施例２に係る通信装置１００による起動時の処理の流れを示すシーケンス図である。
【００６２】
図５に示すように、通信装置１００に電源が投入された場合に（ステップＳ１０１）、リセット解除部１２１は、コピー部１２２に電源供給を行う（ステップＳ１０２）。電源供給されたコピー部１２２は、不揮発性メモリ１１０に記憶されているＡＣＰＵ用プログラム１１２、ＣＣＰＵ用プログラム１１３、ＤＳＰ用プログラム１１４〜１１６を読み出す（ステップＳ１０３）。
【００６３】
そして、コピー部１２２は、ステップＳ１０３において読み出したＡＣＰＵ用プログラム１１２、ＣＣＰＵ用プログラム１１３、ＤＳＰ用プログラム１１４〜１１６を、ＳＤＲＡＭ１２０に格納する（ステップＳ１０４）。このとき、コピー部１２２は、ＳＤＲＡＭ１２０に格納したＤＳＰ用プログラム１１４〜１１６を、ＲＡＭ１５１〜１５３に格納してもよい（ステップＳ１０５）。そして、コピー部１２２は、コピー処理が完了した場合に、リセット解除部１２１へ完了通知を送信する（ステップＳ１０６）。
【００６４】
コピー部１２２から完了通知を受信したリセット解除部１２１は、ＣＰＵ１３１〜１３４及びＤＳＰ１４１〜１４３に対してリセット解除処理を行う（ステップＳ１０７）。ＣＰＵ１３１〜１３４及びＤＳＰ１４１〜１４３は、リセット解除された場合に、リセットベクタから命令を読み出して、各種処理を開始する。以下では、まず、ＣＰＵ１３１〜１３４による処理について説明し、次に、ＤＳＰ１４１〜１４３による処理について説明する。
【００６５】
ＣＰＵ１３１〜１３４は、リセット解除された場合に、ＳＤＲＡＭ１２０から、リセットベクタに記憶されている初期ブート用プログラム１１１を読み出す（ステップＳ１０８〜Ｓ１１１）。そして、ＣＰＵ１３１〜１３４は、読み出した初期ブート用プログラム１１１に含まれる初期起動用ＲＯＭコードを実行する（ステップＳ１０８〜Ｓ１１１）。
【００６６】
続いて、ＣＰＵ１３１〜１３４は、セマフォ部１２４にアクセスして、セマフォカウンタを取得する（ステップＳ１１２〜Ｓ１１５）。図５に示した例では、ＣＰＵ１３１、ＣＰＵ１３２、ＣＰＵ１３３、ＣＰＵ１３４の順に、セマフォ部１２４にアクセスするものとする。また、図５に示した例では、セマフォカウンタの初期値が「０」であるものとする。したがって、セマフォ部１２４は、セマフォカウンタ「０」をＣＰＵ１３１へ送信する。また、セマフォ部１２４は、セマフォカウンタ「１」をＣＰＵ１３２へ送信し、セマフォカウンタ「２」をＣＰＵ１３３へ送信し、セマフォカウンタ「３」をＣＰＵ１３４へ送信する。
【００６７】
セマフォカウンタ「０」を取得したＣＰＵ１３１は、ＳＤＲＡＭ１２０に記憶されているＡＣＰＵ用プログラム１１２を実行することで、ＡＣＰＵとして動作する（ステップＳ１１６）。具体的には、ＣＰＵ１３１は、ＡＣＰＵ用のブートローダを起動した後に（ステップＳ１１７）、カーネルを起動するためのＩＰＬを起動する（ステップＳ１１８）。そして、ＣＰＵ１３１は、ＡＣＰＵ用のＲＴＯＳを起動して、タスクを生成する（ステップＳ１１９）。
【００６８】
また、セマフォカウンタ「１」を取得したＣＰＵ１３２は、ＳＤＲＡＭ１２０に記憶されているＣＣＰＵ用プログラム１１３を実行することで、マスタＣＣＰＵとして動作する（ステップＳ１２０）。具体的には、ＣＰＵ１３２は、マスタＣＣＰＵ用のブートローダを起動した後に（ステップＳ１２１）、ＩＰＬを起動する（ステップＳ１２２）。そして、ＣＰＵ１３２は、ＣＣＰＵ用のＲＴＯＳを起動して、タスクを生成する（ステップＳ１２３）。
【００６９】
また、セマフォカウンタ「２」を取得したＣＰＵ１３３は、ＳＤＲＡＭ１２０に記憶されているＣＣＰＵ用プログラム１１３を実行することで、スレーブＣＣＰＵとして動作する（ステップＳ１２４）。同様に、セマフォカウンタ「３」を取得したＣＰＵ１３４は、スレーブＣＣＰＵとして動作する（ステップＳ１２５）。具体的には、ＣＰＵ１３３及び１３４は、図５に示すように、スレーブＣＣＰＵ用のブートローダを起動した後に（ステップＳ１２６及びＳ１２７）、ＳＤＲＡＭ１２０の指示領域に先頭ポインタ等のランデブコードが格納されるまで待機する（ステップＳ１２８及びＳ１２９）。
【００７０】
続いて、リセット解除されたＤＳＰ１４１〜１４３による処理について説明する。ＤＳＰ１４１〜１４３は、リセット解除された場合に、ＲＡＭ１５１〜１５３からＤＳＰ用プログラム１１４〜１１６を読み出す（ステップＳ１３０〜Ｓ１３２）。そして、ＤＳＰ１４１〜１４３は、ＤＳＰ用プログラム１１４〜１１６に含まれるＤＳＰ用のブートローダを起動した後に（ステップＳ１３３〜Ｓ１３５）、カーネルを起動してタスクを生成する（ステップＳ１３６〜Ｓ１３８）。
【００７１】
その後に、ＤＳＰ１４１〜１４３は、自身に割り当てられている処理対象の通信規格を判定するタイプ判定処理を行う（ステップＳ１３９〜Ｓ１４１）。例えば、ＤＳＰ１４１〜１４３は、それぞれＲＯＭを有しており、かかるＲＯＭに記憶されているコードに基づいてタイプ判定処理を行う。例えば、ＲＯＭに記憶されているコードが「０」である場合にはＬＴＥを示し、コードが「１」である場合にはＷＣＤＭＡを示し、コードが「２」である場合にはＧＳＭを示すことが決められているとする。かかる場合に、実施例２におけるＤＳＰ１４１は、ＲＯＭからコード「０」を取得して、自身に割り当てられている通信規格がＬＴＥであると判定する。また、ＤＳＰ１４２は、ＲＯＭからコード「１」を取得して、自身に割り当てられている通信規格がＷＣＤＭＡであると判定する。また、ＤＳＰ１４２は、ＲＯＭからコード「２」を取得して、自身に割り当てられている通信規格がＧＳＭであると判定する。
【００７２】
そして、ＤＳＰ１４１〜１４３は、タイプ判定処理後に、自身に割り当てられている通信規格を、無線状態判定部１２５に通知する（ステップＳ１４２〜Ｓ１４４）。例えば、ＤＳＰ１４１〜１４３は、上記の所定のＲＯＭから取得したコードを、無線状態判定部１２５が読み出し可能なレジスタに書き込む。そして、無線状態判定部１２５は、かかるレジスタからコードを読み出すことによって、ＤＳＰ１４１〜１４３に割り当てられている通信規格を取得する。上記例の場合、例えば、ＤＳＰ１４１は、コード「０」をレジスタに書き込む。そして、無線状態判定部１２５は、かかるレジスタからコード「０」を読み出すことによって、ＤＳＰ１４１に割り当てられている通信規格がＬＴＥであると判定する。
【００７３】
ＤＳＰ１４１〜１４３に割り当てられている通信規格を取得した無線状態判定部１２５は、ＤＳＰ１４１〜１４３に対して無線状態測定要求を送信する（ステップＳ１４５〜Ｓ１４７）。無線状態測定要求を受け付けたＤＳＰ１４１〜１４３は、アンテナ１６０のＲＦ（Radio  Frequency）部を用いて、無線状態の測定を行う（ステップＳ１４８〜Ｓ１５０）。例えば、ＤＳＰ１４１〜１４３は、受信信号の電波強度を測定する。実施例２では、ＤＳＰ１４１は、ＬＴＥの無線状態を測定し、ＤＳＰ１４２は、ＷＣＤＭＡの無線状態を測定し、ＤＳＰ１４３は、ＧＳＭの無線状態を測定する。
【００７４】
そして、ＤＳＰ１４１〜１４３は、無線状態の測定処理が終了した場合に、無線測定結果を無線状態判定部１２５へ送信する（ステップＳ１５１〜Ｓ１５３）。例えば、ＤＳＰ１４１〜１４３は、無線状態判定部１２５が読み出し可能なレジスタに無線状態の測定結果を書き込む。そして、無線状態判定部１２５は、かかるレジスタから測定結果を読み出すことによって、各通信規格の無線状態を取得する。
【００７５】
続いて、無線状態判定部１２５は、ＤＳＰ１４１〜１４３から受信した測定結果に基づいて、各通信規格の無線状態の良否を判定する（ステップＳ１５４）。そして、無線状態判定部１２５は、マスタＣＣＰＵであるＣＰＵ１３２に対して、割込通知を行う（ステップＳ１５５）。具体的には、無線状態判定部１２５は、割込レジスタ１２６に、無線状態が最も良好である通信規格を示す情報や、かかる通信規格が割り当てられているＤＳＰを示す情報を書き込む。図５に示した例では、無線状態判定部１２５が、ＬＴＥの無線状態が最も良好であると判定したものとする。すなわち、図５に示した例では、無線状態判定部１２５は、割込レジスタ１２６に、ＬＴＥを示す情報や、ＬＴＥが割り当てられているＤＳＰ１４１を示す情報を書き込む。
【００７６】
続いて、ＣＰＵ１３２は、割込通知を受け付けた場合に、割込レジスタ１２６に記憶されている各種情報を読み出して、ＬＴＥの通信処理を行うためのタスクを生成する（ステップＳ１５６）。そして、ＣＰＵ１３２は、無線状態判定部１２５に対して、割込通知に対する応答を返す（ステップＳ１５７）。また、ＣＰＵ１３２は、ＡＣＰＵであるＣＰＵ１３１に対して、ＬＴＥによる無線処理を行うことが可能である旨を通知する（ステップＳ１５８）。かかる通知を受け付けたＣＰＵ１３１は、ＣＰＵ１３２に対して応答を返す（ステップＳ１５９）。なお、ＡＣＰＵであるＣＰＵ１３１は、ステップＳ１５８における通知を受け付けることによって、例えば、表示部に、ＬＴＥによる通信が可能であることを示すアンテナマークを表示制御する。
【００７７】
また、無線状態判定部１２５は、ＬＴＥが割り当てられているＤＳＰ１４１に対して、ＬＴＥによる無線通信を行うことが決定した旨の通知である接続許可通知を行う（ステップＳ１６０）。これにより、ＤＳＰ１４１は、アクティブとなり、ＬＴＥにおける通信時に各種演算処理を行う。また、無線状態判定部１２５は、ＬＴＥが割り当てられていないＤＳＰ１４２及び１４３に対して、スタンバイ状態（「スリープ状態」とも言う）になる旨の通知であるスタンバイ通知を行う（ステップＳ１６１及びＳ１６２）。これにより、ＤＳＰ１４２及び１４３は、スタンバイ状態になる。
【００７８】
なお、図５に示した例では、ステップＳ１５４において、無線状態判定部１２５が、ＬＴＥの無線状態が最も良好であると判定した例を示した。しかし、無線状態判定部１２５は、例えば、ＷＣＤＭＡの無線状態が最も良好であると判定した場合には、割込レジスタ１２６に、ＷＣＤＭＡを示す情報や、ＤＳＰ１４２を示す情報を書き込む。そして、ＣＰＵ１３２は、割込レジスタ１２６に記憶されている各種情報を読み出して、ＷＣＤＭＡの通信処理を行うＣＰＵ１３３に対して、動作指示を行う。例えば、ＣＰＵ１３２は、ＳＤＲＡＭ１２０の指示領域に、ＷＣＤＭＡにおける通信処理を制御するサブルーチンの先頭アドレスを格納する。ＣＰＵ１３３は、指示領域に格納されたランデブコードが示すサブルーチンにジャンプし、ＷＣＤＭＡにおける通信処理の制御を行う。
【００７９】
［実施例２におけるＣＰＵによる起動処理手順］
次に、図６を用いて、実施例２におけるＣＰＵ１３１〜１３４による起動処理の手順について説明する。図６は、実施例２におけるＣＰＵ１３１〜１３４による起動処理手順を示すフローチャートである。
【００８０】
図６に示すように、ＣＰＵ１３１〜１３４は、起動する場合に、まず、ＳＤＲＡＭ１２０に記憶されている初期ブート用プログラム１１１に含まれる初期起動用ＲＯＭコードを実行する（ステップＳ２０１）。続いて、ＣＰＵ１３１〜１３４は、内部レジスタ等の初期化を行う（ステップＳ２０２）。続いて、ＣＰＵ１３１〜１３４は、セマフォ部１２４にアクセスして、セマフォカウンタを取得する（ステップＳ２０３）。
【００８１】
ＣＰＵ１３１〜１３４は、取得したセマフォカウンタが「０」である場合に（ステップＳ２０４、「０」）、ＡＣＰＵとして動作する。また、ＣＰＵ１３１〜１３４は、取得したセマフォカウンタが「１」である場合に（ステップＳ２０４、「１」）、マスタＣＣＰＵとして動作する。また、ＣＰＵ１３１〜１３４は、取得したセマフォカウンタが「０」及び「１」以外である場合に（ステップＳ２０４、「その他」）、スレーブＣＣＰＵとして動作する。
【００８２】
図６に示した例では、図５に示した例と同様に、ＣＰＵ１３１は、セマフォカウンタ「０」を取得し、ＡＣＰＵとして動作する（ステップＳ２０５）。ＡＣＰＵであるＣＰＵ１３１は、ＳＤＲＡＭ１２０に記憶されているＡＣＰＵ用プログラム１１２を実行する（ステップＳ２０６）。例えば、ＣＰＵ１３１は、ＡＣＰＵ用プログラム１１２の先頭ポインタにアクセスすることで、ＡＣＰＵ用プログラム１１２を実行する。続いて、ＣＰＵ１３１は、バス等の周辺部を初期化する（ステップＳ２０７）。続いて、ＣＰＵ１３１は、ＩＰＬを起動し（ステップＳ２０８）、カーネルを起動する（ステップＳ２０９）。
【００８３】
続いて、ＣＰＵ１３１は、ＡＣＰＵ用プログラム１１２に基づいて、各種タスクを生成する（ステップＳ２１０）。例えば、ＣＰＵ１３１は、待受画面を表示制御するためのタスクや、時刻を表示制御するためのタスク等を生成する。そして、ＣＰＵ１３１は、生成したタスクの中で、メインとなるタスクを起動する（ステップＳ２１１）。例えば、ＣＰＵ１３１は、待受画面を表示制御するためのタスクを起動することで、通信装置１００の表示部に待受画面を表示制御する。そして、ＣＰＵ１３１は、マスタＣＣＰＵから無線処理を行うことが可能である旨の通知を受信するまで待機状態となる（ステップＳ２１２）。
【００８４】
また、ＣＰＵ１３２は、セマフォカウンタ「１」を取得し、マスタＣＣＰＵとして動作する（ステップＳ２１３）。かかるＣＰＵ１３２は、ＳＤＲＡＭ１２０に記憶されているＣＣＰＵ用プログラム１１３を実行する（ステップＳ２１４）。例えば、ＣＰＵ１３２は、ＣＣＰＵ用プログラム１１３の先頭ポインタにアクセスすることで、ＣＣＰＵ用プログラム１１３を実行する。続いて、ＣＰＵ１３２は、周辺部を初期化する（ステップＳ２１５）。続いて、ＣＰＵ１３２は、スレーブＣＣＰＵに所定の処理を実行させるために、ＳＤＲＡＭ１２０の指示領域を更新する（ステップＳ２１６）。ここでは、ＣＰＵ１３２は、スレーブＣＣＰＵに処理を実行させる通信規格などを決定し、決定した通信規格に対応する指示領域を監視するようにスレーブＣＣＰＵに指示する。
【００８５】
続いて、ＣＰＵ１３２は、ＩＰＬを起動し（ステップＳ２１７）、カーネルを起動する（ステップＳ２１８）。続いて、ＣＰＵ１３２は、ＣＣＰＵ用プログラム１１３に基づいて、各種タスクを生成する（ステップＳ２１９）。そして、ＣＰＵ１３２は、無線状態判定部１２５から割込通知を受けた場合に（ステップＳ２２０肯定）、割込レジスタ１２６から各種情報を読み出して、通信装置１００によって行われる無線通信の通信規格を特定する。そして、ＣＰＵ１３２は、特定した通信規格と、自身が処理する通信規格とが一致する場合には、かかる通信規格のメインタスクを起動する（ステップＳ２２１）。
【００８６】
なお、マスタＣＣＰＵであるＣＰＵ１３２は、特定した通信規格と、自身が処理する通信規格とが一致しない場合には、特定した通信規格による無線通信を処理するスレーブＣＣＰＵに対して、かかる通信規格のメインタスクを起動するように指示する。例えば、ＣＰＵ１３２は、ＳＤＲＡＭ１２０の指示領域に、かかるメインタスクの先頭ポインタを格納する。
【００８７】
続いて、ＣＰＵ１３２は、無線状態判定部１２５に対して、割込通知に対する応答を返す（ステップＳ２２２）。例えば、ＣＰＵ１３２は、無線状態判定部１２５が読み出し可能なレジスタに完了通知を示す情報を書き込む。続いて、ＣＰＵ１３２は、ＡＣＰＵであるＣＰＵ１３１に対して、無線処理を行うことが可能である旨を通知する（ステップＳ２２３）。ＣＰＵ１３１は、かかる起動完了通知を受け付けた場合に（ステップＳ２１２肯定）、ＣＰＵ１３２に対して応答を返す（ステップＳ２２４）。これにより、ＣＰＵ１３１は、起動完了となる（ステップＳ２２５）。また、ＣＰＵ１３２は、ＣＰＵ１３１から応答を受け付けた場合に（ステップＳ２２６肯定）、起動完了となる（ステップＳ２２７）。
【００８８】
また、ＣＰＵ１３３及び１３４は、セマフォカウンタ「０」及び「１」以外を取得し、スレーブＣＣＰＵとして動作する（ステップＳ２２８）。かかるＣＰＵ１３３及び１３４は、ＳＤＲＡＭ１２０に記憶されているＣＣＰＵ用プログラム１１３を実行する（ステップＳ２２９）。なお、ＣＰＵ１３３による処理手順と、ＣＰＵ１３４による処理手順とは類似しているため、以下では、ＣＰＵ１３３による処理手順について説明する。
【００８９】
続いて、ＣＰＵ１３３は、マスタＣＣＰＵであるＣＰＵ１３２から動作指示を受け付けるまで待機状態となる（ステップＳ２３０）。具体的には、ＳＤＲＡＭ１２０の指示領域に、ジャンプ先（「分岐先」とも言う）であるサブルーチンの先頭アドレスが登録されるまで待機状態となる。そして、ＣＰＵ１３３は、ＳＤＲＡＭ１２０の指示領域にランデブコードが登録された場合に（ステップＳ２３０肯定）、かかるランデブコードが示すサブルーチンを実行する（ステップＳ２３１）。例えば、ＣＰＵ１３３は、ＷＣＤＭＡによる無線通信を処理するメインタスクを実行する。
【００９０】
そして、ＣＰＵ１３３は、ＣＰＵ１３２から動作指示を受け付けるまで待機状態となる（ステップＳ２３２）。ＣＰＵ１３３は、ＣＰＵ１３２から動作指示を受け付けるたびに（ステップＳ２３２肯定）、かかる指示に従って、スレーブＣＣＰＵとして動作する（ステップＳ２３３）。
【００９１】
［実施例２におけるＤＳＰによる起動処理手順］
次に、図７を用いて、実施例２におけるＤＳＰ１４１〜１４３による起動処理の手順について説明する。図７は、実施例２におけるＤＳＰ１４１〜１４３による起動処理手順を示すフローチャートである。なお、ＤＳＰ１４１〜１４３は、マスタＣＣＰＵ及び無線状態判定部１２５と連携して起動するため、図７には、マスタＣＣＰＵ及び無線状態判定部１２５による処理手順も示す。また、図７に示した例では、マスタＣＣＰＵは、ＣＰＵ１３２であるものとする。
【００９２】
図７に示すように、マスタＣＣＰＵであるＣＰＵ１３２は、初期ブート用プログラム１１１を実行した後に（ステップＳ３０１）、セマフォ部１２４からセマフォカウントを取得する（ステップＳ３０２）。実施例２におけるＣＰＵ１３２は、セマフォカウント「１」を取得するので、マスタＣＣＰＵとして動作する（ステップＳ３０３）。
【００９３】
続いて、ＣＰＵ１３２は、無線状態判定部１２５から割込通知を受けた場合に（ステップＳ３０４肯定）、割込レジスタ１２６から各種情報を読み出して、アクティブにするＤＳＰを特定する。そして、ＣＰＵ１３２は、特定したＤＳＰを示す情報を内部レジスタ等に登録し、無線状態判定部１２５に対して、割込通知に対する応答を返す（ステップＳ３０５）。
【００９４】
また、ＤＳＰ１４１〜１４３は、ＲＡＭ１５１〜１５３に記憶されているＤＳＰ用プログラム１１４〜１１６を実行する（ステップＳ３０６）。続いて、ＤＳＰ１４１〜１４３は、無線アクセス処理を開始する（ステップＳ３０７）。具体的には、ＤＳＰ１４１〜１４３は、タイプ判定処理によって自身が処理する通信規格を特定し、特定した通信規格を示す情報を無線状態判定部１２５に通知する。
【００９５】
そして、ＤＳＰ１４１〜１４３は、無線状態判定部１２５から無線状態測定要求を受け付けた場合に、無線状態の測定を行う（ステップＳ３０８）。そして、ＤＳＰ１４１〜１４３は、測定結果を無線状態判定部１２５へ通知する（ステップＳ３０９）。例えば、ＤＳＰ１４１〜１４３は、無線状態判定部１２５が読み出し可能なレジスタに測定結果を書き込む。
【００９６】
その後、ＤＳＰ１４１〜１４３は、無線状態判定部１２５から動作モードの通知を受け付けるまで待機状態となる（ステップＳ３１０）。ＤＳＰ１４１を例に挙げて説明する。ＤＳＰ１４１は、ランデブプログラムであるＤＳＰ用プログラム１１４を実行しており、ステップＳ３１０において、ＲＡＭ１５１の所定のメモリアドレスが示す記憶領域を監視している。そして、ＤＳＰ１４１は、かかる記憶領域に、無線状態判定部１２５によって継続許可通知を示す情報が書き込まれた場合に（ステップＳ３１０肯定）、ＲＡＭ１５１上に記憶されている所定のサブルーチンを実行する（ステップＳ３１１）。例えば、ＤＳＰ１４１は、ＬＴＥによる無線通信を処理する関数を実行する。同様に、ＤＳＰ１４２及びＤＳＰ１４３は、ＲＡＭ１５２又は１５３の所定のメモリアドレスが示す記憶領域を監視しており、かかる記憶領域に継続許可通知を示す情報が書き込まれた場合に、所定の関数を実行する。
【００９７】
無線状態判定部１２５は、ＤＳＰ１４１〜１４３が起動した場合に（ステップＳ３１２肯定）、ＤＳＰ１４１〜１４３に対して、無線状態測定要求を送信する（ステップＳ３１３）。そして、無線状態判定部１２５は、ＤＳＰ１４１〜１４３から測定結果を受信した場合に（ステップＳ３１４肯定）、測定結果を比較して、各通信規格の無線状態の良否を判定する（ステップＳ３１５）。そして、無線状態判定部１２５は、マスタＣＣＰＵであるＣＰＵ１３２に対して、割込通知を送信する。その後、無線状態判定部１２５は、ＣＰＵ１３２から割込通知に対する応答を受け付けた場合に（ステップＳ３１６肯定）、ＤＳＰ１４１〜１４３に対して、動作モードを通知する（ステップＳ３１７）。
【００９８】
［実施例２の効果］
上述してきたように、実施例２に係る通信装置１００は、電源が投入された場合に、コピー部１２２が、不揮発性メモリ１１０に記憶されている各種プログラムがＳＤＲＡＭ１２０にコピーする。続いて、リセット解除部１２１は、ＣＰＵ１３１〜１３４及びＤＳＰ１４１〜１４３に対してほぼ同時にリセット解除を行う。リセット解除が行われたＣＰＵ１３１〜１３４は、ＳＤＲＡＭ１２０に記憶されている初期ブート用プログラム１１１を実行することによりブートする。そして、ＣＰＵ１３１〜１３４は、ブート後に、セマフォ部１２４を用いて、ＡＣＰＵ又はＣＣＰＵのいずれかで動作することを決定し、決定した役割に応じたプログラムをＳＤＲＡＭ１２０から読み出して実行する。また、リセット解除が行われたＤＳＰ１４１〜１４３は、予め割り付けられている通信規格に応じて、ＤＳＰ用プログラム１１４〜１１６のいずれかを実行する。
【００９９】
これにより、実施例２に係る通信装置１００は、ＣＰＵ１３１〜１３４及びＤＳＰ１４１〜１４３が同時にブート処理を開始することができる。その結果、実施例２に係る通信装置１００は、高速に起動することができる。この点について、図８を用いて説明する。図８は、実施例２に係る通信装置による起動時間を説明するための図である。なお、図８の上段は、従来の通信装置の起動時間を示しており、図８の下段は、実施例２に係る通信装置１００の起動時間を示している。
【０１００】
図８の上段に示すように、従来の通信装置は、ブートマスタであるＡＣＰＵがブートした後に、ＣＣＰＵ＃０がブート処理を開始している。さらに、従来の通信装置は、ＣＣＰＵ＃０がブートした後に、ＤＳＰ＃０及び＃１がブート処理を開始している。そして、図８の上段の例では、ＤＳＰ＃０は、受信強度の測定等が終了した後に、アイドル中であるＣＣＰＵ＃０に対して無線通信を開始する旨を通知している。かかる通知を受信したＣＣＰＵ＃０は、起動完了となる。
【０１０１】
一方、図８の下段に示すように、実施例２に係る通信装置１００は、ＡＣＰＵ、ＣＣＰＵ＃０及び＃１、ＤＳＰ＃０及び＃１が同時にブート処理を開始している。すなわち、ＣＣＰＵ＃０及び＃１は、ＡＣＰＵのブート処理が完了するまで待ち状態とならず、同様に、ＤＳＰ＃０及び＃１は、ＣＣＰＵ＃０及び＃１のブート処理が完了するまで待ち状態とならない。このため、図８に示すように、実施例２におけるＡＣＰＵ、ＣＣＰＵ＃０及び＃１、ＤＳＰ＃０及び＃１の起動が完了する時間は、従来の通信装置と比較して短縮される。
【０１０２】
また、実施例２に係る通信装置１００は、電源が投入された場合に、ＤＳＰ１４１〜１４３が自身に割り当てられている通信規格の無線品質を測定する。そして、無線状態判定部１２５は、かかる無線品質の測定結果に基づいて、無線品質が良好である通信規格による無線通信を行うことを決定する。これにより、実施例２に係る通信装置１００は、利用者によって通信規格を選択させることなく、自動的に無線通信を行う通信規格を決定することができる。今後、複数の通信規格に対応する通信装置が提供されることが考えられるが、このような通信装置は、無線通信の通信規格を利用者に選択させることになると考えられる。実施例２に係る通信装置１００を用いた場合、利用者は、通信規格を選択する操作を行うことなく、無線品質が良好である通信規格を利用することが可能になる。
【０１０３】
また、実施例２に係る通信装置１００は、複数のＣＣＰＵを選定するが、複数のＣＣＰＵ用プログラムを有しない。そして、実施例２に係る通信装置１００では、ＲＴＯＳを起動するマスタＣＣＰＵが、ＲＴＯＳを起動しないスレーブＣＣＰＵを制御する。これにより、実施例２に係る通信装置１００は、ＲＴＯＳを起動させるＣＰＵを削減できるので、消費電力を削減することができる。
【実施例３】
【０１０４】
ところで、本願の開示する通信装置等は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例３では、本願の開示する通信装置等の他の実施例について説明する。
【０１０５】
［セマフォ］
上記実施例２では、ＣＰＵ１３１〜１３４は、セマフォ部１２４から出力されるセマフォカウンタに基づいて、ＡＣＰＵ、マスタＣＣＰＵ、スレーブＣＣＰＵのいずれで動作するかを決定する例を示した。しかし、ＣＰＵ１３１〜１３４は、セマフォ部１２４を用いずに、アクセスされるたびにカウンタの値を出力するとともにカウンタをインクリメントもしくはデクリメントする部位を用いてもよい。
【０１０６】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、実施例２では、セマフォカウンタ「０」を取得したＣＰＵは、ＡＣＰＵとして動作し、セマフォカウンタ「１」〜「３」を取得したＣＰＵは、ＣＣＰＵとして動作することとした。しかし、例えば、セマフォカウンタ「０」〜「２」を取得したＣＰＵが、ＣＣＰＵとして動作し、セマフォカウンタ「３」を取得したＣＰＵは、ＡＣＰＵとして動作してもよい。
【０１０７】
また、実施例２では、通信装置１００が４個のＣＰＵと、３個のＤＳＰとを有する例を示したが、通信装置１００が有するＣＰＵやＤＳＰの個数は図２に示した例に限られない。例えば、通信装置１００は、３個のＣＰＵや、５個以上のＣＰＵを有してもよいし、４個以上のＤＳＰを有してもよい。
【符号の説明】
【０１０８】
１  通信装置
１０  不揮発性メモリ
１１  初期起動プログラム
１２  アプリ基本プログラム
１３  通信基本プログラム
１４  通信処理プログラム
２０  転送部
３０  揮発性メモリ
４０  起動指示部
５０  決定部
６１〜６３  プロセッサ
１００  通信装置
１１０  不揮発性メモリ
１１１  初期ブート用プログラム
１１２  ＡＣＰＵ用プログラム
１１３  ＣＣＰＵ用プログラム
１１４〜１１６  ＤＳＰ用プログラム
１２０  ＳＤＲＡＭ
１２１  リセット解除部
１２２  コピー部
１２３  チップセレクタ
１２４  セマフォ部
１２５  無線状態判定部
１２６  割込レジスタ
１３１〜１３４  ＣＰＵ
１４１〜１４３  ＤＳＰ
１５１〜１５３  ＲＡＭ
１６０  アンテナ
１８１  汎用バス
１８２  ローカルバス
９００  通信装置
９１０  不揮発性メモリ
９２０  ＡＣＰＵ用プログラム
９２１〜９２３  ＣＣＰＵ用プログラム
９２４〜９２６  ＤＳＰ用プログラム
９３０、９５１〜９５３  ＳＤＲＡＭ
９４０  ＡＣＰＵ
９６１〜９６３  ＣＣＰＵ
９７１〜９７３  ＲＡＭ
９８１〜９８３  ＤＳＰ
９９０  アンテナ
【図１】
2011113137.tif 000003
【図２】
2011113137.tif 000004
【図３】
2011113137.tif 000005
【図４】
2011113137.tif 000006
【図５】
2011113137.tif 000007
【図６】
2011113137.tif 000008
【図７】
2011113137.tif 000009
【図８】
2011113137.tif 000010