(57)【特許請求の範囲】
【請求項１】
ディジタルテレビジョン放送を受信すると共に、ディジタルテレビジョン放送受信装置の動作に必要で、且つ起動のためのブートルーチンを含む基本プログラムと応用プログラムとからなるプログラムを受信する周辺装置と、
書き換え可能な不揮発性メモリであって、前記基本プログラムを記憶するために設定された第１の基本プログラム記憶領域と、該第１の基本プログラム記憶領域とぼぼＮ／２（Ｎは、前記記憶領域の全ての領域のアドレス数）離れた位置に設定された第２の基本プログラム記憶領域とを有する記憶手段と、
前記周辺装置により受信された少なくとも前記応用プログラムを前記記憶手段に取り込むための制御を行うと共に、前記第１および第２の基本プログラム記憶領域の一方に記憶されている前記基本プログラムに従って起動された後に前記応用プログラムを実行するコンピュータと、
前記コンピュータが正常に起動するか否かをモニタし、前記コンピュータが正常に起動しない場合には、前記基本プログラムを読み出す記憶領域を、前記第１および第２の基本プログラム記憶領域の一方から他方へ切り替え、他方の基本プログラム記憶領域から読み出された前記基本プログラムによって前記コンピュータを再起動するモニタ手段とを備え、
前記コンピュータの制御によって、
少なくとも前記応用プログラムを前記記憶手段に取り込み中に、前記モニタ手段の不揮発性メモリに記憶されている最終ブートセクタ情報から前記第１および第２の基本プログラム記憶領域の内で、現在の前記基本プログラムが記憶されている一方の基本プログラム記憶領域を判別し、前記一方の基本プログラム記憶領域以外の記憶領域に対してダウンロードされた前記応用プログラムを書き込み、
前記応用プログラムの取込みが失敗したか否かを判定し、成功の場合には、前記ブートルーチンを実行することによって再起動を行い、失敗の場合には、再度ダウンロードが実行されるまで待機するようにした
ことを特徴とするディジタルテレビジョン放送受信装置。
【請求項２】
特許請求の範囲第１項において、
前記コンピュータは、ダウンロードリクエストを前記周辺装置に出力して、前記基本プログラムおよび前記応用プログラム、または前記応用プログラムだけを前記記憶手段に記憶させることを特徴とするディジタルテレビジョン放送受信装置。
【請求項３】
特許請求の範囲第１項において、
前記第１および前記第２の基本プログラム記憶領域のそれぞれが１セクタであることを特徴とするディジタルテレビジョン放送受信装置。
【請求項４】
周辺装置によって、ディジタルテレビジョン放送を受信すると共に、ディジタルテレビジョン放送受信装置の動作に必要で、且つ起動のためのブートルーチンを実行するための基本プログラムと応用プログラムとからなるプログラムを受信するステップと、
書き換え可能な不揮発性メモリであって、前記基本プログラムを記憶するために設定された第１の基本プログラム記憶領域と、該第１の基本プログラム記憶領域とぼぼＮ／２（Ｎは、前記記憶領域の全ての領域のアドレス数）離れた位置に設定された第２の基本プログラム記憶領域とを有する記憶手段に対して、
コンピュータによって、前記周辺装置により受信された少なくとも前記応用プログラムを前記記憶手段に取り込むための制御を行うと共に、前記第１および第２の基本プログラム記憶領域の一方に記憶されている前記基本プログラムに従って起動された後に前記応用プログラムを実行するステップと、
モニタ手段によって、前記コンピュータが正常に起動するか否かをモニタし、前記コンピュータが正常に起動しない場合には、前記基本プログラムを読み出す記憶領域を、前記第１および第２の基本プログラム記憶領域の一方から他方へ切り替え、他方の基本プログラム記憶領域から読み出された前記基本プログラムによって前記コンピュータを再起動するステップとを有し、
前記コンピュータの制御によって、
少なくとも前記応用プログラムを前記記憶手段に取り込み中に、前記モニタ手段の不揮発性メモリに記憶されている最終ブートセクタ情報から前記第１および第２の基本プログラム記憶領域の内で、現在の前記基本プログラムが記憶されている一方の基本プログラム記憶領域を判別し、前記一方の基本プログラム記憶領域以外の記憶領域に対してダウンロードされた前記応用プログラムを書き込み、
前記応用プログラムの取込みが失敗したか否かを判定し、成功の場合には、前記ブートルーチンを実行することによって再起動を行い、失敗の場合には、再度ダウンロードが実行されるまで待機するようにした
ことを特徴とするディジタルテレビジョン放送受信用プログラムの取得方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置および方法に関し、特に、起動時に実行する基本プログラムと、その基本プログラムに従って実行する応用プログラムを書き換えるディジタルテレビジョン放送受信装置およびディジタルテレビジョン放送受信用プログラムの取得方法に関する。
【０００２】
【従来の技術】
最近の半導体技術の進歩に伴い、様々な電子機器にマイクロコンピュータが応用されている。例えば、最近普及しつつある、人工衛星を介して番組などを放送する放送システムにおける受信機であるIRD（lntegrated Receiver Decoder）にも、マイクロコンピュータが応用されている。
【０００３】
このように普及の途上にある分野においては、提供されるサービスが今後変更される可能性が高いので、そのような変更に対応して、マイクロコンピュータのプログラムを変更することが可能であるように装置（例えばＩＲＤ）を設計する必要がある。
【０００４】
このマイクロコンピュータのプログラムは、ブートルーチンなどの基本的な処理を行うルーチンを有する基本プログラムと、実際にサービスを提供する応用プログラムに分けられる。
【０００５】
本出願人は、このような応用プログラムを変更（更新）する装置を、例えば下記特許文献１において先に提案した。
【０００６】
【特許文献１】
特開平８−１９５９５２号公報
【０００７】
また、基本プログラムと応用プログラムの両方を変更する場合、元の基本プログラムと応用プログラムが記憶されている記憶領域に新たな基本プログラムと応用プログラムを直接書込むと、基本プログラムの書込みの途中でエラーの発生や停電などが発生したとき、プードルーチンなどを有する基本プログラムが正常に１つも記憶されていない状態となり、装置の次回の起動が困難になるので、２つの記億部を、例えばEEPROM（Electrically Erasable and Programmable ROM）のような、書き換え可能な不揮発性のメモリに設けておき、プログラムの更新時には、更新ごとに交互にそれらの記億部のいずれかを利用することが考えられる。
【０００８】
このようにすることにより、プログラムの書込みの途中でエラーの発生や停電などが発生した場合においても、元の基本プログラムが保存されているので、次回の起動が可能となる。
【０００９】
【発明が解決しようとする課題】
しかしながら、このようにして２つの記億部を設ける場合、少なくとも基本プログラムの容量分の、書き換え可能な不揮発性のメモリが基本プログラムの保存用に必要となり、装置のコストを低減することが困難であるという問題を有している。
【００１０】
本発明は、このような状況に鑑みてなされたもので、２つの書き換え可能な不揮発性のメモリを設けることなく、プログラムの更新を行うことができるようにするものである。
【００１１】
【課題を解決するための手段】
この発明は、ディジタルテレビジョン放送を受信すると共に、ディジタルテレビジョン放送受信装置の動作に必要で、且つ起動のためのブートルーチンを含む基本プログラムと応用プログラムとからなるプログラムを受信する周辺装置と、
書き換え可能な不揮発性メモリであって、基本プログラムを記憶するために設定された第１の基本プログラム記憶領域と、該第１の基本プログラム記憶領域とぼぼＮ／２（Ｎは、記憶領域の全ての領域のアドレス数）離れた位置に設定された第２の基本プログラム記憶領域とを有する記憶手段と、
周辺装置により受信された少なくとも応用プログラムを記憶手段に取り込むための制御を行うと共に、第１および第２の基本プログラム記憶領域の一方に記憶されている基本プログラムに従って起動された後に応用プログラムを実行するコンピュータと、
コンピュータが正常に起動するか否かをモニタし、コンピュータが正常に起動しない場合には、基本プログラムを読み出す記憶領域を、第１および第２の基本プログラム記憶領域の一方から他方へ切り替え、他方の基本プログラム記憶領域から読み出された基本プログラムによってコンピュータを再起動するモニタ手段とを備え、
コンピュータの制御によって、
少なくとも応用プログラムを記憶手段に取り込み中に、モニタ手段の不揮発性メモリに記憶されている最終ブートセクタ情報から第１および第２の基本プログラム記憶領域の内で、現在の基本プログラムが記憶されている一方の基本プログラム記憶領域を判別し、一方の基本プログラム記憶領域以外の記憶領域に対してダウンロードされた応用プログラムを書き込み、
応用プログラムの取込みが失敗したか否かを判定し、成功の場合には、ブートルーチンを実行することによって再起動を行い、失敗の場合には、再度ダウンロードが実行されるまで待機するようにした
ことを特徴とするディジタルテレビジョン放送受信装置である。
【００１２】
この発明は、周辺装置によって、ディジタルテレビジョン放送を受信すると共に、ディジタルテレビジョン放送受信装置の動作に必要で、且つ起動のためのブートルーチンを実行するための基本プログラムと応用プログラムとからなるプログラムを受信するステップと、
書き換え可能な不揮発性メモリであって、基本プログラムを記憶するために設定された第１の基本プログラム記憶領域と、該第１の基本プログラム記憶領域とぼぼＮ／２（Ｎは、記憶領域の全ての領域のアドレス数）離れた位置に設定された第２の基本プログラム記憶領域とを有する記憶手段に対して、
コンピュータによって、周辺装置により受信された少なくとも応用プログラムを記憶手段に取り込むための制御を行うと共に、第１および第２の基本プログラム記憶領域の一方に記憶されている基本プログラムに従って起動された後に応用プログラムを実行するステップと、
モニタ手段によって、コンピュータが正常に起動するか否かをモニタし、コンピュータが正常に起動しない場合には、基本プログラムを読み出す記憶領域を、第１および第２の基本プログラム記憶領域の一方から他方へ切り替え、他方の基本プログラム記憶領域から読み出された基本プログラムによってコンピュータを再起動するステップとを有し、
コンピュータの制御によって、
少なくとも応用プログラムを記憶手段に取り込み中に、モニタ手段の不揮発性メモリに記憶されている最終ブートセクタ情報から第１および第２の基本プログラム記憶領域の内で、現在の基本プログラムが記憶されている一方の基本プログラム記憶領域を判別し、一方の基本プログラム記憶領域以外の記憶領域に対してダウンロードされた応用プログラムを書き込み、
応用プログラムの取込みが失敗したか否かを判定し、成功の場合には、ブートルーチンを実行することによって再起動を行い、失敗の場合には、再度ダウンロードが実行されるまで待機するようにした
ことを特徴とするディジタルテレビジョン放送受信用プログラムの取得方法である。
【００１３】
【発明の実施の形態】
第１図は、本発明の情報処理装置の一実施の形態の構成を示している。ＣＰＵ１（実行手段）は、フラッシュメモリ４（記憶手段）またはＲＡＭ５（第２の記憶手段）に記憶されているプログラム（基本プログラムまたは応用プログラム）に従って動作し、アドレスバス２を介して各回路にアドレス情報を供給し、そのアドレスに対応するデータを、データバス３を介して、その回路に送信、または、その回路から受信するようになされている。
【００１４】
フラッシュメモリ４は、書き換え可能な不揮発性のメモリであり、起動時に実行されるブートルーチンなどの基本プログラムを、論理セクタ０に対応する物理セクタ（第１の記憶領域）に記憶し、その基本プログラムに従って実行される応用プログラムを論理セクタ１から論理セクタＮ−１（Ｎはセクタ数を表す）までに対応する物理セクタ（第２の記憶領域）に記憶している。なお、論理セクタは、ＣＰＵ１がアドレッシングに利用するときに使用される（後述）。
【００１５】
ＲＡＭ５は、ＣＰＵ１による処理の途中において、プログラムやデータを一時的に記憶するようになされている。
【００１６】
システムモニタ回路７は、新たな基本プログラムや応用プログラムのダウンロードが成功したか否かや、フラッシュメモリ４において基本プログラムが記憶されている位置などの各種状態を監視するようになされている（後述）。
【００１７】
リセットジェネレータ８は、システムモニタ回路７よりリセットリクエスト信号が供給されると、ＣＰＵ１にリセット信号を出力するようになされている。
【００１８】
ダウンロードプログラムバッファ９は、例えばＲＡＭなどの半導体メモリで構成され、周辺装置１１より供給される新たなプログラムを、一時的に記憶するようになされている。
【００１９】
周辺装置１１は、所定の媒体や伝送路（図示せず）を介して供給される新たなプログラムを受け取るようになされている。周辺装置の一例は、ディジタル衛星放送、ディジタル地上波放送等のディジタルテレピジョン放送の受信部（アンテナ、フィルタ、チューナ、復調器、エラー訂正回路等）であり、プログラムは、ＩＲＤの動作に必要なプログラムである。
【００２０】
第２図は、システムモニタ回路７の構成例を示している。ＣＰＵＩから状態モニタ回路２１に対して、タイマ信号およびダウンロード情報が供給されると共に、ｎビットのアドレスバス信号の内、（ｎ−１）ビットのアドレス信号が供給される。状態モニタ回路２１から出力されたブートセクタ制御信号Ｂおよびエラー信号Ｃは、ＸＯＲ（排他的論理和）回路２２に供給される。ＸＯＲ回路２２から出力される信号は、ＸＯＲ回路２３の一方の入力に供給されると共に、状態モニタ回路２１に内蔵された不揮発性ＲＡＭ（ＮＶＲＡＭ）３１およびＣＰＵ１に供給される。ＣＰＵ１から供給されるアドレスバス（ｎビット）の内、所定の１ビットのアドレス信号ＡがＸＯＲ回路２３の他方の入力に供給され、ＸＯＲ回路２３から出力されるアドレス信号Ａ’は、（ｎ−１）ビットのアドレスバス信号と共にフラッシュメモリ４に供給される。さらに、状態モニタ回路２１から出力されたリセットリクエスト信号Ｒは、リセットジェネレータ８に供給され、リセットジェネレータ８から出力されたリセット信号がＣＰＵ１に供給される。
【００２１】
ところで、本発明における情報処理装置では、システムの起動の際に実行される基本プログラムがフラッシュメモリ４内に記憶される場所は、複数設けられている。そして、フラッシュメモリ４内のプログラム全てをダウンロードして書き換える際には、それまでの動作に用いられている基本プログラムが記憶されている場所とは別の場所に基本プログラムを記憶するようになされている。こうすることによって、仮に基本プログラムのダウンロード中にエラーが生じ、ダウンロードが失敗に終わった場合でも、必ず正常に起動することができる基本プログラムが残っているので、ダウンロード失敗により起動不可能な状態になることが防止される。
【００２２】
以下、説明を簡単にするために、フラッシュメモリ４が０から３１のセクタ数を有し、フラッシュメモリ４内に基本プログラムが記憶可能なセクタを２つ（物理セクタ０と物理セクタ１６）設けた場合について述べるが、本発明は、これらの数値に限定されるものではない。
【００２３】
次に、システムモニタ回路７の電源起動時の動作について、上述の第２図および第３図のタイミングチャートを参照して説明する。
【００２４】
状態モニタ回路２１は、内蔵するＮＶＲＡＭ３１に、ＸＯＲ回路２２から出力される信号の値を定期的に記憶するようになされており、これにより受信機などの情報処理装置の電源が切られる直前にＸＯＲ回路２２から出力されていた信号の状態（ハイレベルまたはローレベル）を記憶することができるようになされている。
【００２５】
そして、電源がオンされると、状態モニタ回路２１は、内蔵するＮＶＲＡＭ３１に記憶されている、前回起動時において電源が切られる直前のＸＯＲ回路２２の出力（最終ブートセクタ情報）を読出してＸＯＲ回路２２に供給する。また、状態モニタ回路２１は、ＣＰＵ１から供給される（ｎ−１）ビットのアドレス情報とタイマ信号とからＣＰＵ１の状態を判断し、エラーの状態であると判断すれば、エラー信号Ｃとしてハイレベル信号をＸＯＲ回路２２に出力する（第３図Ａ）。さらに、状態モニタ回路２１は、エラー状態を検出した場合、リセットジェネレータ８に対してリセットリクエスト信号Ｒを出力する（第３図Ｂ）。
【００２６】
仮に、ＮＶＲＡＭ３１にローレベル信号が記憶されていたとすると、エラー信号Ｃが発生されなければ、ＸＯＲ回路２２の出力がローレベル信号となり、このローレベル信号ガＸＯＲ回路２３に対して出力される。
【００２７】
ここで前回の起動時に基本プログラムのダウンロードが行われ、そのダウンロードが失敗に終わった場合には、当然ながらＣＰＵ１は正常に起動が行われず、状態モニタ回路２１は、上述のように、これを検出してエラー信号Ｃとしてハイレベル信号をＸＯＲ回路２２に出力する。これによりＸＯＲ回路２２の出力がハイレベルに反転し（第３図Ｄ）、タイミングｔ１の直前のタイミングでＮＶＲＡＭ３１にハイレベル信号が記憶されることになる。状態モニタ回路２１は、エラ一信号Ｃを出力すると同時に、リセットリクエスト信号をリセットジェネレータ８に対して出力する。リセットジェネレータ８は、リセットリクエスト信号に応答してタイミングｔ１において、リセット信号を発生し（第３図Ｃ）、これによってシステム全体が再起動される（第３図中の網かけの部分）。再起動が行われると、ＮＶＲＡＭ３１に記憶されているハイレベル信号がブートセクタ制御信号ＢとしてＸＯＲ回路２２に供給される（第３図Ｅ）と共に、エラー信号が発生されないので、ＸＯＲ回路２２の出力がハイレベル信号となり（第３図Ｄ）、ＸＯＲ回路２３に供給される。ＣＰＵ１から供給される１ビットのアドレス信号Ａは、エラーが発生する前と再起動後で同じ値であるため（第３図Ｆ）、ＸＯＲ回路２３の出力であるアドレス信号Ａ’は、エラーが発生する前と再起動後では反転することになる。
【００２８】
こうしてフラッシュメモリ４のアクセスされるアドレスが切り替えられ、ダウンロードの失敗によらず、保存されている基本プログラムによって再起動か行われる。
【００２９】
次に、第４図および第５図のフローチャートを参照して、第１図の情報処理装置の電源立ち上げ後の動作について説明する。なお、以下の説明では、基本プログラムが物理セクタ０に記憶されている場合について説明するが、物理セクタ１６に基本プログラムが記憶されている場合も同様に動作可能である。
【００３０】
ステップＳ１において、電源が投入されると、ＣＰＵ１は、第６図に示すように、基本プログラムが記憶されているフラッシュメモリ４の論理セクタ０の先頭に記憶されているリセットベクタ（reset vector）を参照し、その値が指すアドレスに記憶されているブートルーチン（図中のboot（））を実行する。ここで、エラーが発生した場合には、上述した再起動の処理が行われる。
【００３１】
次に、ステップＳ２において、ＣＰＵ１は、コピールーチン（図中のcopy＿prog（））を実行し、ダウンロードの管理やアプリケーションタスクを実行させるルートタスクルーチン（図中のrootTask（））、新たなプログラムを周辺装置１１よりダウンロードするダウンロードルーチン（図中のdownloader（））、および、割込処理を行うサービスルーチン（図中のbasic ISRs）を論理セクタ０から読出し、第６図に示すようにＲＡＭ５に記憶させる。
【００３２】
ステップＳ３において、ＣＰＵ１は、ＲＡＭ５のルートタスクルーチンの実行を開始する。なお、ステップＳ３以降の処理は、このルートタスクルーチンに従って行われる。
【００３３】
このように、ＣＰＵ１は、ルートタスクルーチンなどの論理セクタ０に記憶されているルーチンをＲＡＭ５に記憶させた後、ＲＡＭ５に記憶されているルーチンを実行することにより、フラッシュメモリ４の論理セクタ０の書き換えが可能となる。また、割込処理を行うサービスルーチンをＲＡＭ５に記憶させることにより、プログラムの実行中にバスエラー、アドレスエラー、不当命令などが発生した場合においても、例外処理を行うことができるので、例外処理後に適切なプログラムのダウンロードを実行することができる。
【００３４】
まず、ステップＳ４において、ＣＰＵ１は、周辺装置１１からのプログラムの前回のダウンロードが失敗しているか否かを、周辺装置１１（またはシステムモニタ回路７）に問い合わせ、前回のダウンロードが成功していると判断した場合、ステップＳ５に進み、全ての論理セクタを検査する。この論理セクタを検査する場合、先ず、ダウンロードされたプログラムの書き換え開始セクタである論理セクタ１６から開始して論理セクタ３２まで検査し、その後論理セクタ０から、論理セクタ１５まで検査するといった順序で検査を行うことが望ましい。なお、電源投入時からこの時点までに一度もダウンロードを行っていない場合においても、ステップＳ５に進む。
【００３５】
そして、ステップＳ６において、ＣＰＵ１は、全ての論理セクタにおいて異常を発見したか否かを判断し、異常を発見しなかったと判断した場合、ステップＳ７に進み、アプリケーションタスク（応用プログラム）（図中のapplicationTask1（），applicationTask2（），・・・）をマルチタスクとして順次開始した後、ステップＳ９（第５図）に進み、ダウンロードが実行されるまで待機する。
【００３６】
例えば、プログラムバージョンレジスタやチェックサム用のレジスタをフラッシュメモリ４の所定の記憶領域に確保し、プログラムの書込み時に、プログラムのバージョンやチェックサムの値を予め記憶させておき、ステップＳ６においてその値を参照することにより、ＣＰＵ１は、各論理セクタが異常であるか否かを判断することができる。
【００３７】
また、周辺装置１１は、ダウンロードの結果（成功または失敗）の情報を記憶していない場合においても、このように、所定の論理セクタを検査することにより、前回のダウンロードが成功しているか否かを判断することができる。
【００３８】
一方、ステップＳ６において、ＣＰＵ１が異常を発見したと判断した場合、ステップＳ８に進む。そして、ステップＳ８において、ＣＰＵ１は、論理セクタ１６が異常であるか否かを判断し、論理セクタ１６が異常である場合、前回の全ダウンロードでブートセクタの書込みに失敗していると判断し、全ての論理セクタに対応する新たなプログラムのダウンロード（全ダウンロード）のリクエストを周辺装置１１に出力した後、ステップＳ９（第５図）に進み、そのダウンロードが実行されるまで待機する。なお、論理セクタ１６は正常である場合、何もせずステップＳ９に進む。
【００３９】
また、ステップＳ４において、前回のダウンロードが失敗していると判断した場合、（アプリケーションタスクを実行しても、バスエラー、アドレスエラー、不当命令などが発生する可能性が高いので、）ステップＳ９（第５図）に進み、次のダウンロードが実行されるまで待機する。
【００４０】
そして、ステップＳ９において次のダウンロードが実行されるまで待機し、周辺装置１１によりダウンロードが開始されると、ＣＰＵ１は、まず、ステップＳ１０において、ブートルーチンが配置されているセクタ（ブートセクタ）、すなわち、論理セクタ０に対応する物理セクタの番号（今の場合、０か１６）を、例えば不揮発性メモリ３１に記憶されている最終ブートセクタ情報から特定する。
【００４１】
また、応用プログラムがマルチタスク環境で動作している場合は、この時点で、ルートタスク（書換プログラムを有するもの）を残してすべての他のタスクは、実行を中止する。
【００４２】
次に、ステップＳ１１において、ＣＰＵ１は、実行するダウンロードの種類が、全ダウンロードであるか、あるいは、ブートセクタ以外のセクタのプログラム（すなわち、応用プログラム）をダウンロードする部分ダウンロードであるかを、周辺装置１１からの所定の信号で判断し、今回のダウンロードが部分ダウンロードである場合、ステップＳ１２に進み、周辺装置１１より供給されたプログラムを、論理セクタ１から最後の論理セクタまでの領域に記憶させる。
【００４３】
第６図に示すように、ブートルーチンなどの基本プログラムと異なるセクタに、アプリケーションタスクと、それに対応するデータを記憶することにより、部分ダウンロードを行うことができる。部分ダウンロードは、基本プログラムを書き換えないので、データが保護されている。従って、万一ダウンロード中に事故か発生しても、かかる構成をとることによって、再部分ダウンロードが可能となる。
【００４４】
このとき、ブートセクタが物理セクタ０にだけ配置されており、そこに記憶されている基本プログラムにより起動が行われている場合、プログラムは、物理セクタ１〜最後の物理セクタ（物理セクタＮ−１）に上書きされる。
【００４５】
一方、現在は物理セクタ０に記憶されている基本プログラムにより起動されているが、他のブートセクタが物理セクタ１６に配置されている場合が考えられる。これは、前回の起動時に全ダウンロードが行われて、ブートセクタまでは正常にダウンロードが行われたが、応用プログラムのダウンロードに失敗した時は、このような状態となる。
【００４６】
この時の対処として、物理セクタ０のブートセクタを残して他の部分を部分ダウンロードする場合と、物理セクタ１６のブートセクタを残して他の部分を部分ダウンロードする場合とが考えられる。この二つのケースのどちらにするかは、例えば物理セクタ０と１６に記憶されているブートセクタのバージョン情報を比較し、新しい方を残すようにしても良い。あるいは、これから部分ダウンロードしようとするプログラムと親和性の高い方のブートセクタを残して他の部分をダウンロードするようにしても良い。
【００４７】
次に、ステップＳ１３において、ＣＰＵ１は、このダウンロードが失敗したか否かを判断し、ダウンロードが成功している場合、ステップＳ１に戻り、システムをブートし直す（再起動を行う）。
【００４８】
一方、ステップＳ１３においてダウンロードが失敗したと判断した場合、ＣＰＵ１は、内蔵するメモリにダウンロードの失敗の情報を記憶し、さらに、ステップＳ１４において、ダウンロードが失敗したことを、所定の信号を出力して周辺装置１１に報告した後、ステップＳ９に戻り、再度ダウンロードが実行されるまで待機する。
【００４９】
また、ステップＳ１１において今回のダウンロードが、全ダウンロードであると判断された場合、ステップＳ１５に進み、ＣＰＵ１は、周辺装置１１より供給されたプログラムを記憶させる。すなわち、ブートセクタを論理セクタ１６に書き、論理セクタ１のデータを論理セクタ１７に書き、以下順に書いて行き、論理セクタ０に戻り、論理セクタ１５までの領域にデータを書く。
【００５０】
第７図に示すように、例えば３２ビットでフラッシュメモリ４のアドレッシングが行われており、ブートセクタの切り替え制御に、アドレス情報の第２１ビットの値を使用する場合、ＣＰＵ１が論理セクタ０の先頭（０ｘ２０００００（０ｘは１６進数を表す））をアドレッシングしたとき、アドレス信号の値が０であると、物理セクタ０の先頭（０ｘ２０００００）がアドレッシングされる。一方、アドレス信号の値が１であると、物理セクタ１６の先頭（０ｘ３０００００）がアドレッシングされる。
【００５１】
従って、ブートセクタが物理セクタ０に配置されている場合、第７図に示すように、プログラムは、論理セクタ番号の順番で、物理セクタ１６〜最後の物理セクタ（物理セクタＮ−１）と、物理セクタ０〜物理セクタ１５に順次書込まれる。従って、このときの所定の論理セクタ番号に対応する物理セクタ番号は、その論理セクタ番号に１６を加算した数に対するセクタ数Ｎの剰余（（論理セクタ番号十１６）（ｍｏｄ  Ｎ））で表される。
【００５２】
一方、ブートセクタが物理セクタ１６に配置されている場合、プログラムは、論理セクタ番号の順番で、物理セクタ０〜最後の物理セクタ（物理セクタＮ−１）に順次書込まれる。従って、書込み後の各物理セクタの番号は、その物理セクタに対応する論理セクタの番号と同一の番号となる。
【００５３】
すなわち、元のブートセクタが物理セクタ０に配置されていた場合、今回のダウンロードにより、ブートセクタは、物理セクタ１６に配置され、元のブートセクタが物理セクタ１６に配置されていた場合、今回のブートセクタは、物理セクタ０に配置される。このように、元のブートセクタに新たなプログラムを上書きする前に、今回のブートセクタのプログラムを書込まないようにすることにより、プログラムのダウンロード中にエラーが発生した場合においても、少なくとも１つの正常なブートセクタが保存されていることになる。
【００５４】
次に、ステップＳ１６において、ＣＰＵＩは、このダウンロードが失敗したか否かを判断する。ダウンロードが成功している場合には、ステップＳ１（第４図）に戻り、システムをブートし直す（再起動を行う）。
【００５５】
一方、ステップＳ１６においてダウンロードが失敗したと判断した場合、ＣＰＵ１は内蔵するメモリにダウンロードの失敗の情報を記憶し、さらに、ステップＳ１７において、失敗したことをシステムモニタ回路７および周辺装置１１に報告した後、ステップＳ９に戻り再度ダウンロードが実行されるまで待機する。
【００５６】
以上のようにして、全ダウンロードまたは部分ダウンロードが必要に応じて行われるとともに、ダウンロードが失敗していない場合においては、ブート後に所定のアプリケーションタスクが実行される。
【００５７】
次に、第８図のフローチャートを参照して、バスエラー、アドレスエラー、不当命令などが発生したときの例外処理について説明する。
【００５８】
上述したステップＳ５で、全論理セクタを検査したにもかかわらず、検査もれによりエラーが発生した場合に、以下の例外処理がなされる
【００５９】
最初に、ＣＰＵ１は、ステップＳ２１において、エラーが発生したアドレスを読出し、ステップＳ２２において、そのアドレス値からエラーが発生した論理セクタを特定する。
【００６０】
そして、ステップＳ２３において、ＣＰＵ１は、その論理セクタがブートセクタ（すなわち、論理セクタ０）であるか否かを判断し、その論理セクタがブートセクタである場合、ステップＳ２４において、全ダウンロードのリクエストを周辺装置１１に送信し、そのセクタがブートセクタ以外のセクタである場合、部分ダウンロードのリクエストを送信する。
【００６１】
このようにして例外処理を行うことにより、例えばダウンロードの途中で停電になり、周辺装置１１に対してダウンロードの失敗の報告が行われておらず、さらに論理セクタのチェック時に検査もれをしてしまった場合においても、再度ダウンロードを実行することかできる
【００６２】
なお、上記実施の形態においては、ブートセクタを配置する物理セクタの番号を０または１６に設定しているが、他の物理セクタにブートセクタを配置するようにしてもよい。
【００６３】
また、上記実施の形態においては、基本プログラムをＲＡＭ５に記憶させているが、フラッシュメモリ４のブートセクタ（論理セクタ０）に記憶されているプログラム書換モジュール（第６図のdownloader（））によって、論理セクタ１６からＮ−１までを書き換え、論理セクタ０〜１５の書き換えは、新たに供給されるプログラム書換モジュールに実行を移してすべてのプログラムを書き換えるようにしてもよい。それによって、ＲＡＭ５に基本プログラムを記憶する必要がない
【００６４】
その場合、新たに供給されるプログラム書換モジュール（downloader（））が記憶されるアドレスを、予めデータとして元のプログラム書換モジュールに与えておき、ＣＰＵ１は、元のプログラム書換モジュールに従って、新たな基本プログラムを論理セクタ０に書込んだ後、プログラムの実行を、新たな論理セクタ０における新たなプログラム書換モジュールに移し、その新たなプログラム書換モジュールに従って、論理セクタ０より後の残りのプログラムをフラッシュメモリ４に書込む。
【００６５】
【発明の効果】
以上のごとく、本発明によれば、元の応用プログラムが記憶されている第２の記憶領域における所定の領域に新たな基本プログラムを記憶した後、新たな基本プログラムを記憶した領域の終わりから第２の記憶領域の終わりまでの領域、元の基本プログラムが記憶されている第１の記憶領域、および、第２の記憶領域の先頭から新たな基本プログラムが記憶されている領域の先頭までの領域に、新たな応用プログラムを記憶するようにしたので、書き換え可能な不揮発性のメモリの容量が少なくて済むようにすることができる。
【図面の簡単な説明】
【図１】本発明の情報処理装置の一実施の形態を示すブロック図である。
【図２】第１図のシステムモニタ回路の構成例を示すブロック図である。
【図３】システムモニタ回路の動作説明に用いるタイミングチャートである。
【図４】第１図の情報処理装置の動作について説明するフローチャートである。
【図５】第１図の情報処理装置の動作について説明するフローチャートである。
【図６】第１図のフラッシュメモリのメモリマップの一例を示す略線図である。
【図７】全ダウンロード時における物理セクタと論理セクタの対応関係の変更の例を示す略線図である。
【図８】第１図の情報処理装置の例外処理の動作について説明するフローチャートである。
【符号の説明】
１  ＣＰＵ
２  アドレスバス
３  データバス
４  フラッシュメモリ
５  ＲＡＭ
７  システムモニタ回路
８  リセットジェネレータ
９  ダウンロードバッファ
１１  周辺装置
２１  状態モニタ回路
２２，２３  ＸＯＲ回路
３１  不揮発性ＲＡＭ
【図１】
0004279902.tif 000002
【図２】
0004279902.tif 000003
【図３】
0004279902.tif 000004
【図４】
0004279902.tif 000005
【図５】
0004279902.tif 000006
【図６】
0004279902.tif 000007
【図７】
0004279902.tif 000008
【図８】
0004279902.tif 000009
0004279902.tif 000010