(57)【要約】【課題】起動プログラムに破損等の不具合が生じた場合であっても起動可能であり、かつ、記憶容量を有効に活用できるコンピュータシステム、および、コンピュータシステムの起動方法を提供する。【解決手段】メインブートプログラムと、圧縮された形態の補助ブートプログラムと、これらブートプログラムを読み出すためのブート制御プログラムとをフラッシュＲＯＭ１２に記憶した構成を有するコンピュータシステム１は、起動時にブート制御プログラムを読み出して実行し、メインブートプログラムが正常か否かを判定し、メインブートプログラムが正常でない場合には、圧縮された形態の補助ブートプログラムを読み出して復元して実行することにより、起動する。【選択図】図１
2007128204.tif 000002
【特許請求の範囲】
【請求項１】
起動時に、予め不揮発性記憶媒体に記憶した起動プログラムを読み出して実行するコンピュータシステムであって、
前記不揮発性記憶媒体に、第１の起動プログラムと、圧縮された形態の第２の起動プログラムと、前記第１または第２の起動プログラムを読み出して実行するための起動制御プログラムとを記憶しており、
起動時に前記起動制御プログラムを読み出して実行することにより、前記第１の起動プログラムが正常か否かを判定し、前記第１の起動プログラムが正常な場合は前記第１の起動プログラムを実行し、前記第１の起動プログラムが正常でない場合には、前記圧縮された第２の起動プログラムを復元して実行すること、
を特徴とするコンピュータシステム。
【請求項２】
前記第２の起動プログラムは、前記コンピュータシステムによって前記不揮発性記憶媒体に対する前記第１の起動プログラムの書き込みを実行可能とするプログラムであることを特徴とする請求項１記載のコンピュータシステム。
【請求項３】
前記不揮発性記憶媒体はフラッシュＲＯＭで構成されたことを特徴とする請求項１または２記載のコンピュータシステム。
【請求項４】
起動時に、予め不揮発性記憶媒体に記憶した起動プログラムを読み出して実行するコンピュータシステムの起動方法であって、
前記不揮発性記憶媒体に、第１の起動プログラムと、圧縮された形態の第２の起動プログラムと、前記第１または第２の起動プログラムを読み出して実行するための起動制御プログラムとを記憶した構成とし、
当該コンピュータシステムにより、前記起動時に、前記起動制御プログラムを読み出して実行し、前記第１の起動プログラムが正常か否かを判定し、前記第１の起動プログラムが正常な場合は前記第１の起動プログラムを実行し、前記第１の起動プログラムが正常でない場合には前記圧縮された第２の起動プログラムを復元して実行すること、
を特徴とするコンピュータシステムの起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予め記憶した起動プログラムを起動時に実行するコンピュータシステム、および、コンピュータシステムの起動方法に関する。
【背景技術】
【０００２】
コンピュータシステムの起動時には、当該コンピュータシステムの機能部およびインタフェースを初期化して動作可能とするための起動プログラム（いわゆるブートプログラム）が実行される。これは、いわゆるパーソナルコンピュータに限らず、各種の電子機器、および、各種装置を制御するためのコンピュータ（ボードマイコンを含む）においても共通である。
この起動プログラムは、コンピュータシステムの機能拡張や不具合の修正を目的として、製品の出荷後に書き換えられることがあった（例えば、特許文献１参照。）。
【特許文献１】特開平０６−３２４８５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
起動プログラムはコンピュータシステムが起動する際に不可欠なものであり、起動プログラムの書き換えに失敗するなどして起動プログラムが破損した場合、コンピュータシステムは起動不可能な状態に陥る。
このような事態を回避するため、従来、起動プログラムを記憶する記憶装置を複数備えたコンピュータシステムが提案された。このコンピュータシステムでは、一つの記憶装置に記憶された起動プログラムが破損しても、他の記憶装置に記憶された起動プログラムを読み出して起動できるようになっている。しかしながら、複数の記憶装置を設けることで基板上の実装部品が増加し、コスト増を招くという問題があった。また、起動プログラムの内容を大幅に変更する必要がある場合、複数の記憶装置に記憶された各々の起動プログラムを書き換える必要が生じ、手間がかかるという問題があった。
さらに、起動プログラムを書き換える際に、新しい起動プログラムの容量が従前の起動プログラムの容量を大幅に上回る場合がある。このような場合に備えて、起動プログラムを記憶する記憶装置の容量には余裕を持たせておくことが多く、記憶容量を有効に活用できないという問題があった。
【０００４】
そこで、本発明は、起動プログラムに破損等の不具合が生じた場合であっても起動可能であり、かつ、記憶容量を有効に活用できるコンピュータシステム、および、コンピュータシステムの起動方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、本発明は、起動時に、予め不揮発性記憶媒体に記憶した起動プログラムを読み出して実行するコンピュータシステムであって、前記不揮発性記憶媒体に、第１の起動プログラムと、圧縮された形態の第２の起動プログラムと、前記第１または第２の起動プログラムを読み出して実行するための起動制御プログラムとを記憶しており、起動時に前記起動制御プログラムを読み出して実行することにより、前記第１の起動プログラムが正常か否かを判定し、前記第１の起動プログラムが正常な場合は前記第１の起動プログラムを実行し、前記第１の起動プログラムが正常でない場合には、前記圧縮された第２の起動プログラムを復元して実行することを特徴としている。
この構成によれば、不揮発性記憶媒体に記憶した第１の起動プログラムが正常な場合は第１の起動プログラムを実行して起動するコンピュータシステムにおいて、第１の起動プログラムが正常でない場合には、第２の起動プログラムを実行して起動できる。そして、第２の起動プログラムは圧縮された形態で不揮発性記憶媒体に記憶されているので、第２の起動プログラムを記憶するための記憶容量を最小限に抑えることができる。つまり、通常時に使用する第１の起動プログラムを記憶する容量に最小限の容量を加えた分の容量を確保しておくだけで、第１の起動プログラムに異常が生じた場合であっても起動可能なコンピュータシステムを実現できる。さらに、第２の起動プログラムは第１の起動プログラムが正常でない場合にのみ実行されるので、第２の起動プログラムを復元する処理を行う頻度は低く、利便性を損なうことはない。
【０００６】
本発明において、前記第２の起動プログラムは、前記コンピュータシステムによって前記不揮発性記憶媒体に対する前記第１の起動プログラムの書き込みを実行可能とするプログラムとしてもよい。この場合、第２の起動プログラムが実行されることで第１の起動プログラムの修復および再書き込みが可能となるので、コンピュータシステムを元通り動作させることが可能となる。また、この第２の起動プログラムは第１の起動プログラムに比べて機能が少ないので、容量が小さくて済み、不揮発性記憶媒体の容量をより有効に活用できる。さらに、この第２の起動プログラムは汎用性が高く、仕様の異なる複数の機器において共通して利用可能であるため、第２の起動プログラムを開発する負担が大幅に軽減される。
【０００７】
また、本発明において、前記不揮発性記憶媒体はフラッシュＲＯＭ（Read Only Memory）で構成されたものとしてもよい。この場合、不揮発性記憶媒体に記憶された第１および第２の起動プログラムと起動制御プログラムとのうち、その一部のみに対する消去および書き込みが可能となる。これにより、第１の起動プログラムに異常が生じた場合に、第１の起動プログラムのみを、容易に修復し、或いは再書き込みすることができる。
【０００８】
本発明は、起動時に、予め不揮発性記憶媒体に記憶した起動プログラムを読み出して実行するコンピュータシステムの起動方法であって、前記不揮発性記憶媒体に、第１の起動プログラムと、圧縮された形態の第２の起動プログラムと、前記第１または第２の起動プログラムを読み出して実行するための起動制御プログラムとを記憶した構成として、当該コンピュータシステムにより、前記起動時に、前記起動制御プログラムを読み出して実行し、前記第１の起動プログラムが正常か否かを判定し、前記第１の起動プログラムが正常な場合は前記第１の起動プログラムを実行し、前記第１の起動プログラムが正常でない場合には前記圧縮された第２の起動プログラムを復元して実行することを特徴としている。
この方法によれば、不揮発性記憶媒体に記憶した第１の起動プログラムが正常な場合は第１の起動プログラムを実行して起動するコンピュータシステムにおいて、第１の起動プログラムが正常でない場合には、第２の起動プログラムを実行して起動できる。そして、第２の起動プログラムは圧縮された形態で不揮発性記憶媒体に記憶されているので、第２の起動プログラムを記憶するための記憶容量を最小限に抑えることができる。つまり、通常時に使用する第１の起動プログラムを記憶する容量に最小限の容量を加えた分の容量を確保しておくだけで、第１の起動プログラムに異常が生じた場合であっても起動可能なコンピュータシステムを実現できる。さらに、第２の起動プログラムは第１の起動プログラムが正常でない場合にのみ実行されるので、第２の起動プログラムを復元する処理を行う頻度は低く、利便性を損なうことはない。
【発明の効果】
【０００９】
本発明によれば、不揮発性記憶媒体に記憶した第１の起動プログラムを実行して起動するコンピュータシステムにおいて、最小限の容量を有する第２の起動プログラムを記憶しておくことで、第１の起動プログラムが正常でない場合に、第２の起動プログラムを実行して起動できる。
【発明を実施するための最良の形態】
【００１０】
次に、本発明の好適な実施の形態について図面を参照して説明する。
図１は、本発明を適用した実施の形態に係るコンピュータシステム１の要部構成を示す機能ブロック図である。
この図１に示すように、コンピュータシステム１は、所定のプログラムを実行してコンピュータシステム１の各部を制御するＣＰＵ（Central Processing Unit）１１と、ＣＰＵ１１により実行される各種制御プログラムを記憶したフラッシュＲＯＭ１２と、ＣＰＵ１１により実行されるプログラムやデータ等を一時的に記憶するワークエリア１３ａ（図２）を形成するＲＡＭ１３と、ＣＰＵ１１により実行されるアプリケーションプログラムやデータ等を記憶する記憶装置１４と、コンピュータシステム１の外部および内部の各種装置に接続されるインタフェース（Ｉ／Ｆ）１５とを備え、これらの各部はバス１６により接続されている。なお、コンピュータシステム１は、図１に図示しない各種装置や機能部（例えば、電源回路部）を備える構成としてもよいが、これらについては図示および説明を省略する。
【００１１】
ＣＰＵ１１は、電源投入後、フラッシュＲＯＭ１２に記憶された各種制御プログラムを読み出して実行することにより、コンピュータシステム１の各部を初期化して、動作可能な状態に移行する。そして、ＣＰＵ１１は、Ｉ／Ｆ１５を介して入力される指示等に従って、記憶装置１４に記憶されたアプリケーションプログラムやデータを読み出して、ＲＡＭ１３のワークエリア１３ａに展開して実行し、各種の機能を実現する。
【００１２】
フラッシュＲＯＭ１２は、書き換え可能な不揮発性の記憶媒体であり、コンピュータシステム１の起動時にＣＰＵ１１により実行される各種制御プログラムを記憶している。
図２は、フラッシュＲＯＭ１２が有する記憶領域の構成を模式的に示す図である。
図２に示すように、フラッシュＲＯＭ１２は、起動制御プログラムとしてのブート制御プログラムを記憶するブート制御プログラム記憶領域１２ａ、第２の起動プログラムとしての補助ブートプログラムを圧縮した圧縮プログラムを記憶する圧縮プログラム記憶領域１２ｂ、および、第１の起動プログラムとしてのメインブートプログラムを記憶するメインブートプログラム記憶領域１２ｃの各記憶領域を備えている。
【００１３】
ブート制御プログラム記憶領域１２ａに記憶されるブート制御プログラムは、ＣＰＵ１１によって起動時に最初に実行されるプログラムである。このブート制御プログラムを実行することにより、ＣＰＵ１１は、メインブートプログラム記憶領域１２ｃに記憶されたメインブートプログラムが正常か否かを判定する。判定方法として、例えば、メインブートプログラム上に予め指定されたアドレスに書き込まれたコードが正常に書き込まれているかどうかで判定する方法や、メインブートプログラムのチェックサムを正常なものと比較することによって判定する方法等がある。
メインブートプログラム記憶領域１２ｃに記憶されたメインブートプログラムが正常であれば、メインブートプログラムを実行してコンピュータシステム１の各部を初期化する。また、メインブートプログラムが正常でない場合、ＣＰＵ１１は、圧縮プログラム記憶領域１２ｂに記憶された圧縮プログラムを読み出し、ＲＡＭ１３のワークエリア１３ａにおいて復元・展開して補助ブートプログラムを得て、この補助ブートプログラムを実行する。
補助ブートプログラムを実行することにより、ＣＰＵ１１は、コンピュータシステム１の各部を初期化する。ここで、補助ブートプログラムによる初期化の処理は、必ずしもメインブートプログラムにより行われる初期化の処理と同一でなくてもよい。すなわち、補助ブートプログラムにより初期化されたコンピュータシステム１は、メインブートプログラム記憶領域１２ｃに対するメインブートプログラムの再書き込み（修復）が可能な状態に移行すればよい。この状態でメインブートプログラム記憶領域１２ｃに正常なメインブートプログラムが記憶されれば、正常な起動が可能になるからである。
【００１４】
そして、コンピュータシステム１の起動時には、図３に示す動作が実行される。
図３は、コンピュータシステム１の起動時の動作を示すフローチャートである。
ＣＰＵ１１は、まず、ブート制御プログラム記憶領域１２ａ（図２）に記憶されたブート制御プログラムを読み出して、ＲＡＭ１３のワークエリア１３ａ（図２）に展開して実行する（ステップＳ１１）。
ブート制御プログラムを実行するＣＰＵ１１は、次に、メインブートプログラム記憶領域１２ｃに記憶されたメインブートプログラムを読み出して、チェックサムの演算等によりメインブートプログラムをチェックする（ステップＳ１２）。
そして、ＣＰＵ１１は、メインブートプログラムが正常か否かを判定し（ステップＳ１３）、メインブートプログラムが正常であれば、このメインブートプログラムを読み出してワークエリア１３ａに展開して実行し、コンピュータシステム１の初期化を行う（ステップＳ１４）。
このステップＳ１４で初期化されたコンピュータシステム１は、その後、Ｉ／Ｆ１５から入力される指示に従って、或いは自動的に、ＣＰＵ１１が記憶装置１４に記憶されたアプリケーションプログラムを読み出して実行することにより、各種機能を実現する。
【００１５】
また、メインブートプログラムが正常でない場合（ステップＳ１３；Ｎｏ）、ＣＰＵ１１は、圧縮プログラム記憶領域１２ｂに記憶された圧縮プログラムを読み出してワークエリア１３ａに記憶させ、この圧縮プログラムを復元する処理を行う（ステップＳ１５）。
そして、ＣＰＵ１１は、圧縮プログラムを復元して得られた補助ブートプログラムを実行し、コンピュータシステム１の初期化を行う（ステップＳ１６）。このステップＳ１６で初期化されたコンピュータシステム１は、例えば、Ｉ／Ｆ１５を介して入力される制御情報に従って、例えば、メインブートプログラム記憶領域１２ｃに記憶されたメインブートプログラムの書き込み（修復）が可能な状態に移行する。
【００１６】
以上のように、本発明を適用した実施の形態に係るコンピュータシステム１は、フラッシュＲＯＭ１２のブート制御プログラム記憶領域１２ａにブート制御プログラムを記憶し、圧縮プログラム記憶領域１２ｂに補助ブートプログラムを圧縮した形態で記憶し、メインブートプログラム記憶領域１２ｃにメインブートプログラムを記憶しており、起動時に、ＣＰＵ１１によってブート制御プログラムを読み出して実行し、フラッシュＲＯＭ１２に記憶したメインブートプログラムが正常であるか否かを判定し、メインブートプログラムが正常でない場合には、圧縮プログラムを復元して補助ブートプログラムを得て実行する。これにより、メインブートプログラムが破損する等の不具合が生じたとしても、容易に起動することが可能である。
【００１７】
また、補助ブートプログラムは圧縮された形態で圧縮プログラム記憶領域１２ｂに記憶されるので、必要な記憶容量は非常に小さい。このため、コンピュータシステム１の機能の拡張等により、補助ブートプログラムの容量が増大することに備えて、圧縮プログラム記憶領域１２ｂの容量に余裕を持たせるとしても、圧縮プログラム記憶領域１２ｂの記憶容量は全体として非常に小さいものでよい。
さらに、上述した機能を有するブート制御プログラムは、メインブートプログラムおよび補助ブートプログラムの内容に関係なく共通して使用可能である。また、補助ブートプログラムは、異常が生じたメインブートプログラムを復元する必要がある場合に、メインブートプログラム記憶領域１２ｃに対して正常なメインブートプログラムを書き込むための機能を有するものであればよく、メインブートプログラムの機能に完全に対応する必要はないので、汎用性が高い。このため、メインブートプログラムおよび補助ブートプログラムの機能拡張等が行われた場合であっても、ブート基本制御プログラムおよび補助ブートプログラムの容量が変わることは殆どない。
従って、フラッシュＲＯＭ１２におけるブート制御プログラム記憶領域１２ａおよび圧縮プログラム記憶領域１２ｂの記憶容量を、メインブートプログラムの内容およびサイズに合わせて調整する必要はなく、機器の種類や仕様毎にフラッシュＲＯＭ１２の容量を変える必要がないので、コストの低減が図られる。さらに、ブート制御プログラム記憶領域１２ａおよび圧縮プログラム記憶領域１２ｂのアドレスを固定することも可能となり、ブート制御プログラムおよび補助ブートプログラムの開発に係る負担が大幅に軽減される。
【００１８】
また、補助ブートプログラムを実行する際には復元・展開する処理が必要となるが、これはメインブートプログラムが正常でない場合に限られるので、実用上の支障は無視できる程度で済み、利便性を損なうおそれはない。
【００１９】
さらに、コンピュータシステム１においては、ブート制御プログラム、圧縮プログラム、およびメインブートプログラムを、フラッシュＲＯＭ１２に記憶している。フラッシュＲＯＭ１２に代えて、上記各種制御プログラムを記憶する記憶媒体としては、書き換え可能で、かつ不揮発性のものであれば、他の種類の記憶媒体を用いることが可能であるが、部分的な消去および書き込みが可能なフラッシュＲＯＭを用いることが特に好ましい。これは、メインブートプログラムを書き換える必要が生じた場合に、ブート制御プログラムおよび圧縮プログラムの書き換えを行わず、メインブートプログラムのみを書き換えることが可能だからである。
なお、フラッシュＲＯＭ１２に代えて、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）、ＥＰＲＯＭ（Erasable Programmable Read Only Memory）等の一括消去型の記憶媒体を用いる場合、メインブートプログラムを書き換える際に、ブート制御プログラムおよび圧縮プログラムを一時的にＲＡＭ１３に退避させた後で上記記憶媒体を一括消去し、ブート制御プログラムおよび圧縮プログラムとともに新しいメインブートプログラムを書き込めばよい。
【００２０】
本発明は、サーバ装置、パーソナルコンピュータ、ＰＤＡ（Personal Digital Assistant）を含めた全てのコンピュータシステムをはじめ、プログラムを実行するＣＰＵ、ＭＰＵ、マイコン等を備えた全ての電子機器（特定の機能・用途に特化された機器を含む）に対して適用可能であり、さらに、ＣＰＵ、ＭＰＵ、マイコン等によるプログラム制御を行う制御部（組み込み用制御ボード等を含む）を備えた産業機械や各種民生機器を制御する機器および設備において、当該制御部に適用することも可能である。
【図面の簡単な説明】
【００２１】
【図１】コンピュータシステムの構成を示す機能ブロック図である。
【図２】フラッシュＲＯＭの記憶領域の構成を模式的に示す図である。
【図３】コンピュータシステムの起動時の動作を示すフローチャートである。
【符号の説明】
【００２２】
１…コンピュータシステム、１１…ＣＰＵ、１２…フラッシュＲＯＭ（不揮発性記憶媒体）、１２ａ…ブート制御プログラム記憶領域、１２ｂ…圧縮プログラム記憶領域、１２ｃ…メインブートプログラム記憶領域、１３…ＲＡＭ、１３ａ…ワークエリア。
【図１】
2007128204.tif 000003
【図２】
2007128204.tif 000004
【図３】
2007128204.tif 000005