(実施の形態1)
(概要)
以下、本発明に係るネットワーク対応の家電機器の一態様として、ネットワーク経由でのソフトウェア更新機能を持つ、ネットワーク対応家電機器100について説明する。まず、図1〜図3を用いて、ネットワーク対応家電機器100の概要を説明する。
ネットワーク対応家電機器100は、ブートローダプログラム、メインプログラム、およびアップデータプログラムの3つの独立したプログラムによって制御される。それぞれのプログラムについては、ある1つのプログラムの動作が終了し、別のプログラムが開始するまで、別のプログラムは動作しない。
ブートローダプログラムは、ネットワーク対応家電機器100が起動したときに最初に動くプログラムで、通常はメインプログラムへ処理を移行する。ソフトウェア更新が必要な場合には、ブートローダプログラムは、ネットワーク140経由で、アップデータプログラムをサーバ103よりダウンロードし、アップデータプログラムへ処理を移行する。
メインプログラムは、ネットワーク140経由での家電機器に対する命令の処理および、サーバ103にソフトウェア更新情報が登録された場合に、その情報を取得し、ソフトウェア更新を行うために起動モード210(図3を参照)を「更新起動」値に変更し、ブートローダプログラムへ移行する。なお、ブートローダプログラムへの移行は通常リセット動作により行う。
また、メインプログラムはバージョン情報を持ち、ソフトウェア更新の対象である。通常、ある時点で複数のバージョンのメインプログラムが存在している。バージョン情報は数値を用いて表す。例えばバージョン番号の一番大きいプログラムは最新のメインプログラムであることを表す。
アップデータプログラムは、ネットワーク140経由で、サーバ103より最新のメインプログラムをダウンロードし、不揮発性メモリ121に書かれているメインプログラムを更新する。
サーバ103は、ネットワーク140経由で、ネットワークI/F(インターフェース)10がネットワーク対応家電機器100からの要求を受け、通信処理部11により、要求に応じた処理を行う。ネットワーク対応家電機器100の現在動作しているメインプログラムのバージョンより、新しいメインプログラムの有無についての問合せについては、通信処理部11は、データ管理部12経由でデータ保存装置13に問合せ、新しいバージョンのメインプログラムがあるかどうかを返答する。また、通信処理部11は、ネットワーク140およびネットワークI/F10経由で、ネットワーク対応家電機器100から、新しいメインプログラムのバージョンに対応するアップデータプログラム及び新しいバージョンのメインプログラムの取得要求があったときには、データ管理部12経由でデータ保存装置13から情報を入手し、要求する情報を返す。
以下、本実施の形態1に係るネットワーク対応家電機器100の構成について図面を参照しながら説明する。
(構成)
図1は、ネットワーク対応家電機器100の主要なハードウェア構成を示すブロック図である。
同図に示されるように、ネットワーク対応家電機器100は、ハードウェアとしてはコンピュータシステムであり、集積回路110と、入力装置130と、表示装置131と、ネットワークI/F132と、制御する家電133とから構成される。そして、集積回路110は、CPU120と、不揮発性メモリ121と、メインメモリ122と、タイマー123と、クロックジェネレータ124と、バス125と入力I/F126と、出力I/F127と、ネットワークコントローラ128と、家電I/F129とから構成される。
不揮発性メモリ121は、通常フラッシュメモリから構成される。メインメモリ122は、揮発性メモリであって、例えばRAM(Random Access Memory)から構成される。いずれもバス125に接続され、CPU120の動作を規定するプログラムと、CPU120が利用するデータとを記憶する。
バス125は、CPU120と、不揮発性メモリ121と、メインメモリ122と、タイマー123と、クロックジェネレータ124と、入力I/F126と、出力I/F127と、ネットワークコントローラ128と、家電I/F129とに接続され、接続される回路間の信号を伝達する機能を有する。
入力I/F126と出力I/F127とは、それぞれ、バス125と入力装置130、バス125と表示装置131に接続され、それぞれ、接続される回路間の信号のやりとりを仲介する機能を有する。
ネットワークコントローラ128は、バス125とネットワークI/F132に接続され、接続される回路間の信号のやりとりを仲介する機能を有する。
家電I/F129は、バス125と家電133に接続され、接続される回路間の信号のやりとりを仲介する機能を有する。
入力装置130は、スイッチ装置等から構成され、入力I/F126に接続され、プログラムを実行するCPU120によって制御され、ネットワーク対応家電機器100を利用するユーザからの起動処理の切替えなどを受付ける機能を有する。例えば、スイッチを押しながら電源を投入した場合には、ネットワーク対応家電機器100が検査モードに入るなどの切替え処理をするために、入力装置130が用いられる。
表示装置131は、LED等から構成され、出力I/F127に接続され、プログラムを実行するCPU120によって制御され、CPU120から送られる信号に基づいて、ユーザにネットワーク対応家電機器100がどのような状態であるかを知らせる機能を持つ。例えば、表示装置131は、LEDが点滅しているときは、サーバ103との接続に問題があることを示したり、LEDが2回点滅する場合には、検査モードで起動していることを示したりすることで、エラー発生時の問題の切り分けなどに利用される。また企業がカスタマサポート等で、ネットワーク対応家電機器100の状態を問合せする場合に、表示装置131は、遠隔で状態を知るための手段となる。このため、この表示装置131の表す内容は、簡潔でかつ問題把握などに必要な内容を網羅する必要がある。
CPU120は、バス125に接続され、不揮発性メモリ121あるいはメインメモリ122に記憶されるプログラムを実行することで、入力装置130と、表示装置131と、ネットワークI/F132と、家電133とを制御して、ネットワーク対応家電機器100を、プログラムを実行制御するコンピュータシステムとして機能させる機能を有する。
ネットワークI/F132は、イーサーネット(登録商標)などのネットワーク140と接続し、信号をやりとりする機能を持つ。ネットワークI/F132は、ネットワークコントローラ128が指示した手順に従って、ネットワーク140を経由し、サーバ103と通信を行う。
家電133は、ライトやエアコンなどの機能を実現する機器であり、家電I/F129からの指示を受け、電源を入れたり、切ったりする機能を持つ。また、家電I/F129からの状態の問合せに対して、現在電源が入っているのか、入っていないのかなどの状態を返す機能を持つ。
ここで、CPU120は、不揮発性メモリ121およびメインメモリ122に記憶されるプログラムを実行することで、ネットワークコントローラ128や、家電I/F129を経由してデータをサーバ103および家電133とやり取りすることで、ネットワーク140経由での家電133の制御を実現する。
また、ネットワーク対応家電機器100は、サーバ103より現在動作しているプログラムとは別のプログラムをダウンロードして、不揮発性メモリ121のプログラムを書替えすることで、新機能を追加し、あるいは、ソフトウェアの障害に対応することを可能にする。
このソフトウェア更新処理については、後程、図およびフローチャートを用いて詳細に説明する。
上記ハードウェア構成を備えるネットワーク対応家電機器100について、以下、機能面から見た機能構成について図面を参照しながら説明する。
図2は、ブートローダプログラム20が動作しているときの、ネットワーク対応家電機器100の機能構成の一例を示すブロック図である。すでに説明した図1と同じ構成要素については同じ符号を用い、説明を省略する。
ブートローダプログラム20は、機器が電源を投入して起動したとき、あるいはリセットして再起動したときに最初に動作するプログラムである。ブートローダプログラム20は、起動判定部21と、起動情報保持部22と、UI表示部23と、ダウンロード制御部24と、通信処理部25とから構成される。
起動判定部21は、起動情報保持部22経由で、不揮発性メモリ121に記録されている起動情報に基づいて、ブートローダプログラム20によって起動されるプログラムを切替える。
起動情報保持部22は、不揮発性メモリ121に記録されている、起動情報パラメタテーブル200(図3参照)を管理し、起動判定部21からの要求に対して、起動モード210の値を返答する。
起動情報パラメタテーブル200は、起動モード210から構成される。
起動モード210は、「通常起動」と「更新起動」の2つの値を持ち、ブートローダプログラム20が、通常起動を行うため、メインプログラムを起動するか、更新起動を行うため、アップデータプログラムをダウンロードして起動するかを判断するために用いる。
UI表示部23は、出力I/F127を使って、表示装置131を制御する。UI表示部23は、タイマー123を制御し、表示装置131の表示間隔を制御する。例えば表示装置131にLEDを用いた場合に、UI表示部23は、LEDの表示間隔が1秒おきの点滅表示を行うため、1秒を計測するためにタイマー123を用いる。
また、UI表示部23は、ダウンロード制御部24または通信処理部25からのUI表示モードの変更通知を受け、表示する内容を切り替える。
UI表示部23は、UI表示モードの変更通知を受けると、UI表示部23の内部にあるUI表示パラメタテーブル300(図4参照)のUI表示モード310に変更内容を設定する。
UI表示モード310に設定される値と、設定される値に対応するUI表示の一例を、UI表示モードの設定値とLED表示400(図5参照)に示す。この例における機器は、表示装置131として、緑と赤の2つのLEDを持つ。
UI表示モード310は、通信未設定411、ネットワーク未接続412、アドレス未取得413、サーバ未接続414、ソフトウェア更新状態415、家電制御エラー416、不揮発性メモリ書込みエラー417、および正常起動418のうちのいずれかの設定値を取る。
UI表示モード310に通信未設定411が設定されているときのLED表示動作(UI表示)は、緑と赤の両方のLEDが常時点灯することである。この表示によりユーザは、機器が起動して初期設定中であることを認識できる。
UI表示モード310にネットワーク未接続412が設定されているときのLED表示動作(UI表示)は、緑のLEDが常時点灯し、赤のLEDが0.5秒間隔で点滅することである。この表示によりユーザは、機器がネットワークに接続できていないエラーであることを認識できる。
UI表示モード310にアドレス未取得413が設定されているときのLED表示動作(UI表示)は、緑のLEDが常時点灯し、赤のLEDが1秒間隔で点滅することである。この表示によりユーザは、機器がネットワークに接続できているが、アドレス取得中であることを認識できる。また、通常この状態が長く続けば、ユーザはネットワーク140からのアドレス取得において何らかの問題が生じていることを認識できる。
UI表示モード310にサーバ未接続414が設定されているときのLED表示動作(UI表示)は、緑のLEDが常時点灯し、赤LEDが0.25秒間隔で点滅することである。この表示によりユーザは、機器がネットワーク140に接続できているが、サーバ103と接続中であることがわかる。この状態が長く場合、ユーザは、ネットワーク140のサーバ103への途中経路に問題があるか、サーバ103がダウンしている場合を想定して対応を取ることができる。
UI表示モード310にソフトウェア更新状態415が設定されているときのLED表示動作(UI表示)は、緑のLEDと赤のLEDが0.5秒周期で交互に2回ずつ点滅することである。この表示によりユーザは、機器がサーバ103と接続でき、ソフトウェア更新処理を実行していることを認識できる。
UI表示モード310に家電制御エラー416が設定されているときのLED表示動作(UI表示)は、緑のLEDと赤のLEDが同時に1秒間隔で点滅することである。この表示によりユーザは、機器がサーバ103からの指示を受けることはできるが、家電133の制御にエラーが発生していることを認識できる。
UI表示モード310に不揮発性メモリ書込みエラー417が設定されているときのLED表示動作(UI表示)は、緑のLEDと赤のLEDが同時に0.5秒間隔で点滅することである。この表示によりユーザは、ソフトウェア更新処理において、不揮発性メモリで異常が発生していることを認識できる。
UI表示モード310に正常起動418が設定されているときのLED表示動作(UI表示)は、緑のLEDによる常時点灯と、赤のLEDによる消灯である。この表示によりユーザは、ネットワーク対応家電機器100が通常起動し、エラーなく動作していることを認識できる。
ダウンロード制御部24は、起動判定部21が更新起動を行う場合に起動判定部21より呼び出される。
ダウンロード制御部24は、通信処理部25およびネットワークI/F132を通して、サーバ103と通信を行う。サーバ103には、通信を通して、新しいバージョンの更新ソフトウェアに対するアップデータプログラムを要求する。サーバ103は、アップデータプログラムの要求をネットワークI/F10より受信すると、通信処理部11がデータ管理部12を通して、データ保存装置13に保存されている指定されたバージョンのアップデータプログラムを入手し、通信処理部11がネットワーク対応家電機器100のブートローダプログラム20に返答する。
ダウンロード制御部24は、通信処理部25経由でサーバ103よりアップデータプログラムを入手すると、それをメインメモリ122に保存する。
ダウンロード制御部24は、アップデータプログラム40のダウンロードが完了すると、アップデータプログラム40を起動する。
ダウンロード制御部24は、アップデータプログラムのダウンロードを開始すると、UI表示部23に対して、UI表示モード310をソフトウェア更新状態415に設定することで、ソフトウェア更新が開始したことをユーザに知らせることができる。なお、さらにUI表示部23が高度な表示機能を有する場合には、ダウンロードの進捗状況を表示することも可能である。
通信処理部25は、ダウンロード制御部24の指示で、ネットワークI/F132を経由してサーバ103と通信を行う。
通信処理部25は、ネットワークI/F132の状況およびサーバ103との通信の状況をUI表示部23に表示するように指示する。例えば、ネットワーク140と接続できない場合には、ネットワーク接続不可状態をUI表示部23に通知する。これにより、UI表示部23は、LEDの早い点滅でユーザにネットワーク140あるいはネットワークI/F132に異常があることを通知する。
このようにブートローダプログラム20は、ネットワーク対応家電機器100の起動処理を行う。
ブートローダプログラム20の処理について、フローチャートを用いて詳細に説明する。
図6は、ブートローダプログラム20が起動して、メインプログラム30あるいはアップデータプログラム40を起動する処理のフローチャートである。
ブートローダプログラム20が起動すると、起動判定部21は、起動情報保持部22に起動モードを問合せる(S101)。
起動判定部21は、起動モード210が「通常起動」値か、「更新起動」値かを確認し(S102)、「通常起動」値であればステップS103を実行する。「更新起動」値であればステップS104を実行する。
起動判定部21は、不揮発性メモリ121上にあるメインプログラム30を実行する(S103)。
起動判定部21は、ダウンロード制御部24を実行する(S104)。
ダウンロード制御部24は、UI表示部23にあるUI表示モード310を通信未設定411に変更する(S105)。
ダウンロード制御部24は、サーバ103と接続したら、UI表示部23にあるUI表示モード310をソフトウェア更新状態415に変更する(S106)。
ダウンロード制御部24は、アップデータプログラム40を、サーバ103よりダウンロードする(S107)。
ダウンロード制御部24は、アップデータプログラム40を実行する(S108)。
図7は、メインプログラム30が動作しているときの、ネットワーク対応家電機器100の機能構成の一例を示すブロック図である。すでに説明した図1〜図5と同じ構成要素については同じ符号を用い、説明を省略する。
メインプログラム30は、通常起動で動作するプログラムである。メインプログラム30は、問合せ部31と、通信処理部32と、起動情報保持部33と、UI表示部34と、家電制御部35とから構成される。
問合せ部31は、例えば1日に1回などの一定時間間隔で、通信処理部32経由でサーバ103に対して現在のバージョンより新しいメインプログラム30が存在するかどうかを問合せする。サーバ103は、ネットワーク対応家電機器100からの問合せを、ネットワークI/F10で受信し通信処理部11が処理する。通信処理部11は、データ管理部12に対して、データ保存装置13に保存されている、指定されたバージョンより新しいメインプログラム30の有無を問合せ、その結果をネットワークI/F10経由でネットワーク対応家電機器100に返答する。
問合せ部31は、サーバ103からの返答を通信処理部32経由で受信する。現在のバージョンより新しいメインプログラム30が存在した場合には、起動情報保持部33に対して起動情報パラメタテーブル200の、起動モード210の値に、「更新起動」値をセットするように指示する。「更新起動」値をセットすると、問合せ部31は再起動処理を行い、ブートローダプログラム20を呼び出す。
通信処理部32は、問合せ部31より、サーバ103への現在のメインプログラム30より新しいバージョンのメインプログラム30の有無の問合せの要求を受け、ネットワークI/F132およびネットワーク140を経由してサーバ103に問合せを行う。
通信処理部32はサーバ103からの要求を受けて、家電制御部35に対して家電133の制御を指示する。例えば、通信処理部32は、エアコンの冷房をONにすることや、室温設定を25℃に変更するなどの制御を指示する。
通信処理部32は、ネットワーク140との接続状態や、サーバ103との接続状態について、UI表示部34に対してUI表示モード310を設定する。
起動情報保持部33は、問合せ部31よりサーバ103への新バージョンのメインプログラム30の有無の問合せの結果を受けて、不揮発性メモリ121内の起動情報パラメタテーブル200の、起動モード210の値を書替える。
UI表示部34は、出力I/F127を使って、表示装置131を制御する。UI表示部34は、タイマー123を制御し、表示装置131の表示間隔を制御する。例えば、UI表示部34は、表示装置131にLEDを用いた場合に、LEDの表示間隔が1秒おきの点滅表示を行うため、1秒を計測するためにタイマー123を用いる。
また、UI表示部34は、通信処理部32および家電制御部35からのUI表示モードの変更通知を受け、表示する内容を切り替える。
UI表示部34は、UI表示モードの変更通知を受けると、UI表示部34の内部にあるUI表示パラメタテーブル300(図4参照)のUI表示モード310に変更内容を設定する。
UI表示モード310に設定される値と、設定される値に対応するUI表示の一例については、前記のUI表示モードの設定値とLED表示400(図5参照)に示した通りある。
家電制御部35は、通信処理部32経由でサーバ103からの指示を受信し、家電I/F129を用いて家電133を制御する。例えば、家電制御部35は、サーバ103からの指示で、エアコンを冷房状態に変更するなど、家電133に対する処理を行う。
家電制御部35は、家電133の状態やサーバ103からの要求の状態の表示を、UI表示部34に指示することで、それらの状態をユーザに知らせることができる。例えば、家電133が異常な時には、家電制御部35は、UI表示部34のUI表示モード310に家電制御エラー416を設定することで、UI表示部34が図5に記載の該当する表示を行う。このUI表示によりユーザに異常状態を知らせる。
このようにメインプログラム30は、サーバ103からの家電133の制御要求処理を行うとともに、サーバ103に対して定期的に新しいバージョンのメインプログラム30の有無を問合せ、新しいバージョンのメインプログラム30があれば再起動し更新処理を開始する。
メインプログラム30は、このように2つの機能を持つ。この2つの機能は通常別のタスクとして起動し、同時処理するようにするが、一つのタスクで2つの機能を実施することも可能である。
メインプログラム30の処理について、フローチャートを用いて詳細に説明する。
図8は、ブートローダプログラム20より、メインプログラム30が起動した後の処理のフローチャートである。メインプログラム30は家電制御タスクと、更新問合せタスクの2つのタスクを動作させて処理を行う。ここでタスクとはメインプログラム30の中で同時に処理を実行できる処理の単位のことである。
メインプログラム30が起動すると、家電制御タスクと、更新問合せタスクの2つのタスクを起動する(S111)。
家電制御タスクが起動すると、家電制御部35を実行し、UI表示部34のUI表示モード310に通信未設定411を設定する(S112)。
通信処理部32は、サーバ103と接続し、サーバ103からの制御要求を待つ。この時にサーバ接続が成功すれば、UI表示部34のUI表示モード310に正常起動418を設定する(S113)。
通信処理部32は、サーバ103から通信があると、家電制御部35に通知し、家電制御部35が制御要求の有無を確認する(S114)。制御要求がなかった場合には、ステップS113を実行する。制御要求があった場合には、ステップS115を実行する。
ステップS115では、家電制御部35は、家電I/F129経由で家電133を制御し、結果を通信処理部32経由でサーバ103に返す(S115)。処理が完了すると、S113を実行する。
更新問合せタスクが起動すると、問合せ部31を実行する(S116)。
問合せ部31は、通信処理部32経由でサーバ103に対して現在のメインプログラム30より新しいバージョンのメインプログラム30の有無を問合せる(S117)。
問合せ部31は、問合せ結果を確認し、現在のメインプログラム30より新しいバージョンのメインプログラム30がない場合には、ステップS119を実行する。現在のメインプログラム30より新しいバージョンのメインプログラム30があった場合には、ステップS120を実行する(S118)。
問合せ部31は、24時間など定められた一定時間休止したのちに(S119)、ステップS117を実行する。
問合せ部31は、起動情報保持部33の起動モード210に「更新起動」値を設定するよう指示する(S120)。
問合せ部31は、再起動のため、家電制御タスクを終了させる(S121)。
問合せ部31は、再起動を実施しブートローダプログラム20を起動する(S122)。
図9は、アップデータプログラム40が動作しているときの、ネットワーク対応家電機器100の機能構成の一例を示すブロック図である。すでに説明した図1〜図5と同じ構成要素については同じ符号を用い、説明を省略する。
アップデータプログラム40は、更新起動時において、ブートローダプログラム20により、サーバ103よりダウンロードされ、起動するプログラムである。アップデータプログラム40は、ダウンロード制御部41と、通信処理部42と、UI表示部43と、書込み処理部44と、起動情報保持部45とから構成される。
ダウンロード制御部41は、通信処理部42経由でサーバ103に対して、現在のバージョンより新しいメインプログラム30をダウンロードする。サーバ103は、ネットワーク対応家電機器100から、指定されたバージョンの取得要求を、ネットワークI/F10で受信し、通信処理部11が処理する。通信処理部11は、データ管理部12に対して、データ保存装置13に保存されている、指定されたバージョンのメインプログラム30を要求して取得し、その結果をネットワークI/F10経由でネットワーク対応家電機器100に返答する。
なおダウンロード制御部41は、メインプログラム30のダウンロードを開始すると、UI表示部43に対して、UI表示モードをソフトウェア更新状態415に設定することで、ソフトウェア更新処理が継続していることをユーザに知らせることができる。なお、さらにUI表示部43が高度な表示機能を有する場合には、ダウンロードの進捗状況を表示することも可能である。
通信処理部42は、ダウンロード制御部41より、サーバ103への新バージョンのメインプログラム30の取得要求を受け、ネットワークI/F132およびネットワーク140を経由してサーバ103に要求を行う。
ダウンロード制御部41は、ダウンロードしたメインプログラム30を用いて、書込み処理部44に対して不揮発性メモリ121のメインプログラム30を更新するように指示する。
ダウンロード制御部41は、不揮発性メモリ121のメインプログラム30の更新が完了すると、起動情報保持部45に対して、不揮発性メモリ121内の起動情報パラメタテーブル200の、起動モード210の値を「通常起動」値に書替えるように指示する。
通信処理部42は、ネットワーク140との接続状態や、サーバ103との接続状態について、UI表示部43に対して表示モードを設定し、ユーザにネットワーク140やサーバ103との接続状態を通知する。
UI表示部43は、出力I/F127を使って、表示装置131を制御する。UI表示部43は、タイマー123を制御し、表示装置131の表示間隔を制御する。例えば表示装置131にLEDを用いた場合に、UI表示部43は、LEDの表示間隔が1秒おきの点滅表示を行うため、1秒を計測するためにタイマー123を用いる。
また、UI表示部43は、ダウンロード制御部41、通信処理部42および書込み処理部44からのUI表示モードの変更通知を受け、表示する内容を切り替える。
UI表示部43は、UI表示モードの変更通知を受けると、UI表示部43の内部にあるUI表示パラメタテーブル300(図4参照)のUI表示モード310に変更内容を設定する。
UI表示モード310に設定される値と、設定される値に対応するUI表示の一例については、前記のUI表示モードの設定値とLED表示400(図5参照)に示した通りある。
書込み処理部44は、ダウンロード制御部41からの指示を受け、ダウンロード制御部41がダウンロードしたメインプログラム30を用いて、現在記録されている不揮発性メモリ121に記録されているメインプログラム30を上書きして更新する。
書込み処理部44は、不揮発性メモリ121への書込みがエラーの場合に、UI表示部43に対してUI表示モード310を不揮発性メモリ書込みエラー417に変更するように通知し、ユーザに異常を知らせる。
起動情報保持部45は、ダウンロード制御部41によるダウンロードの完了時に、不揮発性メモリ121内の起動情報パラメタテーブル200の、起動モード210の値を「通常起動」値に書替える。
このようにアップデータプログラム40は、サーバ103からの家電133の最新のメインプログラム30をダウンロードし、現在記録されている不揮発性メモリ121のメインプログラム30を書替えることで更新処理を行う。
アップデータプログラム40の処理について、フローチャートを用いて詳細に説明する。
図10は、ブートローダプログラム20により、アップデータプログラムがダウンロードされ、起動した後の処理のフローチャートである。
アップデータプログラム40は起動すると、ダウンロード制御部41を実行する(S131)。
ダウンロード制御部41は、UI表示部43のUI表示モード310を通信未設定411に設定する(S132)。
ダウンロード制御部41は、通信処理部42を通してサーバ103と接続し、サーバ103と接続完了すればUI表示部43のUI表示モード310をソフトウェア更新状態415に変更する(S133)。
ダウンロード制御部41は、サーバ103より現在のメインプログラム30のバージョンより新しいバージョンのメインプログラム30を指定してダウンロードする(S134)。
ダウンロード制御部41は、サーバ103よりダウンロードしたメインプログラム30を不揮発性メモリ121のメインプログラム30が書かれている領域に上書きする(S135)。
なお、ステップS134およびS135について、すべてのメインプログラム30をメインメモリ122にダウンロードしてから不揮発性メモリ121に記録してもよいし、メインメモリ122の節約のため、メインプログラム30を分割してダウンロードし、ダウンロードした部分からすぐに不揮発性メモリ121を書替えていく方式も可能とする。
ダウンロード制御部41は新しいバージョンのメインプログラム30のすべての領域をダウンロードし、かつ不揮発性メモリ121への書込みが正常に完了すると、起動情報保持部45の起動モード210に「通常起動」値を設定する(S136)。
ダウンロード制御部41は、再起動処理を行い、ブートローダプログラム20を起動する(S137)。
本実施の形態により、不揮発性メモリ121をメインプログラム30の2倍量持つ必要なく、ソフトウェア更新が可能になる。また、ソフトウェア更新プログラムの障害時には、サーバ103からソフトウェア更新の都度ダウンロードしてくるアップデータプログラム40を修正することができるので、ソフトウェア更新プログラム自体の耐障害性を高め、さまざまなネットワーク対応家電機器100のソフトウェア更新を可能にする。
(実施の形態2)
(概要)
実施の形態1および実施の形態2における、処理の流れと、UI表示について、図11を用いて説明する。
前述の実施の形態1において、ソフトウェア更新が始まると、時刻T01においてブートローダプログラム20が起動し、ブートローダプログラム20は、通信処理の初期設定を行う。時刻T02において、ブートローダプログラム20が通信設定を完了すると、ブートローダプログラム20はアドレスの取得処理を行う。時刻T03において、ブートローダプログラム20がアドレス取得できると、ブートローダプログラム20はサーバ103への接続を行う。時刻T04において、ブートローダプログラム20がサーバ103と接続できると、ブートローダプログラム20はアップデータプログラム40のダウンロードを行う。時刻T05においてブートローダプログラム20がアップデータプログラム40のダウンロードを完了すると、ブートローダプログラム20はアップデータプログラム40の起動を行い、アップデータプログラム40は通信処理の初期設定を再度行う。時刻T06において、アップデータプログラム40が通信設定を完了すると、アップデータプログラム40はアドレスの取得処理を行う。時刻T07において、アップデータプログラム40がアドレス取得できると、アップデータプログラム40はサーバ103への接続を行う。時刻T08において、アップデータプログラム40がサーバ103と接続できると、アップデータプログラム40はメインプログラム30のダウンロードおよび不揮発性メモリ121への書込みを行う。時刻T09においてアップデータプログラム40がメインプログラム30のダウンロードおよび不揮発性メモリ121への書込みを完了すると、アップデータプログラム40は再起動処理を行い、ブートローダプログラム20を実行する。
この一連の処理において、実施の形態1のUI表示を、図5記載のUI表示モード310の設定値とLED表示動作の例を用いて説明する。
時刻T01〜時刻T02の間は、ブートローダプログラム20はUI表示モード310に通信未設定411を設定するため、緑のLEDおよび赤のLEDはともに点灯状態になる。時刻T02〜時刻T03の間は、ブートローダプログラム20はUI表示モード310にアドレス未取得413を設定するため、緑のLEDが常時点灯し、赤のLEDは、1秒間隔で点滅する。時刻T03〜時刻T04の間は、ブートローダプログラム20はUI表示モード310にサーバ未接続414を設定するため、緑のLEDが常時点灯し、赤のLEDは、0.5秒間隔で点滅する。時刻T04〜時刻T05の間は、ブートローダプログラム20はUI表示モード310にソフトウェア更新状態415を設定するため、緑のLEDおよび赤のLEDは、0.5秒間隔で2回ずつ交互に点滅動作を行う。時刻T05〜時刻T06の間は、アップデータプログラム40はUI表示モード310に通信未設定411を設定するため、緑のLEDおよび赤のLEDはともに点灯状態になる。時刻T06〜時刻T07の間は、アップデータプログラム40はUI表示モード310にアドレス未取得413を設定するため、緑のLEDが常時点灯し、赤のLEDは、1秒間隔で点滅する。時刻T07〜時刻T08の間は、アップデータプログラム40はUI表示モード310にサーバ未接続414を設定するため、緑のLEDが常時点灯し、赤のLEDは、0.5秒間隔で点滅する。時刻T08〜時刻T09の間は、アップデータプログラム40はUI表示モード310にソフトウェア更新状態415を設定するため、緑のLEDおよび赤のLEDは、0.5秒間隔で2回ずつ交互に点滅動作を行う。時刻T09以降、ブートローダプログラム20は再度起動し、メインプログラム30を起動する。
このようなソフトウェア更新処理にかかる時間は通常数分であり、その際に前記のように複雑にUI表示が切り替わる。このため、何か障害があり上記ソフトウェア更新処理が繰り返すような場合、どのような問題が発生しているのかユーザが把握するのが難しくなる場合がある。
この問題を解決するため、実施の形態2においては、ブートローダプログラム50からアップデータプログラム60を起動する場合のUI表示において、ブートローダプログラム50にUI状態保存部27および、アップデータプログラム60にUI状態読取部47を追加する。これにより、ブートローダプログラム50が最終に表示していたUI表示モード310を、アップデータプログラム60のUI表示モード310に設定し、UI表示を継承するようにする。この機構により、ブートローダプログラム50からアップデータプログラム60へプログラムが切り替わっても、図11におけるT04〜T09までの間、UI表示モード310を、同一のUI表示モード設定値(ソフトウェア更新状態415)にすることで、エラー等が発生しない限り同一のUI表示を継続することができる。この仕組みにより、ユーザはソフトウェア更新処理が継続して実施されていることを認識することができる。
図12は、実施の形態2における、ブートローダプログラム50が動作しているときの、ネットワーク対応家電機器100の機能構成の一例を示すブロック図である。すでに説明した図1〜図2と同じ構成要素については同じ符号を用い、説明を省略する。
ブートローダプログラム50は、機器が電源を投入して起動したとき、あるいはリセットして再起動したときに最初に動作するプログラムである。ブートローダプログラム50は、起動判定部21と、起動情報保持部22と、UI表示部23と、ダウンロード制御部26と、通信処理部25と、UI状態保存部27とから構成される。
起動判定部21は、起動情報保持部22経由で、不揮発性メモリ121に記録されている起動情報に基づいて、ブートローダプログラム50が起動するプログラムを切替える。
起動情報保持部22は、不揮発性メモリ121に記録されている、起動情報パラメタテーブル200(図3参照)を管理し、起動判定部21からの要求に対して、起動モード210の値を返答する。
UI表示部23は、出力I/F127を使って、表示装置131を制御する。UI表示部23は、タイマー123を制御し、表示装置131の表示間隔を制御する。例えば表示装置131にLEDを用いた場合に、UI表示部23は、LEDの表示間隔が1秒おきの点滅表示を行うため、1秒を計測するためにタイマー123を用いる。
また、UI表示部23はダウンロード制御部26または通信処理部25からのUI表示モードの変更通知を受け、表示する内容を切り替える。
UI表示部23は、UI表示モードの変更通知を受けると、UI表示部23の内部にあるUI表示パラメタテーブル300(図4参照)のUI表示モード310に変更内容を設定する。
UI表示モード310に設定される値と、設定される値に対応するUI表示の一例を、UI表示モードの設定値とLED表示400(図5参照)に示す。この例における機器は、表示装置131として、緑と赤の2つのLEDを持つ。
ダウンロード制御部26は、起動判定部21が更新起動を行う場合に起動判定部21より呼び出される。
ダウンロード制御部26は、通信処理部25およびネットワークI/F132を通して、サーバ103と通信を行う。サーバ103には、通信を通して、新しいバージョンのメインプログラム30に対するアップデータプログラム60を要求する。サーバ103は、アップデータプログラム60の要求をネットワークI/F10より受信すると、通信処理部11がデータ管理部12を通して、データ保存装置13に保存されている指定されたバージョンのアップデータプログラム60を入手し、通信処理部11がネットワーク対応家電機器100のブートローダプログラム50に返答する。
ダウンロード制御部26は、通信処理部25経由でサーバ103よりアップデータプログラム60を入手すると、それをメインメモリ122に保存する。
ダウンロード制御部26は、アップデータプログラム60のダウンロードが完了すると、UI状態保存部27を呼び出し、現在表示中のUI情報およびネットワーク情報を保存する。その後、ダウンロード制御部26は、アップデータプログラム60を起動する。
ダウンロード制御部26は、アップデータプログラム60のダウンロードを開始すると、UI表示部23に対して、UI表示モード310をソフトウェア更新状態415に設定することで、ソフトウェア更新が開始したことをユーザに知らせることができる。なお、さらにUI表示部23が高度な表示機能を有する場合には、ダウンロードの進捗状況を表示することも可能である。
通信処理部25は、ダウンロード制御部26の指示で、ネットワークI/F132を経由してサーバ103と通信を行う。
通信処理部25は、ネットワークI/F132の状況およびサーバ103との通信の状況をUI表示部23に表示するように指示する。例えば、ネットワーク140と接続できない場合には、ネットワーク接続不可状態をUI表示部23に通知する。これにより、UI表示部23は、LEDの早い点滅でユーザにネットワーク140あるいはネットワークI/F132に異常があることを通知する。
通信処理部25は、ダウンロード制御部26の指示で、ネットワークI/F132を経由してサーバ103と通信を行う。
UI状態保存部27は、ダウンロード制御部26から起動され、UI表示部23が持つ、UI表示に関する情報および通信処理部25が持つネットワーク設定情報を、メインメモリ122内のUI状態保持パラメタテーブル500(図13参照)に退避する。
UI状態保持パラメタテーブル500は、UI表示モード510と、表示タイマー値511と、ネットワーク設定値512とから構成される。
UI表示モード510は、UI表示モード310の設定値を退避するための領域である。
表示タイマー値511は、UI表示部23が現在の表示モードを表示開始してからの周期を退避するための領域である。表示タイマー値に退避する値について、図14および図15のタイミングチャートを用いて説明する。
図14は、表示タイマー値511を用いなかった場合のUI表示の例である。この例において、UI表示部23は、0.5秒間隔でLEDを2回点滅させ、その後2秒LEDを消灯する、周期表示を行っている。ブートローダプログラム50でこのUI表示をしている途中で、アップデータプログラム60に切り替わった場合について説明する。
時刻T20において、前記周期表示を開始し、0.5秒のLED ON動作の後に、0.5秒のLED OFF動作、また再び0.5秒のLED ON動作をした後で、LED OFFを行う(時刻T21)。こののち、2秒のLED OFF時間を設けることで、ユーザはLEDが2回点滅していることを認識できる。
この2回目の周期が時刻T22に開始し、2回のLED ON、LED OFF動作を行った(時刻T23)後で、0.5秒後にアップデータプログラム60に切り替わった場合を想定する。この場合、アップデータプログラム60は、UI表示モード310を継承し、時刻T31より0.5秒のLED ON動作を開始する。しかしながら、T31から2回のLED ON、LED OFF動作を行うことで、ユーザからは、LEDが4回点滅しているように見えてしまう。このような表示をすることによりユーザの状態把握を困難にしてしまう可能性がある。
図15を用いて、表示タイマー値511の保存により、図14で説明した問題を解決する手順について説明する。
時刻T20において、0.5秒のLED ON動作の後に、0.5秒のLED OFF動作、また再び0.5秒のLED ON動作をした後で、LED OFFを行う(時刻T21)。こののち、2秒のLED OFF時間の後に、この2周期目が開始する。
時刻T23に、2回のLED ON、LED OFF動作を行った後で、0.5秒後にアップデータプログラム60に切り替わった場合、表示タイマー値には、現在時刻から2回目の周期T22を差し引いた値、この場合には2秒を保存する。ブートローダプログラム20より起動されたアップデータプログラム60は、UI表示モード310を継承し、時刻T31よりUI表示を再開する。この場合、表示タイマー値511に2秒が保存されているため、開始周期より2秒経過したところよりUI表示を再開する。このため、2秒間のLED OFFが始まってから0.5秒経過したところより再開し、残り1.5秒の間LED OFFを継続したのちに(時刻T32)、3周期目のLEDの点滅動作を行う。
このように処理することで、UI表示の一貫性を保つことができ、ユーザがソフトウェア更新状態を把握しやすくなる。
ネットワーク設定値512は、通信処理部25よりネットワークI/F132に設定しているアドレス情報など、可変の設定値を退避する。通常アドレス情報の取得には時間がかかるため、ネットワーク設定値512を退避することで、アップデータプログラム60が起動してから、ソフトウェア更新処理を行うまでの時間を短縮することができる。
なお、表示タイマー値511およびネットワーク設定値512については、動作に必須ではないため、メインメモリの領域サイズや、処理負荷を考慮し省略することも可能である。
このようにブートローダプログラム50は、ネットワーク対応家電機器100の起動処理を行う。
ブートローダプログラム50の処理について、フローチャートを用いて詳細に説明する。
図16は、ブートローダプログラム50が起動して、メインプログラム30あるいはアップデータプログラム60を起動する処理のフローチャートである。
ブートローダプログラム50が起動すると、起動判定部21は、最初に起動情報保持部22に起動モード210を問合せる(S201)。
起動判定部21は、起動モード210が「通常起動」値か、「更新起動」値かを確認し(S202)、「通常起動」値であればステップS203を実行する。「更新起動」値であればステップS204を実行する。
起動判定部21は、不揮発性メモリ121上にあるメインプログラム30を実行する(S203)。
起動判定部21は、ダウンロード制御部26を実行する(S204)。
ダウンロード制御部26は、UI表示部23に対して、UI表示モード310を通信未設定411に変更する(S205)。
ダウンロード制御部26は、サーバ103と接続したら、UI表示部23に対して、UI表示モード310をソフトウェア更新状態415に変更する(S206)。
ダウンロード制御部26は、アップデータプログラム60を、サーバ103よりダウンロードする(S207)。
ダウンロード制御部26は、UI状態保存部27を呼び出し、UI表示モード510、表示タイマー値511、ネットワーク設定値512を退避する(S208)。
ダウンロード制御部26は、アップデータプログラム60を実行する(S209)。
図17は、アップデータプログラム60が動作しているときの、ネットワーク対応家電機器100の機能構成の一例を示すブロック図である。すでに説明した図1〜図5と同じ構成要素については同じ符号を用い、説明を省略する。
アップデータプログラム60は、更新起動時において、ブートローダプログラム50により、サーバ103よりダウンロードされ、起動するプログラムである。アップデータプログラム60は、ダウンロード制御部46と、通信処理部42と、UI表示部43と、書込み処理部44と、起動情報保持部45と、UI状態読取部47とから構成される。
ダウンロード制御部46は、UI状態読取部47を実行し、UI表示状態およびネットワーク設定を復元する。
ダウンロード制御部46は、通信処理部42経由でサーバ103に対して、現在のバージョンより新しいメインプログラム30をダウンロードする。サーバ103は、ネットワーク対応家電機器100から、指定されたバージョンの取得要求を、ネットワークI/F10で受信し、通信処理部11が処理する。通信処理部11は、データ管理部12に対して、データ保存装置13に保存されている、指定されたバージョンのメインプログラム30を要求して取得し、その結果をネットワークI/F10経由でネットワーク対応家電機器100に返答する。
なおダウンロード制御部46は、メインプログラム30のダウンロードを開始すると、UI表示部43に対して、UI表示モードをソフトウェア更新状態415に設定することで、ソフトウェア更新処理が継続していることをユーザに知らせることができる。なお、さらにUI表示部43が高度な表示機能を有する場合には、ダウンロードの進捗状況を表示することも可能である。
通信処理部42は、ダウンロード制御部46より、サーバ103への新バージョンのメインプログラム30の取得要求を受け、ネットワークI/F132およびネットワーク140を経由してサーバ103に要求を行う。
ダウンロード制御部46は、ダウンロードしたメインプログラム30を用いて、書込み処理部44に対して不揮発性メモリ121のメインプログラム30を更新するように指示する。
ダウンロード制御部46は、不揮発性メモリ121のメインプログラム30の更新が完了すると、起動情報保持部45に対して、不揮発性メモリ121内の起動情報パラメタテーブル200の、起動モード210の値を「通常起動」値に書替えるように指示する。
通信処理部42は、ネットワーク140との接続状態や、サーバ103との接続状態について、UI表示部43に対して表示モードを設定し、ユーザにネットワーク140やサーバ103との接続状態を通知する。
UI表示部43は、出力I/F127を使って、表示装置131を制御する。UI表示部43は、タイマー123を制御し、表示装置131の表示間隔を制御する。例えば表示装置131にLEDを用いた場合に、UI表示部43は、LEDの表示間隔が1秒おきの点滅表示を行うため、1秒を計測するためにタイマー123を用いる。
また、UI表示部43は、ダウンロード制御部46、通信処理部42および書込み処理部44からのUI表示モードの変更通知を受け、表示する内容を切り替える。
UI表示部43は、UI表示モードの変更通知を受けると、UI表示部43の内部にあるUI表示パラメタテーブル300(図4参照)のUI表示モード310に変更内容を設定する。
UI表示モード310に設定される値と、設定される値に対応するUI表示の一例については、前記のUI表示モードの設定値とLED表示400(図5参照)に示した通りある。
書込み処理部44は、ダウンロード制御部46からの指示を受け、ダウンロード制御部46がダウンロードしたメインプログラム30を用いて、現在記録されている不揮発性メモリ121に記録されているメインプログラム30を上書きして更新する。
書込み処理部44は、不揮発性メモリ121への書込みがエラーの場合に、UI表示部43に対してUI表示モード310を不揮発性メモリ書込みエラー417に変更するように通知し、ユーザに異常を知らせる。
起動情報保持部45は、ダウンロード制御部46によるダウンロードの完了時に、不揮発性メモリ121内の起動情報パラメタテーブル200の、起動モード210の値を「通常起動」値に書替える。
UI状態読取部47は、ダウンロード制御部46より呼び出され、メインメモリ122に保存されているUI状態保持パラメタテーブル500から、UI表示モード510および表示タイマー値511を読取って、UI表示部43に設定する。
UI状態読取部47は、UI状態保持パラメタテーブル500から、ネットワーク設定値512を読取り、通信処理部42経由で、ネットワークI/F132にセットする。
このようにアップデータプログラム60は、サーバ103からの家電133の最新のメインプログラム30をダウンロードし、現在記録されている不揮発性メモリ121のメインプログラム30を書替えることで更新処理を行う。
アップデータプログラム60の処理について、フローチャートを用いて詳細に説明する。
図18は、ブートローダプログラム50より、アップデータプログラム60がダウンロードされ、起動した後の処理のフローチャートである。
アップデータプログラム60は起動すると、ダウンロード制御部46を実行する(S221)。
ダウンロード制御部46は、UI状態読取部47を起動し、UI表示モード、表示タイマー値、ネットワーク設定情報を読取り、UI表示部43および通信処理部42に復元指示する(S222)。
ダウンロード制御部46は、サーバ103より現在のメインプログラム30より新しいメインプログラム30を指定してダウンロードする(S223)。
ダウンロード制御部46は、サーバ103よりダウンロードしたメインプログラム30を不揮発性メモリのメインプログラム30が書かれている領域に上書きする(S224)。
なお、ステップS223およびS224について、すべてのメインプログラム30をダウンロードしてから不揮発性メモリ121に記録してもよいし、メインメモリ122の節約のため、メインプログラム30の一部をダウンロードして不揮発性メモリ121の一部を書替えていく方式も可能とする。
ダウンロード制御部46は新しいバージョンのメインプログラム30のすべての領域をダウンロードし、かつ不揮発性メモリ121への書込みが正常に完了すると、起動情報保持部45の起動モードに「通常起動」値を設定する(S225)。
ダウンロード制御部46は、再起動処理を行い、ブートローダプログラム50を起動する(S226)。
本実施の形態により、不要な不揮発性メモリ121を持つことなくコストダウンを図ることができ、かつ実施の形態1で課題であった、ソフトウェア更新方式において、複数プログラムを起動する際のUIの一貫性を保つことができ、ユーザが動作を把握しやすくなる。ひいては家電機器におけるカスタマサポートで機器の状態を問合せる際に、間違った情報を伝える可能性が下がりコストダウンにつながる。
また、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。