(57)【特許請求の範囲】
【請求項１】
機器を遠隔制御するためのリモートコントローラであって、
第１のコアと第２のコアと不揮発性メモリとを備えるマルチコアプロセッサを備え、
前記第１のコアは、前記機器に関する処理のうち、前記不揮発性メモリが備える第１の記憶領域に第１のデータを記憶する処理を含むとともにリアルタイム性が要求されない第１の処理を実行し、
前記第２のコアは、前記機器に関する処理のうち、前記不揮発性メモリが備える第２の記憶領域に第２のデータを記憶する処理を含むとともにリアルタイム性が要求される第２の処理を実行し、
前記第１のコアと前記第２のコアとのうちの少なくとも一方のコアは、前記第１の処理と前記第２の処理とが正常に実行される場合、前記第１のコアによる前記第２の記憶領域へのアクセスを禁止するとともに前記第２のコアによる前記第１の記憶領域へのアクセスを禁止し、前記第１の処理が正常に実行されない場合、前記第２のコアによる前記第１の記憶領域へのアクセスを許可し、前記第２の処理が正常に実行されない場合、前記第１のコアによる前記第２の記憶領域へのアクセスを許可する、アクセス管理処理を実行する、
リモートコントローラ。
【請求項２】
前記第１のデータと前記第２のデータとのうちの少なくとも一方のデータを出力するデータ出力手段を更に備え、
前記第１のコアは、前記第２の処理が正常に実行されない場合、前記第２の記憶領域から前記第２のデータを読み出して前記データ出力手段から出力させ、
前記第２のコアは、前記第１の処理が正常に実行されない場合、前記第１の記憶領域から前記第１のデータを読み出して前記データ出力手段から出力させる、
請求項１に記載のリモートコントローラ。
【請求項３】
第１のコアと第２のコアと不揮発性メモリとを備えるマルチコアプロセッサを備えるリモートコントローラが実行する遠隔制御方法であって、
前記第１のコアが、前記不揮発性メモリが備える第１の記憶領域に第１のデータを記憶する処理を含むとともにリアルタイム性が要求されない第１の処理を実行し、
前記第２のコアが、前記不揮発性メモリが備える第２の記憶領域に第２のデータを記憶する処理を含むとともにリアルタイム性が要求される第２の処理を実行し、
前記第１のコアと前記第２のコアとのうちの少なくとも一方のコアは、前記第１の処理と前記第２の処理とが正常に実行される場合、前記第１のコアによる前記第２の記憶領域へのアクセスを禁止するとともに前記第２のコアによる前記第１の記憶領域へのアクセスを禁止し、前記第１の処理が正常に実行されない場合、前記第２のコアによる前記第１の記憶領域へのアクセスを許可し、前記第２の処理が正常に実行されない場合、前記第１のコアによる前記第２の記憶領域へのアクセスを許可する、アクセス管理処理を実行する、
遠隔制御方法。
【請求項４】
第１のコアと第２のコアと不揮発性メモリとを備えるマルチコアプロセッサを備えるリモートコントローラに搭載されたコンピュータに、
前記不揮発性メモリが備える第１の記憶領域に第１のデータを記憶する処理を含むとともにリアルタイム性が要求されない第１の処理と、
前記不揮発性メモリが備える第２の記憶領域に第２のデータを記憶する処理を含むとともにリアルタイム性が要求される第２の処理と、を実行させるプログラムであって、
前記第１の処理は、前記第１のコアが実行し、
前記第２の処理は、前記第２のコアが実行し、
前記第１のコアと前記第２のコアとのうちの少なくとも一方のコアは、前記第１の処理と前記第２の処理とが正常に実行される場合、前記第１のコアによる前記第２の記憶領域へのアクセスを禁止するとともに前記第２のコアによる前記第１の記憶領域へのアクセスを禁止し、前記第１の処理が正常に実行されない場合、前記第２のコアによる前記第１の記憶領域へのアクセスを許可し、前記第２の処理が正常に実行されない場合、前記第１のコアによる前記第２の記憶領域へのアクセスを許可する、アクセス管理処理を実行する、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リモートコントローラ、遠隔制御方法、及び、プログラムに関する。
【背景技術】
【０００２】
現在、機器を遠隔操作するリモートコントローラに、リアルタイム性を維持しつつ多くの機能を持たせたいという要望がある。特許文献１には、このような要望に応える技術として、ＲＴＯＳ（Real Time Operating System）を搭載したプラットフォームに、サーバ機能やＪＡＶＡ（登録商標）機能を実装した集中リモコンが開示されている。【０００３】
特許文献１に開示された集中リモコンは、ＲＴＯＳを搭載しているため、リアルタイム性を有する。また、特許文献１に開示された集中リモコンは、サーバ機能やＪＡＶＡ（登録商標）機能が搭載されているため、多機能といえる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３３２９９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、一般的に、ＲＴＯＳ用に用意されている機能はそれ程多くない。そして、ＲＴＯＳ用に用意されていない機能を利用したい場合、利用したい機能を実現するためのソフトウェアを独自に開発する必要があり、コストがかかる。特許文献１に開示された集中リモコンにおいても、サーバ機能やＪＡＶＡ（登録商標）機能を実現するためのソフトウェアの開発コストは大きいと考えられる。このため、リアルタイム性を有し、多機能であり、低コストであるリモートコントローラが望まれている。【０００６】
本発明は、上記問題に鑑みてなされたものであり、リアルタイム性を有し、多機能であり、低コストであるリモートコントローラ、遠隔制御方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明に係るリモートコントローラは、
機器を遠隔制御するためのリモートコントローラであって、
第１のコアと第２のコアと不揮発性メモリとを備えるマルチコアプロセッサを備え、
前記第１のコアは、前記機器に関する処理のうち、前記不揮発性メモリが備える第１の記憶領域に第１のデータを記憶する処理を含むとともにリアルタイム性が要求されない第１の処理を実行し、
前記第２のコアは、前記機器に関する処理のうち、前記不揮発性メモリが備える第２の記憶領域に第２のデータを記憶する処理を含むとともにリアルタイム性が要求される第２の処理を実行し、
前記第１のコアと前記第２のコアとのうちの少なくとも一方のコアは、前記第１の処理と前記第２の処理とが正常に実行される場合、前記第１のコアによる前記第２の記憶領域へのアクセスを禁止するとともに前記第２のコアによる前記第１の記憶領域へのアクセスを禁止し、前記第１の処理が正常に実行されない場合、前記第２のコアによる前記第１の記憶領域へのアクセスを許可し、前記第２の処理が正常に実行されない場合、前記第１のコアによる前記第２の記憶領域へのアクセスを許可する、アクセス管理処理を実行する。
【発明の効果】
【０００８】
本発明では、第１のコアによりリアルタイム性を要しない第１の処理が実行され、第２のコアによりリアルタイム性を要する第２の処理が実行される。従って、本発明によれば、リアルタイム性を有し、多機能であり、低コストであるリモートコントローラを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係るリモートコントローラの構成図
【図２】不揮発性メモリに記憶されるデータを示す図
【図３】本発明の実施形態に係るリモートコントローラが実行する起動処理を示すフローチャート
【図４】図３に示す異常判定処理を示すフローチャート
【図５】図４に示すデータ入出力処理を示すフローチャート
【発明を実施するための形態】
【００１０】
（実施形態）
まず、図１を参照して、本発明の実施形態に係るリモートコントローラ１００の構成について説明する。リモートコントローラ１００は、機器から離れたところから機器を操作するための装置である。本実施形態では、リモートコントローラ１００は、機器の状態を制御する機能に加え、機器の状態を監視する機能も有するものとする。
【００１１】
リモートコントローラ１００は、リアルタイム性を要しない処理と、リアルタイム性を要する処理とを実行する。リアルタイム性を要しない処理は、即応性が求められない処理であり、低レイテンシが保証されなくてもよい処理であり、処理遅延が許容される処理である。リアルタイム性を要する処理は、即応性が求められる処理であり、低レイテンシが保証されるべき処理であり、処理遅延が許容されない処理である。以下、適宜、リアルタイム性を要しない処理を第１の処理と呼び、リアルタイム性を要する処理を第２の処理と呼ぶ。後述するように、リモートコントローラ１００は、第１の処理の実行に適した第１のコア２１０と第２の処理の実行に適した第２のコア２２０とを備えるマルチコアプロセッサ２００を備え、第１のコア２１０に第１の処理を実行させ、第２のコア２２０に第２の処理を実行させる。
【００１２】
また、後述するように、基本的には、第１のコア２１０は、第２の処理に関わるデータ（以下、適宜「第２のデータ」という。）が記憶される第２の記憶領域２６０にはアクセスできず、第２のコア２２０は、第１の処理に関わるデータ（以下、適宜「第１のデータ」という。）が記憶される第１の記憶領域２５０にはアクセスできない。かかる構成では、何らかの原因により第１のコア２１０が正常に動作しなくなると、第１の記憶領域２５０に記憶された第１のデータを読み出すことがなくなる。同様に、何らかの原因により第２のコア２２０が正常に動作しなくなると、第２の記憶領域２６０に記憶された第２のデータを読み出すことがなくなる。そこで、本実施形態では、リモートコントローラ１００は、第１のコア２１０が正常に動作しないことを検知した場合、第２のコア２２０による第１の記憶領域２５０へのアクセスを許容し、第２のコア２２０が正常に動作しないことを検知した場合、第１のコア２１０による第２の記憶領域２６０へのアクセスを許容する。
【００１３】
第１のコア２１０が正常に動作しない原因、つまり、第１の処理が正常に実行されない原因は、例えば、第１のコア２１０のハードウェア的な故障、第１のオペレーティングシステム２５１の異常（例えば、バグ）、第１のアプリケーションプログラム２５２の異常（例えば、バグ）である。第２のコア２２０が正常に動作しない原因は、つまり、第２の処理が正常に実行されない原因は、例えば、第２のコア２２０のハードウェア的な故障、第２のオペレーティングシステム２６１の異常（例えば、バグ）、第２のアプリケーションプログラム２６２の異常（例えば、バグ）である。
【００１４】
本実施形態では、リモートコントローラ１００により制御又は監視される機器は、空気調和機４００と電力量計５００との２つの機器であるものとする。ただし、リモートコントローラ１００により制御又は監視される機器は、他の機器であってもよく、３つ以上の機器であってもよいことは勿論である。リモートコントローラ１００は、多数の機器を一括して遠隔制御する集中リモコンであってもよい。
【００１５】
空気調和機４００は、室外機４１０と室内機４２０とを備え、室内機４２０が設置された空間の空気を調整する機器である。空気を調整するとは、例えば、温度を調整したり、湿度を調整したり、送風したり、不純物を除去したりすることである。空気調和機４００は、リモートコントローラ１００により制御及び監視される。つまり、室外機４１０の状態及び室内機４２０の状態は、リモートコントローラ１００により制御及び監視される。従って、室外機４１０と室内機４２０とは、リモートコントローラ１００と通信する機能を有する。以下、適宜、室外機４１０や室内機４２０のことを空気調和機４００と呼ぶ。本実施形態では、空気調和機４００が１つの室内機４２０を備えるものとするが、空気調和機４００が２つ以上の室内機４２０を備えていてもよい。また、空気調和機４００は、換気扇（図示せず）、搬送ファン（図示せず）、照明機器（図示せず）などを備えていてもよい。
【００１６】
電力量計５００は、空気調和機４００により消費された電力量を計測する。電力量計５００は、例えば、空気調和機４００に供給される電流の大きさや位相を計測するカレントトランスを備える。電力量計５００は、計測された電力量に応じた電力パルスを発信する機能を有する。例えば、電力量計５００は、１ｋＷｈ毎、１０ｋＷｈ毎、或いは、１００ｋＷ毎に、１パルス発信する。電力量計５００は、例えば、無線通信により、電力パルスを発信する。電力量計５００から発信された電力パルスは、リモートコントローラ１００により受信される。
【００１７】
記憶装置６００は、データを記憶する装置である。記憶装置６００には、リモートコントローラ１００に異常が発生したときにリモートコントローラ１００から読み出されたデータが記憶される。また、記憶装置６００には、リモートコントローラ１００に書き込まれるデータが予め記憶される。記憶装置６００は、例えば、ＵＳＢ（Universal Serial Bus）フラッシュドライブ、ＳＤ（Secure Digital）メモリーカード、ハードディスクドライブである。
【００１８】
図１に示すように、リモートコントローラ１００は、マルチコアプロセッサ２００と、表示部３１０と、操作受付部３２０と、通信部３３０と、電力パルス受信部３４０と、データ入出力部３５０とを備える。
【００１９】
マルチコアプロセッサ２００は、複数のコアプロセッサを１つのパッケージに集積したマイクロプロセッサであり、第１のコア２１０と、第２のコア２２０と、不揮発性メモリ２３０とを備える。第１のコア２１０と第２のコア２２０と不揮発性メモリ２３０とは、バス２７０を介して相互に接続される。本実施形態では、マルチコアプロセッサ２００は、非対称型であり、オペレーティングシステムが実装されているものとする。ただし、マルチコアプロセッサ２００は、対称型であってもよく、オペレーティングシステムが実装されていなくてもよい。また、マルチコアプロセッサ２００は、３つ以上のプロセッサコアを備えていてもよい。
【００２０】
第１のコア２１０は、演算処理を実行するための論理回路（図示せず）やキャッシュメモリ（図示せず）を備えるプロセッサコアである。第１のコア２１０は、空気調和機４００と電力量計５００とに関する処理のうち、第１の処理（リアルタイム性を要しない処理）を実行する。第１のコア２１０には、第１の処理に適したオペレーティングシステムである第１のオペレーティングシステム２５１が実装される。第１の処理は、第１のオペレーティングシステム２５１上で第１のアプリケーションプログラム２５２が実行されることにより実現される。第１の処理は、並列処理やバッチ処理が要求される処理であり、例えば、表示部３１０に対する表示制御処理、操作受付部３２０を用いた操作入力検出処理、通信部３３０を介した空気調和機４００の制御処理である。
【００２１】
第２のコア２２０は、演算処理を実行するための論理回路（図示せず）やキャッシュメモリ（図示せず）を備えるプロセッサコアである。第２のコア２２０は、空気調和機４００と電力量計５００とに関する処理のうち、第２の処理（リアルタイム性を要する処理）を実行する。第２のコア２２０には、第２の処理に適したオペレーティングシステムである第２のオペレーティングシステム２６１が実装される。第２の処理は、第２のオペレーティングシステム２６１上で第２のアプリケーションプログラム２６２が実行されることにより実現される。第２の処理は、例えば、リモートコントローラ１００と空気調和機４００との通信に関わるログデータである通信ログデータ２６３の取得処理や、電力量計５００から受信した電力パルスに関わるログデータである電力パルスログデータ２６４の取得処理である。なお、第１のコア２１０と第２のコア２２０とは、例えば、割り込み信号の送受信により、制御信号や少量のデータの送受信が可能である。
【００２２】
不揮発性メモリ２３０は、電源が供給されなくてもデータを保持することが可能なメモリである。不揮発性メモリ２３０は、例えば、フラッシュメモリである。不揮発性メモリ２３０は、管理領域２４０と、第１の記憶領域２５０と、第２の記憶領域２６０とを備える。管理領域２４０は、第１のコア２１０や第２のコア２２０の動作の管理に関わるプログラムやデータが記憶される記憶領域である。第１の記憶領域２５０は、第１のコア２１０に関わるプログラムやデータが記憶される記憶領域である。第２の記憶領域２６０は、第２のコア２２０に関わるプログラムやデータが記憶される記憶領域である。本実施形態では、管理領域２４０と第１の記憶領域２５０と第２の記憶領域２６０とは、それぞれ、予め定められたアドレス範囲に設定されているものとする。以下、図２を参照して、不揮発性メモリ２３０に記憶されるデータについて説明する。
【００２３】
管理領域２４０には、起動プログラム２４１と、アクセス管理プログラム２４２と、エラー通知プログラム２４３と、データ入出力プログラム２４４と、第１のエラーフラグ２４５と、第２のエラーフラグ２４６とが記憶される。
【００２４】
起動プログラム２４１は、マルチコアプロセッサ２００の電源投入後、最初に呼び出されて実行されるプログラムである。起動プログラム２４１は、第１のオペレーティングシステム２５１や第２のオペレーティングシステム２６１を呼び出すためのプログラムである。起動プログラム２４１は、第１のコア２１０又は第２のコア２２０により実行される。起動プログラム２４１は、例えば、ブートローダに対応する。
【００２５】
アクセス管理プログラム２４２は、第１のコア２１０がアクセス可能な記憶領域と第２のコア２２０がアクセス可能な記憶領域とを管理するためのプログラムである。アクセス管理プログラム２４２は、第１のコア２１０と第２のコア２２０とが正常に動作する場合、第１のコア２１０による第２の記憶領域２６０へのアクセスを禁止し、第２のコア２２０による第１の記憶領域２５０へのアクセスを禁止する。また、アクセス管理プログラム２４２は、第１のコア２１０が正常に動作しない場合、第２のコア２２０による第１の記憶領域２５０へのアクセスを許容する。そして、アクセス管理プログラム２４２は、第２のコア２２０が正常に動作しない場合、第１のコア２１０による第２の記憶領域２６０へのアクセスを許容する。アクセス管理プログラム２４２は、第１のコア２１０又は第２のコア２２０により実行される。アクセス管理プログラム２４２は、例えば、デバイスドライバに対応する。
【００２６】
エラー通知プログラム２４３は、第１のコア２１０と第２のコア２２０とが正常に動作しない場合に、エラーを通知するためのプログラムである。データ入出力プログラム２４４は、第１のコア２１０と第２のコア２２０とのうちの一方のコアが正常に動作しない場合に、他方のコアが上記一方のコアに関わるデータを読み出したり書き込んだりするためのプログラムである。エラー通知プログラム２４３とデータ入出力プログラム２４４とは、第１のコア２１０又は第２のコア２２０により実行される。
【００２７】
第１のエラーフラグ２４５は、第１のコア２１０が正常に動作しない場合に、セットされるフラグである。第１のコア２１０が正常に動作しない場合とは、第１のコア２１０がハードウェア的に動作しない場合、第１のコア２１０が第１のオペレーティングシステム２５１を正しく起動できない場合、第１のオペレーティングシステム２５１から第１のアプリケーションプログラム２５２が正しく呼び出されない場合である。第２のエラーフラグ２４６は、第２のコア２２０が正常に動作しない場合に、セットされるフラグである。第２のコア２２０が正常に動作しない場合とは、第２のコア２２０がハードウェア的に動作しない場合、第２のコア２２０が第２のオペレーティングシステム２６１を正しく起動できない場合、第２のオペレーティングシステム２６１から第２のアプリケーションプログラム２６２が正しく呼び出されない場合である。第１のエラーフラグ２４５や第２のエラーフラグ２４６は、第１のコア２１０又は第２のコア２２０が起動プログラム２４１を実行することによりセットされる。
【００２８】
第１の記憶領域２５０には、第１のオペレーティングシステム２５１と、第１のアプリケーションプログラム２５２と、空調管理データ２５３と、電力料金データ２５４とが記憶される。第１のオペレーティングシステム２５１は、第１のコア２１０が起動する、第１の処理の実行に適した基本ソフトウェアである。第１のアプリケーションプログラム２５２は、第１のオペレーティングシステム２５１から呼び出される、第１の処理を実行するためのアプリケーションソフトウェアである。図１及び図２では、理解を容易にするため、第１のアプリケーションプログラム２５２を１つだけ明示しているが、第１のアプリケーションプログラム２５２の個数は、第１の処理の個数分だけ用意される。
【００２９】
空調管理データ２５３は、空気調和機４００の管理に関するデータであり、空気調和機４００の運転状態の履歴を示すデータである。電力料金データ２５４は、空気調和機４００の稼働により消費された電力量から算出された電気料金を示すデータである。空調管理データ２５３と電力料金データ２５４とは、第１のコア２１０が第１のアプリケーションプログラム２５２を実行することにより、第１の記憶領域２５０の予め定められた記憶領域に記憶される。
【００３０】
第２の記憶領域２６０には、第２のオペレーティングシステム２６１と、第２のアプリケーションプログラム２６２と、通信ログデータ２６３と、電力パルスログデータ２６４とが記憶される。第２のオペレーティングシステム２６１は、第２のコア２２０が起動する、第２の処理の実行に適した基本ソフトウェアである。第２のアプリケーションプログラム２６２は、第２のオペレーティングシステム２６１から呼び出される、第２の処理を実行するためのアプリケーションソフトウェアである。図１及び図２では、理解を容易にするため、第２のアプリケーションプログラム２６２を１つだけ明示しているが、第２のアプリケーションプログラム２６２の個数は、第２の処理の個数分だけ用意される。
【００３１】
通信ログデータ２６３は、リモートコントローラ１００と空気調和機４００との間で送受信された通信内容の履歴を示すログデータである。通信ログデータ２６３は、例えば、通信内容と通信時刻とを含むレコードを備える。電力パルスログデータ２６４は、電力量計５００から受信された電力パルスの履歴を示すログデータである。電力パルスログデータ２６４は、例えば、電力パルスの受信時刻を含むレコードを備える。通信ログデータ２６３と電力パルスログデータ２６４とは、第２のコア２２０が第２のアプリケーションプログラム２６２を実行することにより、第２の記憶領域２６０の予め定められた記憶領域に記憶される。
【００３２】
表示部３１０は、第１のコア２１０又は第２のコア２２０による制御に従って、各種の情報を含む画面を表示する。表示部３１０により表示される情報は、例えば、空気調和機４００の運転状況を示す情報、空気調和機４００の設定状況を示す情報、第１のコア２１０と第２のコア２２０とが正常に動作しない旨を報知する情報、第１のデータや第２のデータの読み込みや書き込みを促す情報である。表示部３１０は、例えば、液晶ディスプレイ、７セグメントＬＥＤ（Liquid Emitting Diode）を備える。
【００３３】
操作受付部３２０は、ユーザによる操作を受け付けるインターフェースである。操作受付部３２０は、例えば、空気調和機４００の状態の制御を指示する操作、空気調和機４００の状態の表示を指示する操作、第１のデータや第２のデータの読み込みや書き込みを指示する操作である。操作受付部３２０は、例えば、押しボタン、キーボードなどを備える。なお、表示部３１０と操作受付部３２０とが統合されたタッチスクリーンが採用されてもよい。
【００３４】
通信部３３０は、リモートコントローラ１００を空気調和機４００と通信できるようにするための通信インターフェースである。通信部３３０により送受信される情報は、例えば、空気調和機４００の状態の制御を指示する情報、空気調和機４００の状態を示す情報である。通信部３３０は、例えば、無線通信により空気調和機４００と通信する赤外線通信インターフェースであり、通信処理を実行する専用ＩＣ（Integrated Circuit）を備える。
【００３５】
電力パルス受信部３４０は、電力量計５００から発信された電力パルスを受信する。電力パルス受信部３４０は、電力パルスを受信した場合、例えば、割り込み信号により第１のコア２１０や第２のコア２２０に電力パルスを受信した旨を通知する。電力パルス受信部３４０は、例えば、無線信号を受信するインターフェースである。
【００３６】
データ入出力部３５０は、第１のコア２１０又は第２のコア２２０が正常に動作しない場合に、不揮発性メモリ２３０から読み出した第１のデータ又は第２のデータを記憶装置６００に送信したり、記憶装置６００から受信した第１のデータ又は第２のデータを不揮発性メモリ２３０に書き込んだりするインターフェースである。データ入出力部３５０は、例えば、ＵＳＢポート、ＳＤカード用スロットである。
【００３７】
次に、図３を参照して、リモートコントローラ１００が実行する起動処理について説明する。起動処理は、リモートコントローラ１００の電源が投入されたときに、第１のコア２１０又は第２のコア２２０が実行する処理である。起動処理は、基本的に、マスターコアが、起動プログラム２４１を実行することにより実現される。マスターコアは、第１のコア２１０と第２のコア２２０とのうち、最初に起動したコアである。マスターコアでないコアは、スレーブコアとなる。例えば、第１のコア２１０と第２のコア２２０とは、起動時に、他のコアに起動した旨を知らせる割り込み信号を送信することにより、いずれのコアが先に起動したのかを特定することができる。本実施形態では、第１のコア２１０がマスターコアであり、第２のコア２２０がスレーブコアであるものとする。
【００３８】
まず、第１のコア２１０は、第１のオペレーティングシステム２５１を起動する（ステップＳ１０１）。例えば、第１のコア２１０は、起動プログラム２４１を実行するスレッドとは別のスレッドで、第１のオペレーティングシステム２５１の起動を開始する。
【００３９】
第１のコア２１０は、ステップＳ１０１の処理が完了すると、第１のアプリケーションを起動する（ステップＳ１０２）。本実施形態では、第１のオペレーティングシステム２５１の起動が完了すると、自動的に、第１のアプリケーションの起動が開始されるものとする。なお、第１のコア２１０により第１のアプリケーションプログラム２５２の実行が開始されると、第１のアプリケーションの起動が開始される。
【００４０】
第１のコア２１０は、ステップＳ１０２の処理が完了すると、第１のアプリケーションの起動が成功したか否かを判別する（ステップＳ１０３）。第１のアプリケーションの起動が成功することは、第１のアプリケーションの起動が完了し、第１のアプリケーションが実行可能な状態になることを意味する。例えば、第１のコア２１０にハードウェア的に異常がなく、第１のオペレーティングシステム２５１に異常がなく、且つ、第１のアプリケーションプログラム２５２に異常がない場合、第１のアプリケーションの起動が成功する。一方、第１のコア２１０にハードウェア的に異常があり、第１のオペレーティングシステム２５１に異常があり、又は、第１のアプリケーションプログラム２５２に異常がある場合、第１のアプリケーションの起動が失敗する。
【００４１】
第１のアプリケーションの起動が成功したか否かを判別する手法は、適宜、調整することができる。例えば、第１のアプリケーションの起動が完了した場合に、第１のアプリケーションの起動が完了したことを通知する割り込み信号が発生するように設計されているものとする。この場合、第１のコア２１０は、予め定められた設定期間内にこの割り込み信号が発生したか否かを判別することにより、第１のアプリケーションの起動が成功したか否かを判別することができる。つまり、第１のコア２１０は、この設定期間内にこの割り込みが発生したことを検知した場合、第１のアプリケーションの起動が成功したと判別し、この設定期間内にこの割り込みが発生したことを検知しなかった場合（タイムアウトした場合）、第１のアプリケーションの起動が失敗したと判別する。なお、この設定期間は、例えば、第１のオペレーティングシステム２５１の起動を開始してから、第１のオペレーティングシステム２５１の起動に要すると推定される時間と第１のアプリケーションの起動に要すると推定される時間との和よりも十分に長い時間が経過するまでの期間である。
【００４２】
或いは、例えば、第１のアプリケーションの起動時に、予め定められたデバイスファイルがマウントされるものとする。この場合、第１のコア２１０は、このデバイスファイルがマウントされているか否かを判別することにより、第１のアプリケーションの起動が成功したか否かを判別することができる。例えば、第１のコア２１０は、上記設定期間の経過後にこのデバイスファイルがマウントされていることを検知した場合、第１のアプリケーションの起動が成功したと判別し、上記設定期間の経過後にこのデバイスファイルがマウントされていないことを検知した場合、第１のアプリケーションの起動が失敗したと判別する。
【００４３】
第１のコア２１０は、第１のアプリケーションの起動が成功しなかったと判別した場合（ステップＳ１０３：ＮＯ）、第１のエラーフラグ２４５をセットする（ステップＳ１０４）。なお、第１のエラーフラグ２４５は、起動処理の開始時には、セットされていないものとする。第１のコア２１０は、第１のアプリケーションの起動が成功したと判別した場合（ステップＳ１０３：ＹＥＳ）、又は、ステップＳ１０４の処理を完了した場合、第２のオペレーティングシステム２６１を起動する（ステップＳ１０５）。例えば、第１のコア２１０は、第２のコア２２０に、第２のオペレーティングシステム２６１の起動を開始させる。
【００４４】
第１のコア２１０は、ステップＳ１０５の処理が完了すると、第２のアプリケーションを起動する（ステップＳ１０６）。本実施形態では、第２のオペレーティングシステム２６１の起動が完了すると、自動的に、第２のアプリケーションの起動が開始されるものとする。なお、第２のコア２２０により第２のアプリケーションプログラム２６２の実行が開始されると、第２のアプリケーションの起動が開始される。
【００４５】
第１のコア２１０は、ステップＳ１０６の処理が完了すると、第２のアプリケーションの起動が成功したか否かを判別する（ステップＳ１０７）。第２のアプリケーションの起動が成功することは、第２のアプリケーションの起動が完了し、第２のアプリケーションが実行可能な状態になることを意味する。例えば、第２のコア２２０にハードウェア的に異常がなく、第２のオペレーティングシステム２６１に異常がなく、且つ、第２のアプリケーションプログラム２６２に異常がない場合、第２のアプリケーションの起動が成功する。一方、第２のコア２２０にハードウェア的に異常があり、第２のオペレーティングシステム２６１に異常があり、又は、第２のアプリケーションプログラム２６２に異常がある場合、第２のアプリケーションの起動が失敗する。
【００４６】
第２のアプリケーションの起動が成功したか否かを判別する手法は、第１のアプリケーションの起動が成功したか否かを判別する手法と同様である。つまり、第１のコア２１０は、予め定められた設定期間内に、第２のアプリケーションの起動が完了したことを通知する割り込み信号が発生したか否かを判別することにより、第２のアプリケーションの起動が成功したか否かを判別することができる。或いは、第１のコア２１０は、上記設定期間の経過後に、第２のアプリケーションの起動時にマウントされるデバイスファイルがマウントされているか否かを判別することにより、第２のアプリケーションの起動が成功したか否かを判別することができる。
【００４７】
第１のコア２１０は、第２のアプリケーションの起動が成功しなかったと判別した場合（ステップＳ１０７：ＮＯ）、第２のエラーフラグ２４６をセットする（ステップＳ１０８）。なお、第２のエラーフラグ２４６は、起動処理の開始時には、セットされていないものとする。第１のコア２１０は、第２のアプリケーションの起動が成功したと判別した場合（ステップＳ１０７：ＹＥＳ）、又は、ステップＳ１０８の処理を完了した場合、異常判定処理を実行する（ステップＳ１０９）。異常判定処理については、図４を参照して、詳細に説明する。
【００４８】
まず、第１のコア２１０は、全エラーフラグがセットされているか否かを判別する（ステップＳ２０１）。つまり、第１のコア２１０は、第１のエラーフラグ２４５と第２のエラーフラグ２４６とのいずれもがセットされているか否かを判別する。第１のコア２１０は、全エラーフラグがセットされていると判別すると（ステップＳ２０１：ＹＥＳ）、エラー通知処理を実行する（ステップＳ２０２）。
【００４９】
エラー通知処理では、第１のコア２１０は、第１のアプリケーションと第２のアプリケーションとのいずれもが正常に起動できないことを報知するメッセージや画像を表示部３１０に表示させる。エラー通知処理は、第１のコア２１０（又は、第２のコア２２０）がエラー通知プログラム２４３を実行することにより実行される。第１のコア２１０は、ステップＳ２０２の処理を完了すると、異常判定処理及び起動処理を終了する。
【００５０】
一方、第１のコア２１０は、いずれかのエラーフラグがセットされていないと判別すると（ステップＳ２０１：ＮＯ）、第１のエラーフラグ２４５がセットされているか否かを判別する（ステップＳ２０３）。第１のコア２１０は、第１のエラーフラグ２４５がセットされていると判別すると（ステップＳ２０３：ＹＥＳ）、第２のコア２２０から第１の記憶領域２５０へのアクセスを許可する（ステップＳ２０４）。例えば、第１のコア２１０は、アクセス管理プログラム２４２を実行して、第２のコア２２０から第１の記憶領域２５０へのアクセスを許可する。
【００５１】
第１のコア２１０は、ステップＳ２０４の処理を完了すると、データ入出力処理を実行する（ステップＳ２０５）。データ入出力処理は、例えば、第１のコア２１０（又は、第２のコア２２０）が、データ入出力プログラム２４４を実行することにより実現される。データ入出力処理については、図５を参照して、詳細に説明する。
【００５２】
まず、第１のコア２１０は、ユーザ操作要求画面を表示する（ステップＳ３０１）。具体的には、第１のコア２１０は、表示部３１０にユーザ操作を要求する画面であるユーザ操作要求画面を表示させる。ユーザ操作要求画面は、例えば、データの読み出しを指示する操作、データの書き込みを指示する操作、データ入出力の終了を指示する操作のいずれかをユーザに要求する画面である。
【００５３】
第１のコア２１０は、ステップＳ３０１の処理を完了すると、データの読み出し指示があるか否かを判別する（ステップＳ３０２）。例えば、第１のコア２１０は、操作受付部３２０によりデータの読み出し指示が受け付けられたか否かを判別する。第１のコア２１０は、データの読み出し指示があると判別すると（ステップＳ３０２：ＹＥＳ）、第１のデータを読み出す（ステップＳ３０３）。具体的には、第１のコア２１０は、第２のコア２２０に、第１のデータの読み出しを指示する。一方、第２のコア２２０は、第１の記憶領域２５０に記憶された第１のデータを読み出し、データ入出力部３５０に供給する。なお、データ入出力部３５０は、供給された第１のデータを、記憶装置６００に送信し、記憶装置６００に記憶させる。
【００５４】
ここで、例えば、第１の記憶領域２５０と第２の記憶領域２６０とでファイルシステムが同じ場合、第２のコア２２０は、第１のデータを、このファイルシステムに応じたファイル形式で読み出すことができる。一方、例えば、第１の記憶領域２５０と第２の記憶領域２６０とでファイルシステムが異なる場合、第２のコア２２０は、アドレス参照で第１の記憶領域２５０にアクセスすることにより、第１のデータをバイナリデータとして読み出すことができる。なお、読み出される第１のデータは、ユーザにより指定される。また、アドレスの指定によりバイナリデータが読み出されてもよい。ファイル形式で読み出された第１のデータは、ファイル形式で記憶装置６００に記憶される。一方、バイナリ形式で読み出された第１のデータは、バイナリ形式で、不揮発性メモリ２３０上のアドレス情報とともに記憶装置６００に記憶される。
【００５５】
第１のコア２１０は、データの読み出し指示がないと判別した場合（ステップＳ３０２：ＮＯ）、又は、ステップＳ３０３の処理を完了した場合、データの書き込み指示があるか否かを判別する（ステップＳ３０４）。例えば、第１のコア２１０は、操作受付部３２０によりデータの書き込み指示が受け付けられたか否かを判別する。第１のコア２１０は、データの書き込み指示があると判別すると（ステップＳ３０４：ＹＥＳ）、第１のデータを書き込む（ステップＳ３０５）。具体的には、第１のコア２１０は、第２のコア２２０に、第１のデータの書き込みを指示する。一方、第２のコア２２０は、データ入出力部３５０が記憶装置６００から受信したデータを、第１のデータとして第１の記憶領域２５０に記憶させる。
【００５６】
ここで、例えば、第１の記憶領域２５０と第２の記憶領域２６０とでファイルシステムが同じ場合、第２のコア２２０は、第１のデータを、このファイルシステムに応じたファイル形式で書き込むことができる。一方、例えば、第１の記憶領域２５０と第２の記憶領域２６０とでファイルシステムが異なる場合、第２のコア２２０は、アドレス参照で第１の記憶領域２５０にアクセスすることにより、第１のデータをバイナリデータとして書き込むことができる。なお、書き込まれる第１のデータは、ユーザにより指定される。また、アドレスの指定によりバイナリデータが書き込まれてもよい。
【００５７】
第１のコア２１０は、データの書き込み指示がないと判別した場合（ステップＳ３０４：ＮＯ）、又は、ステップＳ３０５の処理を完了した場合、データの入出力の終了指示があるか否かを判別する（ステップＳ３０６）。第１のコア２１０は、データの入出力の終了指示がないと判別すると（ステップＳ３０６：ＮＯ）、ステップＳ３０２に処理を戻す。一方、第１のコア２１０は、データの入出力の終了指示があると判別すると（ステップＳ３０６：ＹＥＳ）、データ入出力処理を完了する。第１のコア２１０は、ステップＳ２０５の処理を完了すると、異常判定処理及び起動処理を終了する。
【００５８】
第１のコア２１０は、第１のエラーフラグ２４５がセットされていないと判別すると（ステップＳ２０３：ＮＯ）、第２のエラーフラグ２４６がセットされているか否かを判別する（ステップＳ２０６）。第１のコア２１０は、第２のエラーフラグ２４６がセットされていると判別すると（ステップＳ２０６：ＹＥＳ）、第１のコア２１０から第２の記憶領域２６０へのアクセスを許可する（ステップＳ２０７）。例えば、第１のコア２１０は、アクセス管理プログラム２４２を実行して、第１のコア２１０から第２の記憶領域２６０へのアクセスを許可する。
【００５９】
第１のコア２１０は、ステップＳ２０７の処理を完了すると、データ入出力処理を実行する（ステップＳ２０８）。ステップＳ２０８において実行されるデータ入出力処理は、読み出される又は書き込まれるデータが第１のデータではなく第２のデータである点と、データの読み出し又は書き込みの主体が第２のコア２２０ではなく第１のコア２１０である点を除き、ステップＳ２０５において実行されるデータ入出力処理と同様である。第１のコア２１０は、ステップＳ２０８の処理を完了すると、異常判定処理及び起動処理を終了する。
【００６０】
第１のコア２１０は、第２のエラーフラグ２４６がセットされていないと判別すると（ステップＳ２０６：ＮＯ）、異常判定処理を完了する。第１のコア２１０は、ステップＳ１０９の処理を完了すると、通常処理を実行する（ステップＳ１１０）。なお、通常処理は、第１のコア２１０が第１のアプリケーションを実行して第１の処理を実行し、第２のコア２２０が第２のアプリケーションを実行して第２の処理を実行する処理である。第１のコア２１０は、ステップＳ１１０の処理を完了すると、起動処理を完了する。
【００６１】
本実施形態では、第１のコア２１０によりリアルタイム性を要しない第１の処理が実行され、第２のコア２２０によりリアルタイム性を要する第２の処理が実行される。ここで、第１の処理を実現するためのアプリケーションプログラムの開発に要するコストは、第２の処理を実現するためのアプリケーションプログラムの開発に要するコストよりも低い場合が多い。従って、本実施形態によれば、リアルタイム性を有し、多機能であり、低コストであるリモートコントローラを提供することができる。
【００６２】
また、本実施形態では、第１のコア２１０が正常に動作しない場合、第２のコア２２０による第１のデータのアクセスが可能となり、第２のコア２２０が正常に動作しない場合、第１のコア２１０による第２のデータのアクセスが可能となる。つまり、本実施形態では、一方のコアが正常に動作しない場合、他方のコアが、一方のコアにより保存されたデータを読み出すことができる。このため、本実施形態によれば、電気料金データ（課金データ）、異常発生時における通信ログデータ、異常発生時における空調管理データなど、重要なデータにアクセスできなくなるリスクが低下する。
【００６３】
（変形例）
以上、本発明の実施形態を説明したが、本発明を実施するにあたっては、種々の形態による変形及び応用が可能である。
【００６４】
本発明において、上記実施形態において説明した構成、機能、動作のどの部分を採用するのかは任意である。また、本発明において、上述した構成、機能、動作のほか、更なる構成、機能、動作が採用されてもよい。また、上記実施形態において説明した構成、機能、動作は、自由に組み合わせることができる。
【００６５】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【産業上の利用可能性】
【００６６】
本発明は、機器を遠隔制御するためのリモートコントローラに適用可能である。
【符号の説明】
【００６７】
１００  リモートコントローラ、２００  マルチコアプロセッサ、２１０  第１のコア、２２０  第２のコア、２３０  不揮発性メモリ、２４０  管理領域、２４１  起動プログラム、２４２  アクセス管理プログラム、２４３  エラー通知プログラム、２４４  データ入出力プログラム、２４５  第１のエラーフラグ、２４６  第２のエラーフラグ、２５０  第１の記憶領域、２５１  第１のオペレーティングシステム、２５２  第１のアプリケーションプログラム、２５３  空調管理データ、２５４  電力料金データ、２６０  第２の記憶領域、２６１  第２のオペレーティングシステム、２６２  第２のアプリケーションプログラム、２６３  通信ログデータ、２６４  電力パルスログデータ、２７０  バス、３１０  表示部、３２０  操作受付部、３３０  通信部、３４０  電力パルス受信部、３５０  データ入出力部、４００  空気調和機、４１０  室外機、４２０  室内機、５００  電力量計、６００  記憶装置
【図１】
0006701440.tif 000002
【図２】
0006701440.tif 000003
【図３】
0006701440.tif 000004
【図４】
0006701440.tif 000005
【図５】
0006701440.tif 000006