(57)【要約】【課題】セットトップ受信機のオペレーティングシステム／制御プログラムの機能を決定して、上記セットトップ受信機を動作するソフトウェアコンポーネントおよび周波数取得方法を含む、ケーブルテレビのセットトップ受信機および方法。【解決手段】本発明のソフトウェアコンポーネントは、「ブートローダー」として呼ばれ、上記セットトップ受信機内に含まれたプロセッサ上で実行し、そして上記セットトップ受信機のオペレーティングシステム／制御プログラムの機能およびバージョンを決定する。上記オペレーティングシステム／制御プログラムが更新されるべきであると上記ブートローダーが判定した場合、上記ブートローダーは、ダウンロードシーケンスを開始して、上記ダウンロードシーケンスの実行により、上記適切なオペレーティングシステム／制御プログラムが上記セットトップ受信機にダウンロードされることが可能になる。【選択図】図１
2006101553.tif 000002
【特許請求の範囲】
【請求項１】
セットトップケーブルテレビの制御デバイスを動作させる方法であって、該方法は、
チューナー内で信号を受信する工程と、
該信号を該チューナーに接続された受信機に伝達する工程と、
該信号を該受信機に接続されたプロセッサに伝達する工程と、
第１のコード部分を実行する工程であって、該第１のコード部分は該プロセッサに接続された第１のメモリ要素内に常駐し、該第１のコード部分は該第１のメモリ要素に格納されている第２のコード部分の実行とは独立に、かつ、該第２のコード部分の実行の前に実行される、工程と、
該第２のコード部分が該制御デバイスを動作させることが可能か否かを決定する工程と、
該第２のコード部分が該制御デバイスを動作させることが可能であるという決定に応答して、該第２のコード部分が該制御デバイスを動作させることを許可する工程と、
該第２のコード部分が該制御デバイスを動作させることが可能でないという決定に応答して、代替の第２のコード部分を第２のメモリ要素にダウンロードし、該代替の第２のコード部分に関するセキュリティデータをチェックすることにより、該代替の第２のコード部分のソースを確認および確証する工程と
を包含する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願との相互参照）
本願は、２０００年２月４日に出願された第６０／１８０，２８４号の「ＳＥＴＴＯＰ  ＣＡＢＬＥ  ＴＥＬＥＶＩＳＩＯＮ  ＣＯＮＴＲＯＬ  ＤＥＶＩＣＥ
ＡＮＤ  ＭＥＴＨＯＤ  ＩＮＣＬＵＤＩＮＧ  ＢＯＯＴＬＯＡＤＥＲ  ＳＯＦＴＷＡＲＥ  ＡＮＤ  ＣＯＤＥ  ＶＥＲＳＩＯＮ  ＴＡＢＬＥ  ＦＯＲ  ＭＡＩＮＴＡＩＮＩＮＧ  ＡＮＤ  ＵＰＤＡＴＩＮＧ  ＳＥＴＴＯＰ  ＲＥＣＥＩＶＥＲ  ＯＰＥＲＡＴＩＮＧ  ＳＹＳＴＥＭ  ＳＯＦＴＷＡＲＥ」という名称の同時係属中の仮出願に対して優先権を主張し、そしてこの出願日の利益を主張する。同文献を本明細書において参考として援用する。
【０００２】
（技術の分野）
本発明は概して、ケーブルテレビに関し、具体的には、セットトップ受信機のオペレーティングシステムソフトウェアを更新するソフトウェアコンポーネントおよび周波数取得方法を含む、セットトップ受信機および方法に関する。
【背景技術】
【０００３】
（発明の背景）
ケーブルテレビシステムは通常、各顧客の敷地内で受信機またはセットトップボックスを用いて、ケーブルインフラストラクチュアを介して、中央位置（通常、当該産業において「ヘッドエンド」と呼ばれる）からユーザに伝送される番組内容を受信してデコードする。セットトップボックスは通常、受信機、デコーダー、処理回路部およびオペレーティングシステムソフトウェアを含む。セットトップボックスは、ケーブルを介して番組内容情報を受信し、そしてテレビセットを介して受信した信号を視聴者に提示し得るフォーマットに変換することが可能である。従来のセットトップボックスに含まれるオペレーティングソフトウェアは通常、メモリデバイス内に含まれ、そしてセットトップボックスが製造されるときに固定される。この設備は「ファームウェア」と呼ばれる場合がある。これは、変更または更新するには、オペレーティングソフトウェアは、既存のメモリデバイスを取り外して、新しいソフトウェアコードまたは更新されたソフトウェアコードを含む新しいデバイスを挿入することを必要とするからである。
【０００４】
同様に、ソフトウェアコードによって、セットトップボックスが番組内容信号を受信してデコードすることが不可能になり得る問題は、コードを含むデバイスのみを交換することによって対処し得るか、または遠隔でプログラム可能なメモリ要素に関しては、ヘッドエンドとセットトップボックスとの間に別個の通信リンクを要件とすることによって対処し得る。コードがファームウェア内に常駐する場合、手動での取り外しおよび交換が必要となる。残念ながら、ソフトウェアコードを交換するには、顧客の場所まで行って変更を行う出費のかさむ訪問が必要であり、または顧客がセットトップボックスを工場に返して修理をしてもらう必要がある。同様に、別個の通信リンクを介してオペレーティングソフトウェアコードを更新することは、高くつきそして非効率的である。この方法を用いると、異なる製造業者のセットトップボックスグループまたはセットトップボックスを更新することが不可能になる。
【０００５】
したがって、コードが常駐するメモリデバイスを物理的に取り外しそして交換することなく、セットトップボックスのオペレーティングソフトウェアをアップグレードする方法を有することが望ましい。
【発明の開示】
【課題を解決するための手段】
【０００６】
（発明の要旨）
本発明の好適な実施形態は、セットトップ受信機のオペレーティングシステムソフトウェアを更新するソフトウェアコンポーネントおよび周波数取得方法を含む、セットトップ受信機および方法を提供する。
【０００７】
アーキテクチャにおいて、本発明の好適な実施形態はセットトップケーブルテレビ制御デバイスを含み、上記セットトップケーブルテレビ制御デバイスは、チューナー、上記チューナーに接続された受信機、および上記受信機に接続されたプロセッサを含む。上記セットトップケーブルテレビ制御デバイスはさらに、上記プロセッサに接続された第１のメモリ要素、上記プロセッサに接続された第２のメモリ要素、上記第１のメモリ要素内に永久に常駐する第１のコード部分、および上記第１のメモリ要素内に常駐する第２のコード部分を含み、上記制御デバイスが初期化された際に、上記第１のコード部分は上記プロセッサによって実行されて、上記第２のコード部分が上記制御デバイスを動作することが可能であるか否かを判定する。
【０００８】
本発明の好適な実施形態はさらに、セットトップケーブルテレビ制御デバイスを動作する方法として概念化され得る。上記方法は、チューナー内に信号を受信する工程、上記信号を上記チューナーに接続された受信機に伝達する工程、および上記信号を上記受信機に接続されたプロセッサに伝達する工程を含む。上記方法はさらに、第１のコード部分を実行する工程であって、上記第１のコード部分は上記プロセッサに接続された第１のメモリ要素内に常駐する、工程、および第２のコード部分を実行する工程であって、上記第２のコード部分は上記プロセッサに接続された第２のメモリ要素内に常駐する、工程を含み、上記制御デバイスが初期化された際に、上記第１のコード部分は上記プロセッサによって実行されて、上記第２のコード部分は上記制御デバイスを動作することが可能であるかを判定する。
【発明を実施するための最良の形態】
【０００９】
（好適な実施形態の詳細な説明）
特許請求の範囲に規定される本発明の好適な実施形態は、添付の図面を参照するとよりよく理解され得る。図面中の構成要素は、相互に対して必ずしも尺度が考慮されているわけではなく、むしろ本発明の原理を明瞭に示す点に重点が置かれている。
【００１０】
図１は、本発明の好適な実施形態のソフトウェアコード（以下「ブートローダー」コードまたは「ブートローダー」と呼ぶ）が常駐するケーブルテレビシステム１００のアーキテクチャを示すブロック図である。ケーブルテレビシステム１００は、接続部１０２を介してセットトップ受信機１５０に接続された中央配信ポイント、すなわちヘッドエンド１０１を含む。ヘッドエンド１０１は、映像配信を担い、そして、セットトップ受信機１５０に制御機能を提供する。この制御機能は、セットトップ受信機１５０に権利を割り当てる機能、およびセットトップ受信機１５０にソフトウェアをダウンロードする機能を含む。接続部１０２は、１つの接続部として示されており、単一方向のダウンストリームの直交振幅変調（ＱＡＭ）チャンネルを含む。このチャンネルを介して番組映像データがヘッドエンド１０１からセットトップ受信機１５０に伝送される。接続部１０２はさらに、双方向の１／４位相シフトキーイング（ＱＰＳＫ）通信チャンネルを含み、このチャンネルを介して制御情報がヘッドエンド１０１とセットトップ受信機１５０との間で交換される。さらに、本発明の当該技術分野の当業者によって理解されるように、多くの中間デバイスおよび種々の種類のネットワーク移送媒体も通常、接続部１０２内に含まれる。帯域外（ＯＯＢ）トランシーバー１０５によって示されるように、接続部１０２のＱＰＳＫチャンネルを用いた情報交換は、ＱＡＭチャンネルから独立しており、このチャンネルに対してセットトップ受信機１５０がチューニングされる。
【００１１】
セットトップ受信機１５０はチューナー１０４を含む。チューナー１０４は、接続部１０２を介して無線周波数（ＲＦ）信号を受信して、このＲＦ信号を接続部１０９を介してＱＡＭ受信機１０６に送達する。ＱＡＭ受信機１０６は、接続部１０９を介して受信したＱＡＭ信号をデコードし、そして、接続部１１１を介して、デジタルデータストリームをフィルタブロックおよび（直接記憶アクセス）ＤＭＡチャンネル１０８に提供する。フィルタブロックおよびＤＭＡチャンネル１０８は、広帯域会話型プロセッサ（ＢＩＰ）１０７の一部である。ＢＩＰ１０７はさらに中央処理装置（ＣＰＵ）１１９を含む。
【００１２】
ＣＰＵ１１９は、通信バス１１４を介して、動的ランダムアクセスメモリ（ＤＲＡＭ）２５０、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）１２６およびフラッシュメモリ２００と通信する。ＢＩＰ１０７はさらに、シリアル制御バス１１６を介しても通信を行い、チューナー１０４およびＱＡＭ受信機１０６の動作を制御する。ＢＩＰ１０７はさらに、接続部１１７を介して、ＱＡＭ受信機１０６から受信したデジタルデータストリームをＭＰＥＧデコーダー１１２に伝達して、テレビセットに伝送する。本明細書で説明する場合を除き、チューナー１０４、ＱＡＭ受信機１０６、ＢＩＰ１０７およびＣＰＵ１１９の動作は従来と同じであり、ケーブルテレビシステムの当業者に公知である。
【００１３】
本発明の１局面によれば（図２〜図５を参照して詳細に説明する）、フラッシュメモリ２００は、フラッシュメモリ２００のライトプロテクト部分にブートローダーコード３００を含む。ブートローダーコード３００は通常、フラッシュメモリ２００の３２キロバイトの最初のセクタ（セクタ０）内に適合する。
【００１４】
セットトップ受信機１５０はさらにフロントパネルディスプレイ１２１を含む。フロントパネルディスプレイ１２１を用いて、セットトップ受信機１５０の状態をユーザに伝達し、そしてキーボード１２４を含む。キーボード１２４は、ユーザが種々の制御情報をセットトップ受信機１５０に入力することを可能にするボタン（図示せず）を含む。セットトップ受信機１５０はさらにデータポート１２７も含む。データポート１２７は、例えば、スマートカード１２９として一般的に公知のポータブルメモリ要素から、接続部１２８を介してソフトウェア入力を受信し得る。
【００１５】
図２は、図１のフラッシュメモリ２００（内部に本発明の好適な実施形態のブートローダーが配置される）およびＤＲＡＭ２５０のコンテンツのレイアウトを示すブロック図であり、このＤＲＡＭ２５０はダウンロード動作の間に用いられるものである。図２のＤＲＡＭ２５０は、ヘッドエンド１０１（図１）からオペレーティングシステム／制御プログラムソフトウェアをダウンロードする間の構成を示す。ＤＲＡＭ２５０は複数の異なる部分を含む。例えば、部分２５１は変数を含み、部分２５２はパケットバッファを含み、部分２５４はダウンロードしたソフトウェアの制御構造を含み、そして部分２５６は画像収集バッファであり、この内部にダウンロードしたソフトウェアの画像（複製）がフラッシュメモリ２００に移行する前に一時的に保存される。画像収集バッファ２５６はＤＲＡＭ２５０の１部であり、この内部にダウンロードしたソフトウェアが一時的に保存される。次いで、ダウンロードしたソフトウェアの番組画像は、接続部２０２を介してＤＲＡＭ２５０からフラッシュメモリ２００に移行される。
【００１６】
フラッシュメモリ２００はメモリ部２０１を含み、この内部に、ダウンロードしたオペレーティングシステム／制御プログラムが格納されたり、またはＤＲＡＭ２５０からメモリ部２０１に書き込まれる。フラッシュメモリ２００はさらに、セクタ２５７も含み、この内部に、本発明のブートローダーコード３００が常駐する。セクタ２５７は好適には、通常、フラッシュメモリ２００内で「セクタ０」として呼ばれる第１のセクタであり、そしてフラッシュメモリ２００のライトプロテクト部分である。このように、セクタ２５７内に常駐するブートローダーコード３００は上書きされず、そして常に存在して、セットトップ受信機１５０が動作不能である場合に回復機能を実行する。ブートローダーはファームウェア内に常駐し、ダウンロードを介して変化され得ない。
【００１７】
ブートローダー３００は１セットの命令であり、セットトップ受信機１５０をリセットした直後、セットトップ受信機１５０内のＣＰＵ１１９によって直接実行される。ブートローダー３００は検査手順および回復手順を含む。したがって、オペレーティングシステムソフトウェアのバランスが崩れたり、またはセットトップ受信機１５０からオペレーティングシステムソフトウェアのバランスが失われた場合でも、基本機器動作が保証される。システムリセットの結果得られるシステム構成において、ブートローダー３００がリセットまたは再スタートの間にＢＩＰ１０７によってアクセスされ得るようにフラッシュメモリ２００が適切な物理アドレスに配置される。図２に示すように、そして例示のみを目的として、ブートローダー３００はフラッシュメモリ２００のメモリセクタ「０」内に常駐する。以下は、ブートローダーの一般的な機能を説明する。この機能を、図３、図４および図５を参照して以下により詳細に説明する。
【００１８】
ブートローダー３００は、自身に巡回冗長検査（ＣＲＣ）を実行することによってその完全性をチェックし、そして、セットトップ受信機１５０のフロントパネルディスプレイ１２１（図１）上の発光ダイオード（ＬＥＤ）を介して任意の故障を報告する。ブートローダー３００はさらに、フラッシュメモリ２００の部分２０１内にオペレーティングシステム／制御プログラムソフトウェアの存在をチェックし、そして正しい画像が確認された場合、オペレーティングシステムソフトウェアを始動する。ブートローダー３００はさらに、ブートローダー３００が、フラッシュメモリ２００内にオペレーティングシステム／制御プログラムソフトウェアが無いことまたはこの正しくないバージョンを検出した場合、ヘッドエンド１０１から接続部１０２（図１）を介してオペレーティングシステム／制御プログラムをダウンロードする。このダウンロードの前に、接続部１０２上に正しいダウンロードストリームを検索する場合があり、そして、このダウンロードは、画像運搬パケットの収集およびフラッシュメモリのプログラミングを含む。ブートローダー３００はさらに、スタートアップの間キーボード１２４（図１）上のキーを押すイベントを処理し、そしてリクエストに応じて補助機能を実行する。このような機能は、例えば、強制型ダウンロードを含み、これはオペレーティングシステム／制御プログラムが、有効性、技術者のテストモード、およびオペレーティングシステム／制御プログラムの代わりに、診断コードをロードしてこれを実行する機能をチェックする場合にも行われる強制型ダウンロードである。
【００１９】
ブートローダー３００はさらに、データポート１２７を介して、またはスマートカード１２９（図１）などのオプションのスマートカードデバイスからソフトウェア画像を（ＤＲＡＭ２５０に）ロードし得る。ブートローダー３００はさらに、オペレーティングシステム／制御プログラムアップグレードサービスも提供し、このサービスは、オペレーティングシステム／制御プログラムソフトウェア２０１をアップグレードする、遅延型リクエストの自動処理を含む。ブートローダー３００はさらに、緊急時の再ロードリクエストを収容する。ブートローダーはさらに、ダウンロード画像のセキュリティデータのチェックをイネーブルにして、ソースを確認および確証する機能を内蔵する。
【００２０】
図３〜図５は、図２のブートローダー３００の動作の種々の局面を示すフローチャートである。図３〜図５のフローチャートは、図２のブートローダーソフトウェアの潜在的な実現のアーキテクチャ、機能および動作を示す。この点に関して、各ブロックは、モジュール、セグメントまたはコードの１部を示し、このコードの１部は、１つ以上の実行可能な命令を含んで、指定された論理関数（単数または複数）を実行する。いくつかの別の実現において、ブロックに記載する関数は図３〜図５に記載する順序とは異なって行われ得ることにも留意されたい。以下にさらに明瞭にするように、例えば、図３〜図５に示す連続した２つのブロックは、事実、実質的に同時に実行され得るか、またはブロックは、関与する機能に依存して逆の順序で実行され得る場合がある。
【００２１】
本発明の好適な実施形態のブートローダーの論理は、ソフトウェア、ハードウェアまたはこれらの組み合わせで実現され得る。好適な実施形態（単数または複数）において、ブートローダーの論理は、ソフトウェアまたはファームウェア内で実現され、メモリ内に格納され、そして適切な命令実行システム（マイクロプロセッサ）によって実行される。別の実施形態において、ブートローダー論理は、ハードウェア内で実現された場合、以下の技術のいずれか、または以下の技術の組み合わせによって実現され得る。これらの技術はすべて、当業者に周知であり、例えば、データ信号に論理関数を実現する論理ゲートを有する別個の論理回路（単数または複数）、適切な論理ゲートを有する特定用途集積回路、プログラム可能なゲートアレイ（単数または複数）（ＰＧＡ）、フィールドプログラム可能なゲートアレイ（ＦＰＧＡ）などがある。
【００２２】
さらに、ブートローダーソフトウェアは、実行可能な命令の順序化されたリストを含んで、論理関数を実行するが、これは、例えば、コンピュータベースのシステム、プロセッサを含むシステム、または命令実行システム、装置またはデバイスから命令を取出して、これを実行し得る他のシステムなどの命令実行システム、装置またはデバイスによって、またはこれに接続して用いられる任意のコンピュータ読み出し可能媒体内で実現され得る。
【００２３】
この文書のコンテキストにおいて、「コンピュータ読み出し可能媒体」は、命令実行システム、装置またはデバイスによって、またはこれに接続して用いられるプログラムを含み、格納し、伝達し、伝搬し、または転送し得る任意の手段であり得る。コンピュータ読み出し可能媒体は、例えば、電子、磁気、光、電磁気、赤外線または半導体のシステム、装置、デバイス、または伝搬媒体であり得る（但し、これらに限定されない）。コンピュータ読み出し可能媒体のより具体的な例（包括的でないリスト）は以下を含む。例えば、１本以上のワイヤーを有する電気接続部（電子）、ポータブルコンピュータディスケット（磁気）、ランダムアクセスメモリ（ＲＡＭ）（磁気）、読み出し専用メモリ（ＲＯＭ）（磁気）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）（磁気）、光ファイバ（光）およびポータブルコンパクトディスク読み出し専用メモリ（ＣＤＲＯＭ）（光）を含む。コンピュータ読み出し可能媒体が、紙または別の適切な媒体でさえあり得ることに留意されたい。プログラムは、例えば、紙または他の媒体の光走査を介して、電気的に取り込まれ、次いで、コンパイル、解釈され、またはそうでない場合には、必要に応じて、適切な様態で処理され、次いで、コンピュータメモリ内に保存され得るように、コンピュータ読み出し可能媒体の上にプリントされる。
【００２４】
ここで図３に戻ると、図示されるのは、図２のブートローダー３００のスタートアップ段階の間の処理を示すフローチャートである。ブロック３０１において、セットトップ受信機１５０はリセットされる。これはセットトップ受信機１５０の電源を落とすこと、およびセットトップ受信機１５０を作動して、電源投入を開始することによって達成され得る。または、これはセットトップ受信機１５０のキーボード１２４上に位置するリセットボタンを押すことによって開始され得る。リセットがブロック３０１において実行された後、ブロック３０４において、ＤＲＡＭメモリ２５０がイネーブルにされ、データポート１２７におけるスマートカード１２９の存在が判定される。スマートカードは任意の挿入可能で、ポータブルなメモリデバイスであり得、実行可能なコードを含み、そしてセットトップ受信機１５０のデータポート１２７内に挿入され得る。
【００２５】
ブロック３０６において、スマートカードの存在がブロック３０４において検出されたか否かが判定される。セットトップ受信機１５０内にスマートカードがあり、そしてスマートカードが正しいオーバーライドコードを用いて応答した場合、図２を参照して上述したように、ブロック３０８において、ブートローダー３００は、実行可能な画像をスマートカードからＤＲＡＭ２５０、続いて、フラッシュメモリ２００内にロードし、そしてブートローダーコードの残りの代わりに、新たに取得された制御プログラムソフトウェアを実行する。本発明のこの局面は、ブートローダーコード中に深刻な異常またはバグがある状況を修正する方法を提供する。
【００２６】
ブロック３０６において、セットトップ受信機１５０内にスマートカードがないと判定された場合、ブロック３０７において、ブートローダーコード３００は自身に巡回冗長検査（ＣＲＣ）を実行する。
【００２７】
ブロック３０９において、ブートローダー３０９が動作可能であるとＣＲＣチェックが判定するか否かが判定される。ＣＲＣがチェックしない場合、ブロック３１２において、セットトップ受信機１５０（図１）の故障インジケータ（これはフロントパネルディスプレイ１２１上のＬＥＤであり得る）が点灯して、エラーコードを表示する。この時点において、ブートローダー３００が動作可能であるとＣＲＣが判定したということがブロック３０９において判定された場合のように、ブートローダー３００が依然実行するだけに十分に動作可能であり、スタートアップシーケンスがブロック３１４において続行すると想定される。
【００２８】
次に、ブロック３１４において、ブートローダー３００はキーボード１２４を読み込んで、ユーザによって開始される任意の機能がリクエストされたか否かを判定する。ブートローダー３００はさらに、ＮＶＲＡＭ１２６のＣＲＣをチェックし、そして、キーボード１２４を介したセットトップ受信機１５０に対する任意のキーオーバーライド入力をチェックする。ユーザによって開始される機能は、テスト、保守および製造を支援する補助機能を含む。セットトップ受信機１５０は新しいオペレーティングシステム／制御プログラムソフトウェアをダウンロードするようにされると、既存のソフトウェアが有効性をチェックする場合でさえ、キーオーバーライドが生じる。
【００２９】
ブロック３１９において、ブロック３１４において実行されたＣＲＣチェックがブートローダー３００によって用いられたＮＶＲＡＭ部分の正しいコンテンツを示しているか否かが判定される。壊れたデータが示された場合、ブロック３２１において、エラーメッセージがセットトップ受信機１５０のフロントパネルディスプレイ１２１上に表示され、そしてデフォルトのコンテンツが適用される。これは、ブートローダー３００が任意の保存されたデータを用いず、遅延型ダウンロードリクエスト、最新の既知のダウンロード周波数、最新のＣＶＴバージョンなどのこの次の動作を決定することを意味する。次に、プロセスはブロック３２２において続行する。
【００３０】
ブロック３１９において、ブロック３１４において実行されたＮＶＲＡＭのＣＲＣチェックが正しいＮＶＲＡＭデータを示していると判定された場合、ブロック３２２において、ブートローダー３００は、オペレーティングシステム／制御プログラム２０１（図２）の存在をチェックし、そしてこの完全性をチェックする。この完全性のチェックは、オペレーティングシステムの署名をチェックし、そして制御プログラムソフトウェアのオペレーティングシステム上でＣＲＣチェックを実行することによって実行される。ブロック３２２において、ブートローダー３００はさらに、強制型ダウンロードまたは遅延型ダウンロード（これは以下に説明する）をチェックする。ブロック３２６において、ブート可能な画像がオペレーティングシステム／制御プログラム２０１内に無いと判定された場合、ブートローダー３００は、検索（ｈｕｎｔ）に即入り、そしてシーケンスをダウンロードする（３２７）（これは図４を参照して以下に説明する）。ブロック３２６を参照すると、オペレーティングシステム／制御プログラムソフトウェアの署名およびＣＲＣが、ブート可能な画像の前面に添付された署名エリアのコンテンツを用いてチェックされる。
【００３１】
ブロック３２６において、オペレーティングシステム制御プログラムソフトウェア２０１が動作性をチェックした場合、ブロック３２８において、制御プログラムが開始され、そしてセットトップ受信機１５０の通常の動作がオペレーティングシステム制御プログラムソフトウェア２０１に解放される。すべての上述のチェックがセットトップ受信機１５０の初期化の間に１度実行される。セットトップ受信機１５０の制御をオペレーティングシステム／制御プログラムソフトウェア２０１に渡した後、ブートローダー３００は、いわゆる「ウォッチドッグ」サービスとして公知のサービスを介して、システムの動作の定期チェックを維持する。このように、オペレーティングシステム制御プログラム２０１は、ブートローダー３００を定期的にクエリして、ブートローダーウォッチドッグ回路部をイネーブルにする。この定期的な呼び出しにより、ブートローダー３００は、接続部１０２のＱＡＭ部分上のヘッドエンド１０１から送信される緊急時メッセージをチェックする機会を得る。ウォッチドッグサービスを以下にさらに詳細に説明する。
【００３２】
図４は、図２のブートローダー３００の周波数検索手順を示すフローチャート４００である。オペレーティングシステム／制御プログラム２０１の画像は、接続部１０２（図１）上のＱＡＭチャンネル上の帯域内データストリーム内で配信される。データはＭＰＥＧ（カラー動画像データ圧縮標準規格）パケットのプライベートセクションに埋め込まれ、ＭＰＥＧパケットはこのデータストリーム内に埋め込まれる。これらのパケットは、ＤＲＡＭ２５０、そして画像収集バッファ２５６に収集される。次いで、これらのパケットは、確認の後、図２を参照して説明したように、フラッシュメモリ２００に移行されて、オペレーティングシステム／制御プログラムソフトウェア２０１の実行可能な画像を形成する。本発明の１局面によると、必要な実行可能な画像の最終ダウンロード周波数を決定するために用いられる方法は、コードバージョンテーブル（ＣＶＴ）の受信に基づく。ＣＶＴは、ヘッドエンド１０１から接続部１０２を介して（接続部１０２上のあらゆるＱＡＭチャンネル上で、特別なメッセージの形態で）すべてのセットトップ受信機１５０に送信される。ＣＶＴは接続部１０２上のすべてのデジタル周波数で送信される。ＣＶＴの繰返しレートは好適には１秒当たり１回である。ＣＶＴは、情報の中でも、最終ダウンロード周波数を含む。この最終ダウンロード周波数に対して、セットトップ受信機１５０内のチューナー１０４がチューニングされ、これにより、セットトップ受信機１５０がオペレーティングシステム／制御プログラムのダウンロードを受信し得る。ＣＶＴを含み、そして最終ダウンロード周波数にチューニングされたメッセージを受信した後、セットトップ受信機１５０は、ＤＲＡＭ２５０の画像収集バッファ２５６（図２）内のオペレーティングシステム／制御プログラム２０１の実行可能な画像を収集する。ＣＶＴテーブルのフォーマットを以下のテーブル１に示す。
【００３３】
（テーブル１）
ＣＶＴフォーマット
以下に提示するのは、コードバージョンテーブルのフォーマットである。この階層構造は、ダウンロードを目的として、セットトップの柔軟なグループ化を支援する。ＣＶＴには３つのレベルの割当がある。
１．ＣＶＴは、３バイトのＭＡＣ（媒体アクセス制御）アドレスによって識別されるＯＥＭ（相手先商標製造会社）の下位テーブルに分割される。多くの供給業者からのセットトップが混ざったケーブルシステムにおいて、これは、製造業者に応じて異なるバージョンのソフトウェアをダウンロードする方法を提供する。
【００３４】
２．各ＯＥＭグループ内で、オペレータは論理グループ（例えば、「新しいソフトウェアフィールドテストグループ」、「より多くの金額を支払うほどにＯＳの標準が上がる（ｂｅｔｔｅｒ  ｆｌａｖｏｒ  ｏｆ  ＯＳ  ｆｏｒ  ｐａｙｉｎｇ  ｍｏｒｅ）」、「基本ソフトウェア」、「Ｗｉｎｄｏｗｓ（登録商標）  ＣＥボックス」など）を生成し得る。これはテーブル分割の第２のレベルである。
【００３５】
３．セット内の各ＣＶＴ記録はハードウェアＩＤ範囲を含む。このＩＤ範囲に対して、所与のバージョンのソフトウェアが決定される。
【００３６】
ＩＤフィールド内に０を置くと、これらの分割レベルそれぞれの処理がディセーブルにされる。これはグローバルＩＤとして取り扱われ、そして各セットトップがこのＩＤに合致することを意味する。
【００３７】
ＣＶＴがＱＡＭデータストリーム上およびＱＰＳＫデータストリーム上の両方でセットトップに送信されるため、ＣＶＴは用いられる移送から独立して規定されるフォーマットを有する。
【数１】
2006101553.tif 000003
ＤＮＣＳ  ＩＤ：これはネットワークのこのセグメントを制御するＤＮＣＳの２
バイトの識別子である。
ＣＶＴバージョン：ＣＶＴが更新されるごとに増加されるバージョンＩＤ。ＤＮ
ＣＳ  ＩＤと共に、ＣＶＴが変更されるごとにセットトップ
に強制的にＣＶＴを再チェックさせる。（ＭＡＣアドレスに
基づいた）強制型ダウンロードが実行されるごとにこれらの
３バイトはＮＶＭ（不揮発性メモリ）に保存される。これに
より、強制型ダウンロードが、すべてのボックスが再スター
トするごとに繰返し起こることが防がれる。
＃  ｏｆ  ｓｕｂ−ｔａｂｌｅｓ：このＣＶＴ内のＯＥＭ指定の下位テーブル数
を示す１バイトの値。
ＭＡＣ  ｒａｎｇｅ：ＭＡＣアドレスの範囲を規定する３つのＯＥＭ指定バイト
がある。このフィールドは、種々の製造業者からボックス
の異なるソフトウェアバージョンを指定することを支援す
る。値がすべて０に設定される場合、これはグローバル  
（あらゆるボックスに合致すること）を意味する。
＃  ｏｆ  ｓｅｔｓ：このＯＥＭ下位テーブル内の以下のグループダウンロード
セット数。この数が１２８より大きい場合（バイトのＭＳ
ビットは１に設定される）、セットになったアドレスが第
１のグループのダウンロードセットの前に挿入される。こ
の数が１２８より小さい場合、この数のすぐ後に第１のダ
ウンロードセットが続く。実際のダウンロードセット数は
常に、このバイトのうちの下位の７ビットでコード化され
る。
＃  ｏｆ  ａｄｄｒｅｓｓｅｓ：３バイトアドレスグループの数。これらはＭＡ
Ｃアドレスのうちの下位の３バイトである。こ
れらは、強制的にダウンロードされるボックス
の全ＭＡＣアドレスからの上位の３バイトを提
供するＭＡＣ範囲（前出）と共にある。ＭＡＣ
アドレスのうちの下位の３バイトである。これ
は特定のボックスを回復するための単発の不安
定な方法である。
ａｌｉｇｎｍｅｎｔ：これらは最後のＭＡＣアドレスグループの後に追加される
バイトであり、強制型ダウンロードセットを３２ビットの
語境界に調整する。バイト数はセット内のアドレス数に依
存して変化する。
Ｇｒｏｕｐ  ＩＤ：ボックスの論理グループに対する２バイト。Ｇｒｏｕｐ  Ｉ
Ｄ０×００００はグローバルである（ボックスグループが無
視された状態で受け入れを強制する）
＃  ｏｆ  ｒｅｃｏｒｄｓ：このグループセットのＣＶＴ記録数（２バイト−語
調整の理由から）である。
ｈａｒｄｗａｒｅ  ＩＤ：開始ＩＤおよび終了ＩＤ（両方を含む）はハードウェ
アＩＤ範囲を識別し、このハードウェアＩＤ範囲に対
して、この記録が適用されるべきである。終了ＩＤが
０である場合、これは、ボックスＩＤ（デフォルト）
とは無関係に受け入れを強制する。
Ｆｒｅｑ  ｖｅｃｔｏｒ：ダウンロード回転ラックの周波数をエンコードする１
６ビットの値。周波数は０．２５ＮＨｚの間隔の数と
してコード化される（１例として：５７３．２５ＭＨ
ｚに関しては、ベクトルは５７３＊４＋１＝２２９  
３）。ダウンロードストリームは０．２５ＭＨｚの倍
数の周波数に合わせられたチャンネルでブロードキャ
ストされると想定される（これはＳＡハードウェアの
現在の解像度）。
Ｃａｒｏｕｓｅｌ  Ｐｒｏｇ＃：これは、このソフトウェアバージョンを含むス
トリームのプログラム数である。ブートローダ
ーはＰＡＴ（プログラム割当テーブル）および
ＰＭＴ（プログラムマップテーブル）を解析し
て、ダウンロード用のＰＩＤ（パケットＩＤ）
を探す。
ｉｍａｇｅ  ＩＤ：これは、上述のＰＩＤによって指定されたデータストリーム
中のダウンロード画像を識別する１６ビットの数である。こ
れは各コード画像に１つである（ＯＳ署名エリア内に固定さ
れる）。
【００３８】
Ｄｏｗｎｌｏａｄ  ｃｏｍｍａｎｄ／＃  ｏｆ  ｂｌｏｃｋｓ：
ダウンロードコマンドはこの１６ビットの整数の上位３ビットでコード化される。コード０（ゼロ）は緊急時ダウンロードリクエストとして解釈される。ボックスは、適切なシャットダウンをまったく考慮せずにダウンロードを即開始する。残りの７コード（１．．７）は優雅なアップグレードが意図される−新しいソフトウェアが存在し、そしてコードに割り当てられた適切な動作（ユーザ通知、相互通信、ＯＦＦを待つなど）を実行する必要があることを、ＯＳは通知される。下位の１３ビットの値は、ダウンロード画像内のブロック数をエンコードする。これはセットトップ側の効率的なバッファリングに用いられる。
（パッケージング）
ＱＡＭストリーム上で伝送されたＣＶＴは総称構文に続くプライベートセクションブロック内で送信される。ヘッダーフィールドの値は以下のようである。
【００３９】
ＣＶＴは事前に割り当てられたＰＩＤ＝０×１ＦＦ８上で伝送される。
【００４０】
【数２】
2006101553.tif 000004
（構文解析）
コードバージョンテーブルの構文解析規則：
−  ＣＶＴテーブルは適切なセクションを探して最初から走査される（ＯＥＭおよび論理グループのマッチ）。
【００４１】
−  セクション内の記録が第１のマッチングを探して走査される。ハードウェアＩＤが記録のうちの１つの範囲内にある場合、この記録は選択されて、この記録のパラメータがダウンロードに用いられる。
【００４２】
上述したように、選択フィールドのうちの１つを０に設定すると、これに基づいた解析がディセーブルにされる。これはセット中の最後の要素および全テーブル内で保護用停止として用いられる。
【００４３】
「ハードウェアＩＤ範囲フィールド内の０」は、先行するＣＶＴ記録内の特定の範囲のいずれにも入らないすべてのセットトップに対して１つの一般的なグループを生成するためのみに用いられる。ソフトウェアのバージョンが１つのみである場合、これが唯一の記録であり得る。
【００４４】
「グループＩＤ内の０」は、ダウンロードグループが実現されないシステム内にある唯一のグループであるか、全システム内の保護グループのいずれかであり得るグループを規定する。後者の場合、このダウンロードセットは、グループ数が壊れた、またはまだ割り当てられていない「失われたセットトップ」ボックスの回復を保証する。このグループ内のソフトウェアは基本的回復能力（ＱＰＳＫリンクを確立し、適切なパラメータを得る）を提供する必要がある。
【００４５】
「ＯＥＭ範囲内の０」は、１つのＯＥＭシステム内に規定され得、または異なるＯＥＭからのボックスが同じソフトウェアを用いるシステム内の一般的なグループとして規定され得る。しかし、これにより、アドレス指定された強制型ダウンロードによる問題が生じる。上述の機能がシステム内で用いられる場合、ＣＶＴはこのフィールドを０に設定する必要はない。
【００４６】
ＣＶＴが強制型ダウンロードアドレスセットを含む場合、このアドレスに一致する（ＣＶＴ記録内のＯＳ  ＩＤがボックス内の１つに一致する）セットトップは即、ＯＳが動作可能であるような場合でさえ、緊急時ダウンロードを開始する。この機能により、問題を有するセットトップをアドレス可能に「ポークする」すなわちつつくことが可能になり、そしてコードの再ロードを強制する。この機能は、繰返しのダウンロードを避けるためには、単発の動作としてシステム内で実現される必要がある。
【００４７】
ここで図４に戻ると、ブロック４０１において、図３を参照して上述したスタートアップのシーケンスが開始し、シーケンスが図３のブロック３２７に進む。ブロック４０２において、ブートローダー３００は、デジタルチャンネル上で運搬されるＣＶＴが受信され得るようにチューナー１０４がチューニングされる周波数を得るために複数の異なる技術を試みる。まず、ブートローダー３００は知られる周波数のうちで最新の周波数を用いて、デジタルチャンネルを含むことを試みる。デジタルチャンネルを含む、知られる周波数のうちで最新の周波数は通常、コードダウンロードが開始する前に、オペレーティングシステム／制御プログラム２０１によって、ＮＶＲＡＭ１２６内に保存および格納される。このように、ブートローダー３００は周波数を容易に見つけ得、この周波数を介してＣＶＴが受信され得る。最新の既知の適切な周波数にチューニングした結果デジタルチャンネルを見つけ、したがって、ＣＶＴを受信する能力があった場合、ブロック４０９において、その後、ＣＶＴは受信されて処理される（図５参照）。
【００４８】
最新の既知の適切な周波数にチューニングしてもデジタルチャンネルを見つけることに失敗した場合（ＣＶＴはこのチャンネルを介して受信され得る）、その後、ブロック４０６において、ブートローダー３００により、チューナー１０４がセットトップ受信機１５０によって保存された複数の推薦周波数にチューニングする。これらの周波数は、ダウンロードチャンネルを配置するためにケーブルテレビオペレーターに推薦され、このチャンネルを介して、ＣＶＴがセットトップ受信機１５０によって受信され得る。次に、ブロック４０８において、チューナー１０４が、デジタルチャンネル（このチャンネルを介してＣＶＴが受信され得る）と同期を取られているか否かが判定される。ブロック４０８において、デジタルチャンネル（このチャンネルを介してＣＶＴが受信され得る）との同期化が達成されない場合、その後に、ブロック４０７において、推薦周波数リスト内に任意のさらなる周波数があるか否かが判定される。推薦周波数リスト内にさらなる周波数がある場合、その後に、ブロック４０６において、ブートローダー３００により、チューナー１０４が推薦リスト内の次のチャンネルにチューニングする。ブロック４０８において、次の推薦チャンネルがデジタルチャンネル（このチャンネルに対してセットトップ受信機１５０が同期を取り得る）であるか否かが再度判定される。デジタルチャンネルである場合、その次に、プロセスはブロック４０９に進んで、受信およびＣＶＴの処理を行う（図５参照）。ブロック４０８において、同期化が取得されない場合、その後、ブロック４０７において推薦リスト内にチューニングすべき別のチャンネルがあるか否かが再度判定される。ある（はい）場合、プロセスはブロック４０６に戻る。ブロック４０７において、推薦周波数リスト内にさらなる周波数がないと判定された場合、その後、ブロック４１１において、ブートローダー３００が完全な検索シーケンスを開始する。本発明のこの局面によれば、ブートローダー３００により、チューナー１０４が（図１の接続部１０２上の）ＱＡＭチャンネル（このチャンネルを介してＣＶＴが受信され得る）を検索する。本発明のこの局面によれば、全帯域幅（５７ＭＨｚ〜８５５ＭＨｚ）は６ＭＨｚの増加ごとに走査され、デジタルチャンネル（このチャンネルを介してＣＶＴが受信され得る）を有する周波数の有無をチェックする。６ＭＨｚの増加ごとに全スペクトルを進んだ後、デジタルチャンネルが見つからなかった場合、検索は１ＭＨｚごとにシフトした周波数上で繰り返される。これは周波数が再度重複するまで合計５回まで起こる。次いで、全シーケンスが２５０ＫＨｚのシフトで３回繰り返される。このように、５７ＭＨｚ〜８５５ＭＨｚの全ての周波数範囲が２４回でカバーされる。このように、利用可能なスペクトル中のある場所においてデジタルチャンネル（このチャンネルを介してブートローダー３００がＣＶＴを受信し得る）を有する周波数がある場合、この周波数が見つかる。
【００４９】
周波数スペクトル（５７ＭＨｚ〜８５５ＭＨｚ）内で各利用可能なキャリアにチューニングした後、ブートローダー３００はＱＡＭ６４およびＱＡＭ２５６のチャンネルの両方に対してＱＡＭ取得スクリプトを実行する。この動作の総時間はチャンネルごとに約２５０ミリ秒（ｍｓｅｃ）であり、これにより１秒あたり約４チャンネルの検索速度が得られる。ＱＡＭチャンネルが検索の任意の段階において検出された場合、ブートローダー３００はＣＶＴを受信するようにセットトップ受信機１５０を設定する。ＣＶＴが１秒以内に受信されない場合、検索シーケンスが続行する。検索がチェックアップの故障の結果開始された場合、検索は完了するまで続行する。ダウンロードが（オペレーティングシステム／制御プログラムリクエストまたは手動のオーバーライドのいずれかを介して）リクエストされた場合、検索は１つの完全なシーケンスの後に終了し、次いで、既存のオペレーティングシステム／制御プログラムコード２０１を開始しようとする。
【００５０】
したがって、ブロック４０９に示される（図５を参照して説明する）ように、図４のブロック４１１において上述し、かつ図示した動作は、デジタルチャンネル（このチャンネルを介してＣＶＴがダウンロードおよび処理され得る）を有する周波数とチューナー１０４が同期を取られていると、ブロック４１２において判定されるまで繰り返される。
【００５１】
図５は、ダウンロード情報を取得し、そしてオペレーティングシステム／制御プログラム２０１のダウンロードシーケンスを実行するプロセスを示すフローチャート５００である。ダウンロードシーケンスを説明する前に、ダウンロード初期化プロセスをまず説明する。ブートローダー３００が不正なオペレーティングシステム／制御プログラム２０１を検出した場合か、またはフロントパネルキーボード１２４へのユーザ入力によって強制的にダウンロードシーケンスが行われる場合のいずれかで、セットトップ受信機１５０は、スタートアップ手順（図３）からダウンロードシーケンスに入る。オペレーティングシステム／制御プログラム２０１の画像が正しくないのは、フラッシュメモリ２００が壊れたり、オペレーティングシステムのアップグレードが失敗したり、またはセットトップ受信機１５０がオペレーティングシステム／制御プログラム２０１がロードされたことがない場合に起因し得る。上述のシナリオに加え、手動のオーバーライドは新しいオペレーティングシステム／制御プログラム２０１のダウンロードを強制するように提供される。これは、フロントパネルキーボード１２４から制御された、補助的なブートローダー機能を介して達成され得る。セットトップ受信機１５０はさらに、システムレベルの緊急時ダウンロードリクエストを受信した結果、ダウンロードシーケンスを開始し得る。このリクエストは、ブートローダー３００の上述のウォッチドッグサービスによって定期的にチェックされる専用ＱＡＭデータストリームを介して受信される。
【００５２】
オペレーティングシステム／制御プログラム２０１からのダウンロード初期化は通常、「ローダーサービス」の呼び出しを介して実行される。パスパラメータは、ダウンロードチャンネル周波数および即時型ダウンロードまたは遅延型ダウンロードのコマンドを提供する。ブートローダー３００は、オペレーティングシステム／制御プログラム２０１によって定期的に呼び出される。これはウォッチドッグモードである。ブートローダー３００は、メモリ内に任意のＣＶＴパケットがあるか否かを判定する。ＣＶＴ情報がある場合、ブートローダーはコードダウンロードが実行されるべきか否かを判定する。ダウンロードが実行される場合、ブートローダーはこの呼び出しから（オペレーティングシステム／制御プログラム２０１から）戻って、そしてダウンロードコードをオペレーティングシステム／制御プログラム２０１に提供する。論理「１」のコードは即時型ダウンロードが実行されることを示す。このような場合、ブートローダー３００により、セットトップ受信機１５０がシャットダウンし、そしてダウンロードを開始する。論理「０」のコードは遅延型ダウンロードが実行されることを示す。このような場合、加入者をほとんど妨害しない適切な時間において、遅延型ダウンロードが開始される。
【００５３】
緊急時ダウンロードに関して、ダウンロードは制御を呼び出し側に戻すことなく、即座に開始される。遅延型ダウンロードの場合、この呼び出しは、ＮＶＲＡＭ１２６内に、正確なダウンロード周波数および遅延型ダウンロードリクエストの記録以外、いかなる動作も開始しない。オペレーティングシステム／制御プログラム２０１はさらに、セットトップ受信機１５０のオペレーティングシステム／制御プログラムソフトウェア２０１をアップグレードする状態が好ましくなるとすぐに、遅延型ダウンロードリクエストを記録し、そしてローダーサービスを呼び出す。これはセットトップ受信機１５０の電源が落とされたときである。ブートローダー３００によって記録されるダウンロードのリクエストは、セットトップ受信機１５０が即時型リクエストを得る前に電力を失う場合のみ用いられる。このイベントに続くスタートアップシーケンスは、遅延型リクエストを検出して、図５に記載するようにダウンロードシーケンスを開始する。
【００５４】
再度図５を参照すると、ブロック４０９（図４参照）において、ＣＶＴは受信され、そして適切なダウンロード定義のために解析される。本発明の１局面によれば、受信されたＣＶＴはテーブル１に上述した規則に従って解析される。このように、ＣＶＴ内に含まれる情報は、最終チャンネルアクセスベクトル（すなわち、新しいオペレーティングシステム／制御プログラム２０１を受信するようにチューナー１０４がチューニングするチャンネル）を提供する。この最終チャンネルアクセスベクトルを介して、オペレーティングシステム／制御プログラム２０１がセットトップ受信機１５０に送信される。このように、セットトップ受信機１５０はこのチャンネルにチューニングして、オペレーティングシステム／制御プログラム２０１の選択された画像のデータを収集する。この画像は画像収集バッファ２５６（図２）内に置かれる。収集が完了すると、ブロック５０２において、画像はその識別およびＣＲＣが正しいかがチェックされる。テストがうまくいかなかった場合、画像は捨てられて、収集は成功するまで繰り返される。画像がＩＤおよびＣＲＣチェックをパスした場合、この画像はＤＲＡＭ２５０の画像収集バッファ２５６からフラッシュメモリ２００内にプログラミングされ、現在のオペレーティングシステム／制御プログラム２０１として常駐する。オペレーティングシステム／制御プログラム２０１はフラッシュメモリ２００のうちのセクタ０（これはブートローダー３００の位置）より上の第１の利用可能なセクション内にロードされる。プログラミングが完了すると、システムはリセットされ、これにより、新しいフラッシュコンテンツ（すなわち、新しくダウンロードされたオペレーティングシステム／制御プログラム２０１）の検査が、メインのスタートアップシーケンス（図３参照）の間、もう１度強制的に行われる。
【００５５】
以下のテーブル２に示すように、ダウンロード用のコード画像は送信されて、ＤＳＭＣＣ（デジタル記憶媒体コマンド＆制御）ダウンロードデータブロックの標準推薦に従うメッセージにフォーマットされる。
【００５６】
（テーブル２）
（ダウンロードパケットフォーマット）
ダウンロード用のコード画像は送信されて、ＤＳＭ  ＣＣダウンロードデータブロックの標準推薦に従うメッセージにフォーマットされる。
【００５７】
「受信したデータブロックのフォーマットは以下のようである」
【００５８】
【数３】
2006101553.tif 000005
（テーブル７−１「ＤｏｗｎｌｏａｄＤａｔａＨｅａｄｅｒ」および７−６「ｄｏｗｎｌｏａｄＤａｔａＢｌｏｃｋ」からＤＳＭ−ＣＣ仕様でコンパイルされる）
上述のブロックヘッダーにおいて、以下のフィールドは予測される値を保持するように規定される。
【００５９】
【数４】
2006101553.tif 000006
データブロックは、全構文ヘッダー（８バイト）およびＣＲＣ３２が添付された標準のプライベートセクションフレーム化内にカプセル化される。標準に従って、ヘッダー内のテーブルＩＤは０×３Ｃに設定される。
【００６０】
ダウンロードデータブロックはできるだけ大きく維持されて、ダウンロードの効率に対するフォーマッティングオーバーヘッドの負担を最小限に留めるべきである。
【００６１】
ダウンロードのＣＶＴ記録の選択はブートローダー３００内で実行される。オペレーティングシステム／制御プログラム２０１は、ＱＰＳＫメッセージ内にカプセル化されたＣＶＴ記録を受信して、そしてこれをブートローダー３００に渡す。ブートローダー３００は情報（ＣＶＴ）を処理する。この情報はヘッドエンド１０１に配置されたＤＮＣＳ（デジタルネットワーク制御システム）によって同期を取られた状態で維持される。本発明の別の局面によれば、オペレーティングシステム／制御プログラム２０１は、接続部１０２上に存在する双方向ＱＰＳＫチャンネルのうちの１つを介してＣＶＴをブロードキャストメッセージとして受信する。このメッセージは、すべてのセットトップ受信機１５０にブロードキャストされるか、または個々のセットトップ受信機に個々にアドレス指定される。メッセージは、ブロードキャストメッセージとして行われた場合、図４の検索シーケンスを必要とせずに、ネットワーク内で接続されたすべてのボックスをグローバルにアップグレードする方法を提供する。個々にアドレス指定されたメッセージは、強制的にアドレス指定されたセットトップ受信機ボックス１５０にアップグレードを実行させる。メッセージはＣＶＴを含み、ＣＶＴは解析されて、オペレーティングシステム／制御プログラムの現在のバージョンがアップグレードされるべきか否かを判定する。このＣＶＴは、セットトップ受信機１５０の特定のハードウェアバージョンと必要なオペレーティングシステム／制御プログラムコードバージョンとを結ぶエントリを含む。エントリはさらに、ダウンロードチャンネルベクトル、および強制型ダウンロードまたは遅延型ダウンロードを選択するために用いられる制御フィールドを含む。
【００６２】
ダウンロードリクエストメッセージは所定の周波数で継続的に繰り返される。オペレーティングシステム／制御プログラムコードがこのメッセージを受信するたびに、オペレーティングシステム／制御プログラムコードはメッセージをブートローダー３００に渡し、ブートローダー３００は上述したようにＣＶＴを解析して関連のエントリを探し出す。関連のエントリが見つかった場合、このリクエストのオペレーティングシステム／制御プログラムのバージョンがオペレーティングシステム／制御プログラムの現在のバージョンと比較される。これら２つのバージョンが異なる場合、上述のＣＶＴに従って、ブートローダー３００は、オペレーティングシステム／制御プログラム２０１に、必要な動作を実行して、新しいオペレーティングシステム／制御プログラムコード２０１の即時型ダウンロードまたは遅延型ダウンロードを開始するように通知する。ダウンロードの種類はエントリ中の制御フィールドに依存する。オペレーティングシステム／制御プログラムはブートローダー３００内のダウンロードシーケンスを開始する。ブートローダー３００はＣＶＴを用いて、ダウンロード用のオペレーティングシステム／制御プログラムの適切な画像を決定する。ＣＶＴは専用メッセージで受信され、検索速度を向上させるためにあらゆるＱＡＭチャンネル上で繰り返されることが多い。ブートローダー３００は適切なエントリのリストを走査し、そして必要なコードＩＤおよびダウンロードチャンネルベクトルを取り出す。これら２つの値は連続して用いられて、オペレーティングシステム／制御プログラムの実行可能な画像をダウンロードする。
【００６３】
ブートローダー３００は以下の規則に従ってＣＶＴリストの解析を実行する。このリストは常に線形順序で解析される。第１のマッチは解析を停止する。セットトップ受信機１５０のハードウェア／ブートローダーコード３００の構成を形成し、そしてブートローダー３００内に保存された２つのコンポーネントは、０の値を決して有さないように規定される。受信したリストエントリ内のこれらのパラメータのいずれかが０に設定されると、これは、「このハードウェアレベルを有するすべてのセットトップ受信機１５０」または「このブートコードバージョンを有するすべて」を意味する。最後に、両方のハードウェア構成コンポーネントが０である場合、これは「すべてのセットトップ受信機」を意味する。これは、リスト内で特定されないすべての残りのセットトップ受信機へのダウンロードをカバーする最後のリスト要素である。
【００６４】
上述の解析規則により、広いクラスのセットトップ受信機１５０のために、ダウンロードされたソフトウェアバージョンの厳密な仕様およびダウンロード処理の両方が可能になる。このように、セットトップ受信機１５０がクラスまたはグループに分離され、そして新しいオペレーティングシステム／制御プログラムコードによって独立してアップグレードされ得る。
【００６５】
（ダウンロード用システムサポート）
上述のダウンロードプロセスに必要なシステムサポートは以下のようである。ダウンロードされるべきオペレーティングシステム／制御プログラムの画像は、ヘッドエンド１０１に関連付けられた専用データ回転ラック上でブロードキャストされる。コードは等しい長さのパケットに分けられ、そしてフレーム分けされてダウンロードストリームを形成する。ＣＶＴはＤＮＣＳ内で生成されて維持される。ＣＶＴはシステム内のセットトップ受信機のすべてのバージョンの制御コード（すなわち、正しいオペレーティングシステム／制御プログラム画像）を含む。このテーブルは、接続部１０２上のＱＰＳＫチャンネル上で継続的に（１分あたり１回）ブロードキャストされて、システム内のすべてのセットトップ受信機が適切なオペレーティングシステム／制御プログラムバージョンを有することを保証する。このブロードキャストメッセージはさらに、システム内の任意のセットトップ受信機に個々に送信され得る。ＣＶＴはさらに、システム内のあらゆるデジタルＱＡＭチャンネル上で、約１秒当たり１回の周期でブロードキャストされる。このメッセージはブートローダー３００によってのみ受信され、そして認識され、そして上述したように、バックグラウンドバージョンチェックおよび周波数検索に用いられる。緊急時ダウンロードリクエストは、ＱＡＭチャンネル上で毎秒、そしてＱＰＳＫチャンネル上で毎分すでにブロードキャストされているＣＶＴ内のアドレス指定可能なフィールドとして挿入される。
【００６６】
（補助機能処理）
スタートアップシーケンスコードの一部として上述した補助機能は、フロントパネルキーボード１２４のキー状態の判定を含む。いずれかのキーを押すと、ブートローダー３００は検出されたキー状態と１セットの所定のキーの組み合わせとを比較し、これにより、特定の補助機能が実行される。ブートローダー３００内で認識されずそして処理されない任意のキーの組み合わせはオペレーティングシステム／制御プログラム２０１に渡される。キーボート１２４から実行され得る補助機能は、コードダウンロードを開始する手動のリクエスト、シリアルポートを介してロードするリクエスト（フラッシュまたはＲＡＭに実行可能なＮＶＲＡＭコンテンツ、ブートローダーモジュールアップグレード）、またはスマートカードからロードするリクエストである。
【００６７】
上述したように、本発明の原理から実質的に逸脱することなく、多くの改変および変更が本発明の好適な実施形態に行われ得ることが当業者に明らかである。例えば、本発明は用いられて、種々の条件下でオペレーティングシステム／制御プログラムコードをダウンロードし得る。さらに、本発明の周波数検索シーケンスの局面は、スペクトル内で特定の周波数を見つけることが望ましい任意の状況において有用である。本明細書に含まれるすべてのこのような改変および変形は、上掲の特許請求の範囲に規定される本発明の範囲内にあることが意図される。
【図面の簡単な説明】
【００６８】
【図１】図１は、本発明の好適な実施形態のブートローダーが常駐するケーブルテレビシステムアーキテクチャを示すブロック図である。
【図２】図２は、図１のフラッシュメモリ（内部に本発明の好適な実施形態のブートローダーが配置される）およびＤＲＡＭのコンテンツのレイアウトを示すブロック図であり、このＤＲＡＭはダウンロード動作の間に用いられるものである。
【図３】図３は、図２のブートローダーのスタートアップ段階の間の処理を示すフローチャートである。
【図４】図４は、図２のブートローダーの周波数検索手順を示すフローチャートである。
【図５】図５は、ダウンロード情報を取得し、そしてオペレーティングシステム／制御プログラムのダウンロードシーケンスを実行するプロセスを示すフローチャートである。
【図１】
2006101553.tif 000007
【図２】
2006101553.tif 000008
【図３】
2006101553.tif 000009
【図４】
2006101553.tif 000010
【図５】
2006101553.tif 000011