(57)【特許請求の範囲】
【請求項１】
モジュールが使用する作業領域を監視する監視部と；
前記監視部による監視結果に基づいて、前記モジュールが使用する作業領域を削減する制御部と；
前記制御部により確保された作業領域を用いて、プログラムを更新する更新部と；
を具備し、
前記制御部は、
前記モジュールにおける並列処理の数、または、前記モジュールにおける処理の実行頻度を減らすことで、当該モジュールが使用する作業領域を削減する、
制御装置。
【請求項２】
前記制御部は、前記モジュールの動作を停止させ、停止させたモジュールに割り当てられた作業領域を解放することで、当該モジュールが使用する作業領域を削減する請求項１に記載の制御装置。
【請求項３】
前記制御部は、前記作業領域に展開されたモジュール、または、当該モジュールが使用するデータを当該作業領域から削除することで、当該モジュールが使用する作業領域を削減する請求項１または２に記載の制御装置。
【請求項４】
前記制御部は、前記モジュールが有する機能のうち、取得したデータを前記作業領域に格納する機能を無効化することで、または、当該作業領域に格納されたデータを削除することで、当該モジュールが使用する作業領域を削減する請求項１〜３のうちいずれか１つに記載の制御装置。
【請求項５】
他装置からアクセスされた際に前記作業領域を用いて動作するモジュールが存在する場合は、前記他装置に対し、前記プログラムの更新時にアクセスしないよう指示する指示部；
を具備する請求項１〜４のうちいずれか１つに記載の制御装置。
【請求項６】
前記プログラムは、ファームウェアである、
請求項１〜５のうちいずれか１つに記載の制御装置。
【請求項７】
制御装置が実行する制御方法であって、
モジュールが使用する作業領域を監視する監視工程と；
前記監視工程による監視結果に基づいて、前記モジュールが使用する作業領域を削減する制御工程と；
前記制御工程により確保された作業領域を用いて、プログラムを更新する更新工程と；
を含み、
前記制御工程は、
前記モジュールにおける並列処理の数、または、前記モジュールにおける処理の実行頻度を減らすことで、当該モジュールが使用する作業領域を削減する、
制御方法。
【請求項８】
コンピュータに、
モジュールが使用する作業領域を監視する監視手順と；
前記監視手順による監視結果に基づいて、前記モジュールが使用する作業領域を削減する制御手順と；
前記制御手順により確保された作業領域を用いて、プログラムを更新する更新手順と；
を実行させる制御プログラムであって、
前記制御手順は、
前記モジュールにおける並列処理の数、または、前記モジュールにおける処理の実行頻度を減らすことで、当該モジュールが使用する作業領域を削減する、
制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、制御装置、制御方法および制御プログラムに関する。
【背景技術】
【０００２】
近年、ＨＥＭＳ（Home  Energy  Management  System）といったエネルギー管理システムや、IoT（Internet  Of  Things）といった仕組みの実現において、電化製品を制御する技術が使われている。このような制御技術では、制御対象となる電化製品や、電化製品を制御するコントローラ等に組込み機器と呼ばれる制御装置が設置される。このような制御装置は、ファームウェアと呼ばれる更新可能なプログラムを実行することで、電化製品やコントローラの制御を実現する。
【０００３】
ここで、ファームウェアの更新を行う場合は、メモリ等の作業領域に所定の空き容量が必要となる。しかしながら、組込み機器等の制御装置は、価格とのかね合いから利用可能な作業領域が制限されるため、電化製品やコントローラ等を制御しながらファームウェアの更新を行うのが困難である。
【０００４】
このため、ファームウェアを分割し、分割された各ファームウェアを個別に更新することで、作業領域の空き容量が小さい場合にも、ファームウェアの更新を可能とする手法が考えらえる。しかしながら、このようなファームウェアの更新を実現するためには、分割更新を実現するための機能をあらかじめ制御装置に組み込まなければならない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２３７８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、作業領域の空き容量が少ない場合にもファームウェア更新を可能とする制御装置、制御方法および制御プログラムを提供することである。
【課題を解決するための手段】
【０００７】
実施形態の一例に係る制御装置は、監視部と、制御部と、更新部とを有する。監視部は、モジュールが使用する作業領域を監視する。また、制御部は、監視部による監視結果に基づいて、モジュールが使用する作業領域を削減する。また、更新部は、制御部により確保された作業領域を用いて、プログラムを更新する。また、制御部は、前記モジュールにおける並列処理の数、または、前記モジュールにおける処理の実行頻度を減らすことで、当該モジュールが使用する作業領域を削減する。
【発明の効果】
【０００８】
実施形態の一例に係る制御装置、制御方法および制御プログラムによれば、作業領域の空き容量が少ない場合にもファームウェア更新を可能とすることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態に係る制御装置が実行する処理の一例を示す図である。
【図２】図２は、第１の実施形態に係る制御装置の機能構成の一例を説明するための図である。
【図３】図３は、第１の実施形態に係る制御テーブルに格納される情報の一例を示す図である。
【図４】図４は、第１の実施形態に係る制御装置がファームウェアを更新する処理の一例を説明する図である。
【図５】図５は、第１の実施形態に係る制御装置が実行する処理の流れの一例を説明するフローチャートである。
【図６】図６は、第２の実施形態に係る制御テーブルに格納された情報の一例を示す図である。
【図７】図７は、モジュールの処理内容と占有作業領域との関係の一例を示す図である。
【図８】図８は、第４の実施形態に係る制御装置が表示装置に表示させる情報の一例を示す図である。
【図９】図９は、第４の実施形態に係る制御テーブルに格納される情報の一例を示す図である。
【図１０】図１０は、第５の実施形態に係る制御装置が有する機能構成の一例を示す図である。
【図１１】図１１は、第５の実施形態に係る制御装置が表示装置に表示させる情報の一例を説明する図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、実施形態に係る制御装置、制御方法および制御プログラムを説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する制御装置、制御方法および制御プログラムは、一例を示すに過ぎず、実施形態を限定するものではない。例えば、以下の実施形態では、コントローラ１０を制御する制御装置２０が実行する処理の一例について説明するが、かかる処理は、コントローラ１０を制御する制御装置２０以外にも、冷蔵庫等の家電装置等の制御を行う制御装置等、任意の装置に適用することができる。なお、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【００１１】
以下の実施形態に係る制御装置２０は、モジュール５１、５２が占有する作業領域を監視する。また、制御装置２０は、監視結果に基づいて、モジュール５１、５２が占有する作業領域を削減する。そして、制御装置２０は、確保された作業領域を用いて、ファームウェア４１を更新する。
【００１２】
また、以下の実施形態に係る制御装置２０は、モジュール５１、５２の動作を停止させ、停止させたモジュール５１、５２に割り当てられた作業領域を解放することで、モジュール５１、５２が占有する作業領域を削減する。
【００１３】
また、以下の実施形態に係る制御装置２０は、作業領域に展開されたモジュール５１、５２、または、モジュール５１、５２が使用するデータを作業領域から削除することで、モジュール５１、５２が占有する作業領域を削減する。
【００１４】
また、以下の実施形態に係る制御装置２０は、モジュール５１、５２における並列処理の数、または、モジュール５１、５２における処理の実行頻度を減らすことで、モジュール５１、５２が占有する作業領域を削減する。
【００１５】
また、以下の実施形態に係る制御装置２０は、モジュール５１、５２が有する機能のうち、取得したデータを作業領域に格納する機能を無効化することで、または、作業領域に格納されたデータを削除することで、モジュール５１、５２が占有する作業領域を削減する。
【００１６】
また、以下の実施形態に係る制御装置２０は、他装置からアクセスされた際に作業領域を用いて動作するモジュール５１、５２が存在する場合は、他装置に対し、ファームウェア４１の更新時にアクセスしないよう指示する。
【００１７】
［第１の実施形態］
（実施形態に係る制御装置の構成）
図１は、第１の実施形態に係る制御装置が実行する処理の一例を示す図である。図１に示す例では、家電制御システム１では、コントローラ１０、スマートメータ１００、および複数の家電装置１０１、１０２が有線ＬＡＮ（Local  Area  Network）や無線ＬＡＮ等を介して通信可能に接続されている。また、家電制御システム１では、インターネット等の外部ネットワークＮを介して、サーバ１１０と通信可能に接続されている。また、家電制御システム１では、コントローラ１０と表示装置７０とが通信可能に接続されている。例えば、コントローラ１０と表示装置７０とは、９２０ＭＨｚ帯の無線やWi-Fi（登録商標）等の無線通信を介して通信可能に接続されている。なお、図１に示す例では、無線通信を介した通信経路を点線で、有線通信を介した通信経路を優先で記載したが、通信形態は、これに限定されるものではない。なお、家電制御システム１に設置される家電装置１０１、１０２の種別や数等は、任意に設定できる。また、以下の説明では、コントローラ１０とスマートメータ１００や家電装置１０１、１０２、および表示装置７０を接続するネットワークを宅内ネットワークと記載する。
【００１８】
スマートメータ１００は、電力使用量を計測する装置であり、例えば、家電装置１０１、１０２を含むある家の電力使用量を計測する。また、家電装置１０１、１０２は、冷蔵庫、空調装置、および洗濯機等、宅内や宅外に設置された各種の家電装置であり、コントローラ１０からの指示に従って、各種設定を遠隔操作可能な装置である。
【００１９】
コントローラ１０は、ＨＥＭＳ（Home  Energy  Management  System）といった家電コントロールシステムの機能を発揮するための制御装置であり、ホームゲートウェイと呼ばれる装置である。例えば、コントローラ１０は、利用者からの操作又はサーバ１１０からの指示に従って、家電装置１０１、１０２の状態を取得する機能や、家電装置１０１、１０２を制御する機能等を有する。また、コントローラ１０は、スマートメータ１００との間で通信を行い、各家電装置１０１、１０２の消費電力量等のスマートメータ１００が収集した情報を取得し、取得した情報を表示する。なお、コントローラ１０は、上述した処理以外にも、家電コントロールシステムに関連する各種の機能を発揮することができるものとする。
【００２０】
このようなコントローラ１０、スマートメータ１００、家電装置１０１、１０２は、相互通信や遠隔制御を実現するため、組込み機器と呼ばれる装置が設置される。組込み機器は、ＰＣ（Personal  Computer）等の汎用的な装置とは異なり、特定の用途を発揮するための機能を有する装置である。このような組込み機器が相互に通信することで、家電コントロールシステムの各種の機能が実現される。
【００２１】
例えば、図１に示す例では、コントローラ１０は、制御装置２０、ゲートウェイ装置８０を有する。制御装置２０は、コントローラ１０が有する組込み機器であり、スマートメータ１００との通信機能や、家電装置１０１、１０２を制御する機能等、コントローラ１０が発揮する各種の機能を、モジュールと呼ばれるプログラムを実行することで実現する。
【００２２】
例えば、制御装置２０は、演算部３０、不揮発性記憶部４０、メモリ５０を有する。演算部３０は、ＣＰＵ、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現される。不揮発性記憶部４０は、電源を供給しなくても記憶を保持するメモリであり、ＰＲＯＭ（Programmable  Read  Only  Memory）、ＥＰＲＯＭ（Erasable  PROM）、ＥＥＰＲＯＭ（Electrically  EPROM）、フラッシュメモリ等により実現される。また、メモリ５０は、実行対象となるモジュールに対し、作業領域として割り当てられる記憶装置であり、ＲＡＭ（Random  Access  Memory）等の揮発性メモリである。
【００２３】
不揮発性記憶部４０には、更新可能なプログラムであるファームウェア４１が格納されている。ファームウェア４１には、スマートメータ１００や家電装置１０１、１０２の制御を実現するモジュールや、通信を実現するモジュール、表示装置７０に各種の情報を表示させるモジュール等、コントローラ１０が各種機能を実現するためのモジュール群が含まれている。より具体的には、ファームウェア４１は、組込み機器が実行することで、ＨＥＭＳといった家電コントロールシステムを実現するためのプログラム群である。
【００２４】
演算部３０は、不揮発性記憶部４０に記憶されたファームウェア４１の中から実行するモジュールをメモリ５０上に展開し、メモリ５０上に展開したモジュール５１、５２を実行することで、各種機能を実現する。なお、演算部３０は、モジュール５１、５２以外にも、メモリ５０の容量が許す限り、任意の数のモジュールを展開および実行することができる。
【００２５】
表示装置７０は、液晶画面等により実現され、各家電装置１０１、１０２の状態や、消費電力量等の表示を行う。なお、表示装置７０は、タッチパネル等により実現される場合には、利用者による操作を受付ける入力装置としても動作する。ゲートウェイ装置８０は、宅内ネットワークと外部ネットワークＮとを接続するゲートウェイとしての機能を有し、外部ネットワークＮを介して受信した各種の制御指示を、制御装置２０に対して伝達する機能を有する。なお、ゲートウェイ装置８０は、コントローラ１０と別体で設けてもよいし一体的に設けてもよい。
【００２６】
このような制御装置２０においては、不揮発性記憶部４０に格納されたファームウェア４１を更新し、再起動を行うことで、制御装置２０が発揮する各種機能を更新することができる。例えば、制御装置２０は、サーバ１１０によって配信される新たなファームウェア４２を受信する、若しくはＣＤ−ＲＯＭ（Compact  Disc  ROM）やＵＳＢ（Universal  Serial  Bus）メモリ等の記録媒体から取得する。そして、制御装置２０は、不揮発性記憶部４０に格納されたファームウェア４１を新たなファームウェア４２で上書する。この結果、制御装置２０は、再起動時に不揮発性記憶部４０に格納された新たなファームウェア４２からモジュールを読み出すことで、更新された各種機能を実現できる。
【００２７】
このようなファームウェア４１の更新を行う場合、新たなファームウェア４２を一時的に保存する領域や、ファームウェア４１をファームウェア４２に上書きするモジュールを実行する作業領域が必要となる。しかしながら、組込み機器では、コストとの兼ね合いから、メモリ５０の容量がＰＣ等と比較して少ない。例えば、メモリ５０には、コントローラ１０の機能を発揮するためのモジュール５１、５２を実行可能な程度しか作業領域が存在しない。このため、制御装置２０は、作業領域の大半をモジュール５１、５２に割り当てた場合は、ファームウェア４１の更新を行うことができない場合がある。
【００２８】
そこで、制御装置２０は、以下の処理を実行する。まず、制御装置２０は、モジュール５１、５２が占有する作業領域を監視する。また、制御装置２０は、監視結果に基づいて、モジュール５１、５２が占有する作業領域を削減し、ファームウェア４１の更新に用いる作業領域を確保する。そして、制御装置２０は、確保した作業領域を用いて、ファームウェア４１を新たなファームウェア４２に更新する。
【００２９】
すなわち、制御装置２０は、ファームウェア４１の更新中においては、一部サービスの停止や、画面表示が遅くなるといったサービスの品質低下を許容することで、ファームウェア４１の更新に必要な作業領域を確保する。ここで、どのようなサービスの停止や品質低下を許容するかについては、事前に設定されてもよいし、調整可能であってもよい。
【００３０】
例えば、制御装置２０は、ファームウェア４１の更新を開始する場合、モジュール５１、５２が占有する作業領域を監視し、ファームウェア４１の更新に必要な作業領域を確保できるか否かを判定する。そして、制御装置２０は、作業領域を確保できない場合には、モジュール５１、５２の実行を停止させ、モジュール５１、５２が占有していた作業領域を解放する。
【００３１】
この結果、制御装置２０は、作業領域の空き容量が少ない場合に、ファームウェア４１の更新に必要な作業領域を確保し、ファームウェア４１の更新を行うことができる。
【００３２】
（実施形態に係る家電制御システム１の機能構成）
以下、図２を用いて、制御装置２０が有する機能構成の一例について説明する。図２は、第１の実施形態に係る制御装置の機能構成の一例を説明するための図である。図２に示す例では、制御装置２０は、演算部３０、不揮発性記憶部４０、メモリ５０および通信部６０を有する。また、演算部３０は、実行部３１、監視部３２、制御部３３、更新部３４を有する。また、メモリ５０には、実行中のモジュール５１、５２以外に、制御テーブル５３が格納される。
【００３３】
例えば、図３は、第１の実施形態に係る制御テーブルに格納される情報の一例を示す図である。図３に示す例では、制御テーブル５３には、対象、占有作業領域および停止可否が対応付けて登録される。ここで、対象とは、停止させるか否かの判定対象となるモジュールを示す情報である。また、占有作業領域とは、対応付けられたモジュールが占有する作業領域の容量である。また、停止可否とは、対応付けられたモジュールをファームウェア４１の更新時に停止させることができるか否かを示す情報である。
【００３４】
ここで、ファームウェア４１の更新時に停止させることができるモジュールとは、例えば、家電通信モジュールや、インターネット通信モジュールなど、ファームウェア更新中には実施しないサービスを実現しているモジュールやファームウェア４１の更新時に実行する必要性が低いモジュール、すなわち、優先度が低いモジュールである。また、ファームウェア４１の更新時に停止させることができないモジュールとは、カーネルと呼ばれる処理装置の基本機能や、ユーザビリティーの観点から、表示装置７０に対し「ファームウェア更新中です」といった画面を提供するための機能など、ファームウェア更新中にも処理を止められないモジュールや、処理を止めたくないサービスを実現しているモジュール、すなわち優先度が高いモジュールである。
【００３５】
図２に戻り、通信部６０は、スマートメータ１００、家電装置１０１、１０２、表示装置７０、ゲートウェイ装置８０との間の通信を実現するインターフェースであり、例えばＮＩＣ（Network  Interface  Card）により実現される。
【００３６】
実行部３１は、モジュール５１、５２を実行する。例えば、実行部３１は、利用者による操作やサーバ１１０からの指示に従って、家電装置１０１の制御を行う場合は、ファームウェア４１に含まれるモジュール群のうち、家電装置１０１の制御を実現するためのモジュール（例えば、モジュール５２）に対し、占有させる作業領域の割り当てを行う。そして、実行部３１は、割当てた作業領域にモジュール５２を展開し、展開したモジュール５２を実行する。なお、制御装置２０が発揮する各種機能は、実行部３１が各モジュール群を実行することにより実現されるものとする。
【００３７】
監視部３２は、各モジュール５１、５２が占有する作業領域を監視する。例えば、監視部３２は、所定の時間間隔で、実行中の各モジュール５１、５２が占有する作業領域の大きさを特定する。そして、監視部３２は、各モジュール５１、５２が占有する作業領域の大きさを、占有作業領域として、制御テーブル５３に格納する。なお、監視部３２は、ファームウェア４１の更新を開始する際等、任意のタイミングで、実行中の各モジュール５１、５２が占有する作業領域の大きさを特定してよい。
【００３８】
制御部３３は、監視部３２による監視結果に基づいて、各モジュール５１、５２が占有する作業領域を削減する。より具体的には、制御部３３は、ファームウェア４１の更新を開始する場合、監視部３２による監視結果に基づいて、ファームウェア４１の更新に必要な作業領域が確保できるか否かを判定する。そして、制御部３３は、ファームウェア４１の更新に必要な作業領域が確保できないと判定した場合は、実行中の各モジュール５１、５２が占有する作業領域を削減する。例えば、制御部３３は、作業領域が割り当てられたモジュール５１、５２のうち、所定のモジュールの動作を停止させ、停止させたモジュールに割り当てられた作業領域を解放することで、停止させたモジュールが占有する作業領域を削減する。
【００３９】
以下、制御部３３が実行する処理の一例について説明する。なお、以下の説明では、メモリ５０が２０ＭＢ（メガバイト）の作業領域を有し、ファームウェア４１の更新を行うために、１０ＭＢの作業領域を確保する必要があるものとする。また、以下の説明では、メモリ５０上に、図３に示したモジュールＡ、モジュールＢおよびモジュールＣが展開されているものとする。
【００４０】
例えば、制御部３３は、制御テーブル５３を参照し、メモリ５０が有する全作業領域の大きさから、各モジュールＡ〜Ｃが占有する作業領域の和を減算した値、すなわち、空き作業領域の大きさを算出する。そして、制御部３３は、算出した空き作業領域の大きさがファームウェア４１の更新を行うために必要な作業領域よりも大きいか否かを判定する。ここで、図３に示す例では、各モジュールＡ〜Ｃに割り当てられた作業領域の和が「２０ＭＢ」であるため、空き作業領域の大きさが「０ＭＢ」となる。このため、制御部３３は、空き作業領域の大きさが、ファームウェア４１の更新を行うために必要な作業領域よりも小さいと判定し、モジュールが占有する作業領域を削減する。
【００４１】
より具体的には、制御部３３は、制御テーブル５３を参照し、停止可否の値が「可」であるモジュール、すなわち、ファームウェア４１の更新時に停止することができるモジュールのうち、占有作業領域の値が最も大きいモジュールを特定する。例えば、制御部３３は、図３に示す例では、「モジュールＢ」を特定する。そして、制御部３３は、「モジュールＢ」の動作を停止させるとともに、「モジュールＢ」が占有していた作業領域を解放する。
【００４２】
続いて、制御部３３は、再度空き領域を算出し、空き作業領域の大きさがファームウェア４１の更新を行うために必要な作業領域よりも大きいか否かを判定する。ここで、上述した処理では、「モジュールＢ」が占有していた作業領域「６ＭＢ」が解放されたため、空き作業領域は「６ＭＢ」となる。しかしながら、ファームウェア４１の更新には、１０ＭＢの作業領域を確保する必要がある。そこで、制御部３３は、制御テーブル５３を再度参照し、停止可否の値が「可」であるモジュールのうち、占有作業領域の値が最も大きいモジュールを特定する。例えば、図３に示す例では、制御部３３は、「モジュールＣ」を特定し、特定した「モジュールＣ」の動作を停止させるとともに、「モジュールＣ」が占有していた作業領域を解放する。
【００４３】
このような処理の結果、メモリ５０には、ファームウェア４１の更新に必要な「１０ＭＢ」の空き作業領域が確保される。そして、制御部３３は、ファームウェア４１の更新を行うために必要な作業領域を確保した場合は、更新部３４に更新の開始を指示する。
【００４４】
更新部３４は、制御部３３によって確保された作業領域を用いて、ファームウェア４１の更新を実行する。例えば、更新部３４は、外部のサーバ１１０やＵＳＢメモリ等の任意の手段で与えられたファームウェア４２を、制御部３３によって確保された作業領域に保持するとともに、制御部３３によって確保された作業領域を用いて、不揮発性記憶部４０に格納されたファームウェア４１の更新を実行する。より具体的には、更新部３４は、不揮発性記憶部４０に格納されたファームウェア４１に、ファームウェア４２を上書きする。そして、更新部３４は、ファームウェア４２の上書きが終了した場合は、制御装置２０を再起動させる。この結果、実行部３１は、更新後のファームウェア４２に含まれるモジュール群を実行する。
【００４５】
なお、更新部３４は、ファームウェア４１の更新開始時に、ファームウェア４１の更新に必要な作業領域の大きさを算出し、算出した作業領域の大きさを制御部３３に通知する機能を有する。この結果、制御部３３は、更新部３４から通知された大きさの作業領域を確保する。
【００４６】
（ファームウェア４１の更新処理の一例）
次に、図４を用いて、ファームウェア４１をファームウェア４２に更新する処理の流れの一例について説明する。図４は、第１の実施形態に係る制御装置がファームウェアを更新する処理の一例を説明する図である。なお、図４に示す例では、制御装置２０を起動させてから、ファームウェア４１をファームウェア４２に更新し、その後再起動するまでの間に、不揮発性記憶部４０およびメモリ５０が有する作業領域の割り当ての一例について記載した。
【００４７】
例えば、制御装置２０は、図４中（Ａ）に示すように、起動前においては、不揮発性記憶部４０にモジュール群を含むファームウェア４１を保持し、メモリ５０を空にする。続いて、制御装置２０は、図４中（Ｂ）に示すように、起動時においては、不揮発性記憶部４０に格納されたファームウェア４１からモジュールを読出し、メモリ５７上に展開することで、各種の機能を実現する。続いて、制御装置２０は、図４中（Ｃ）に示すように、ファームウェア４１の更新を行う場合は、ファームウェア４１の更新に要する空き作業領域がメモリ５０に存在するか否かを判定し、存在しない場合は、メモリ５０上に展開したモジュールを停止させ、停止させたモジュールが専用していた作業領域を解放する。
【００４８】
そして、制御装置２０は、図４中（Ｄ）に示すように、ファームウェア４２の取得時においては、モジュールを停止させたことにより生じた空き作業領域にサーバ１１０から配信されたファームウェア４２を格納する。その後、制御装置２０は、図４中（Ｅ）に示すように、ファームウェア４１の更新時においては、メモリ５０上に格納したファームウェア４２で、不揮発性記憶部４０に格納されたファームウェア４１を上書きする。そして、制御装置２０は、図４中（Ｆ）ように、再起動を行うことで、ファームウェア４２に含まれるモジュールをメモリ５０上に展開する。
【００４９】
（制御装置２０が実行する処理の一例）
次に、図５を用いて、制御装置２０が実行する処理の流れの一例を説明する。図５は、第１の実施形態に係る制御装置が実行する処理の流れの一例を説明するフローチャートである。例えば、制御装置２０は、ファームウェア４１の更新を開始するか否かを判定し（ステップＳ１０１）、ファームウェア４１の更新を開始しないと判断した場合は（ステップＳ１０１：Ｎｏ）、更新を開始するまで待機する。一方、制御装置２０は、利用者の操作やサーバ１１０からの指示等に基づいて、ファームウェア４１の更新を開始する場合は（ステップＳ１０１：Ｙｅｓ）、メモリ５０の使用状況を監視する（ステップＳ１０２）。すなわち、制御装置２０は、各モジュールが占有するメモリ５０の作業領域の大きさを監視する。
【００５０】
続いて、制御装置２０は、ファームウェア４１の更新に要する空き作業領域があるか否かを判定し（ステップＳ１０３）、空き作業領域がない場合は（ステップＳ１０３：Ｎｏ）、停止可能なモジュールのうち、作業領域の量が最も大きいモジュールを停止させ（ステップＳ１０４）、再度ステップＳ１０３を実行する。一方、制御装置２０は、ファームウェア４１の更新に要する空き作業領域がある場合は（ステップＳ１０３：Ｙｅｓ）、ファームウェア４１の更新を開始する（ステップＳ１０５）。
【００５１】
また、制御装置２０は、ファームウェア４１の更新が完了したか否かを判定し（ステップＳ１０６）、更新が完了していない場合は（ステップＳ１０６：Ｎｏ）、完了まで待機する。そして、制御装置２０は、ファームウェア４１の更新が完了した場合は（ステップＳ１０６：Ｙｅｓ）、再起動し（ステップＳ１０７）、処理を終了する。この結果、再起動後の制御装置２０は、更新後のファームウェア４２に含まれる新たなモジュール群を実行する。
【００５２】
［第２の実施形態］
（モジュールが使用するデータの削除）
上述した第１の実施形態では、制御装置２０は、動作中のモジュール５１、５２を停止させることで、占有された作業領域を解放した。しかしながら、実施形態は、これに限定されるものではない。例えば、組込み機器等の制御装置２０は、コストや回路規模等の兼ね合いから、容量が小さくかつ読み込み速度も遅い不揮発性記憶部４０しか持たないことが多い。このため、モジュールやモジュールが使用するデータを圧縮した状態で不揮発性記憶部４０に格納しておき、機器の起動時に、全てのモジュールやデータをメモリ５０の作業領域に事前に展開するといった方式が用いられる場合がある。
【００５３】
そこで、制御装置２０は、メモリ５０上に展開されたモジュール、又は、モジュールが使用するデータを作業領域から削除することで、モジュールが占有する作業領域を削減し、ファームウェア４１の更新に必要な作業領域を確保してもよい。以下、このような処理を実行する制御装置２０の一例について説明する。なお、以下の説明では、第２の実施形態に係る制御装置２０は、図２に示した第１の実施形態に係る制御装置２０と同様の機能構成を有するものとする。
【００５４】
第２の実施形態に係る制御装置２０は、例えば、図３に示した制御テーブル５３に変えて、図６に示す制御テーブル５３ａを記憶する。図６は、第２の実施形態に係る制御テーブルに格納された情報の一例を示す図である。なお、制御装置２０は、制御テーブル５３とともに、制御テーブル５３ａを記憶していてもよい。図６に示す例では、制御テーブル５３ａには、作業領域上に展開される対象のモジュールＡ〜Ｃと、各モジュールをメモリ５０上に展開した際の容量と、ファームウェア４１の更新中に各モジュールＡ〜Ｃを停止させることができるか否かを示す停止可否とが対応付けて登録されている。また、図６に示すように、制御テーブル５３ａには、モジュールＣが利用するデータであるデータＤがメモリ５０上に展開されており、その容量が「７ＭＢ」である旨が登録されている。
【００５５】
ここで、メモリ５０上に展開されたデータを削除可能なモジュールやデータとは、例えば、家電装置１０１、１０２の制御画面を提供するモジュールや、画像ファイル等である。すなわち、ファームウェア４１を更新する場合には、ファームウェア４１を更新中である旨の画面以外の画面を表示させることが無いと考えられる。そこで、制御装置２０は、家電装置１０１、１０２の制御画面を提供するモジュールや、制御画面を構成する各種の画像データを削除可能なモジュールやデータとする。
【００５６】
例えば、制御装置２０が有する実行部３１は、ファームウェア４１に含まれるモジュール群や、モジュールが使用するデータをメモリ５０上に展開する場合、図６に示す制御テーブル５３ａを生成し、生成した制御テーブル５３ａをメモリ５０に保持させる。そして制御部３３は、制御テーブル５３ａを参照し、停止させたモジュールのデータや、停止させたモジュールが使用するデータをメモリ５０上から削除することで、空き作業領域を確保する。
【００５７】
以下、第２の実施形態に係る制御部３３が実行する処理の一例について説明する。なお、以下の説明では、ファームウェア４１の更新を行うために、２０ＭＢの空き作業領域を確保する必要があるものとする。また、以下の説明では、制御装置２０は、制御テーブル５３、５３ａをそれぞれ記憶しているものとする。例えば、制御部３３は、第１の実施形態と同様に、制御テーブル５３を参照し、各モジュールＢが占有する作業領域を削減する。この結果、メモリ５０には、６ＭＢの空き作業領域が確保されたものとする。
【００５８】
ここで、停止させたモジュールやそのモジュールが使用するデータは、ファームウェア４１の更新中には使用されないと考えられる。そこで、制御部３３は、モジュールＢが占有する作業領域を削除すると、制御テーブル５３ａをさらに参照し、メモリ５０上に展開されたモジュールＢ自体のデータを削除する。この結果、メモリ５０には、８ＭＢの空き作業領域が確保される。
【００５９】
しかしながら、ファームウェア４１の更新を行うには、２０ＭＢの空き作業領域を確保する必要がある。そこで、制御部３３は、再度制御テーブル５３を参照し、停止可能なモジュールのうち占有作業領域が最も大きいモジュールＣを停止させる。この結果、メモリ５０には、１２ＭＢの作業領域が確保される。
【００６０】
続いて、制御部３３は、制御テーブル５３ａをさらに参照し、停止させたモジュールＣや、モジュールＣが利用するデータＤを削除する。この結果、制御部３３は、モジュールＣ自体の容量「１ＭＢ」と、モジュールＣが使用するデータＤの容量「７ＭＢ」との和である「８ＭＢ」の空き作業領域をさらに確保することができる。この結果、制御装置２０は、計「２０ＭＢ」の作業領域を確保することができるので、ファームウェアの更新処理を開始する。
【００６１】
なお、制御テーブル５３ａは、制御テーブル５３と同様に、実行部３１によって、メモリ上に展開されたモジュール５１、５２や各モジュール５１、５２が使用するデータの情報等が登録されることとなる。制御部３３は、このような制御テーブル５３ａを用いて、停止させたモジュール５１、５２のデータや、モジュール５１、５２が使用するデータを削除することとなる。
【００６２】
［第３の実施形態］
（並列処理や繰り返し処理の削減）
上述した各実施形態では、制御装置２０は、モジュール５１、５２の動作を停止させ、占有している作業領域や、モジュール５１、５２自体のデータ、およびモジュール５１、５２が使用するデータを削除することで、空き作業領域を確保した。しかしながら、実施形態は、これに限定されるものではない。
【００６３】
例えば、モジュール５１、５２、その内部処理において、高速化のための並列処理や精度向上のための繰り返し処理を演算部３０に実行させる場合がある。例えば、モジュール５１、５２には、並列処理される複数のスレッドや、繰り返し実行されるスレッド等が含まれる場合がある。このような並列処理の数や繰り返し処理の回数を削減した場合には、モジュール５１、５２の実行に必要が作業領域の大きさが減少するので、占有作業領域の大きさが減少する。そこで、制御装置２０は、ファームウェア４１を更新する際、各モジュールの並列処理の数や繰り返し処理の回数を削減することで、すなわち、各モジュールが提供するサービスの品質を下げることで、ファームウェア４１の更新に必要な空き作業領域を確保する。
【００６４】
ここで、並列処理の数を削減可能なモジュール５１、５２とは、例えば、複数のアクセス要求を並列処理する機能を発揮するモジュールや、テキストを表示させる処理と画像を表示させる処理とを並列処理するモジュール等である。このようなモジュール５１、５２の並列処理の数を削減した場合は、テキストが表示されてから画像が表示されるというように、サービスの品質が低下する。また、繰り返し処理の頻度を削減可能なモジュール５１、５２とは、例えば、家電装置１０１、１０２の状態を定期的に取得する通信モジュールなどである。このようなモジュール５１、５２も、ファームウェア４１の更新中には、必要がないと考えられる。そこで、制御装置２０は、各モジュールの並列処理の数や繰り返し処理の頻度を削減することで、空き作業領域を確保する。
【００６５】
以下、このような処理を実行する制御装置２０の一例について説明する。なお、以下の説明では、第３の実施形態に係る制御装置２０は、図２に示した第１の実施形態に係る制御装置２０と同様の機能構成を有するものとする。
【００６６】
例えば、図７は、モジュールの処理内容と占有作業領域との関係の一例を示す図である。なお、図７に示す例では、各モジュールの処理内容と、処理内容に応じて占有される作業領域の大きさとを対応付けて記載した。例えば、モジュールＡは、１０個の処理を並列に実行した場合は、「１０ＭＢ」の作業領域を占有するが、５個の処理を並列に実行した場合は「５ＭＢ」の作業領域を占有する。また、モジュールＢは、１０秒に一回の頻度で処理を実行した場合は「６ＭＢ」の作業領域を占有するが、６０秒に一回の頻度で処理を実行した場合は「１ＭＢ」の作業領域を占有する。
【００６７】
例えば、ファームウェア４１の更新を行うために、１０ＭＢの空き作業領域を確保する必要がある場合、制御部３３は、モジュールＡの並列処理の数を１０個から５個に削減する。この結果、制御部３３は、「５ＭＢ」の空き作業容量を確保することができる。続いて、制御部３３は、モジュールＢの繰り返し処理の頻度を１０秒ごとから６０秒ごとに削減する。
【００６８】
この結果、制御部３３は、合計で「１０ＭＢ」の空き作業領域を確保することができるので、ファームウェア４１の更新処理を開始する。その後、制御部３３は、ファームウェア４１の更新処理が完了した後に、モジュールＡの並列処理の数と、モジュールＢの繰り返し処理の頻度とを元の値に戻す。
【００６９】
［第４の実施形態］
（キャッシュデータの削除）
ここで、制御装置２０は、スマートメータ１００や家電装置１０１、１０２から、機器名、製造番号、現在の使用電力、使用電力の積算値である使用電力量等の情報を定期的に取得し、取得した情報を表示装置７０に表示させる機能を発揮する場合がある。例えば、図８は、第４の実施形態に係る制御装置が表示装置に表示させる情報の一例を示す図である。例えば、制御装置２０は、スマートメータ１００にアクセスし、スマートメータの機器名、製造番号、現在の使用電力、使用電力量等の情報を取得する。そして、制御装置２０は、取得した各種の情報や、使用電力量のグラフを配置したスマートメータ状況画面を生成し、表示装置７０に表示させる。
【００７０】
このような機能を発揮するモジュール５１、５２を実行する際、スマートメータ１００や家電装置１０１、１０２から機器名や製造番号等の変化しない情報をその都度取得した場合には、アクセス回数が増大し、制御装置２０の応答性が悪化する場合がある。そこで、制御装置２０は、機器名や製造番号等の変化しない情報については、メモリ５０上にキャッシュし、キャッシュした情報を表示装置７０に表示させている。
【００７１】
しかしながら、ファームウェア４１の更新を行う間、表示装置７０の反応の悪化が許容されるのであれば、機器名や製造番号等の変化しない情報についてのキャッシュを削除してもよいと考えられる。そこで、制御装置２０は、モジュール５１、５２が有する機能のうち、取得したデータを作業領域に格納するキャッシュ機能を無効化することで、または、キャッシュ機能により作業領域に格納されたデータを削除することで、モジュール５１、５２が占有する作業領域を削減してもよい。
【００７２】
以下、このような処理を実行する制御装置２０の一例について説明する。なお、以下の説明では、第４の実施形態に係る制御装置２０は、図２に示した第１の実施形態に係る制御装置２０と同様の機能構成を有するものとする。
【００７３】
第４の実施形態に係る制御装置２０は、例えば、図３に示した制御テーブル５３に変えて、図９に示す制御テーブル５３ｂを記憶する。図９は、第４の実施形態に係る制御テーブルに格納される情報の一例を示す図である。なお、制御装置２０は、制御テーブル５３や制御テーブル５３ａとともに、制御テーブル５３ｂを記憶していてもよい。
【００７４】
図９に示す例では、制御テーブル５３ｂには、モジュール５１、５２がキャッシュする情報の内容である項目、キャッシュされる値の例である値例、通常時にキャッシュするか否かを示す通常時キャッシュ有無、ファームウェア４１の更新時にキャッシュするか否かを示す更新時キャッシュ有無とが対応付けて登録される。例えば、図９に示す制御テーブル５３ｂは、通常時においては、機器名と製造番号とをキャッシュし、ファームウェア４１の更新時においては、全ての情報をキャッシュしない旨を示す。
【００７５】
このような制御テーブル５３ｂを用いて、第４の実施形態に係る制御部３３は、以下の処理を実行する。例えば、制御部３３は、ファームウェア４１の更新時においては、制御テーブル５３ｂを参照し、機器名や製造番号をキャッシュの対象から除外する旨を特定する。このような場合、制御部３３は、機器名や製造番号をキャッシュするモジュール５１、５２に対し、機器名や製造番号のキャッシュを行わないよう指示するとともに、メモリ５０上に格納された機器名や製造番号のデータを削除することで、空き作業領域を確保する。
【００７６】
［第５の実施形態］
（制御装置２０に対するアクセスの制限）
ここで、スマートメータ１００や家電装置１０１、１０２の情報を定期的に取得し、取得した情報を表示装置７０に表示させる機能を発揮するモジュール５１、５２は、通常時には停止しているものの、利用者の操作や表示装置７０から制御装置２０に対するアクセスによって実行され、結果を表示装置７０に送信して処理を終了する。このようなモジュール５１、５２は、実行時には一定の作業領域を占有する。このため、制御装置２０は、ファームウェア４１の更新に必要な作業領域を確保したものの、ファームウェア４１の更新中に表示装置７０からアクセスが行われた場合は、作業領域が予想外に占有されてしまい、ファームウェア４１の更新を行うことができなくなる。もしくは、モジュール５１、５２が、その実行に必要な作業領域を確保することができないために、表示装置７０へ期待する結果を送信することができなくなったり、返信が遅れてしまったりする。
【００７７】
そこで、制御装置２０は、表示装置７０等の他装置からアクセスされた際に作業領域を用いて動作するモジュール５１、５２が存在する場合は、他装置に対し、ファームウェアの更新時にアクセスしないよう指示することで、モジュール５１、５２の動作を防ぎ、空き作業領域を確保してもよい。以下、このような処理を実行する制御装置２０の一例について説明する。
【００７８】
図１０は、第５の実施形態に係る制御装置が有する機能構成の一例を示す図である。図１０に示すように第５の実施形態に係る演算部３０は、各部３１〜３４に加え、指示部３５をさらに有する。指示部３５は、ファームウェア４１の更新を開始する場合、ファームウェア４１に含まれるモジュール群に、表示装置７０からのアクセス時に実行されるモジュール５１、５２が含まれるか否かを判定する。
【００７９】
そして、指示部３５は、ファームウェア４１に含まれるモジュール群に、表示装置７０からのアクセス時に実行されるモジュール５１、５２が含まれている場合は、表示装置７０に対し、ファームウェア４１の更新を開始する旨の通知を送信することで、制御装置２０に対するアクセスの停止を指示する。また、指示部３５は、ファームウェア４１の更新が終了した場合や、再起動が行われた場合は、表示装置７０に対して、ファームウェア４１の更新が終了した旨の通知を送信することで、制御装置２０に対するアクセスの再開を指示する。
【００８０】
また、表示装置７０は、所定の時間間隔で制御装置２０にアクセスし、新たな使用電力量等の情報を取得させ、新たな情報を反映させた画面を表示する場合がある。このような処理が実行される場合は、指示部３５は、ファームウェア４１の更新を開始する予定の時刻を送信し、その時刻よりも後のアクセスを行わないよう指示してもよい。また、このような時刻の通知を受付けた場合は、表示装置７０は、通知された時刻よりも前の時刻に処理装置２０に託するアクセスを行ってもよい。
【００８１】
例えば、図１１は、第５の実施形態に係る制御装置が表示装置に表示させる情報の一例を説明する図である。例えば、図８に示す例では、表示装置７０は、「０：１０」、「０：２０」、「０：３０」というように、制御装置２０に対して１０分毎にアクセスし、新たな使用電力量を取得させ、新たに取得させた使用電力量を反映させた使用電力量グラフを表示しているものとする。
【００８２】
ここで、表示装置７０は、制御装置２０に対して１０分毎にアクセスするため、「０：４０」にも、アクセスを行う予定である。しかしながら、ファームウェア４１の更新が「０：３６」に開始される場合、「０：４０」にアクセスを行ったとしても、ファームウェア４１の更新が行われるため、アクセスの失敗や応答の遅延等が生じると考えられる。
【００８３】
そこで、指示部３５は、ファームウェア４１の更新を開始する予定時刻「０：３６」をあらかじめ表示装置７０に対して通知する。このような通知が行われた場合、表示装置７０は、通知された時刻よりも前の時刻（例えば、「０：３５」）に、制御装置２０に対してアクセスを行い、新たな使用電力量を取得させ、グラフに反映させる。この結果、制御装置２０は、ファームウェア４１の更新中のため表示が行われないといった印象を利用者に与えることを防ぐことができる。
【００８４】
なお、上述した制御装置２０は、ＣＰＵとＲＡＭ、ＥＥＰＲＯＭ、フラッシュメモリなどを有するコンピュータが、所定の記録媒体に登録された制御プログラムを読み取り、読み取った制御プログラムを実行することにより、実現されてもよい。かかる場合、演算部３０は、各種の処理手順を規定したプログラムを実行することで、上述した種々の処理を実行する各種の処理部として機能する。
【００８５】
（ファームウェアの取得について）
上述した制御装置２０は、ファームウェア４１をファームウェア４２に更新する際、空き作業領域の確保を行い、その後、サーバ１１０等から取得したファームウェア４２をメモリ５０上に展開した。しかしながら、実施形態は、これに限定されるものではない。例えば、制御装置２０は、回路規模やコストに余裕がある場合、メモリ５０といった一次記憶領域とは別に、ＨＤＤ（Hard  Disk  Drive）やフラッシュメモリ等の二次記憶領域が設置される場合がある。
【００８６】
このような二次記憶領域が設置されている場合、制御装置２０は、空き作業領域の確保を行う前に、ファームウェア４２を二次記憶領域に格納し、二次記憶領域に格納したファームウェア４２をメモリ５０に格納する際に、空き作業領域の確保を行ってもよい。また、制御装置２０は、二次記憶領域に格納したファームウェア４２で不揮発性記憶部４０に格納されたファームウェア４１を上書きする場合は、ファームウェア４２を格納するための空き作業領域を確保せずともよい。すなわち、制御装置２０は、ファームウェア４１をファームウェア４２に上書きするためのモジュールを実行可能な空き作業領域のみを確保し、確保した空き作業領域を用いて、二次記憶領域に格納したファームウェア４２を直接不揮発性記憶部４０に格納してもよい。
【００８７】
（適用対象について）
上述した第１の実施形態〜第５の実施形態では、コントローラ１０に設置された組込み機器である制御装置２０が、ファームウェア４１の更新時に、モジュール５１、５２に占有されている作業領域を削減することで、ファームウェア４１の更新を行うために必要な空き作業領域を確保した。しかしながら、実施形態は、これに限定されるものではない。上述した各種の処理は、コントローラ１０以外にも、スマートメータ１００や家電装置１０１、１０２に設置された組込み機器によって実現されてもよい。
【００８８】
すなわち、上述した各種の処理は、ファームウェア４１に含まれるモジュール群を実行することで、各種の機能を発揮するとともに、ファームウェア４１の更新を行うことで、全モジュール群の更新を行う組込み機器、すなわち、発揮することができる機能の内容を一度に更新可能な組込み機器であれば、任意の組込み機器に対して適用可能である。
【００８９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００９０】
１  家電制御システム
１０  コントローラ
２０  制御装置
３０  演算部
３１  実行部
３２  監視部
３３  制御部
３４  更新部
３５  指示部
４０  不揮発性記憶部
４１、４２  ファームウェア
５０  メモリ
５１、５２  モジュール
５３、５３ａ、５３ｂ  制御テーブル
６０  通信部
７０  表示装置
８０  ゲートウェイ装置
１００  スマートメータ
１０１、１０２  家電装置
１１０  サーバ
【図１】
0006652374.tif 000002
【図２】
0006652374.tif 000003
【図３】
0006652374.tif 000004
【図４】
0006652374.tif 000005
【図５】
0006652374.tif 000006
【図６】
0006652374.tif 000007
【図７】
0006652374.tif 000008
【図８】
0006652374.tif 000009
【図９】
0006652374.tif 000010
【図１０】
0006652374.tif 000011
【図１１】
0006652374.tif 000012