(57)【要約】【課題】プログラムが正常に動作しなくても、そのことを自動的に判断し、バックアッププログラムないしデフォルトプログラムを自動的に実行し、装置の動作を正常に保つ。【解決手段】フラッシュＲＯＭ１３０内に、前回にＯＳプログラムが正常に動作したか否かを示す状態フラグ１３８を設け、ＯＳプログラムを実行するときには、状態フラグ１３８の状態をチェックし、前回にＯＳプログラムが正常に動作した場合には、カレントＯＳプログラム１３２を実行し、前回にＯＳプログラムが正常に動作しなかった場合には、バックアップＯＳプログラム１３１を実行する。【選択図】      図８
2004227143.tif 000002
【特許請求の範囲】
【請求項１】
他のプログラムを実行させる命令を含む第１プログラムを格納する第１記憶手段と、
前記第１プログラムの前記命令に従って所定の処理を実行する第２プログラムを格納する第２記憶手段と、
前記第２プログラムのバックアッププログラムを格納する第３記憶手段と、
前記第２プログラムがその所定の処理を正常に実行しないことを実質的に示す第１状態情報を格納する第４記憶手段と、
前記第１状態情報に基づいて、前記第２プログラムおよび前記バックアッププログラムのうちのいずれか一方を、前記第１プログラムの前記命令に従って実行させるべきプログラムとして選択する第１選択手段と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記第１選択手段は、前記第１プログラムに含まれる命令によって実現されることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１プログラムが前記第２プログラムまたは前記バックアッププログラムを実行させるときまたは実行させたときに、前記第１状態情報を第１内容に設定または変更する第１状態情報設定手段と、
前記第２プログラムまたは前記バックアッププログラムが正常に終了するときまたは終了したときに、前記第１状態情報を第２内容に設定または変更する第２状態情報設定手段と
を備えたことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第１状態情報設定手段は、前記第１プログラムに含まれる命令によって実現されることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第２状態情報設定手段は、前記第２プログラムまたは前記バックアッププログラムに含まれる命令により実現されることを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記第２プログラムのデフォルトプログラムを格納する第５記憶手段と、
前記バックアッププログラムがその所定の処理を正常に実行しないことを実質的に示す第２状態情報を格納する第６記憶手段と、
前記第２状態情報に基づいて、前記バックアッププログラムおよび前記デフォルトプログラムのうちのいずれか一方を、前記第１プログラムの前記命令に従って実行させるべきプログラムとして選択する第２選択手段と
を備えたことを特徴とする請求項１ないし５のいずれかに記載の情報処理装置。
【請求項７】
前記第２選択手段は、前記第１プログラムに含まれる命令によって実現されることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記第２プログラムを更新する更新手段と、
前記更新手段により更新される前の前記第２プログラムを前記バックアッププログラムとして前記第３記憶手段に格納するバックアップ手段と
を備えたことを特徴とする請求項１ないし７のいずれかに記載の情報処理装置。
【請求項９】
前記更新手段は、情報通信路を介して供給される新しい第２プログラムを受信し、この新しい第２プログラムを既存の第２プログラムと置き換えることを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記第１状態情報は、前記第２プログラムがその所定の処理を正常に実行しなかった回数を実質的に示し、
前記第１選択手段は、前記第１状態情報が示す前記回数と参照数とを比較し、その結果に基づいて、前記第２プログラムおよび前記バックアッププログラムのうちのいずれか一方を、前記第１プログラムの前記命令に従って実行させるべきプログラムとして選択することを特徴とする請求項１または２に記載の情報処理装置。
【請求項１１】
前記バックアッププログラムが選択されたことを実質的に示す告知情報を発する第１告知手段を備えたことを特徴とする請求項１ないし１０のいずれかに記載の情報処理装置。
【請求項１２】
前記デフォルトプログラムが選択されたことを実質的に示す告知情報を発する第２告知手段を備えたことを特徴とする請求項６に記載の情報処理装置。
【請求項１３】
前記第１状態情報はフラグであることを特徴とする請求項１ないし１２のいずれかに記載の情報処理装置。
【請求項１４】
前記第１プログラムは、ブートローダのプログラムを含むことを特徴とする請求項１ないし１３のいずれかに記載の情報処理装置。
【請求項１５】
前記第２プログラムは、オペレーティングシステムのプログラムを含むことを特徴とする請求項１ないし１４のいずれかに記載の情報処理装置。
【請求項１６】
コンピュータを請求項１ないし１５のいずれかに記載の情報処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項１７】
他のプログラムを実行させる命令を含む第１プログラムと、前記第１プログラムの前記命令に従って所定の処理を実行する第２プログラムと、前記第２プログラムのバックアッププログラムと、前記第２プログラムがその所定の処理を正常に実行しないことを実質的に示す第１状態情報とを取り扱うことが可能な装置において実行可能な情報処理方法であって、
前記第１プログラムが前記第２プログラムまたは前記バックアッププログラムを実行させるときまたは実行させたときに、前記第１状態情報を第１内容に設定または変更する第１状態情報設定工程と、
前記第２プログラムまたは前記バックアッププログラムが正常に終了するときまたは終了したときに、前記第１状態情報を第２内容に設定または変更する第２状態情報設定工程と、
前記第１プログラムが再び前記第２プログラムまたは前記バックアッププログラムを実行させるとき、前記第１状態情報に基づいて、前記第２プログラムおよび前記バックアッププログラムのうちのいずれか一方を選択する選択工程と、
を備えたことを特徴とする情報処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばブートローダ、オペレーティングシステム、アプリケーションソフトウェアなどのプログラムを実行して所定の処理を行うことが可能な情報処理装置および情報処理方法に関する。
【０００２】
【従来の技術】
現在では、コンピュータ等の情報処理装置を、ネットワーク等の通信路を介して相互に接続し、複数の情報処理装置間で、情報のやり取りを行う情報通信システムが広く普及している。
【０００３】
このような情報通信システムは、例えば、テレビ放送の領域にも普及しつつある。従来では、放送局がテレビ番組を構成する映像および音声を電波に変換して送信し、家庭にあるテレビがそれ受信して再生するのみであった。しかし、現在では、テレビ放送のデジタル化と相俟って、放送局と家庭にあるテレビとの間で双方向通信を行う技術が開発され、それに伴い、テレビも単なる受信器・受像器ではなく、情報を生成し、送信する機能を備えた情報処理装置と同等のものとなってきている（以下、情報処理装置と同等のものとなったテレビを「テレビ装置」と呼ぶ）。このような点に着目すれば、近い将来、テレビ放送システムは、一種の映像メディア情報通信システムと化すであろう。
【０００４】
このような映像メディア情報通信システムにおけるテレビ装置には、コンピュータの基本的な構造が取り込まれている。すなわち、個々のテレビ装置は、放送局から送信されるコンテンツ情報を受信し、それを再生するアプリケーションソフトウェアと、そのアプリケーションソフトウェアの実行制御および管理等を行うオペレーティングシステムと、テレビの電源投入時などに、そのオペレーティングシステムを起動させるブートローダなどを備えている。
【０００５】
【発明が解決しようとする課題】
ところで、上述したような映像メディア情報通信システムでは、コンテンツ情報だけでなく、個々のテレビ装置内で実行されるアプリケーションソフトウェアやオペレーティングシステム等のプログラムをも、通信路を介して配信することが可能となる。例えば、テレビ装置内で実行されるオペレーティングシステムをより高性能なものに更新しようとするときには、テレビ装置の所有者が、映像メディア情報通信システムの通信路を介して、放送局にアクセスし、新しいオペレーティングシステムのプログラムを放送局からテレビ装置内にダウンロードし、それをテレビ装置内にインストールすればよい。
【０００６】
ところが、ダウンロードまたはインストールに失敗し、または更新したプログラムに欠陥があり、あるいは誤って他のプログラムをインストールしてしまったなどの事情により、更新したはずのオペレーティングシステムやアプリケーションソフトウェアが正常に動作しないといった不都合が生じる場合が考えられる。アプリケーションソフトウェアが正常に動作しないときには、再び更新作業を行えば解決できるかもしれない。しかし、オペレーティングシステムが正常に動作しないときには、解決は困難である。なぜなら、更新作業を行うプログラムもオペレーティングシステムの上で動作するとすれば、オペレーティングシステムが正常に動作しない以上、もはや更新作業は実行不可能となるからである。このような事態に陥ると、所有者は、テレビ装置を製造元のサービスセンター等に持ち込んで修理を依頼しなければならないといった手間がかかる。
【０００７】
本発明は上記に例示したような問題点に鑑みなされたものであり、本発明の課題は、プログラムが正常に動作しなくても、そのことを自動的に判断し、バックアッププログラムないしデフォルトプログラムを自動的に実行し、装置の動作を正常に保つことができる情報処理装置および情報処理方法を提供することにある。
【０００８】
【課題を解決するための手段】
上記課題を解決するために請求項１に記載の情報処理装置は、他のプログラムを実行させる命令を含む第１プログラムを格納する第１記憶手段と、前記第１プログラムの前記命令に従って所定の処理を実行する第２プログラムを格納する第２記憶手段と、前記第２プログラムのバックアッププログラムを格納する第３記憶手段と、前記第２プログラムがその所定の処理を正常に実行しないことを実質的に示す第１状態情報を格納する第４記憶手段と、前記第１状態情報に基づいて、前記第２プログラムおよび前記バックアッププログラムのうちのいずれか一方を、前記第１プログラムの前記命令に従って実行させるべきプログラムとして選択する第１選択手段とを備えている。
【０００９】
上記課題を解決するために請求項１６に記載のコンピュータプログラムは、コンピュータを請求項１ないし１６のいずれかに記載の情報処理装置として機能させる。
【００１０】
上記課題を解決するために請求項１７に記載の情報処理方法は、他のプログラムを実行させる命令を含む第１プログラムと、前記第１プログラムの前記命令に従って所定の処理を実行する第２プログラムと、前記第２プログラムのバックアッププログラムと、前記第２プログラムがその所定の処理を正常に実行しないことを実質的に示す第１状態情報とを取り扱うことが可能な装置において実行可能な情報処理方法であって、前記第１プログラムが前記第２プログラムまたは前記バックアッププログラムを実行させるときまたは実行させたときに、前記第１状態情報を第１内容に設定または変更する第１状態情報設定工程と、前記第２プログラムまたは前記バックアッププログラムが正常に終了するときまたは終了したときに、前記第１状態情報を第２内容に設定または変更する第２状態情報設定工程と、前記第１プログラムが再び前記第２プログラムまたは前記バックアッププログラムを実行させるとき、前記第１状態情報に基づいて、前記第２プログラムおよび前記バックアッププログラムのうちのいずれか一方を選択する選択工程とを備えている。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１２】
（第１実施形態）
本発明の第１実施形態について図１を参照して説明する。図１は本発明の第１実施形態に係る情報処理装置を示している。なお、図１は、本発明の第１実施形態による情報処理装置の構成要素等を、その技術思想を説明する限りにおいて具体化したものであり、各構成要素等の大きさ、位置、接続関係などは、これに限定されるものではない。このことについては、本発明の他の実施形態の説明で用いる図２ないし図４についても同様である。
【００１３】
図１に示すように、本発明の第１実施形態に係る情報処理装置１０は、第１ないし第４の記憶手段１１、１２、１３、１４と第１選択手段１５とを備えている。情報処理装置１０は、典型的には、演算処理回路および記憶回路等を備えたコンピュータであるが、これと同等の機能を備えた装置であれば何でもよい。例えば、情報処理装置１０は、双方向デジタル通信が可能なテレビでもよく、映像情報を受信し、それを記憶し、管理し、ユーザの選択に応じて映像情報を再生処理する映像記録再生装置でもよい。
【００１４】
第１記憶手段１１は、他のプログラムを実行させる命令を含む第１プログラム１６を格納する手段である。第１記憶手段１１は、コンピュータプログラム等のプログラムを格納・記憶することが可能な記憶媒体ないし記録媒体であれば何でもよい。一般に、記憶媒体・記録媒体には、半導体集積回路、磁気記録媒体、光記録媒体、光磁気記録媒体、誘電体記録媒体、近接場光記録媒体など様々あるが、第１記憶手段１１は、これらのいずれの記憶媒体ないし記録媒体であってもよい。さらに、第１記憶手段１１は、読出専用であっても、追記・書換可能であってもよく、また、揮発性・不揮発性のいかんも問わず、さらに、装置内に固定されているものであると、外部から装置内に装着・挿入されるものであるとを問わない。また、第１記憶手段は、第２ないし第４記憶手段等と、相互の性質・用途等に同一性がある限り、同一の記憶媒体によって一体的に実現してもよい。また、複数の記憶手段との間で、性質・用途等が異なる場合には、それぞれの記憶手段を別々の記憶媒体によって実現してもよいし、複数の記憶手段のうち、性質・用途等が共通するいくつかを一体化し、残りのものを別体としてもよい。もっとも、第１記憶手段１１に格納される第１プログラム１６の機能・性質に着目すると、第１記憶手段１１は、例えばＲＯＭ（リードオンリメモリ）が好ましい。
【００１５】
第１プログラム１６は、他のプログラムを実行させる命令を含むプログラムであれば何でよい。第１プログラム１６は、例えば、ブートローダ、オペレーティングシステム、アプリケーションソフトウェアなどのプログラムである。ブートローダは、装置の電源投入直後に実行され、オペレーティングシステムのプログラム等を起動するプログラムである。第１プログラム１６の典型的な具体例は、ブートローダである。
【００１６】
第２記憶手段１２は、第１プログラム１６の命令に従って所定の処理を実行する第２プログラム１７を格納する手段である。第２記憶手段１２も、第１記憶手段１１とほぼ同様に、コンピュータプログラム等のプログラムを格納・記憶することが可能な記憶媒体ないし記録媒体であれば何でもよい。もっとも、第２記憶手段１２に格納される第２プログラム１７の性質・機能を考慮すれば、第２記憶手段１２は、追記・書換可能な記憶媒体であることが好ましく、例えばフラッシュＲＯＭまたはスタティックＲＡＭ（ランダムアクセスメモリ）が好ましい。
【００１７】
第２プログラム１７は、第１プログラム１６の命令に従って所定の処理を実行するプログラムである。第２プログラム１７が実行する所定の処理の内容は何でもよい。第２プログラム１７は、例えば、オペレーティングシステム、アプリケーションソフトウェア等のプログラムである。もっとも、第２プログラム１７は、少なくともその起動のきっかけを第１プログラム１６の命令によって与えられる。この点に着目すると、第１プログラム１６を一次プログラムと位置づけ、第２プログラム１７を二次プログラムと位置づけることができる。また、情報処理装置１０が例えば汎用コンピュータのように、多機能性・拡張性を備えている場合には、第２プログラム１７は、しばしば書き換えられたり、更新されたりすることが予定されたプログラムであってもよい。
【００１８】
第３記憶手段１３は、第２プログラムのバックアッププログラム１８を格納する手段であり、第２記憶手段１２とほぼ同様の構成である。
【００１９】
バックアッププログラム１８は、第２プログラム１７のバックアッププログラムであり、例えば、更新前の第２プログラムまたは第２プログラムの古いバージョンなどである。
【００２０】
第４記憶手段１４は、第２プログラム１７がその所定の処理を正常に実行しないことを実質的に示す第１状態情報１９を格納する手段である。第４記憶手段１４は、情報を格納・記憶することが可能な記憶媒体であれば何でもよく、具体的には、第２記憶手段１２または第３記憶手段１３とほぼ同様の構成を採用することができる。もっとも、第４記憶手段１４に格納された第１状態情報１９は、第２プログラム１７の状態に応じて変更されることが予定されている。したがって、第４記憶手段１４は、書換可能な記憶媒体が好ましく、例えば、フラッシュＲＯＭまたはＲＡＭが好ましい。
【００２１】
第１状態情報１９は、第２プログラム１７がその所定の処理を正常に実行しないことを実質的に示す情報である。例えば、第１状態情報１９は、第２プログラム１７が所定の処理を正常に実行するかしないかのいずれか一方を直接的に示す２値の情報であってもよいし、第２プログラム１７のエラーの箇所の数や、回復不可能な程度を示すデータ群であってもよい。もっとも、第１選択手段１５が第２プログラム１７およびバックアッププログラム１８のうちのいずれか一方を選択するときに、この第１状態情報１９が基準になることを考慮すると、第１状態情報１９は、処理の簡単化・迅速化を図るためにも、なるべく単純な情報であることが好ましく、例えば、フラグであることが好ましい。また、第２プログラム１７がその所定の処理を正常に実行しない場合とは、例えば、第２プログラム１７の更新に失敗した場合、第２プログラム１７に欠陥がある場合、第２プログラム１７と信じて記憶させたプログラムが違うプログラムだった場合、何らかの理由で第２プログラムと情報処理装置１０との相性が悪い場合などが考えられる。また、第２プログラム１７がその所定の処理を正常に実行しないという事実は、その第２プログラムの内容を分析することによっても認識することができるが、より単純な方法としては、その第２プログラム１７の実行を試みることによって認識することができる。例えば、第２プログラム１７の実行を試みて、その第２プログラム１７が、立ち上がらない場合や、正常に終了しない場合などには、その第２プログラム１７は、その所定の処理を正常に実行しないものであると認識することができる。
【００２２】
第１選択手段１５は、第１状態情報１９に基づいて、第２プログラム１７およびバックアッププログラム１８のうちのいずれか一方を、第１プログラム１７の命令に従って実行させるべきプログラムとして選択する手段である。第１選択手段１５は、例えば情報処理装置１０内に設けられたＣＰＵ（セントラルプロセッシングユニット）等の演算処理回路等により実現することができる。また、第１選択手段１５を、第１プログラムの中に含まれる命令により実現してもよい。
【００２３】
例えば、第２プログラム１７がその所定の処理を正常に実行しないことを第１状態情報１９が示しているときには、第１選択手段１５は、第１状態情報１９に基づいてその旨を認識し、バックアッププログラム１８を選択する。一方、第２プログラム１７がその所定の処理を正常に実行しないことを第１状態情報１９が示していないときには、第１選択手段１５は、第１状態情報１９に基づいてその旨を認識し、第２プログラム１７を選択する。その後、第１選択手段１５により選択されたプログラムが、第１プログラムの命令に従って実行される。この結果、バックアッププログラム１８がその所定の処理を正常に実行することを前提とすれば、情報処理装置１０の動作は、常に正常に維持されることになる。確かに、バックアッププログラム１８が、第２プログラム１７の旧バージョンであるとすれば、処理性能等の点で劣るかもしれない。しかし、所定の処理を正常に実行しない第２プログラム１７が実行されれば、情報処理装置１０に重大なトラブルが発生する危険性がある。上記構成によれば、これを回避することができる。
【００２４】
特に、本発明の実施形態におけるかかる構成は、第２プログラムがオペレーティングシステムプログラム等といった、情報処理装置１０の動作を根幹的に支えるプログラムである場合には有効である。なぜなら、例えばオペレーティングシステムが正常に動作しないときには、情報処理装置１０がその大半の機能を失うこととなる場合が多いが、このようなときでも、オペレーティングシステムのバックアッププログラムが動作すれば、現在の不具合を修復することができる場合もあるからである。例えば、オペレーティングシステムのバックアッププログラムの実行中に、デバックプログラムを起動し、オペレーティングシステムプログラムをデバックすることも可能であるし、また、新しいオペレーティングシステムプログラムを、通信路を介して、あるいはリカバリーディスクを用いて再インストールすることも可能であろう。
【００２５】
（第２実施形態）
本発明の第２実施形態について図２を参照して説明する。図２は本発明の第２実施形態に係る情報処理装置を示している。図２に示すように、本発明の第２実施形態に係る情報処理装置２０は、第１実施形態に係る情報処理装置１０と同様に、第１ないし第４の記憶手段１１、１２、１３、１４と第１選択手段１５とを備えており、それぞれの記憶手段には、第１プログラム１６、第２プログラム１７、バックアッププログラム１８および第１状態情報１９が格納されている。第２実施形態に係る情報処理装置２０は、これに加え、第１状態情報設定手段２１および第２情報設定手段２２を備えている。
【００２６】
上述したように、第１状態情報１９は、第２プログラム１７がその所定の処理を正常に実行しないことを実質的に示す情報である。さらに、上述したとおり、第２プログラム１７がその所定の処理を正常に実行しないという事実を認識する方法や、その事実を第１状態情報１９に表現させる方法は様々考えられ、特に限定されない。しかし、情報処理装置２０では、１つの好ましい構成を採用しており、その構成は、第１状態情報設定手段２１および第２情報設定手段２２によって実現される。
【００２７】
すなわち、第１状態情報設定手段２１は、第１プログラム１６が第２プログラム１７またはバックアッププログラム１８を実行させるときまたは実行させたときに、第１状態情報１９を第１内容に設定または変更する手段である。また、第２状態情報設定手段２２は、第２プログラム１７またはバックアッププログラム１８が正常に終了するときまたは終了したときに、第１状態情報１９を第２内容に設定または変更する手段である。
【００２８】
具体的な動作を説明すると、第１プログラム１６が第２プログラム１７またはバックアッププログラム１８を実行させるときまたは実行させたとき、第１状態情報設定手段２１は、第１状態情報１９を第１内容に設定する。その後、第２プログラム１７またはバックアッププログラム１８が正常に終了するときまたは終了したときに、第２状態情報設定手段２２は、第１状態情報１９を第２内容に変更する。この結果、第２プログラム１７またはバックアッププログラム１８が正常に終了したときには、第１状態情報１９の内容は第２内容となる。一方、第２プログラム１７が立ち上がらずまたは正常に終了しなかったとき、またはバックアッププログラム１８が立ち上がらずまたは正常に終了しなかったときには、第１状態情報１９の内容は、第１内容のままである。したがって、第１状態情報１９が第１内容であることは、第２プログラムがその所定の処理を正常に実行しないことを示すことになる。そこで、次回、第１プログラムおよび第２プログラムを実行する際には、第１選択手段１５は、第１状態情報１９が第１内容か第２内容かを調べて、プログラムの選択を行うことができる。すなわち、第１状態情報１９が第１内容のときには、バックアッププログラム１８を選択し、第１状態情報１９が第２内容のときには、第２プログラム１７を選択する。これにより、選択処理を簡単かつ迅速に行うことができる。
【００２９】
第１状態情報設定手段２１および第２状態情報設定手段２２は、例えばＣＰＵ等の演算処理回路等によって実現することができる。また、第１状態情報設定手段２１を、第１プログラム１６に含まれる命令によって実現してもよい。また、第２状態情報設定手段２２を、第２プログラム１７またはバックアッププログラム１８に含まれる命令により実現してもよい。
【００３０】
（第３実施形態）
本発明の第３実施形態について図３を参照して説明する。図３は本発明の第３実施形態に係る情報処理装置を示している。図３に示すように、本発明の第３実施形態に係る情報処理装置３０は、第１実施形態に係る情報処理装置１０と同様に、第１ないし第４の記憶手段１１、１２、１３、１４と第１選択手段１５とを備えており、それぞれの記憶手段には、第１プログラム１６、第２プログラム１７、バックアッププログラム１８および第１状態情報１９が格納されている。第３実施形態に係る情報処理装置３０は、これに加え、第５および第６記憶手段３１、３２と、第２選択手段３３を備えている。
【００３１】
第５記憶手段３１は、第２プログラム１７のデフォルトプログラム３４を格納する手段である。第５記憶手段３１は、コンピュータプログラム等のプログラムを格納・記憶することが可能な記憶媒体であれば何でもよい。もっとも、デフォルトプログラム３４は、情報処理装置３０の工場出荷時から第５記憶手段３１に永続的に記憶しておくことが予定されているので、第５記憶手段３１は、書換不能でかつ不揮発性の記憶媒体が好ましく、例えば、ＲＯＭが好ましい。
【００３２】
デフォルトプログラム３４は、第２プログラム１７のデフォルトプログラムである。デフォルトプログラム３４は、欠陥がなく、情報処理装置３０の工場出荷当時から第５記憶手段３１に格納されている。例えば、デフォルトプログラム３４は、更新された第２プログラム１７またはそのバックアッププログラム１８よりも処理性能の点で劣ることがあるかもしれないが、少なくとも、第２プログラム１７の本来的な処理を実行する機能を備えていることが望ましい。
【００３３】
第６記憶手段３２は、バックアッププログラム１８がその所定の処理を正常に実行しないことを実質的に示す第２状態情報３５を格納する手段である。第６記憶手段３２は、第４記憶手段１４とほぼ同様の構成を有する。
【００３４】
第２状態情報３５は、バックアッププログラム１８がその所定の処理を正常に実行しないことを実質的に示す情報であり、基本的な構成は、第１状態情報１９と同じである。
【００３５】
第２選択手段３３は、第２状態情報３５に基づいて、バックアッププログラム１８およびデフォルトプログラム３４のうちのいずれか一方を、第１プログラム１６の命令に従って実行させるべきプログラムとして選択する手段である。第２選択手段３３は、第１選択手段１５とほぼ同様に、ＣＰＵ等の演算処理回路等により実現することができる。また、第２選択手段３３を、第１プログラム１７に含まれる命令によって実現してもよい。
【００３６】
例えば、第２プログラム１７がその所定の処理を正常に実行することを第１状態情報１９が示しているときには、第１選択手段１５は、第１状態情報１９に基づいてその旨を認識し、第２プログラム１７を選択する。一方、第２プログラム１７がその所定の処理を正常に実行しないことを第１状態情報１９が示しているときには、続いて、第２選択手段３３がさらなる選択処理を実行する。すなわち、この場合において、バックアッププログラム１８がその所定の処理を正常に実行することを第２状態情報３５が示しているときには、第２選択手段３３は、第２状態情報３５に基づいてその旨を認識し、バックアッププログラム１８を選択する。一方、バックアッププログラム１８がその所定の処理を正常に実行しないことを第２状態情報３５が示しているときには、第２選択手段３３は、第２状態情報３５に基づいてその旨を認識し、デフォルトプログラム３４を選択する。その後、第１選択手段１５および第２選択手段３３により選択されたプログラムが、第１プログラムの命令に従って実行される。この結果、少なくともデフォルトプログラム３４はその所定の処理を正常に実行するので、情報処理装置３０の動作は、常に正常に維持されることになる。
【００３７】
なお、情報処理装置３０に、第１状態情報設定手段２１および第２状態情報設定手段２２（図２参照）を追加してもよい。
【００３８】
（第４実施形態）
本発明の第４実施形態について図４を参照して説明する。図４は本発明の第４実施形態に係る情報処理装置を示している。図４に示すように、本発明の第４実施形態に係る情報処理装置４０は、第１実施形態に係る情報処理装置１０と同様に、第１ないし第４の記憶手段１１、１２、１３、１４と第１選択手段１５とを備えており、それぞれの記憶手段には、第１プログラム１６、第２プログラム１７、バックアッププログラム１８および第１状態情報１９が格納されている。第４実施形態に係る情報処理装置４０は、これに加え、更新手段４１およびバックアップ手段４２を備えている。
【００３９】
更新手段４１は、第２プログラム１７を更新する手段である。例えば、更新手段４１は、情報通信路を介して供給される新しい第２プログラムを受信し、この新しい第２プログラムを既存の第２プログラムと置き換える。
【００４０】
バックアップ手段４２は、更新手段４１により更新される前の第２プログラム１７をバックアッププログラム１８として第３記憶手段１３に格納する手段である。
【００４１】
情報処理装置４０においては、第２プログラム１７は、更新手段４１により更新される。また、第２プログラム１７の更新に失敗し、更新後の第２プログラム１７がその所定の処理を正常に実行しない場合には、第１選択手段１５によりバックアッププログラム１８が選択され、これが第１プログラム１７の命令に従って実行される。このバックアッププログラム１８は、更新される前の第２プログラム１７であり、バックアップ手段４２によってバックアッププログラム１８として第３記憶手段１３に格納されたものである。したがって、第２プログラム１７が更新される前に、旧バージョンの第２プログラムがその所定の処理を正常に実行していた場合には、情報処理装置４０の動作は常に正常に維持される。
【００４２】
なお、情報処理装置４０に、第１状態情報設定手段２１と第２状態情報設定手段２２とを（図２参照）、または（および）、第５記憶手段３１（デフォルトプログラム３４）と第６記憶手段３２（第２状態情報３５）と第２選択手段３３とを（図３参照）追加してもよい。
【００４３】
（情報処理装置の各種態様）
上述した本発明の実施形態に係る情報処理装置１０ないし４０のいずれかを、以下のように構成してもよい。
【００４４】
すなわち、第１状態情報１９は、第２プログラム１７がその所定の処理を正常に実行しなかった回数を実質的に示す構成とする。さらに、第１選択手段１５は、第１状態情報１９が示す前記回数と参照数とを比較し、その結果に基づいて、第２プログラム１７およびバックアッププログラム１８のうちのいずれか一方を、第１プログラム１６の命令に従って実行させるべきプログラムとして選択する構成とする。
【００４５】
このような構成において、例えば、第１状態情報１９の示す回数（正常に実行しなかった回数）が、参照数の示す数値（例えば予め設定された値）よりも大きいか否かを調べ、その結果を基準にして、第２プログラム１７およびバックアッププログラム１８のうちのいずれかを選択する。これにより、プログラムの選択をより正確にまたは実質的に行うことができる。
【００４６】
一方、情報処理装置１０ないし４０のいずれかに、バックアッププログラムが選択されたことを実質的に示す告知情報を発する第１告知手段、またはデフォルトプログラムが選択されたことを実質的に示す告知情報を発する第２告知手段を追加してもよい。
【００４７】
これにより、第２プログラム１７がその処理を正常に実行しないという事実や、旧バージョンであるバックアッププログラム１８またはデフォルトプログラム３４が代替的に選択されたことを、ユーザに知らせることができる。
【００４８】
なお、以上のような情報処理装置の実施形態は、専用の装置としてハードウェアと一体的に構成する形態で実現してもよいし、コンピュータにプログラムを読み込ませることによって実現してもよい。
【００４９】
（情報処理方法の実施形態）
本発明の実施形態に係る情報処理方法について説明する。すなわち、本発明の実施形態に係る情報処理方法は、他のプログラムを実行させる命令を含む第１プログラムと、第１プログラムの命令に従って所定の処理を実行する第２プログラムと、第２プログラムのバックアッププログラムと、第２プログラムがその所定の処理を正常に実行しないことを実質的に示す第１状態情報とを取り扱うことが可能な装置において実行可能な情報処理方法である。そして、この情報処理方法は、第１プログラムが第２プログラムまたはバックアッププログラムを実行させるときまたは実行させたときに、第１状態情報を第１内容に設定または変更する第１状態情報設定工程と、第２プログラムまたはバックアッププログラムが正常に終了するときまたは終了したときに、第１状態情報を第２内容に設定または変更する第２状態情報設定工程と、第１プログラムが再び第２プログラムまたはバックアッププログラムを実行させるとき、第１状態情報に基づいて、第２プログラムおよびバックアッププログラムのうちのいずれか一方を選択する選択工程とを備えている。
【００５０】
かかる情報処理方法によれば、第２プログラムがその所定の処理を正常に実行するときには、第２プログラムが選択され、第２プログラムがその所定の処理を正常に実行しないときには、バックアッププログラムが選択され、その後、選択されたいずれか一方のプログラムが、第１プログラムの命令に従って実行される。この結果、バックアッププログラムがその所定の処理を正常に実行することを前提とすれば、少なくとも第１プログラムの命令に従って実行されるプログラムは正常に動作する。これにより、情報処理動作に重大なトラブルが発生するのを回避することができる。
【００５１】
【実施例】
以下、本発明の実施例を図面に基づいて説明する。以下の実施例は、本発明の情報処理装置をケーブルデジタルテレビ放送システムにおけるテレビ装置の一部を構成する情報処理装置として具現化した例である。
【００５２】
（第１実施例）
本発明の第１実施例について図５ないし図１４を参照して説明する。
【００５３】
図５は、第１実施例に係る情報処理装置を示している。図５に示すように、第１実施例に係る情報処理装置１００は、ＣＰＵ１１０、ＲＯＭ１２０、フラッシュＲＯＭ１３０、ＲＡＭ１４０、ネットワークデバイス１５０を備えており、これらはバス１６０を介して相互に接続されている。また、情報処理装置１００は、ネットワークデバイス１５０を介して通信路としてのケーブルネットワーク回線１７０に接続されている。
【００５４】
ＣＰＵ１１０は、ブートローダ、オペレーティングシステム（以下、これを「ＯＳ」という。）、並びに情報処理およびテレビ映像・音声の再生を実現するための種々のアプリケーションソフトウェア等のプログラムを実行することによって、情報処理装置１００を制御し、種々の処理を実現する。
【００５５】
ＲＯＭ１２０およびフラッシュＲＯＭ１３０には、上述した各種プログラムおよびデータが格納されている。なお、ＲＯＭ１２０は読取専用であるが、フラッシュＲＯＭ１３０は情報の追記・書換が可能である。
【００５６】
ＲＡＭ１４０は、ＣＰＵ１１０が種々の処理を行うときの作業領域として用いられる。
【００５７】
ネットワークデバイス１５０は、ネットワーク回線１７０と情報処理装置１００との間でデータないしプログラム等の情報を送受信するときに、両者間の接続を制御・確立するためのインタフェース回路である。
【００５８】
次に、図６はＲＯＭ１２０の内容を示している。図６に示すように、情報処理装置１００の製造過程で、ＲＯＭ１２０には、少なくとも、ブートローダプログラム１２１、デフォルトＯＳプログラム１２２、アドレス情報１２３が格納され、これらが書換不能な状態で保持されている。ブートローダプログラム１２１は、ＲＯＭ１２０のアドレスＡ１から格納されている。デフォルトＯＳプログラム１２２は、ＲＯＭ１２０のアドレスＡ２から格納されている。アドレス情報１２３は、ＲＯＭ１２０のアドレスＡ３から格納されている。
【００５９】
ブートローダプログラム１２１は、情報処理装置１００の電源投入直後に、最初に実行されるプログラムであり、ＲＯＭ１２０およびフラッシュＲＯＭ１３０に格納された複数のＯＳプログラムのうちの１つを選択して実行させる命令を含んでいる。
【００６０】
情報処理装置１００は、ネットワーク回線１７０を通じてＯＳプログラムをダウンロードして、ＯＳプログラムを更新する機能を備えている。ＯＳプログラムを更新した場合には、それまで用いられていた更新前のＯＳプログラムはＯＳプログラムのバックアッププログラムとして保持される。さらに、情報処理装置１００は、このバックアッププログラムの他に、デフォルトＯＳプログラム１２２を有している。以下、説明の便宜上、現在通常に（一次的に）使用されている又は更新されたことによりこれから通常に（一時的に）使用されることが予定されているＯＳプログラムを「カレントＯＳプログラム」と呼び、更新によってＯＳプログラムのバックアッププログラムとして保持されることとなったＯＳプログラムを「バックアップＯＳプログラム」と呼ぶ。
【００６１】
ブートローダプログラム１２１は、通常は、カレントＯＳプログラムを選択して実行させる。しかし、そのカレントＯＳプログラムに不具合があり、正常に動作しないときには、次に、バックアップＯＳプログラムを選択して実行させる。しかし、バックアップＯＳプログラムも正常に動作しなとき、またはバックアップＯＳプログラムが存在しないときなどには、次に、デフォルトＯＳプログラム１２２を選択して実行させる。
【００６２】
デフォルトＯＳプログラム１２２は、情報処理装置１００の出荷当時からＲＯＭ１２０内に保持されているＯＳプログラムである。なお、ＯＳプログラムは、情報処理装置１００の基本的な制御、情報の管理、アプリケーションソフトウェアプログラムとハードウェアとの結合等の処理を行うプログラムである。
【００６３】
アドレス情報１２３は、ＲＯＭ１２０におけるデフォルトＯＳプログラム１２２の格納場所、具体的には、デフォルトＯＳプログラム１２２の先頭アドレスＡ２の値である。デフォルトＯＳプログラム１２２が実行されるときには、アドレス情報１２３が参照される。
【００６４】
次に、図７は情報処理装置１００の出荷当時におけるフラッシュＲＯＭ１３０の内容を示している。図７に示すように、出荷当時、フラッシュＲＯＭ１３０には、ＯＳプログラム１３１、アドレス情報１３４、状態フラグ１３８が格納され、書換可能な状態で保持されている。ＯＳプログラム１３１は、フラッシュＲＯＭ１３０のアドレスＢ１から格納されている。アドレス情報１３４は、フラッシュＲＯＭ１３０のアドレスＢ１１に格納されている。状態フラグ１３８は、フラッシュＲＯＭ１３０のアドレスＢ２１に格納されている。
【００６５】
ＯＳプログラム１３１は、情報処理装置１００にプリインストールされたＯＳプログラムであり、デフォルトＯＳプログラム１２２と同じ内容のプログラムである。出荷当時においては、ＯＳプログラム１３１はカレントＯＳプログラムに相当する。しかし、ＯＳプログラムが更新された後には、ＯＳプログラム１３１は、バックアップＯＳプログラムとなる。
【００６６】
アドレス情報１３４は、ＯＳプログラム１３１の格納場所、具体的には、ＯＳプログラム１３１の先頭アドレスＢ１の値である。ＯＳプログラム１３１が実行されるときには、アドレス情報１３４が参照される。ＯＳプログラムが更新された後には、アドレス情報１３４はフラッシュＲＯＭ１３０のアドレスＢ１２に移される。
【００６７】
状態フラグ１３８は、カレントＯＳプログラムがその所定の処理を正常に実行しないことを実質的に示すフラグである。例えば、状態フラグ１３８は、２値のデータであり、理論的には１ビットのデータにより実現することができる。より具体的には、カレントＯＳプログラムが正常に動作したときには、状態フラグ１３８は「１」にセットされる。
【００６８】
次に、図８はＯＳプログラムの更新が行われた後におけるフラッシュＲＯＭ１３０の内容を示している。図８に示すように、更新後のフラッシュＲＯＭ１３０には、更新されたＯＳプログラム１３２が格納され、アドレス情報１３４はアドレスＢ１２に移され、アドレスＢ１１には、新たなアドレス情報１３５が格納されている。更新後においては、ＯＳプログラム１３２がカレントＯＳプログラムに相当し、ＯＳプログラム１３１はバックアップＯＳプログラムに相当する。
【００６９】
アドレスＢ１１に格納されたアドレス情報１３５は、ＯＳプログラム１３２の格納場所、具体的には、ＯＳプログラム１３２の先頭アドレスＢ２の値である。ＯＳプログラム１３２が実行されるときには、アドレス情報１３５が参照される。なお、カレントＯＳプログラムを実行すべきときには、アドレスＢ１１に格納されたアドレス情報を参照し、バックアップＯＳプログラムを実行すべきときには、アドレスＢ１２に格納されたアドレス情報を参照し、デフォルトＯＳプログラムを実行すべきときには、ＲＯＭ１２０のアドレスＡ３に格納されたアドレス情報が参照するように、ブートローダプログラムが組まれている。
【００７０】
次に、図９はブートローダプログラム１２１が実行されたときのＣＰＵ１１０の動作を示している。ブートローダプログラム１２１は、上述したように、情報処理装置１００の電源投入直後に、最初に実行され、ＲＯＭ１２０およびフラッシュＲＯＭ１３０に格納された複数のＯＳプログラムのうちの１つを選択して実行させる機能を有するが、この機能は、例えば、図９に示すステップの流れにより実現される。
【００７１】
すなわち、情報処理装置１００の電源が投入されると、ＣＰＵ１１０は、ＲＯＭ１２０のアドレスＡ１からブートローダプログラム１２１の実行を開始する（ステップＳ１１）。以下、ＣＰＵ１１０はブートローダプログラム１２１の命令シーケンスに従って動作する。
【００７２】
ＣＰＵ１１０は、まず、状態フラグ１３８が「１」か否かを判定する（ステップＳ１２）。ＯＳプログラムが正常に動作するときには、状態フラグ１３８が「１」にセットされている。なお、状態フラグ１３８がどのようにして「１」にセットされるかについては後述する。
【００７３】
状態フラグ１３８が「１」のときには（ステップＳ１２：ＹＥＳ）、ＣＰＵ１１０は、状態フラグ１３８を「０」にセットする（ステップＳ１３）。
【００７４】
ＣＰＵ１１０は、続いて、フラッシュＲＯＭ１３０のアドレスＢ１１に格納されたアドレス情報を参照し、その値をレジスタに格納する（ステップＳ１４）。フラッシュＲＯＭ１３０のアドレスＢ１１に格納されたアドレス情報は、カレントＯＳプログラムの先頭アドレスの値である。したがって、ステップＳ１４では、カレントＯＳプログラムの先頭アドレスの値がレジスタにセットされる。なお、レジスタは、ＣＰＵ１１０に内蔵されたものを用いてもよいし、ＲＡＭ１４０の記憶領域を用いてもよい。
【００７５】
ＣＰＵ１１０は、次に、レジスタに格納された値に対応するアドレスからＯＳプログラムを実行させる（ステップＳ１５）。ステップＳ１４でレジスタにセットされた値は、カレントＯＳプログラムの先頭アドレスであるから、カレントＯＳプログラムが実行される（ステップＳ１６）。
【００７６】
より具体的に説明すると、出荷時には、図７に示すように、カレントＯＳプログラムはＯＳプログラム１３１であり、フラッシュＲＯＭ１３０のアドレスＢ１１には、ＯＳプログラム１３１の先頭アドレスの値であるアドレス情報１３４が格納されている。したがって、ステップＳ１４およびＳ１５の処理を経た結果、ステップＳ１６では、ＯＳプログラム１３１が実行される。
【００７７】
一方、ＯＳプログラムが更新された後では、図８に示すように、カレントＯＳプログラムはＯＳプログラム１３２であり、フラッシュＲＯＭ１３０のアドレスＢ１１には、ＯＳプログラム１３２の先頭アドレスの値であるアドレス情報１３５が格納されている。したがって、ステップＳ１４およびＳ１５の処理を経た結果、ステップＳ１６では、ＯＳプログラム１３２が実行される。
【００７８】
さて、図９中のステップＳ１２で、状態フラグ１３８が「１」でないときには（ステップＳ１２：ＮＯ）、カレントＯＳプログラムが正常に動作しないことが推測される（詳しくは後述する）。この場合には、ＣＰＵ１１０は、続いて、フラッシュＲＯＭ１３０のアドレスＢ１２のアドレス情報が有効か否かを判定する（ステップＳ１７）。正常に動作するバックアップＯＳプログラムがフラッシュＲＯＭ１３０内に存在するときには、アドレスＢ１２には、そのバックアップＯＳプログラムの先頭アドレスの値がアドレス情報として格納されている。この場合には、ステップＳ１７で有効と判定される。一方、出荷時には、フラッシュＲＯＭ１３０内にバックアップＯＳプログラムが存在しないが、このときには、アドレスＢ１２には、その旨を示す情報（例えばＮＵＬＬ）が格納されている。この場合には、ステップＳ１７で無効と判定される。その他、バックアップＯＳプログラムがフラッシュＲＯＭ１３０内に存在するものの、それが正常に動作しない等の特別な事情があるときには、アドレスＢ１２には、通常のアドレス値の範囲を外れた特別な値が格納されている。この場合にも、ステップＳ１７で無効と判定される。
【００７９】
アドレスＢ１２のアドレス情報が有効であるときには（ステップＳ１７：ＹＥＳ）、ＣＰＵ１１０は、アドレスＢ１２に格納されたアドレス情報を参照し、その値をレジスタに格納する（ステップＳ１８）。フラッシュＲＯＭ１３０のアドレスＢ１２に格納されたアドレス情報は、バックアップＯＳプログラムの先頭アドレスの値である。したがって、ステップＳ１８では、バックアップＯＳプログラムの先頭アドレスの値がレジスタにセットされる。
【００８０】
ＣＰＵ１１０は、続いて告知情報を発する（ステップＳ１９）。図１４は告知情報の一例を示している。これにより、ユーザは、カレントＯＳプログラムが実行されないことを知ることができる。
【００８１】
ＣＰＵ１１０は、続いて、レジスタに格納された値に対応するアドレスからＯＳプログラムを実行させる（ステップＳ１５）。ステップＳ１８でレジスタにセットされた値は、バックアップＯＳプログラムの先頭アドレスであるから、バックアップＯＳプログラムが実行される（ステップＳ１６）。
【００８２】
より具体的に説明すると、ＯＳプログラムが更新された後では、図８に示すように、ＯＳプログラム１３１がバックアップＯＳプログラムに相当する。そして、フラッシュＲＯＭ１３０のアドレスＢ１２には、ＯＳプログラム１３１の先頭アドレスの値であるアドレス情報１３４が格納されている。したがって、ステップＳ１８およびＳ１５の処理を経てステップＳ１６では、ＯＳプログラム１３１が実行される。
【００８３】
一方、図９中のステップＳ１７で、アドレスＢ１２のアドレス情報が有効でないときには（ステップＳ１７：ＮＯ）、ＣＰＵ１１０は、ＲＯＭ１２０のアドレスＡ３に格納されたアドレス情報を参照し、その値をレジスタに格納する（ステップＳ２０）。ＲＯＭ１２０のアドレスＡ３に格納されたアドレス情報は、デフォルトＯＳプログラム１２１の先頭アドレスＡ２である。したがって、ステップＳ２０では、デフォルトＯＳプログラム１２２の先頭アドレスＡ２がレジスタにセットされる。
【００８４】
ＣＰＵ１１０は、続いて、図１４に示すような告知情報を発し（ステップＳ１９）、レジスタに格納された値に対応するアドレスからＯＳプログラムを実行させる（ステップＳ１５）。この結果、デフォルトＯＳプログラム１２２が実行される（ステップＳ１６）。
【００８５】
次に、図１０はＯＳプログラム１３１、１３２、１２２のいずれかが選択され、実行されたときのＣＰＵ１１０の動作を示している。なお、ＯＳプログラム１３１、１３２、１２２は、いずれも、その基本的な目的・構成は同じであるが、細部の機能は異なる場合がある。例えば、更新されたＯＳプログラムは、プリインストールされたＯＳプログラムやデフォルトＯＳプログラムにはない機能が付加されている場合がある。しかし、ＯＳプログラム１３１、１３２、１２２は、いずれも、少なくとも図１０に示すステップＳ２１〜Ｓ２９の処理を実現する命令シーケンスを含んでいる。
【００８６】
ブートローダプログラム１２１の実行により、ＯＳプログラム１３１、１３２、１２２のいずれか１つが選択され、その実行が開始されたとき（図９中のステップＳ１５およびＳ１６）、まず、ＣＰＵ１１０は、図１０に示すように、ＯＳプログラムの終了指示が入力されたか否かを判定する（ステップＳ２１）。ＯＳプログラムの終了指示は、例えば、ユーザが情報処理装置１００の電源を切るときなどに入力される。
【００８７】
終了指示が入力されていないときには（ステップＳ２１：ＮＯ）、ＣＰＵ１１０は、続いて、更新指示が入力されたか否かを判定する（ステップＳ２２）。例えば、ユーザがネットワーク回線１７０を介して放送局またはテレビ放送システムの管理会社等のサーバにアクセスして、新しいＯＳプログラムを情報処理装置１００にダウンロードするときには、更新指示が入力される。
【００８８】
更新指示が入力されていないときには（ステップＳ２２：ＮＯ）、ＣＰＵ１１０は、ＯＳプログラムの命令シーケンスに従って、その他の処理を実行する（ステップＳ３０）。
【００８９】
一方、更新指示が入力されたときには（ステップＳ２２：ＹＥＳ）、ＣＰＵ１１０は、ＯＳプログラムの命令シーケンスに従って、ステップＳ２３ないしＳ２８の更新処理を実行する。
【００９０】
すなわち、まず、ネットワークデバイス１５０により情報処理装置１００とネットワーク回線１７０との間の接続を確立し（ステップＳ２３）、フラッシュＲＯＭ１３０において新しいＯＳプログラムを格納する位置を決定し、そのアドレス（以下、これを「新ＯＳプログラムアドレス」という。）をレジスタに格納する（ステップＳ２４）。続いて、ネットワーク回線１７０を介して新しいＯＳプログラムのダウンロードを開始し、そのＯＳプログラムをフラッシュＲＯＭ１３０の新ＯＳプログラムアドレスから格納していく（ステップＳ２５）。格納が終了したら（ステップＳ２６：ＹＥＳ）、フラッシュＲＯＭ１３０のアドレスＢ１１に格納されたアドレス情報をアドレスＢ１２に移す（ステップＳ２７）。続いて、レジスタに格納された新ＯＳプログラムアドレスをアドレスＢ１１に格納する（ステップＳ２８）。
【００９１】
ここで、この更新処理の流れを、図７および図８を用いて具体的に説明する、図７に示すように、情報処理装置１００の出荷時には、ＯＳプログラム１３１のみがフラッシュＲＯＭ１３０にプリインストールされており、アドレスＢ１１には、ＯＳプログラム１３１の先頭アドレスを示すアドレス情報１３４が格納されている。この状態で、新しいＯＳプログラム１３２をダウンロードすることによってＯＳプログラムを更新するときには、図８に示すように、新しいＯＳプログラム１３２を格納する位置として、フラッシュＲＯＭ１３１のアドレスＢ２がレジスタに格納され、続いて、ネットワーク回線１７０を介して新しいＯＳプログラム１３２のダウンロードが開始され、そのＯＳプログラム１３２がフラッシュＲＯＭ１３０のアドレスＢ２から書き込まれていく。格納が終了したら、アドレスＢ１１に格納されたアドレス情報１３４がアドレスＢ１２に移され、レジスタに格納されたアドレスＢ２の値がアドレス情報１３５としてアドレスＢ１１に格納される。
【００９２】
このような更新処理が終了すると、図１０に示すように、ＣＰＵ１１０は、状態フラグ１３８を「１」にセットし（ステップＳ２９）、現在実行中のＯＳプログラムの実行を終了させる。
【００９３】
一方、更新指示が入力されることなく、終了指示が入力されたときには（ステップＳ２１：ＹＥＳ）、ＣＰＵ１１０は、状態フラグ１３８を「１」にセットし（ステップＳ２９）、現在実行中のＯＳプログラムの実行を終了させる。
【００９４】
次に、図１１ないし図１３は、ブートローダプログラム１２１およびＯＳプログラムが実行されたときの、状態フラグ１３８の状態変化を示すタイミングチャートである。例えば、カレントＯＳプログラムが常時正常に動作する場合には、状態フラグ１３８は図１１に示すように変化する。すなわち、前回、ＯＳプログラムが正常に実行され、かつ正常に終了したときには、状態フラグ１３８はそのＯＳプログラムの終了時によって「１」にセットされている。そのため、ブートローダプログラム１２１が実行された時点で、状態フラグ１３８は「１」である（時点ｔ１１）。この結果、ブートローダプログラム１２１によりカレントＯＳプログラムが選択される。続いて、ブートローダプログラム１２１により状態フラグ１３８が「０」にセットされた後（時点ｔ１２）、ブートローダプログラム１２１によりカレントＯＳプログラムの実行が開始される（時点ｔ１３）。そして、カレントＯＳプログラムの実行が正常に終了するとき、カレントＯＳプログラムにより状態フラグ１３８が「１」にセットされ（時点ｔ１４）、カレントＯＳプログラムの終了後もその状態が保持される（時点ｔ１５）。
【００９５】
一方、例えば、前回はカレントＯＳプログラムが正常に動作したが、今回はカレントＯＳプログラムが正常に動作しなかった場合には、状態フラグ１３８は図１２に示すように変化する。前回はカレントＯＳプログラムが正常に動作したが、今回はカレントＯＳプログラムが正常に動作しなかった場合とは、例えば、前回のカレントＯＳプログラム実行中にＯＳプログラムを更新し、更新は成功したものの、更新後の新しいＯＳプログラム中に欠陥があった場合などが考えられる。このような場合には、前回、ＯＳプログラムが正常に終了しているので、状態フラグ１３８は「１」にセットされている（時点ｔ２１）。この結果、ブートローダプログラム１２１によりカレントＯＳプログラムが選択される。続いて、ブートローダプログラム１２１により状態フラグ１３８が「０」にセットされた後（時点ｔ２２）、ブートローダプログラム１２１によりカレントＯＳプログラムの実行が開始される（時点ｔ２３）。ところが、その後、カレントＯＳプログラムは、そのプログラムの欠陥等により正常に動作せず、終了指示が入力されたにもかかわらず、カレントＯＳプログラムが終了しない。このような場合には、図１０中のステップＳ２９の処理が実行されないので、状態フラグ１３８は「０」のままである。ユーザがやむを得ず情報処理装置１００の電源を切ったとしても、状態フラグ１３８は「０」のままである（時点ｔ２４）。
【００９６】
また、カレントＯＳプログラムの実行中（ｔ２３ないしｔ２４）に、ＯＳプログラムの更新処理（図１０中のステップＳ２２ないしＳ２８）を実行したところ、更新処理途中にトラブルが生じ、現在実行中のカレントＯＳプログラムが正常に終了しなくなった場合も、同様に、状態フラグ１３８は「０」のままである。
【００９７】
他方、例えば、前回はカレントＯＳプログラムが正常に動作しなかったが、今回はカレントＯＳプログラムが正常に動作した場合には、状態フラグ１３８は図１３に示すように変化する。前回はカレントＯＳプログラムが正常に動作しなかったが、今回はカレントＯＳプログラムが正常に動作した場合とは、前回、バックアップＯＳプログラムまたはデフォルトＯＳプログラム上でＯＳプログラムを再更新した結果、欠陥のないＯＳプログラムの更新に成功した場合などが考えられる。このような場合には、前回、ＯＳプログラムが正常に終了していないので、状態フラグ１３８は「０」になっている（時点ｔ３１）。この結果、ブートローダプログラム１２１によりバックアップＯＳプログラムまたはデフォルトＯＳプログラムが選択され、その実行が開始される（時点ｔ３２）。そして、バックアップＯＳプログラムまたはデフォルトＯＳプログラムの実行が正常に終了するとき、現在実行中のＯＳプログラムにより状態フラグ１３８が「１」にセットされ（時点ｔ３３）、そのまま保持される（時点ｔ３４）。
【００９８】
以上詳述したとおり、情報処理装置１００によれば、カレントＯＳプログラムが正常に動作するときには、それが選択・実行される。また、カレントＯＳプログラムが正常に動作しないときには、バックアップＯＳプログラムが選択・実行される。一方、カレントＯＳプログラムもバックアップＯＳプログラムも正常に動作しないときには、デフォルトＯＳプログラムが選択・実行される。このように、ＯＳプログラムのいずれかが正常に動作しなくても、それに代わるＯＳプログラムが正常に実行されるので、情報処理装置１００が全く動作しなくなったり、その機能の大半が損なわれるといった事態を回避することができる。
【００９９】
また、カレントＯＳプログラムの代替プログラムとして、バックアップＯＳプログラムとデフォルトＯＳプログラムを用意したことにより、カレントＯＳプログラムの不調から情報処理装置１００を柔軟かつ確実に救済することができる。例えば、バックアップＯＳプログラムは、カレントＯＳプログラムの更新前のプログラムであるから、ＯＳプログラムが更新される度に優れた機能を備えるようになるとすれば、バックアップＯＳプログラムは、デフォルトＯＳプログラムと比較して、より優れた機能を備えているであろう。これに対し、デフォルトＯＳプログラムは、出荷時のＯＳプログラムであるから、基本的な機能しか備えていないかもしれないが、信頼性が非常に高く、必ず正常に動作する。このような性質の異なる２つのＯＳプログラムを用意しておくことは、緊急時の救済を図るときに有利である。
【０１００】
また、状態フラグ１３８に基づいて、正常動作が可能なＯＳプログラムを選択することとしたから、選択動作を容易かつ迅速に実現することができる。
【０１０１】
さらに、ＯＳプログラムの終了時に状態フラグ１３８を一定の状態（例えば「１」）にセットし、状態フラグ１３８がその一定の状態にセットされていることに基づいて、前回のＯＳプログラムの実行が正常であったか否かを判定することとしたから、正常動作が可能なＯＳプログラムを精度よく識別することができる。
【０１０２】
なお、図８では、フラッシュＲＯＭ１３０に２つのＯＳプログラムを格納し、一方をカレントＯＳプログラムとし、他方をバックアップＯＳプログラムとする場合を例に挙げたが、本発明はこれに限らず、３つ以上のＯＳプログラムをフラッシュＲＯＭ１３０に格納し、そのうち１つをカレントＯＳプログラムとし、残りの複数のＯＳプログラムをそれぞれバックアップＯＳプログラムとしてもよい。例えば、ＯＳプログラムが更新されるたびに、前回、前々回、さらにはその前に使用していたＯＳプログラムをすべてバックアップＯＳプログラムとして保持しておき、ＯＳプログラムの実行時にカレントＯＳプログラムが正常に動作しないときには、ブートローダプログラムによって複数のバックアップＯＳプログラムの中の１つを選択して実行させる構成としてもよい。
【０１０３】
また、図９に示すブートローダプログラム１２１では、ステップＳ１９で告知情報を発する構成としたが、これに加え、このステップＳ１９で、処理を待機状態にし、ユーザにバックアップＯＳプログラムを実行することの許可を求め、ユーザからの許可入力があったときにはバックアップＯＳプログラムを実行し、禁止入力があったときにはバックアップＯＳプログラムを実行せずに、直ちに処理を終了する構成としてもよい。
【０１０４】
（第２実施例）
本発明の第２実施例について図１５ないし図１９を参照して説明する。なお、以下に述べる第２実施例において、第１実施例と同一の構成要素には同一の符号を付し、その説明を省略する。第２実施例に係る情報処理装置の特徴は、状態フラグに代えて、状態カウンタおよび成功カウンタを設け、これら２つのカウンタ値により、ＯＳプログラムが正常に動作しなかった回数を認識し、これに基づいてＯＳプログラムの選択を行う点にある。
【０１０５】
図１５は第２実施例に係る情報処理装置に設けられたフラッシュＲＯＭ２１０の内容を示している。図１５に示すフラッシュＲＯＭ２１０の内容は、出荷時からＯＳプログラムの更新を１回行った後のものである。したがって、カレントＯＳプログラムとしてＯＳプログラム１３２と、バックアップＯＳプログラムとしてＯＳプログラム１３１がそれぞれ格納されている。そして、ＯＳプログラム１３２の先頭アドレスがアドレス情報１３５として格納され、ＯＳプログラム１３１の先頭アドレスがアドレス情報１３４として格納されている。これらの点については、第１実施例に係る情報処理装置１００のフラッシュＲＯＭ１３０の内容と同じであるが（図８参照）、第２実施例に係る情報処理装置のフラッシュＲＯＭ２１０には、状態カウンタ２１１、成功カウンタ２１２および許容差分値２１３が格納されている。
【０１０６】
状態カウンタ２１１および成功カウンタ２１２は、いずれもＣＰＵ１１０の制御によりそのカウンタ値が増加・減少し、または所定の値にセットされる。より具体的には、状態カウンタ２１１は、カレントＯＳプログラムの実行回数をカウントする。成功カウンタ２１２は、ＯＳプログラムが正常に終了した回数をカウントする。ＯＳプログラムの更新処理が正常に終了したときには、状態カウンタ２１１および成功カウンタ２１２はそれぞれ０にリセットされる。なお、出荷時には、状態カウンタ２１１および成功カウンタ２１２はそれぞれ同じ値にセットされている。
【０１０７】
許容差分値２１３は、予め設定された固定値である。なお、許容差分値２１３をユーザの入力操作または他のプログラムの命令により変更できる構成としてもよい。
【０１０８】
次に、図１６は第２実施例に係る情報処理装置におけるブートローダプログラムが実行されたときのＣＰＵ１１０の動作を示している。
【０１０９】
図１６に示すように、情報処理装置の電源が投入されると、ＣＰＵ１１０は、ＲＯＭ１２０のアドレスＡ１からブートローダプログラム１２１の実行を開始する（ステップＳ４１）。
【０１１０】
ＣＰＵ１１０は、まず、状態カウンタ２１１のカウンタ値と成功カウンタ２１２のカウンタ値との差を演算し（ステップＳ４２）、両カウンタ値の差が許容差分値２１３よりも小さいか否かを判定する（ステップＳ４３）。両カウンタ値の差が許容差分値２１３よりも小さいときには、カレントＯＳプログラムが更新されてから常時正常に動作しているか、または正常に動作しなかった回数が比較的少ないことが推測される。
【０１１１】
そこで、両カウンタ値の差が許容差分値２１３よりも小さいときには（ステップＳ４３：ＹＥＳ）、ＣＰＵ１１０は、状態カウンタ２１１のカウンタ値を１増加させた後（ステップＳ４４）、カレントＯＳプログラムを選択・実行させる（ステップＳ４５ないしＳ４７）。
【０１１２】
一方、両カウンタ値の差が許容差分値２１３と等しいかまたはそれより大きいときには（ステップＳ４３：ＮＯ）、ＣＰＵ１１０は、状態カウンタ２１１のカウンタ値を１増加させた後（ステップＳ４８）、バックアップＯＳプログラムまたはデフォルトＯＳプログラムを選択・実行させる（ステップＳ４６、Ｓ４７、Ｓ４９ないしＳ５２）。
【０１１３】
次に、図１７は第２実施例に係る情報処理装置におけるＯＳプログラムが実行されたときのＣＰＵ１１０の動作を示している。
【０１１４】
第２実施例に係る情報処理装置におけるＯＳプログラムが実行されたときのＣＰＵ１１０の動作は、その大半が第１実施例に係る情報処理装置１００におけるＣＰＵ１１０の動作と共通する。異なる点は、更新処理（ステップＳ６３ないしＳ６８）が終了した後に、状態カウンタ２１１と成功カウンタ２１２のカウンタ値をそれぞれ０にリセットする点と（ステップＳ６９）、終了指示が入力されたときに（ステップＳ６１：ＹＥＳ）、成功カウンタ２１２のカウンタ値を１増加させる点である（ステップＳ７０）。
【０１１５】
次に、図１８および図１９は、第２実施例に係るブートローダプログラムおよびＯＳプログラムが実行されたときの、状態カウンタ２１１および成功カウンタ２１２のそれぞれのカウンタ値の変化を示すタイミングチャートである。なお、図１８および図１９の各チャートにおいて、破線Ｃ１は、状態カウンタ２１１のカウンタ値の変化を示し、実線Ｃ２は、成功カウンタ２１２のカウンタ値の変化を示す。
【０１１６】
例えば、ＯＳプログラムが更新され、その更新されたＯＳプログラムが、正常に動作した場合には、状態カウンタ２１１および成功カウンタ２１２のそれぞれのカウンタ値は、図１８に示すように変化する。すなわち、ＯＳプログラムが更新されると、状態カウンタ２１１および成功カウンタ２１２のそれぞれのカウンタ値は０にリセットされる（図１７中のステップＳ６９）。したがって、その後、再度、ブートローダプログラムを実行するときには、状態カウンタ２１１および成功カウンタ２１２のそれぞれのカウンタ値は０になっている（時点ｔ４１）。この結果、状態カウンタ２１１のカウンタ値と成功カウンタ２１２のカウンタ値との差は０であり、許容差分値２１３（例えば３）よりも小さいので、ブートローダプログラムによりカレントＯＳプログラム（すなわち更新されたＯＳプログラム）が選択される。続いて、ブートローダプログラムにより状態カウンタ２１１のカウンタ値が１増加された後（時点ｔ４２）、ブートローダプログラムによりカレントＯＳプログラムの実行が開始される（時点ｔ４３）。そして、カレントＯＳプログラムの実行が正常に終了するとき、カレントＯＳプログラムにより成功カウンタ２１２のカウンタ値が１増加される（時点ｔ４４）。この結果、カレントＯＳプログラムが終了した時点で、状態カウンタ２１１と成功カウンタ２１２とのそれぞれのカウンタ値が同一値となり、カレントＯＳプログラムの終了後もその状態が保持される（時点ｔ４５）。このように、カレントＯＳプログラムが正常に動作する場合には、状態カウンタ２１２と成功カウンタ２１２とのそれぞれのカウンタ値の差は変化しない。
【０１１７】
一方、ＯＳプログラムが更新され、その更新されたＯＳプログラムが、正常に動作しなかった場合には、状態カウンタ２１１および成功カウンタ２１２のそれぞれのカウンタ値は、図１９に示すように変化する。すなわち、ＯＳプログラムが更新されると、状態カウンタ２１１および成功カウンタ２１２のそれぞれのカウンタ値は０にリセットされる（図１７中のステップＳ６９）。したがって、その後、再度、ブートローダプログラムを実行するときには、状態カウンタ２１１および成功カウンタ２１２のそれぞれのカウンタ値は０になっている（時点ｔ５１）。この結果、状態カウンタ２１１のカウンタ値と成功カウンタ２１２のカウンタ値との差は０であり、許容差分値２１３よりも小さいので、ブートローダプログラムによりカレントＯＳプログラム（すなわち更新されたＯＳプログラム）が選択される。続いて、ブートローダプログラムにより状態カウンタ２１１のカウンタ値が１増加された後（時点ｔ５２）、ブートローダプログラムによりカレントＯＳプログラムの実行が開始される（時点ｔ５３）。ところが、カレントＯＳプログラムが正常に動作せず、そのため、カレントＯＳプログラムが正常に終了しない。このような場合には、図１７中のステップＳ７０の処理が実行されないので、成功カウンタ２１２のカウンタ値は変化せず、この例の場合、カウンタ値は０のままとなる。この結果、状態カウンタ２１１のカウンタ値と成功カウンタ２１２のカウンタ値との差が１になる（時点ｔ５４）。
【０１１８】
以降、ユーザが情報処理装置の電源を入れ直して、再度ブートローダプログラムを実行させたにもかかわらず、カレントＯＳプログラムが正常に動作せず、このような状態が数回繰り返されると、図１９中の時点ｔ５５、ｔ５６に示すように、状態カウンタ２１１のカウンタ値のみが増加し、状態カウンタ２１１のカウンタ値と成功カウンタ２１２のカウンタ値との差が徐々に大きくなる。そして、この差が許容差分値２１３を超えると、ブートローダプログラムにより、カレントＯＳプログラムの代わりにバックアップＯＳプログラムまたはデフォルトＯＳプログラムが選択され、実行されるようになる（図１６中のステップＳ４３、Ｓ４８、Ｓ４９、Ｓ５１参照）。
【０１１９】
このような構成を有する第２実施例に係る情報処理装置によっても、ＯＳプログラムのいずれかが正常に動作しなくても、それに代わるＯＳプログラムを実行させることで、情報処理装置が全く動作しなくなったり、その機能の大半が損なわれるといった事態を回避することができる。
【０１２０】
特に、本実施例によれば、カレントＯＳプログラムが正常に終了しない回数をカウントして、その回数が所定回数に達したときに、カレントＯＳプログラムに代わるバックアップＯＳプログラムまたはデフォルトＯＳプログラムを実行させることとしたから、カレントＯＳプログラムが偶然に正常終了しなかった場合などには、カレントＯＳプログラムの実行を再度試みることができる。したがって、カレントＯＳプログラムの更新により生じうる不具合を実質的に判断することができ、ＯＳプログラムの選択・管理・更新に関する性能を高めることができる。
【０１２１】
なお、本発明は、請求の範囲および明細書全体から読み取るこのできる発明の要旨または思想に反しない範囲で適宜変更可能であり、そのような変更を伴う情報処理装置および情報処理方法並びにこれらの機能を実現するコンピュータプログラムもまた本発明の技術思想に含まれる。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係る情報処理装置を示すブロック図である。
【図２】本発明の第２実施形態に係る情報処理装置を示すブロック図である。
【図３】本発明の第３実施形態に係る情報処理装置を示すブロック図である。
【図４】本発明の第４実施形態に係る情報処理装置を示すブロック図である。
【図５】本発明の第１実施例に係る情報処理装置を示すブロック図である。
【図６】本発明の第１実施例に係る情報処理装置におけるＲＯＭの内容を示す説明図である。
【図７】本発明の第１実施例に係る情報処理装置におけるフラッシュＲＯＭの出荷時における内容を示す説明図である。
【図８】本発明の第１実施例に係る情報処理装置におけるフラッシュＲＯＭの更新後における内容を示す説明図である。
【図９】本発明の第１実施例に係る情報処理装置におけるブートローダプログラムの動作を示すフローチャートである。
【図１０】本発明の第１実施例に係る情報処理装置におけるオペレーティングシステムプログラムの動作を示すフローチャートである。
【図１１】本発明の第１実施例に係る情報処理装置における状態フラグの状態を示すタイミングチャートである。
【図１２】本発明の第１実施例に係る情報処理装置における状態フラグの状態を示すタイミングチャートである。
【図１３】本発明の第１実施例に係る情報処理装置における状態フラグの状態を示すタイミングチャートである。
【図１４】本発明の第１実施例に係る情報処理装置における告知情報の具体例を示す説明図である。
【図１５】本発明の第２実施例に係る情報処理装置におけるフラッシュＲＯＭの内容を示す説明図である。
【図１６】本発明の第２実施例に係る情報処理装置におけるブートローダプログラムの動作を示すフローチャートである。
【図１７】本発明の第２実施例に係る情報処理装置におけるオペレーティングシステムプログラムの動作を示すフローチャートである。
【図１８】本発明の第２実施例に係る情報処理装置における状態カウンタおよび成功カウンタのそれぞれのカウンタ値を示すタイミングチャートである。
【図１９】本発明の第２実施例に係る情報処理装置における状態カウンタおよび成功カウンタのそれぞれのカウンタ値を示すタイミングチャートである。
【符号の説明】
１０、２０、３０、４０、１００…情報処理装置
１１…第１記憶手段
１２…第２記憶手段
１３…第３記憶手段
１４…第４記憶手段
１５…第１選択手段
１６…第１プログラム
１７…第２プログラム
１８…バックアッププログラム
１９…第１状態情報
２１…第１状態情報設定手段
２２…第２状態情報設定手段
３１…第５記憶手段
３２…第６記憶手段
３３…第２選択手段
３４…デフォルトプログラム
３５…第２状態情報
４１…更新手段
４２…バックアップ手段
１１０…ＣＰＵ
１２０…ＲＯＭ
１２１…ブートローダプログラム
１２２…デフォルトＯＳプログラム
１３０、２１０…フラッシュＲＯＭ
１３１、１３２…ＯＳプログラム
１３８…状態フラグ
１５０…ネットワークデバイス
１７０…ネットワーク回線（情報通信路）
２１１…状態カウンタ
２１２…成功カウンタ
２１３…許容差分値
【図１】
2004227143.tif 000003
【図２】
2004227143.tif 000004
【図３】
2004227143.tif 000005
【図４】
2004227143.tif 000006
【図５】
2004227143.tif 000007
【図６】
2004227143.tif 000008
【図７】
2004227143.tif 000009
【図８】
2004227143.tif 000010
【図９】
2004227143.tif 000011
【図１０】
2004227143.tif 000012
【図１１】
2004227143.tif 000013
【図１２】
2004227143.tif 000014
【図１３】
2004227143.tif 000015
【図１４】
2004227143.tif 000016
【図１５】
2004227143.tif 000017
【図１６】
2004227143.tif 000018
【図１７】
2004227143.tif 000019
【図１８】
2004227143.tif 000020
【図１９】
2004227143.tif 000021