(57)【要約】【課題】機器組み込みソフトウェアにおいては，２バンク方式のファームウェア更新方法は一般的によく用いられているが，２バンク方式は動作中のファームウェアと更新ファームウェアの両方を保存するため，ファームウェアの２倍以上のサイズの不揮発性メモリを必要とし，近年の大型化するファームウェアの更新においては課題があった。【解決手段】本発明の放送受信装置は、１バンク方式の不揮発性メモリ構成であって，ファームウェア更新時には，回復用のファームウェアと更新ファームウェアの２種類のデータを受信し、回復用ファームウェアを不揮発性メモリの先頭に書込んだ後で、回復用ファームウェア書込み領域を除いた領域に更新ファームウェアを書込み、更新ファームウェア書込み領域でのベリファイが完了した後に，回復用ファームウェア書込み領域に書き込み未完了の更新ファームウェアを書き込む。【選択図】図１
2010092324.tif 000002
【特許請求の範囲】
【請求項１】
回復用プログラム及び更新用プログラムを受信してソフトウェア更新を行なう放送受信装置であって、
前記回復用プログラム及び前記更新用プログラムを受信する受信手段と、
プログラムを記憶する記憶手段と、
前記更新用プログラムによって前記ソフトウェア更新を実行する制御手段と、を備え、
前記制御手段は、前記受信手段が前記回復用プログラム及び前記更新用プログラムを受信した場合に、前記回復用プログラムを前記記憶手段の所定領域に書き込むと共に前記所定領域以外の領域に前記更新用プログラムを書き込み、前記更新用プログラムの書込みが成功した場合は前記所定領域に前記更新用プログラムを上書きし、前記更新用プログラムの書込みが失敗した場合は前記所定領域に書き込んだ前記回復用プログラムを実行することを特徴とする放送受信装置。
【請求項２】
前記回復用プログラムは、ソフトウェアダウンロード処理を実行するためのパラメータを有し、前記パラメータによって前記更新用プログラムを再受信し、再受信した前記更新用プログラムを前記所定領域以外の領域に再書き込みさせる、
ことを特徴とする請求項１に記載の放送受信装置。
【請求項３】
回復用プログラム及び更新用プログラムを受信する受信ステップと、
受信した前記回復用プログラム及び前記更新用プログラムを記憶する記憶ステップと、
記憶した前記更新用プログラムによってソフトウェア更新を実行する実行ステップと、を備え、
前記実行ステップは、前記受信ステップが前記回復用プログラム及び前記更新用プログラムを受信した場合に、前記回復用プログラムを前記記憶ステップの所定領域に書き込むと共に前記所定領域以外の領域に前記更新用プログラムを書込み、前記更新用プログラムの書込みが成功した場合は前記所定領域に前記更新用プログラムを上書きし、前記更新用プログラムの書込みが失敗した場合は前記所定領域に書き込んだ前記回復用プログラムを実行する、ことを特徴とするソフトウェア更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は組み込み制御装置内部に格納され動作するソフトウェア（以下，装置内に組み込まれるプログラムを総称してファームウェアとし，ファームウェアの一部の構成要素としてプログラムと呼ぶ）の更新方法に関する技術であり，特に放送電波や有線無線のネットワークを利用して，アップデートされたプログラムを受信して，放送受信装置自身が持つファームウェアの一部のプログラムもしくはファームウェア全てをアップデートすることが可能な放送受信装置及びソフトウェア更新方法に関係する。
【背景技術】
【０００２】
近年のデジタル放送の普及に伴い，デジタル放送が受信可能なテレビやＳＴＢ（セットトップボックス）などの放送受信装置においては，従来と比べて規模の大きいプログラムがファームウェアとして内蔵されるようになった。
【０００３】
上記のファームウェアは多くの機能を有し，また複数のプログラムから構成される。これによりプログラム単位もしくはファームウェア全体の機能追加や性能向上，バグ修正に伴うソフトウェア更新，または放送信号送出側の仕様変更に伴った更新など，ユーザ家庭で利用されている間にもファームウェアの更新が必要となる場合が以前よりも多くなっている。
【０００４】
これらの放送受信装置のファームウェア更新においては，更新のためのファームウェア情報やファームウェアデータは，放送電波やネットワーク回線を通じて各放送受信装置に通知・送信される場合が多い。
【０００５】
このファームウェア情報やファームウェアデータを放送受信装置が受信すると，放送受信装置は自身の装置内部にある不揮発性メモリやハードディスクなどに保管されたファームウェアの一部もしくは全部を更新する。
【０００６】
上記更新作業の実施は，画面表示などによりユーザに対してファームウェアの更新開始を通知した上で更新を開始する場合や，深夜などに放送受信装置が待機状態になっている時間に自動的に更新を行う場合がある。
【０００７】
これらのファームウェア更新は，更新に失敗すると放送受信装置が起動できなくなる可能性があるので，更新は極力安全な方法で実施することが望まれる。このような要望に対して，安全な方法でファームウェアを更新するひとつの方法として，例えば特許文献１に記載の装置制御方法がある。特許文献１では、制御装置内の不揮発性メモリに余裕領域を設け，ＥＥＰＲＯＭに新しいバージョンのファームウェアを書き込むと同時に，余裕領域に古いバージョンのファームウェアを保持させる制御手段を備え，ＲＡＭに新バージョンのファームウェアをダウンロードするときに，旧バージョンのファームウェアを残しておくバックアップ領域を設け，新バージョンのファームウェアに問題が発生した場合には復旧リセット信号を発生させることにより，旧バージョンのファームウェアで起動する装置制御方法を提案している。
【０００８】
また，安全な方法でファームウェアを更新する別の一例として，例えば特許文献２に記載の更新方法がある。特許文献２では，受信した新しいファームウェアによって装置を完全に運用する前に，新ファームウェアでの試運転を行い，問題があった場合には旧ファームウェアでの運用に復帰する更新方法を提案している。
【特許文献１】特開２００２−０４４６９３号公報
【特許文献２】特開２００３−１２２６７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ファームウェアの一部もしくは全てを構成するプログラムの更新を行う際に，不揮発メモリ内にプログラムを格納可能な２つ以上の領域を設け，旧いバージョンのプログラムと新しいプログラムという２つのプログラムを一時的に保持し，新しいバージョンのプログラムに問題があった場合には旧いバージョンのプログラムを再度利用して装置を動作させるという上記の特許文献１記載の装置制御方法及び特許文献２記載の更新手法では，装置が有する不揮発性メモリを、更新したいプログラムのサイズの少なくとも２倍のサイズ用意する必要があるという問題があった。
【００１０】
そして、これは，近年の放送受信装置において，機能の増加やＧＵＩの高精細化に伴ってプログラムのサイズが増大していることを考えると，ハードウェアのコストという観点からは必ずしも有利とはならない。
【００１１】
本発明は上記事情に鑑みてなされるものであり、プログラムを格納するための不揮発性メモリのサイズを抑えつつ，より安全にプログラムの更新を実施することが可能な放送受信装置及びソフトウェア更新方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の放送受信装置は、回復用プログラム及び更新用プログラムを受信してソフトウェア更新を行なう放送受信装置であって、回復用プログラム及び更新用プログラムを受信する受信手段と、プログラムを記憶する記憶手段と、更新用プログラムによってソフトウェア更新を実行する制御手段と、を備え、制御手段は、受信手段が回復用プログラム及び更新用プログラムを受信した場合に、回復用プログラムを記憶手段の所定領域に書き込むと共に所定領域以外の領域に更新用プログラムを書き込み、更新用プログラムの書込みが成功した場合は所定領域に更新用プログラムを上書きし、更新用プログラムの書込みが失敗した場合は所定領域に書き込んだ回復用プログラムを実行することを特徴とする。
【００１３】
また、本発明のソフトウェア更新方法は、回復用プログラム及び更新用プログラムを受信する受信ステップと、受信した回復用プログラム及び更新用プログラムを記憶する記憶ステップと、記憶した更新用プログラムによってソフトウェア更新を実行する実行ステップと、を備え、実行ステップは、受信ステップが回復用プログラム及び更新用プログラムを受信した場合に、回復用プログラムを記憶ステップの所定領域に書き込むと共に所定領域以外の領域に更新用プログラムを書込み、更新用プログラムの書込みが成功した場合は所定領域に更新用プログラムを上書きし、更新用プログラムの書込みが失敗した場合は所定領域に書き込んだ回復用プログラムを実行する、ことを特徴とする
【発明の効果】
【００１４】
プログラムの更新失敗への対策を目的として不揮発性メモリを複数個，あるいはプログラムサイズの複数倍のサイズを持つ必要がなく，基板サイズや部品コストを削減することが可能となる。
【発明を実施するための最良の形態】
【００１５】
（第１の実施の形態）
本発明で提案する放送受信装置のソフトウェア更新方法の第１の実施形態を以下に説明する。
【００１６】
図１は本発明の第１の実施形態である放送受信装置１００のブロック図である。アンテナによって受信された放送電波は，受信手段１０１において指定された周波数の信号が抽出され，復調手段１０２においてデジタル映像・音声信号や，放送に付帯するデータ信号に復調される。復調された信号のうち，デジタル映像・音声に関わる信号は，映像音声デコーダ手段１０３によって映像や音声信号にデコード処理され，映像音声出力として映像表示装置１２０や音声再生装置１２１に出力されユーザに視聴される。
【００１７】
一方，復調された信号に含まれる情報のうち，放送に付帯するデータや放送受信装置１００で利用可能なデータは，ＣＰＵ１０５で処理されることを目的として後述のＲＡＭ１０７やフラッシュメモリ１０８に記憶されるものがある。これは例えば放送に付帯するデータとしては電子番組表で表示されるような番組名や番組詳細を記述したＳＩ（サービス情報）データがあり，放送受信装置１００で利用可能なデータは放送受信装置のアップデートを目的としたプログラムデータ（ファームウェアの全て，もしくは一部のデータ）が考えられる。
【００１８】
ＣＰＵ１０５は放送受信装置１００全体のシステムを管理するマイクロコンピュータであり、各手段およびメッセージの制御を行う。
【００１９】
バスコントローラ１０６はＣＰＵ１０５と他のデバイスとの通信をおこなうためのコントローラである。このバスコントローラ１０６を経由してＣＰＵ１０５と通信を行うデバイスには例えばＲＡＭ１０７やフラッシュメモリ１０８がある。
【００２０】
ＲＡＭ１０７はＣＰＵ１０５がデータ処理や演算を行う際のワークメモリとして利用される揮発性のメモリである。
【００２１】
フラッシュメモリ１０８は書換え可能な不揮発性メモリであり，放送受信装置１００が動作するためのファームウェアを格納する。
【００２２】
図２はフラッシュメモリ１０８に格納されたファームウェアをイメージで表現した図である。フラッシュメモリ１０８の内部は，大きくは２つのブロックに分かれている。
【００２３】
ＢｏｏｔＣｏｄｅ領域２０１は，放送受信装置１００が起動するために必要なＢｏｏｔＣｏｄｅ（ＢｏｏｔＣｏｄｅプログラム）を格納するための領域である。ＢｏｏｔＣｏｄｅとは放送受信装置１００の起動に必要な最低限のプログラムのことであり，放送受信装置１００の起動においてはまずＢｏｏｔＣｏｄｅが実行され，ＢｏｏｔＣｏｄｅはＣＰＵ１０５の初期設定を行い，放送受信装置１００全体の起動のためにＲＡＭ１０７やフラッシュメモリ１０８を動作可能にする。
【００２４】
ＰｒｏｇｒａｍＣｏｄｅ領域２０２は，ＢｏｏｔＣｏｄｅによって呼び出されるＰｒｏｇｒａｍＣｏｄｅ（アプリケーションプログラム、ＰｒｏｇｒａｍＣｏｄｅプログラム）を格納する領域である。ＰｒｏｇｒａｍＣｏｄｅとは，オペレーションシステム（ＯＳ）の機能や，放送受信に必要なデバイスの制御機能や，ユーザに映像音声やＧＵＩを表示するための機能を持ったプログラムである。
【００２５】
なお，本実施の形態１の説明においては，ファームウェアはフラッシュメモリ１０８に格納された装置組み込みプログラムの全体を示すものとし，ＢｏｏｔＣｏｄｅは放送受信装置１００が起動された時にまず起動されるプログラムとし，ＰｒｏｇｒａｍＣｏｄｅはＢｏｏｔＣｏｄｅにより起動されユーザにサービスや機能を提供するプログラムと位置づける。
【００２６】
また，本実施の形態１においては，ＢｏｏｔＣｏｄｅおよびＰｒｏｇｒａｍＣｏｄｅなどのプログラムを総称してファームウェアと呼ぶこととする。本実施の形態１におけるファームウェア更新方法としてはＢｏｏｔＣｏｄｅおよびＰｒｏｇｒａｍＣｏｄｅのいずれの更新も当てはまるが以下の説明においてはＰｒｏｇｒａｍＣｏｄｅのプログラム更新における手順・動作を説明することとする。
【００２７】
図３は放送受信装置１００の起動時の動作の様子を示すフローチャートである。放送受信装置１００に電源が入れられると，ＣＰＵ１０５はまずＢｏｏｔＣｏｄｅ領域２０１に格納されているＢｏｏｔＣｏｄｅを実行する（Ｓ３０１）。このＢｏｏｔＣｏｄｅには，主としてＰｒｏｇｒａｍＣｏｄｅをＲＡＭ１０７上にロードするための機能とＰｒｏｇｒａｍＣｏｄｅの正当性を確認するためのプログラムが含まれている。これは一般的には放送受信装置１００のような装置は，ＰｒｏｇｒａｍＣｏｄｅはフラッシュメモリ１０８からＲＡＭ１０７に複製・展開された上でＣＰＵ１０５によりプログラムの命令が処理されるためである。このＢｏｏｔＣｏｄｅは通常は放送受信装置１００の生産時に書き込まれ，以降は上書きされることがないため，プログラム動作に問題が出ることは通常発生しえない。
【００２８】
次に，ＣＰＵ１０５はＢｏｏｔＣｏｄｅに記述されたプログラムに従い，ＰｒｏｇｒａｍＣｏｄｅ領域２０２の正当性の確認を行う（Ｓ３０２）。この処理はＰｒｏｇｒａｍＣｏｄｅ領域２０２に格納されたプログラムのデータの正当性を確認するものであり，ＣＰＵ１０５がＰｒｏｇｒａｍＣｏｄｅを実行できる状態になることを確認するための処理である。この処理は通常はＰｒｏｇｒａｍＣｏｄｅのＣＲＣチェックによるデータの完全性の確認などがある。
【００２９】
次に，ＰｒｏｇｒａｍＣｏｄｅの正当性が確認されると，ＣＰＵ１０５はＰｒｏｇｒａｍＣｏｄｅをＲＡＭ１０７にロードする（Ｓ３０３）。
【００３０】
次に，ＣＰＵ１０５はＲＡＭ１０７上にロードされたＰｒｏｇｒａｍＣｏｄｅを実行する（Ｓ３０４）。
【００３１】
その後，ＣＰＵ１０５はＰｒｏｇｒａｍＣｏｄｅに記述された処理手順に従って演算やデバイス制御の動作を行い，映像音声の受信処理・再生処理・出力処理を行う（Ｓ３０５）。
【００３２】
図４は放送受信装置１００におけるフラッシュメモリ１０８の内部の様子をより詳しく示した図である。
【００３３】
フラッシュメモリ１０８にＢｏｏｔＣｏｄｅ領域２０１とＰｒｏｇｒａｍＣｏｄｅ領域２０２が存在することは先に述べたが，本実施の形態１における放送受信装置１００においては，フラッシュメモリ１０８内部は幾つかのブロックにより構成されており，図４におけるフラッシュメモリ１０８においては，７ブロックに分割されている様子を示している。この実施の形態１では７ブロックのうち１ブロックはＢｏｏｔＣｏｄｅ領域２０１に割り当てられており，残り６ブロックがＰｒｏｇｒａｍＣｏｄｅ領域２０２に割り当てられている。
【００３４】
またここではＰｒｏｇｒａｍＣｏｄｅ領域２０２に割り当てられている６ブロックのうちの先頭部分のブロックをＢＬＫ−Ｓ００と表示している。ＢＬＫ−Ｓ００はＰｒｏｇｒａｍＣｏｄｅ領域２０２における共通領域と呼ぶ。ＢＬＫ−Ｓ００以外の５ブロック部分は，ＢＬＫ−Ｐ００からＢＬＫ−Ｐ０４とし，ＰｒｏｇｒａｍＣｏｄｅ専用領域と呼ぶ。なお，共通領域およびＰｒｏｇｒａｍ専用領域の役割については後述する。
【００３５】
次に，本実施の形態１における放送受信装置１００でのＰｒｏｇｒａｍＣｏｄｅ領域２０２に格納されたＰｒｏｇｒａｍＣｏｄｅの更新手順について説明する。
【００３６】
図５には一般例の説明を目的として，本実施の形態１で提案するファームウェア更新方法を利用しない場合の一般的な放送受信装置１００のファームウェア更新手順の一例を示す。
【００３７】
放送受信装置１００が動作中であり，放送信号が受信できる環境において，放送受信装置１００のファームウェアを更新する必要が発生した場合には，更新され放送受信装置で動作させるための更新プログラムを格納したデータ（ＤＬＤＡＴＡ１）を送信局から放送信号を経由して放送受信装置１００へ送出する（Ｓ５０１）。
【００３８】
なお，ＤＬＤＡＴＡ１は通常は放送受信装置１００のメーカや型番，更新するファームウェアバージョンなどを識別するための識別符号を含み，この識別符号によりファームウェア更新対象とする放送受信装置１００を特定するが，この識別方法については一般的であるため説明を省略する。
【００３９】
また，放送受信装置１００がどの周波数を選局していてもＤＬＤＡＴＡ１の存在を容易に検知させることを目的として、ＤＬＤＡＴＡ１とは別のデータによって識別信号を送出する場合もあるが，これも一般的な方式であるため本実施の形態１においては説明を省略する。
【００４０】
ＤＬＤＡＴＡ１の中には放送受信装置１００上で動作可能な更新プログラムを含んでいる。ＤＬＤＡＴＡ１の送出目的としては，放送受信装置１００がＤＬＤＡＴＡ１を受信し，ＤＬＤＡＴＡ１に含まれる更新プログラムを取り出し，フラッシュメモリ１０８に書き込みを行うことで，プログラムを更新し放送受信装置１００の動作を変更させることを目的としている。
【００４１】
次に，放送受信装置１００では，放送受信装置１００が利用可能な更新プログラムを含むデータ（ＤＬＤＡＴＡ１）が送信局より送出されたことを動作中のプログラムによって検知する（Ｓ５０２）。
【００４２】
通常の場合，ＤＬＤＡＴＡ１は放送信号内において小さいパケットに分割されて送信されるため，放送受信装置１００でパケットの収集と結合が必要である。よって放送受信装置１００ではＤＬＤＡＴＡ１の存在を検知した後，受信手段１０１や復調手段１０２を制御して放送信号に含まれるＤＬＤＡＴＡ１のデータの収集および再結合というＤＬＤＡＴＡ１受信処理を行う（Ｓ５０３）。
【００４３】
次に放送受信装置１００は，結合が行われたＤＬＤＡＴＡ１からＰｒｏｇｒａｍＣｏｄｅ領域に相当するデータを抽出し，内部のフラッシュメモリ１０８のＰｒｏｇｒａｍＣｏｄｅ領域２０２への書き込みを行い，書き込みが正しく行われたことを確認する（Ｓ５０４）。フラッシュメモリ１０８のプログラムが，正しく更新プログラムに書き換えられたことを確認すると，放送受信装置１００を再起動し（Ｓ５０５），更新されたファームウェアによる動作を開始する（Ｓ５０６）。なお，Ｓ５０２からＳ５０６の一連の処理はＣＰＵ１０５によって制御される。
【００４４】
次に図６には，本実施の形態１で提案するファームウェア更新方法を用いて，放送受信装置１００のプログラムを更新した場合の処理手順を示す。
【００４５】
図６では，図５における説明と同様に，放送受信装置１００が動作中であり，放送信号が受信できる環境において，放送受信装置１００のファームウェアを更新する必要が発生した場合のファームウェア更新方法を示している。
【００４６】
まず，放送受信装置１００で動作させるための更新プログラムを格納したデータ（ＤＬＤＡＴＡ１）を送信局から放送信号を経由して送出する（Ｓ６０１）。
【００４７】
次にＳ６０１の同時期あるいは少ない時間差のタイミングにおいて，送信局からはプログラム更新処理の途中で異常が発生した場合に，放送受信装置１００を臨時的に動作させ，放送受信装置１００を回復させることを目的としたプログラム（回復用プログラム）を含むデータ（ＤＬＤＡＴＡ２と呼ぶ）を送出する（Ｓ６０２）。
【００４８】
このＤＬＤＡＴＡ２もＤＬＤＡＴＡ１と同様に，放送受信装置１００のメーカや型番，更新するファームウェアバージョンなどを識別するための識別符号を含み，対象とする放送受信装置１００を特定するがこの説明は省略する。
【００４９】
次にＳ６０１のＤＬＤＡＴＡ１の送出開始の結果として，放送受信装置１００では放送受信装置１００が利用可能な新しいファームウェア（ＤＬＤＡＴＡ１）が送信局より送出されたことを動作中のプログラムによって検知する（Ｓ６０３）。
【００５０】
前述の図５における説明と同様に，ＤＬＤＡＴＡ１は放送信号内において小さいパケットに分割されて送信されるため，放送受信装置１００ではＤＬＤＡＴＡ１を検知するとＣＰＵ１０５は受信手段１０１や復調手段１０２を制御し，放送信号に含まれるＤＬＤＡＴＡ１のデータを収集し結合を行う（Ｓ６０４）。
【００５１】
また，ＤＬＤＡＴＡ２の送出処理（Ｓ６０２）を開始した結果として，放送受信装置１００はＤＬＤＡＴＡ１とは別にＤＬＤＡＴＡ２が送信局より送出されたことを検知する（Ｓ６０５）。
【００５２】
放送受信装置１００ではＤＬＤＡＴＡ２を検知すると，ＤＬＤＡＴＡ１の受信処理の場合と同様に，ＣＰＵ１０５は受信手段１０１や復調手段１０２を制御し，放送信号に含まれるＤＬＤＡＴＡ２のデータを収集し結合する（Ｓ６０６）。
【００５３】
上記のＤＬＤＡＴＡ１の受信処理（Ｓ６０４）およびＤＬＤＡＴＡ２の受信処理の処理（Ｓ６０６）が完了すると，ＣＰＵ１０５はフラッシュメモリ内のＰｒｏｇｒａｍＣｏｄｅ領域２０２の書換え処理（Ｓ６０７）を行う。この時に書き込まれるＤＬＤＡＴＡ１，およびＤＬＤＡＴＡ２のプログラム内容は，図７に示すようなブロック構成のプログラムである。ＰｒｏｇｒａｍＣｏｄｅ領域２０２の書き換え処理（Ｓ６０７）に関しては、後ほど図８を用いて詳述する。
【００５４】
このＤＬＤＡＴＡ１の受信処理（Ｓ６０３）（Ｓ６０４）と，ＤＬＤＡＴＡ２の受信処理（Ｓ６０５）（Ｓ６０６）とは，非同期で別個に行われる処理であるが，これは順序を定めて行う同期処理であってもよい。またＤＬＤＡＴＡ１，ＤＬＤＡＴＡ２の２つの異なるＤＬＤＡＴＡが存在することを，別途識別信号の中に記述子等を設けて送信局から放送受信装置１００に通知する仕組みがあっても良い。
【００５５】
ここで，本実施の形態１におけるＤＬＤＡＴＡ１，ＤＬＤＡＴＡ２を説明するために図７を説明する。図７は本実施例におけるＤＬＤＡＴＡ１，ＤＬＤＡＴＡ２の内部の構成を示す図である。ＤＬＤＡＴＡ１は本実施の形態１における放送受信装置１００で動作可能である更新プログラムを有するデータであり，この更新プログラムはユーザが利用することを目的とした更新されたプログラムである。更新プログラムには例えば現在のユーザプログラムに問題が発生したなどの理由により，問題を修正したプログラムを放送受信装置１００に適用し問題を解決するためのプログラムなどが当てはまる。
【００５６】
図７における更新プログラムは，一例としてプログラムデータが６個のブロックから構成されるプログラムである場合を記述している。ここでのプログラムのブロックとは図４におけるフラッシュメモリのＰｒｏｇｒａｍＣｏｄｅ領域２０２内に存在するブロックと基本的に同じサイズのブロックである。これは論理的な意味でのブロックであり，フラッシュメモリ１０８のＰｒｏｇｒａｍＣｏｄｅ領域２０２に書き込む処理においては，このブロック単位で書き込みを行うことを想定して設けられている単位である。
【００５７】
また一方では，ＤＬＤＡＴＡ２には本実施の形態１における放送受信装置１００で動作可能な回復用プログラムを含むデータである。このＤＬＤＡＴＡ２に含まれる回復用プログラムは１ブロックもしくは２ブロック程度の少数のブロックから構成されるプログラムである。
【００５８】
図１０及び図１１に，ＤＬＤＡＴＡ２に含まれる回復用プログラムの一例を示す。図１０では本実施の形態１における回復用プログラムの内部構成を一例として説明する。図１０に示すように回復用プログラム７０２は、自身で回復用のダウンロード処理を行うことが可能となるように，受信手段１０１や復調手段１０２など，信号を受信するために必要な各手段を制御するためのドライバ（受信手段ドライバ、復調手段ドライバ）と，各手段を制御してダウンロード動作を実現するためのダウンロード動作用プログラム，および受信したデータを処理するためのデータ処理用プログラム，回復用ダウンロードを行うための放送信号や，データ受信のためデータを有する回復ダウンロード用パラメータ１００１を有する。回復用プログラム７０２とは，このように放送受信装置１００に問題が発生した場合に定められたパラメータを用いて回復用のダウンロード処理を行うことを目的として作成されたプログラムである。
【００５９】
この図１０に示すプログラムがＰｒｏｇｒａｍＣｏｄｅ領域２０２の先頭に存在することで放送受信装置１００はより大きなユーザ用のプログラムの更新が不完全な状態にあった場合は，回復ダウンロードを行うことが可能である。
【００６０】
なお，回復ダウンロードを行う際には，回復用プログラム７０２は回復用プログラム７０２自身の内部に保持する回復ダウンロード用パラメータ１００１を利用して回復ダウンロードを実行することが可能である。この回復ダウンロード用パラメータ１００１は，例えば図１１に示すように放送方式、Ｆｒｅｑｕｅｎｃｙ等のパラメータから構成され、ＤＬＤＡＴＡ２送信時に設定が可能であるため，送信局におけるＤＬＤＡＴＡ２の送出時の送出ＤＬＤＡＴＡを変更することにより回復ダウンロードの受信信号や，受信データを変更することが可能である。
【００６１】
このように図７、図１０及び図１１に示すように，ＤＬＤＡＴＡ１は複数のブロックから構成される更新用プログラム７０１を有し，ＤＬＤＡＴＡ２は１つもしくは少数のブロックから構成される比較的サイズの小さい回復用プログラム７０２を有している。このような２種類のＤＬＤＡＴＡを利用することが本発明の特徴の１つである。
【００６２】
次に，図６におけるＰｒｏｇｒａｍＣｏｄｅ書換え処理（Ｓ６０７）における処理の詳しい説明を図８に示す。図８は本実施の形態１においてのＰｒｏｇｒａｍＣｏｄｅ領域２０２の書換え処理の詳細を示すフローチャートである。
【００６３】
本実施の形態１における放送受信装置１００のＰｒｏｇｒａｍＣｏｄｅ領域２０２を更新プログラム（図７におけるＰＲＧ−Ｐ００からＰＲＧ−Ｐ０５）に書き換える処理では，ＣＰＵ１０５により，まず前述の（Ｓ６０４）および（Ｓ６０６）において受信したＤＬＤＡＴＡ１，ＤＬＤＡＴＡ２が正確なデータであるかどうかが確認される（Ｓ８０１）。これは通常はＣＲＣによる確認や暗号鍵などを用いた復号による確認を用いて行われる。
【００６４】
次に，ＰｒｏｇｒａｍＣｏｄｅ領域２０２の更新の処理として，まずはフラッシュメモリ１０８内のＰｒｏｇｒａｍＣｏｄｅ領域２０２の先頭部分，つまり共通領域（ＢＬＫ−Ｓ００）部分に回復用プログラム７０２（ＰＲＧ−Ｒ００）を書き込む（Ｓ８０２）。
【００６５】
フラッシュメモリ１０８の書換えはブロック単位で行われるため，この書き込み処理が完了した時点では，ＢＬＫ−Ｓ００には回復用プログラム７０２（ＰＲＧ−Ｒ００）が書き込まれた状態となる。よって，もしこれ以降の処理で何らかの問題が発生した場合でも，放送受信装置１００はこの回復用プログラム７０２により回復処理が実施可能となる。
【００６６】
次にＣＰＵ１０５は，更新用プログラム７０１の２番目の領域（ＰＲＧ−Ｐ０１）をフラッシュメモリ１０８のＰｒｏｇｒａｍＣｏｄｅ専用領域の先頭部分（ＢＬＫ−Ｐ００）に書き込む（Ｓ８０３）。
【００６７】
次にＣＰＵ１０５は，更新用プログラム７０１の３番目のブロック（ＰＲＧ−Ｐ０２）をフラッシュメモリのＢＬＫ−Ｐ０２に書き込む（Ｓ８０４）。
【００６８】
更に，以降の４番目・５番目のブロック（ＰＲＧ−Ｐ０３およびＰＲＧ−Ｐ０４）をフラッシュメモリ１０８に書き込む処理を継続して実施し（Ｓ８０５）、更新用プログラム７０１の最後のブロック（ＰＲＧ−Ｐ０５）をＢＬＫ−Ｐ０４に書き込む（Ｓ８０６）。
【００６９】
この（Ｓ８０２）〜（Ｓ８０６）の一連の処理により，フラッシュメモリ１０８内のＰｒｏｇｒａｍＣｏｄｅ領域２０２の状態は図９に示すような状態となり，ＰｒｏｇｒａｍＣｏｄｅ領域２０２の先頭（ＢＬＫ−Ｓ００）に回復用プログラム７０２（ＰＲＧ−Ｒ００）があり，それ以外の領域である（ＢＬＫ−Ｐ００）〜（ＢＬＫ−Ｐ０４）には，更新用プログラム７０１（ＰＲＧ−Ｐ０１からＰＲＧ−Ｐ０５）がブロック単位で書き込まれた状態となる。
【００７０】
つまり図９に示すＰｒｏｇｒａｍＣｏｄｅ領域２０２の状態は，放送受信装置１００はＢＬＫ−Ｓ００に書き込まれた回復用プログラム７０２（ＰＲＧ−Ｒ００）による回復ダウンロードが可能で，かつ目的としている更新用プログラム７０１のブロックの大部分がＰｒｏｇｒａｍＣｏｄｅ領域２０２に書き込まれた状態である。
【００７１】
このような図９のようなＰｒｏｇｒａｍＣｏｄｅ領域２０２の更新完了の直前の状態において，ＣＰＵ１０５はＰｒｏｇｒａｍＣｏｄｅ領域２０２全体の書き込み状態をブロックごとに確認する処理（ベリファイ）を行う（Ｓ８０７）。
【００７２】
このベリファイ処理（Ｓ８０７）により，もしＰｒｏｇｒａｍＣｏｄｅ領域２０２のＢＬＫ−Ｐ００からＢＬＫ−Ｐ０４に保存されたデータに異常が発生した場合は，ＣＰＵ１０５はシステムを再起動し，ＢＬＫ−Ｓ００に書き込まれた回復用プログラム７０２により回復用のダウンロード処理に入ることが可能である。
【００７３】
次に，図８におけるＳ８０７でのベリファイ処理の結果として，ＰｒｏｇａｒａｍＣｏｄｅ領域２０２のうちＢＬＫ−Ｐ００からＢＬＫ−Ｐ０４部分の書込みが問題なく完了したと判断されると，ＣＰＵ１０５はＰｒｏｇｒａｍＣｏｄｅ領域２０２の先頭ブロック（ＢＬＫ−Ｓ００）を更新用プログラム７０１の先頭ブロック（ＰＲＧ−Ｐ００）に書き換える（Ｓ８０８）。
【００７４】
この書込み処理（Ｓ８０８）によりＢＬＫ−Ｓ００およびＢＬＫ−Ｐ００〜ＢＬＫ−Ｐ０４の全ての領域は更新用プログラム７０１の状態となり，ＰｒｏｇｒａｍＣｏｄｅ領域２０２のプログラム更新処理は完了する。
【００７５】
図１２には，ＰｒｏｇｒａｍＣｏｄｅ領域２０２の更新失敗時に回復用プログラム７０２が動作する手順の一例を図で示す。
【００７６】
今例えば，前述の図８におけるＳ８０７でのベリファイ処理の結果として，ＰｒｏｇａｒａｍＣｏｄｅ領域２０２のうちＢＬＫ−Ｐ００からＢＬＫ−Ｐ０４部分で何らかの問題が発生しＰｒｏｇｒａｍＣｏｄｅ領域２０２に異常があると判断した場合は，ＣＰＵ１０５は回復用ダウンロードを行うために放送受信装置１００を再起動する（Ｓ１２０１）。再起動時のフラッシュメモリ１０８の状態は，前述のようにＰｒｏｇｒａｍＣｏｄｅ領域２０２のＢＬＫ−Ｓ００に回復用プログラム７０２（ＰＲＧ−Ｒ００）が書かれており，回復ダウンロードが可能である。
【００７７】
回復ダウンロードでは，回復用プログラム７０２が保持する回復ダウンロード用パラメータ１００１を用いて，更新用のプログラムデータ受信処理を開始する（Ｓ１２０２，Ｓ１２０３）。
【００７８】
この時に受信するデータおよび周波数などは回復ダウンロード用パラメータ１００１に定義して変更することが可能であるが，ここでは回復ダウンロード用パラメータ１００１として，ＤＬＤＡＴＡ１を受信する設定がされた場合を仮定する。この場合、回復ダウンロードを開始した結果としてＤＬＤＡＴＡ１が取得される（Ｓ１２０４）。
【００７９】
この回復ダウンロード用パラメータ１００１の設定は、例えば以前のバージョンのＤＬＤＡＴＡ１を異常回避用のＤＬＤＡＴＡとして別途放送しておき，この以前のバージョンのプログラムを取得してＰｒｏｇｒａｍＣｏｄｅ領域２０２を以前のプログラムに戻すという利用方法も考えられる。また回復ダウンロード用パラメータ１００１は，例えば放送受信装置１００がイーサネット（登録商標）などの放送受信以外の通信手段（図示せず）を所有していた場合には，イーサネット（登録商標）経由でサーバにアクセスを行い，異常回避用のＤＬＤＡＴＡを入手するなどの方法も考えられるが，これは回復用プログラム７０２内を変更することで設定が可能であると考えてよい。また回復用プログラム７０２では，ＤＬＤＡＴＡ１・ＤＬＤＡＴＡ２の両方を再度取得するようなプログラムであっても良い。
【００８０】
このように回復用プログラム７０２が動作中の放送受信装置１００は，回復ダウンロード用パラメータ１００１手順を用いて更新プログラムを取得すると，更新プログラムをＰｒｏｇｒａｍＣｏｄｅ領域２０２に書き込む（Ｓ１２０５）。この書き込み処理は基本的には図８に示すようなＰｒｏｇｒａｍＣｏｄｅ領域２０２書き込み処理と同等であるが，回復ダウンロードにおいては既にＢＬＫ−Ｓ００にはＰＲＧ−Ｒ００が書かれている状態のため，このブロックに対する書き込み処理は行わなくてもよい。以降，Ｓ１２０５における処理はＳ８０３以降の処理と同等と考えてよい。
【００８１】
Ｓ１２０５における，回復用プログラム７０２による更新プログラムの書き込み処理が完了すると，放送受信装置１００は再起動され（Ｓ１２０６），更新用プログラム７０１で起動される（Ｓ１２０７）。
【００８２】
上記のように，書き込みをブロック単位で実施し，また回復用プログラム７０２を最小限のブロックに書き込むことでファームウェア更新中の異常発生時のリカバリー率を高め，なおかつフラッシュメモリ１０８の全領域の有効利用を実現することが可能となる。
【００８３】
なお，本実施の形態１においては，図７に示すＤＬＤＡＴＡ１の更新用プログラム７０１は図４におけるＰｒｏｇｒａｍＣｏｄｅ領域２０２のブロック数と一致した６ブロックから構成されることを例として示したが，必ずしもＰｒｏｇｒａｍＣｏｄｅ領域２０２と更新用プログラム７０１の内部ブロック数が一致する必要があるものではなく，より多いブロック数や少ないブロック数であっても良い。
【産業上の利用可能性】
【００８４】
本発明は、放送または通信を介して放送信号を受信可能な放送受信装置でのソフトウェア更新方法として有用である。
【図面の簡単な説明】
【００８５】
【図１】本発明の第１の実施形態である放送受信装置１００のブロック図
【図２】フラッシュメモリ１０８に格納されたファームウェアをイメージで表現した図
【図３】放送受信装置１００の起動時の動作の様子を示すフローチャート
【図４】フラッシュメモリ１０８の内部の様子をより詳しく示した図
【図５】一般的な放送受信装置のファームウェア更新手順を示す図
【図６】本実施の形態１で提案するファームウェア更新方法の処理手順を示す図
【図７】ＤＬＤＡＴＡ１，ＤＬＤＡＴＡ２の構成を示す図
【図８】ＰｒｏｇｒａｍＣｏｄｅ領域２０２の書換え処理の詳細を示すフローチャート
【図９】ＰｒｏｇｒａｍＣｏｄｅ領域２０２の更新終了直前状態を示す図
【図１０】回復用プログラムの一例を示す図
【図１１】回復ダウンロード用パラメータの一例を示す図
【図１２】回復用プログラム７０２が動作する手順を示すフローチャート
【符号の説明】
【００８６】
１００    放送受信装置
１０１    受信手段
１０２    復調手段
１０３    映像音声デコード手段
１０５    ＣＰＵ
１０６    バスコントローラ
１０７    ＲＡＭ
１０８    フラッシュメモリ
１２０    映像表示装置
１２１    音声再生装置
２０１    ＢｏｏｔＣＯｄｅ領域
２０２    ＰｒｏｇｒａｍＣｏｄｅ領域
７０１    更新用プログラム
７０２    回復用プログラム
１００１    回復ダウンロード用パラメータ
【図１】
2010092324.tif 000003
【図２】
2010092324.tif 000004
【図３】
2010092324.tif 000005
【図４】
2010092324.tif 000006
【図５】
2010092324.tif 000007
【図６】
2010092324.tif 000008
【図７】
2010092324.tif 000009
【図８】
2010092324.tif 000010
【図９】
2010092324.tif 000011
【図１０】
2010092324.tif 000012
【図１１】
2010092324.tif 000013
【図１２】
2010092324.tif 000014