(57)【要約】【課題】メインプロセッサの起動後にサブプロセッサに任意のプログラムを実行させることが可能な情報処理装置を実現する。【解決手段】サブプロセッサとして機能する第２のプロセッサ２００は、電源投入に応答して起動され、ＲＯＭ５０に格納されたブートプログラム５０Ａを実行するとともに、メインプロセッサとして機能する第１のプロセッサ１００を起動するための処理を実行する。第１のプロセッサ１００は、その起動後に、第２のプロセッサ２００に実行させるべき新たなブートプログラム２０２ＣをＤＲＡＭ２０２にロードし、そして第２のプロセッサ２００を再起動してＤＲＡＭ２０２にロードされた新たなブートプログラム２０２Ｃを第２のプロセッサ２００に実行させる。【選択図】      図１
2006099704.tif 000002
【特許請求の範囲】
【請求項１】
電源投入に応答して起動され第１の記憶領域に格納された第１プログラムを実行するとともに、メインプロセッサを起動するための処理を実行するサブプロセッサと、
前記起動されたメインプロセッサによって制御され、前記サブプロセッサに実行させるべき第２のプログラムを第２の記憶領域にロードするロード手段と、
前記起動されたメインプロセッサによって制御され、前記サブプロセッサを再起動して前記第２の記憶領域にロードされた前記第２のプログラムを前記サブプロセッサに実行させる制御手段とを具備することを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記サブプロセッサの動作開始時に前記サブプロセッサがプログラムをロードすべきブート領域を、前記第１の記憶領域から前記第２の記憶領域に切り替える手段を含むことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記第２のプログラムは、前記情報処理装置に設けられたＩ／Ｏデバイスを制御するための命令群を含むことを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記第１の記憶領域は第１の記憶デバイスを含み、前記第２の記憶領域は第２の記憶デバイスを含むことを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記メインプロセッサを起動するための処理は、前記メインプロセッサに実行させるべきプログラムを所定の記憶領域にロードする処理を含み、
前記メインプロセッサは、その起動時に、前記所定の記憶領域にロードされたプログラムの正当性を検証する処理を実行することを特徴とする請求項１記載の情報処理装置。
【請求項６】
メインプロセッサとサブプロセッサとを含む情報処理装置の起動を制御する起動制御方法であって、
電源投入に応答してサブプロセッサを起動して第１の記憶領域に格納された第１プログラムを実行させるとともに、前記サブプロセッサに前記メインプロセッサを起動するための処理を実行させるステップと、
前記起動されたメインプロセッサに、前記サブプロセッサに実行させるべき第２のプログラムを第２の記憶領域にロードする処理を実行させるステップと、
前記起動されたメインプロセッサに、前記サブプロセッサを再起動して前記第２の記憶領域にロードされた前記第２のプログラムを前記サブプロセッサに実行させる制御処理を実行させるステップとを具備することを特徴とする起動制御方法。
【請求項７】
前記制御処理は、前記サブプロセッサの動作開始時に前記サブプロセッサがプログラムをロードすべきブート領域を、前記第１の記憶領域から前記第２の記憶領域に切り替える処理を含むことを特徴とする請求項６記載の起動制御方法。
【請求項８】
前記第２のプログラムは、前記情報処理装置に設けられたＩ／Ｏデバイスを制御するための命令群を含むことを特徴とする請求項６記載の起動制御方法。
【請求項９】
前記メインプロセッサを起動するための処理は、前記メインプロセッサに実行させるべきプログラムを所定の記憶領域にロードする処理を含み、
前記メインプロセッサの起動時に、前記メインプロセッサに、前記所定の記憶領域にロードされたプログラムの正当性を検証する処理を実行させるステップをさらに具備することを特徴とする請求項６記載の起動制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメインプロセッサとサブプロセッサとを有する情報処理装置および同装置で用いられる起動制御方法に関する。
【背景技術】
【０００２】
一般に、コンピュータのような情報処理装置においては、メインプロセッサとして機能するＣＰＵ(Central Processing Unit)に加え、起動シーケンスの制御および特定のＩ／Ｏデバイスの制御のような処理を実行するためのサブプロセッサが設けられている。このサブプロセッサは例えば１チップマイクロコンピュータ等によって実現されている。サブプロセッサは最初に起動され、このサブプロセッサによって、ＣＰＵを起動するための処理が実行される。
【０００３】
特許文献１には、ＣＰＵと、ＥＣ（Embedded Controller）とを備えたコンピュータが開示されている。このコンピュータにおいては、ＥＣがサブプロセッサとして機能する。コンピュータの起動シーケンスはＥＣによって制御される。
【特許文献１】特開２００３−２７１２５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上述のようにサブプロセッサ（ＥＣ）によってメインプロセッサ（ＣＰＵ）を起動するシステムにおいては、メインプロセッサが起動された時にはサブプロセッサは既にプログラムを実行中であり、そのサブプロセッサの動作は実行中のプログラムによって支配されている。
【０００５】
このため、もしサブプロセッサ（ＥＣ）が実行すべきプログラムが改竄されると、もはやメインプロセッサの起動後におけるシステム動作を保証することができなくなる。また、サブプロセッサ（ＥＣ）の機能拡張を行うためには、サブプロセッサが実行すべきプログラムを格納したＲＯＭのようなハードウェアを変更することが必要となる。  本発明は上述の事情を考慮してなされたものであり、メインプロセッサの起動後にサブプロセッサに任意のプログラムを実行させることが可能な情報処理装置および起動制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述の課題を解決するために、本発明の情報処理装置は、電源投入に応答して起動され第１の記憶領域に格納された第１プログラムを実行するとともに、メインプロセッサを起動するための処理を実行するサブプロセッサと、前記起動されたメインプロセッサによって制御され、前記サブプロセッサに実行させるべき第２のプログラムを第２の記憶領域にロードするロード手段と、前記起動されたメインプロセッサによって制御され、前記サブプロセッサを再起動して前記第２の記憶領域にロードされた前記第２のプログラムを前記サブプロセッサに実行させる制御手段とを具備することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、メインプロセッサの起動後にサブプロセッサに任意のプログラムを実行させることが可能となる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照して本発明の実施形態を説明する。
【０００９】
図１には、本発明の一実施形態に係わる情報処理装置の構成例が示されている。この情報処理装置はマイクロプロセッサを利用したコンピュータであり、例えば、パーソナルコンピュータ、サーバコンピュータ、あるいは各種電子機器のための組み込みシステム等として実現されている。
【００１０】
この情報処理装置は、第１のプロセッサ１００、第１のメモリコントローラ（ＭＣ）１０１、ＤＲＡＭ１０２、Ｉ／Ｏコントローラ１０３、第１のコンフィグレーションユニット（ＣＦＧ）１０４、第２のプロセッサ２００、第２のメモリコントローラ（ＭＣ）２０１、ＤＲＡＭ２０２、Ｉ／Ｏコントローラ２０３、第２のコンフィグレーションユニット（ＣＦＧ）２０４、ＲＯＭ５０、Ｉ／Ｏデバイス７０およびコントロール／ステータスレジスタ（Ｃ／Ｓ）８０などから構成されている。
【００１１】
第２のプロセッサ２００は、バス２を介して各コンポーネントを制御する。このプロセッサ２００は、起動シーケンスの制御、および例えば各種操作ボタン、入力装置のような特定のＩ／Ｏデバイスの制御等を実行するためのサブプロセッサとして機能する。第２のプロセッサ２００は、マイクロコンピュータによって実現されている。この第２のプロセッサ２００は、ＲＯＭ５０およびＤＲＡＭ２０２のどちらからでも起動することができる。ＲＯＭ５０およびＤＲＡＭ２０２のどちらをブートデバイスとして使用するかは、第２のコンフィグレーションユニット（ＣＦＧ）２０４によって制御される。通常は、第２のプロセッサ２００は、ＲＯＭ５０をブートデバイスとして使用する。例えば本情報処理装置に設けられた電源ボタンがオンされた時、第２のプロセッサ２００はＲＯＭ５０から起動され、ＲＯＭ５０に格納されたブートプログラムを実行する。
【００１２】
第２のメモリコントローラ（ＭＣ）２０１には、ＤＲＡＭ２０２が接続されている。ＭＣ２０１は、第１のプロセッサ１００または第２のプロセッサ２００からのリード／ライト要求に応じて、ＤＲＡＭ２０２を制御する。
【００１３】
Ｉ／Ｏコントローラ２０３には、ＲＯＭ５０が接続されている。ＲＯＭ５０には、ブートプログラム５０Ａが格納されている。このブートプログラム５０Ａは第２のプロセッサ２００の動作開始時に第２のプロセッサ２００によって最初に実行されるプログラムである。
【００１４】
第２のコンフィグレーションユニット（ＣＦＧ）２０４は、第２のプロセッサ２００、ＭＣ２０１およびＩ／Ｏコントローラ２０３の動作設定／起動制御を行うハードウェアである。この第２のコンフィグレーションユニット（ＣＦＧ）２０４は、ＭＣ２０１またはＩ／Ｏコントローラ２０３を制御してＲＯＭ５０およびＤＲＡＭ２０２のいずれか一方を第２のプロセッサ２００のためのブートデバイスとして選択する機能を有する。すなわち、ＣＦＧ２０４によってＩ／Ｏコントローラ２０３が選択されている場合、第２のプロセッサ２００はＲＯＭ５０に格納されたブートプログラムを実行し、またＣＦＧ２０４によってＭＣ２０１が選択されている場合、第２のプロセッサ２００は、ＤＲＡＭ２０２に格納されたブートプログラムを実行する。
【００１５】
第２のプロセッサ２００が起動された後、第２のプロセッサ２００は、第１のプロセッサ１００を起動するための処理を実行する。この場合、第２のプロセッサ２００は、第１のプロセッサ１００が実行すべきブートプログラムをＤＲＡＭ２０２上に用意すると共に、Ｃ／Ｓ８０を介して第１のコンフィグレーションユニット（ＣＦＧ）１０４を操作する。第１のプロセッサ１００は本情報処理装置のメインプロセッサとして機能し、オペレーティングシステムおよび各種アプリケーションプログラムを実行する。
【００１６】
この第１のプロセッサ１００はバス１に接続された各コンポーネント、およびバス２に接続された各コンポーネントを制御する。
【００１７】
第１のプロセッサ１００は、第２のプロセッサ２００によってＤＲＡＭ２０２上に用意されたブートプログラムを実行する。第１のプロセッサ１００はプログラムの正当性を検証するためのセキュリティ機能を有しており、第２のプロセッサ２００によってＤＲＡＭ２０２上に用意されたブートプログラムの正当性を検証する処理を実行する。
【００１８】
ＭＣ１０１には、ＤＲＡＭ１０２が接続されている。ＭＣ１０１は、第１の
プロセッサ１００からのリード／ライト要求に応じて、ＤＲＡＭ１０２を制御する。Ｉ／Ｏコントローラ１０３はバス１とバス２との間を相互に接続する。
【００１９】
第１のコンフィグレーションユニット（ＣＦＧ）１０４は、プロセッサ１００、ＭＣ１０１およびＩ／Ｏコントローラ１０３の動作設定／起動制御を行う。次に、図２乃至図６を参照して、本情報処理装置を起動するための起動シーケンスについて説明する。起動シーケンスにおいては、以下の処理が実行される。
【００２０】
（１）第２のプロセッサ２００の起動
（２）第２のプロセッサ２００によって、第１のプロセッサ１００を起動
（３）第１のプロセッサ１００によって、第２のプロセッサ２００を再起動
これら処理が実行された後、本情報処理装置は通常動作状態となる。
【００２１】
図２は、第２のプロセッサ２００の起動処理の手順を示している。
【００２２】
本情報処理装置がパワーオンされた時、バス２、第２のプロセッサ２００、Ｉ／Ｏコントローラ２０３、ＲＯＭ５０、ＣＦＧ１０４およびＣＦＧ２０４は自動的に動作可能状態に設定される。このとき、ＣＦＧ１０４は、第１のプロセッサ１００、ＭＣ１０１、Ｉ／Ｏコントローラ１０３を停止状態に設定する。ＣＦＧ２０４は、ＲＯＭ５０が第２のプロセッサ２００のブートデバイスとして使用されるように、Ｉ／Ｏコントローラ２０３を自動的に選択する。
【００２３】
プロセッサ２００は本情報処理装置のパワーオンに応答して起動され、ＲＯＭ５０に格納されているブートプログラム５０Ａを実行する。第２のプロセッサ２００はブートプログラム５０Ａを実行することによって、ＭＣ２０１、ＤＲＡＭ２０２およびＩ／Ｏデバイス７０を動作可能状態に設定する。
【００２４】
図３および図４は、第１のプロセッサ１００を起動するための処理を示している。
【００２５】
第２のプロセッサ２００は、ブートプログラム５０Ａを実行することによって、第１のプロセッサ１００の起動制御を実行するためのプログラム２０２ＡをハードディスクのようなＩ／Ｏデバイス７０からＤＲＡＭ２０２にロードし、そのロードしたプログラム２０２Ａを実行する。この後、第２のプロセッサ２００は、プログラム２０２Ａを実行することによって、図４に示すように、第１のプロセッサ１００に実行させるべきブートプログラム２０２ＢをＩ／Ｏデバイス７０からＤＲＡＭ２０２にロードする。そして、第２のプロセッサ２００は、プログラム２０２Ａを実行することによって、Ｃ／Ｓ８０を動作可能状態に設定する。第２のプロセッサ２００は、Ｃ／Ｓ８０を介してＣＦＧ１０４を操作することで、バス１、第１のプロセッサ１００およびＩ／Ｏコントローラ１０３を動作可能状態に設定する。この場合、第２のプロセッサ２００は、第１のプロセッサ１００がＤＲＡＭ２０２上のブートプログラム２０２Ｂを実行するように、第１のプロセッサ１００が最初に実行すべきプログラムの格納位置を示す情報をＣＦＧ１０４によりセットする。この後、第２のプロセッサ２００は、ＣＦＧ１０４を操作して第１のプロセッサ１００のリセットを解除する。これにより、第１のプロセッサ１００が起動され、第１のプロセッサ１００はＤＲＡＭ２０２に格納されたブートプログラム２０２Ｂの実行を開始する。この場合、第１のプロセッサ１００は、ＤＲＡＭ２０２に格納されたブートプログラム２０２Ｂの正当性を検証する処理を実行する。ブートプログラム２０２Ｂが正当なものでないことが検出された場合、起動シーケンスはその時点で直ちに終了される。
【００２６】
図５および図６は第２のプロセッサ１００を再起動するための処理を示している。第１のプロセッサ１００は、ブートプログラム２０２Ｂを実行することにより、ＭＣ１０１とＤＲＡＭ１０２を動作可能状態に設定する。この後、第１のプロセッサ１００は、ブートプログラム２０２Ｂを実行することにより、第２のプロセッサ１００を再起動する処理を実行するためのプログラム１０２Ａを、Ｉ／Ｏデバイス７０からＤＲＡＭ１０２にロードする。そして、第１のプロセッサ１００は、プログラム１０２Ａを実行することによって、Ｉ／Ｏコントローラ１０３を介してＣＦＧ２０４を操作して第２のプロセッサ２００の動作を停止させる。次いで、第１のプロセッサ１００は、プログラム１０２Ａを実行することにより、図６に示すように、第２のプロセッサ２００に実行させるべき新たなブートプログラム２０２ＣをＩ／Ｏデバイス７０からＤＲＡＭ２０２にロードする。第１のプロセッサ１００は、ＣＦＧ２０４を操作して第２のプロセッサ２００のブートデバイスをＲＯＭ５０からＤＲＡＭ２０２に切り替える。この後、第１のプロセッサ１００は、ＣＦＧ２０４を操作して第２のプロセッサ２００のリセットを解除する。これにより、第２のプロセッサ２００は再起動され、第２のプロセッサ２００はＤＲＡＭ２０２に格納されているブートプログラム２０２Ｃを実行する。このブートプログラム２０２Ｃは本情報処理装置に設けられた例えばＩ／Ｏデバイス等を制御するための命令群を含んでいる。
【００２７】
第１のプロセッサ１００は、この後、Ｉ／Ｏデバイス７０から任意のプログラムをロードしてその実行を開始する。これにより、本情報処理装置は通常動作状態に設定される。この通常動作状態の期間中、第２のプロセッサ２００は、Ｉ／Ｏデバイスの制御等の処理を正常に実行することができる。
【００２８】
次に、図７のフローチャートを参照して、第２のプロセッサ２００によって起動された第１のプロセッサ１００によって実行される処理の手順を説明する。
【００２９】
第１のプロセッサ１００は、第２のプロセッサ１００を再起動する処理を実行するためのプログラム１０２Ａ（プロセッサ（２）再起動プログラム）をＩ／Ｏデバイス７０からロードする（ステップＳ１０１）。第１のプロセッサ１００は、Ｉ／Ｏデバイス７０からロードしたプログラム１０２ＡをＩ／Ｏコントローラ１０３を介してＤＲＡＭ１０２に格納し、そしてそのプログラム１０２Ａを実行する（ステップＳ１０２）。プロセッサ１００は、ＣＦＧ２０４を操作して、第２のプロセッサ２００を停止する（ステップＳ１０３）。ステップＳ１０３においては、第１プロセッサ１００は、ＣＦＧ２０４を操作することによって、例えば第２のプロセッサ２００をリセットする。
【００３０】
第１のプロセッサ１００は、第２のプロセッサに実行させるべき新たなブートプログラム２０２ＣをＩ／Ｏデバイス７０からロードする（ステップＳ１０４）。ステップＳ１０４においては、第１のプロセッサ１００は、Ｉ／Ｏデバイス７０からロードしたブートプログラム２０２ＣをＤＲＡＭ２０２に格納する。
【００３１】
第１のプロセッサ１００は、第２のプロセッサ２００がＤＲＡＭ２０２からブートするように、ＣＦＧ２０４を操作する（ステップＳ１０５）。ステップＳ１０５においては、ＣＦＧ２０４は、ＭＣ２０１を選択し、これによってブートデバイスはＲＯＭ５０からＤＲＡＭ２０２に切り替えられる。
【００３２】
第１のプロセッサ１００は第２のプロセッサ２００のリセットを解除して第２のプロセッサ２００を再起動し、これによって第２のプロセッサ２００にＤＲＡＭ２０２に格納されている新しいブートプログラム２０２Ｃを実行させる。
【００３３】
以上説明したように、本実施形態においては、第１のプロセッサ１００が第２のプロセッサ２００によって起動された後に、第１のプロセッサ１００の制御の下で、第２のプロセッサ２００を再起動して新しいプログラムを第２のプロセッサ２００に実行させる処理が自動的に実行される。これにより、第２のプロセッサ２００に任意のプログラムを実行させることが可能となる。
【００３４】
したがって、第１のプロセッサ１００が起動された後は、第２のプロセッサ２００の動作は第１のプロセッサ１００によってロードされた新たなプログラムによって支配されることになる。よって、たとえＲＯＭ５０のブートプログラム５０Ａが改竄されても、第１のプロセッサ１００が正常に起動されれば、第２のプロセッサ２００の動作を保証することが可能となる。
【００３５】
なお、本実施形態では、ブートプログラム５０Ａおよびブートプログラム２０２ＣがＲＯＭ５０およびＤＲＡＭ２０２にそれぞれ格納されている場合を説明したが、ブートプログラム５０Ａおよびブートプログラム２０２ＣをＤＲＡＭ２０２上の異なる２つの記憶領域にそれぞれ格納してもよい。この場合、これら２つの記憶領域がそれぞれブート領域として機能する。
【００３６】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００３７】
【図１】本発明の一実施形態に係わる情報処理装置の構成例を示すブロック図。
【図２】図１の情報処理装置に設けられた第２のプロセッサ（サブプロセッサ）の起動処理の手順を示す図。
【図３】図１の情報処理装置に設けられた第１のプロセッサ（メインプロセッサ）を起動するための処理の手順の一部を示す図。
【図４】図１の情報処理装置に設けられた第１のプロセッサ（メインプロセッサ）を起動するための処理の手順の残りの部分を示す図。
【図５】図１の情報処理装置に設けられた第２のプロセッサ（サブプロセッサ）を再起動する処理の手順の一部を示す図。
【図６】図１の情報処理装置に設けられた第２のプロセッサ（サブプロセッサ）を再起動する処理の手順の残りの部分を示す図。
【図７】図１の情報処理装置に設けられた第１のプロセッサ（メインプロセッサ）によって実行される処理の手順を示すフローチャート。
【符号の説明】
【００３８】
１００…第１のプロセッサ（メインプロセッサ）、１０１，２０１…メモリコントローラ（ＭＣ）、１０２，２０２…ＤＲＡＭ、１０３…Ｉ／Ｏコントローラ、１０４，２０４…コンフィグレーションユニット（ＣＦＧ）、２００…第２のプロセッサ（サブプロセッサ）。
【図１】
2006099704.tif 000003
【図２】
2006099704.tif 000004
【図３】
2006099704.tif 000005
【図４】
2006099704.tif 000006
【図５】
2006099704.tif 000007
【図６】
2006099704.tif 000008
【図７】
2006099704.tif 000009