図1は、本発明を実現するのに使用されるローダ10のフローチャートである。図2は、上記フローチャート及び図1によって示されるローダ10のアルゴリズムを実行可能な典型的なセットトップボックス内のハードウェア50のブロック図である。
図2を参照するに、セットトップボックスのハードウェア50は、入出力コントローラ60の直接的な制御の下で動作するフロントエンド62を有する。フロントパネルコントロール64は、リモコンとすることが可能であり、入出力コントローラ60にコマンドを与える。入出力コントローラ60はまた、IEEE1394インタフェース66又はRS232インタフェース68を介しデータを送受信することが可能である。セットトップボックスハードウェア50によって受信されるデータは、フロントエンド62に入力され、その後、メモリ58に置かれる。メモリ58は、揮発性又は不揮発性メモリとすることが可能であり、好ましくは、あるタイプのDRAMである。セットトップボックスを実行するシステムソフトウェアは、典型的には、フラッシュメモリなどの不揮発性タイプのメモリ内に配置される。例えば、EEPROM、FLASHメモリ又は電池駆動DRAMなどの他のタイプの不揮発性メモリがあり、そのすべてが書き込み可能であるが、システムの電力が除去されると、それらのコンテンツを失うことはない。FLASH52は、現在のバージョンのシステムソフトウェアを保持するため、本発明の好適な実施例によって利用されるフラッシュメモリである。セットトップボックスハードウェア50は、CPUバス75を介しCPU70の制御の下で動作する。CPU70とFLASH52に加えて、DRAM54とメモリ56もまた、CPU70によって利用可能なリソースとしてCPUバス75上に配備される。さらに、CPU70は、独立した専用のバスを介しビデオグラフィックス72とインタフェースをとる。この好適な実施例によって示されるように、ビデオグラフィックス72は、少なくとも1つのメモリリソースを有する。
好ましくは、セットトップボックスハードウェア50において、そして典型的にはデジタルテレビドメイン内では、受信機(セットトップボックス又はデジタルテレビのための)のシステムソフトウェアは、フラッシュメモリが不揮発性であり、書き込み可能であるため、大部分はフラッシュメモリに格納される。FLASH52は、システムソフトウェアを格納するのに利用される好適な実施例のうちのフラッシュメモリである。セットトップボックスハードウェア52は、書き込み可能な不揮発性メモリ内のシステムソフトウェアを更新可能であるため、フラッシュメモリを用いてシステムソフトウェアを保持する。EEPROMや電池駆動不揮発性メモリなど、書き込み可能な他のタイプの不揮発性メモリが存在するが、設計及び製造の簡単さ、集積密度及び費用のため、フラッシュメモリが好適な実施例によって好ましい。
セットボックスハードウェア50において、典型的にはデジタルテレビドメイン内において、典型的には、セットトップボックスのシステムソフトウェアに対する更新が、フロントエンド62によって受信され、一時的にメモリ58に配置される。新しいシステムソフトウェアは、典型的には、配信ストリーム内の別のサービスを介し配信される。システムソフトウェア更新を実行するため、セットトップボックスはまず、新しいシステムソフトウェアを含むサービスを検出し、その後、この新しいシステムソフトウェアをメモリ58にロードし、最後に(新しいシステムソフトウェアが正しいことを検証した後)、新しいシステムソフトウェアを、この好適な実施例ではFLASH58メモリである特定タイプの不揮発性メモリに格納する。
ソフトウェアの観点から、好適な実施例は、セットトップボックスの受信機部分が2つの基本的コンポーネントを有することを想定する。第1コンポーネントは、セットトップボックス上で実行されるシステムソフトウェアであり、第2コンポーネントは、システムソフトウェアへのアップグレードを抽出するローダ10である。
システムソフトウェアは、受信機の通常の動作を提供するソフトウェアである。ローダ10は、システムソフトウェア更新サービスを検索し、実際のソフトウェアアップグレードを実行するソフトウェアである。システムソフトウェアとローダ10は、従来、同時に実行することはできなかった。
受信機の現在の実現形態は、システムソフトウェアとローダの両方の内部においてシステムソフトウェア更新サービスを検索する機能を有する。これら従来の実現形態は、完全には互換的でない検索機能をもたらすことが可能である。この状況は、システムソフトウェア更新の抽出において不整合性を導く可能性がある。
本発明は、ローダ10が2つの異なるモードにより開始可能となるように拡張される機能を有するローダ10を提供することによって、上記問題点を解決する。第1モードは、ローダ10がシステムソフトウェア更新サービスを検索することを可能にする。第2モードは、ローダ10がシステムソフトウェア更新サービスを検索することを可能にし、ローダ10が当該サービスを検出する場合、それはシステムソフトウェア更新の実行を開始する。第1モードは、現在のローダ実現形態では提供されていない。本発明は、システムソフトウェア更新サービスを自ら検索せず、代わりに、別のローダ10を用いて上述の第1モードと同様に、システムソフトウェア更新サービスを検索する機能を実行するシステムソフトウェアを提供する。
上述のように、ローダ10とシステムソフトウェアは、典型的には同時には実行しない。典型的には、フラッシュ又はEEPROMなどの不揮発性メモリ内の位置は、ローダ10又はシステムソフトウェアが、電源オンへの切り替え後、又はリセットの実行後、開始されねばならないか示すのに利用される。さらに、フラッシュやEEPROMなどの不揮発性メモリ内などの当該不揮発性メモリは、ローダとシステムソフトウェアとの間で情報(例えば、システムソフトウェア更新サービスを参照するロケータなど)をわたすのに利用される。システムソフトウェア更新サービスを検出するため、システムソフトウェアにローだ10を使用させる1つの方法は、以下の通りである。すなわち、受信機がスタンバイに移行しようとするとき、システムソフトウェアはローダに情報をわたし、その後受信機をリセットする。受信機は、ローダ10がシステムソフトウェア更新サービスを検索する第1モードによりローダ10を開始する。ローダ10が検索を終了すると、それはスタンバイモードに受信機を置く。受信機が再びオンされると(すなわち、スタンバイモードから離れると)、システムソフトウェアは、ローダ10がシステムソフトウェア更新サービスを検出したかチェックする。フラグの設定、ソフトウェアのセマフォの変更、システムソフトウェアによる対応する動作を可能にすることなど、システムソフトウェアがローダ10によって返される状態を検証可能な多数の方法が存在する。ローダ10が更新が利用可能であることを示す場合、システムソフトウェアは、当該サービスに調整され、当該更新をセットトップボックスにダウンロードするのに必要な任意の情報を抽出する。
図1は、本発明の好適な実施例のローダ10の動作を示すフローチャートである。本発明の好適な実施例によって示されるようなローダ10は、典型的には、ここではコールドブートと呼ばれるシステムが最初にオンされると、開始される(15)。しかしながら、多数のルーチンがローダ10を起動可能であるということに留意すべきである。本発明の好適な実施例は、動作モード又はスタンバイモードの何れかにより行われる図1のアルゴリズムへの呼び出しを説明する。図1に示されるアルゴリズムの実行は、一般にはスタート15として呼ばれる。呼び出されると(最初のオン又はモード変更中など)、ローダ10は2つのタスクを実行する。第1タスクは、ソフトウェア画像が現在システムにある画像をチェックする現在画像を検証13することである。現在画像の検証13は、それが損傷しているか、好ましくは、当該画像のチェックサム又はCRC(Cyclic Redundancy Checksum)を計算することによって実現されるか判断するため、現在画像をチェックする。CRCは、2つの画像又はファイルが同一であるか決定することが可能である。CRC機能は、典型的には、画像又はファイルの各バイトを処理する。画像又はファイルにおける相違は、異なるCRC数を生成するであろう。しかしながら、現在画像を検証する他の実現形態が可能であり、当業者には容易に明らかとなるであろう。
第2タスクは、強制されたダウンロードシーケンス12をチェックするためである。本発明によって想定されるような強制されたダウンロードシーケンスは、リモコン又は受信機の所定のボタンシーケンスを入力することによって、セットトップ装置のホームユーザにより起動可能である。さらに、強制されたダウンロードシーケンスは、修理店のサービススタッフによって起動可能である。起動されると、強制されたダウンロードシーケンスは、ここで標準画像と呼ばれるものを抽出する。この標準画像は、当初セットトップ装置に配置されていた画像である。
現在画像の検証13を実行する前に、必要なシーケンスが現在画像の検証13を行う前に、強制されたダウンロードシーケンスを開始するよう入力されていなかった場合、強制されたダウンロードシーケンスについてチェックを行う実施例が考えられる。しかしながら、好適な実施例は、現在画像を検証する前に、ダウンロードシーケンス12のチェックを実行しない。なぜなら、強制されたダウンロードシーケンスのチェックは、破滅的なイベントに関するものであり、システムに入力がなされることを要求し、ほとんど実行される必要がない機能について時間を要する。好適な実施例では、強制されたダウンロードシーケンス12のチェックは、現在画像の検証13とパラレルに実質的に実行される。強制されたダウンロードシーケンス12と現在画像の検証13の各機能は、互いに独立に実行されてもよく、この好適な実施例では独立に行われる。本好適な実施例はまた、強制されたダウンロードシーケンス12と現在画像の検証13の各機能が、パラレルに実行される2つの機能として実現されることを可能にするシステム内のハードウェアを提供する。
ローカルダウンロードサーバのテスト14は、ローダが強制されたダウンロードシーケンス12を実行した後、ダウンロード可能な利用可能なアップグレードを有するダウンロードサーバを検索するであろう。ローカルダウンロードサーバは、ユーザが修理のためシステムを持ち込み可能なローカルショップにおいて、又はセットトップボックスと同じ場所にあるPC上で実行されるソフトウェアとすることが可能である。ローカルダウンロードサーバのテスト14は、システムのソフトウェア画像がダメになり、何れのソフトウェア画像も現在配信されていない例において有用である。ローカルダウンロードサーバの使用は(家庭又は店において)、ユーザが再びシステムに正しいソフトウェア画像を取得することを可能にする。ローカルダウンロードサーバが緊急の状況において利用されることは、本好適な実施例の意図である。ダウンロードサーバが検出される場合、当該サーバにおいて利用可能な画像は、選択された画像となるであろう。
ローカルダウンロードサーバのテスト14が実行されると、判定ブロック41はローカルダウンロードサーバのテスト14の結果を特定し、これに応じてプログラム処理を順序を決定する。判定ブロック41が何れのダウンロードサーバも検出されないと判断する場合、判定ブロック42は、前述のように強制されたダウンロードシーケンスが検出されたか判断するであろう。判定ブロック42が、強制されたダウンロードを検出しないと判断した場合、ローダ10は、画像の選択16を実行する。画像の選択16は、ローダ10がソフトウェア更新を配信された信号から検索するステップである。典型的な処理では、ローダ10は、ダウンロードサーバ又は強制されたダウンロードを検出せず、従って、画像の選択16が通常は実行されるであろう。ソフトウェア更新が利用可能である場合、ローダ10は、当該更新をセットトップボックスに抽出するため、選択された画像のダウンロード28の機能を実行するであろう。判定ブロック43は、可能な損傷について画像をテストするであろう。判定ブロック43が、現在画像が損傷していると判断する場合、ローダ10は更新をセットトップボックスに抽出するため、選択された画像のダウンロード28を実行する。典型的には、1つの特定のシステムについて任意の時点において配信される1つのみのソフトウェア画像が存在するであろう。上述のように、判定ブロック41がダウンロードサーバが検出されたと判断すると、当該サーバから利用可能な画像が選択された画像となるであろう。
判定ブロック44は、選択された画像が現在画像であるか特定するであろう。判定ブロック44が選択された画像がセットトップボックス内で現在使用されている画像と同一であると判断することが、全く可能性がある。現在画像が選択された画像である場合、フラッシュメモリに現在書き込まれている画像は正しいものであり、当該ルーチンが終了することを仮定する。損傷についての画像のテストにおける判定ブロック43と、現在画像が選択された画像であるか特定する判定ブロック44によって実行される各機能は、1つの機能に合成可能であるということは、当業者に容易に明らかであろう。選択された画像が現在画像と同一であるという可能性があるということに留意すべきである。これは典型的には、ソフトウェアアップグレードの成功後に発生し、1つのソフトウェア画像が何ヶ月又は何年も配信されるかもしれないため、珍しいことではない。
判定ブロック41がダウンロードサーバが検出されると判断する場合、ローダは、前述のように当該サーバから更新を抽出するため、選択された画像のダウンロード28を実行する。
選択された画像のダウンロード28が実行された後、選択された画像は、判定ブロック46においてそれが正しくダウンロードされたことを検証するためテストされる。選択された画像のダウンロードが成功したと判定ブロック46によって判断された場合、ダウンロードされた画像の検証20は、当該画像が損傷しているか判断し、判定ブロック47は、これに応じてプログラム処理を分岐させる。判定ブロック47がダウンロードされた画像が損傷していると判断する場合、既存の画像をロードするため、現在画像のロード26に分岐される。判定ブロック47がダウンロードされた画像が損傷していないと判断する場合、画像はフラッシュメモリに書き込まれ、ローダ10はシステムソフトウェア処理を返す。判定ブロック49が当該書き込みが不成功であると判断した場合、処理は標準画像のダウンロード18に分岐する。
選択された画像のダウンロード28に戻って、選択された画像のダウンロードが判定ブロック46によって失敗しなかったと判断される場合、現在画像のロード26によって既存の画像を復元するためのステップが行われる。その後、既存の画像は、判定ブロック48によって損傷についてテストされる。既存の画像に損傷がないと判明すると、プログラム処理は、標準画像のダウンロード18に分岐し、再び判定ブロック46は、それが標準画像であるときのみ当該画像をテストする。
再び判定ブロック41に戻って、ダウンロードサーバが検出されないと判断されると、強制されたダウンロードシーケンスの指標が存在するか特定するため、プログラムは判定ブロック42に分岐する。強制されたダウンロードシーケンスが検出される場合、処理は、当初の画像をセットトップボックスに抽出するセットトップボックスへのシーケンスのダウンロードを開始するであろう。その後、処理が再び判定ブロック46に分岐し、ダウンロードの適切さがチェックされる。判定ブロック46が当該画像が適切にダウンロードされたと判断する場合、当該画像は検証され、前述のように、フラッシュメモリに書き込まれる。判定ブロック47が当該画像が損傷していると判断すると、システムは現在画像のロード26を実行する。現在画像の検証が成功すると、当該ルーチンは終了24する。現在画像が適切に検証されていない場合、画像を訂正及び復元するためのステップが実行される。
本発明は、システムソフトウェアとローダ10が互いに完全に認識しているため、ローダが何れかの方法により互換的であることを保証しながら、システムソフトウェア更新サービスを検索する機能を実現する効果を提供する。好ましくは、ローダ10とシステムソフトウェアは、同一のコードを使用する。さらに、ローダ10とシステムソフトウェアの構成に対する集中化されたアプローチを有するシステムソフトウェアのサイズは、低減される。好適な実施例は、ETSI TS 102006 VI.2.1(2002−10),Digital Video Broadcasting(DVB);Specification for System Software Update in DVB Systemsに詳述されるようなDVBシステムのシステムソフトウェア更新の仕様を利用する。
上記説明は、発明者によって最も好適な実施例を説明している。これらの実施例の変形が、当業者に容易に明らかとなり、これに応じて、本発明の範囲は上述の実施例によって限定されるものではなく、添付された請求項によって決定されるべきである。