JP2007206885A - コンピュータシステム及びシステム起動方法 - Google Patents
コンピュータシステム及びシステム起動方法 Download PDFInfo
- Publication number
- JP2007206885A JP2007206885A JP2006023614A JP2006023614A JP2007206885A JP 2007206885 A JP2007206885 A JP 2007206885A JP 2006023614 A JP2006023614 A JP 2006023614A JP 2006023614 A JP2006023614 A JP 2006023614A JP 2007206885 A JP2007206885 A JP 2007206885A
- Authority
- JP
- Japan
- Prior art keywords
- main
- memory
- main cpu
- cpu
- boot code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
【課題】各々CPUを有するメインシステム及びサブシステムを含むコンピュータシステムにおいて、メインシステムを起動するための様々手段を容易に提供する。
【解決手段】サブCPU21は、メインCPU2の周辺デバイス(12B〜12D)を起動し(104)、メインシステム1内のメモリ11Bにアクセスする経路を確立し(105)、メインCPU(10)のブートコードを、前記コンピュータシステムに装着された可搬型メモリ24から読出し、前記確立された経路を介してメインシステム1のメモリに移動し(106)、メインCPU(10)によるブートコードの実行を許可する。
【選択図】図1
【解決手段】サブCPU21は、メインCPU2の周辺デバイス(12B〜12D)を起動し(104)、メインシステム1内のメモリ11Bにアクセスする経路を確立し(105)、メインCPU(10)のブートコードを、前記コンピュータシステムに装着された可搬型メモリ24から読出し、前記確立された経路を介してメインシステム1のメモリに移動し(106)、メインCPU(10)によるブートコードの実行を許可する。
【選択図】図1
Description
本発明はメインシステム起動用のサブシステムを持つコンピュータシステムに関する。
近年のコンピュータシステムでは、例えば起動(ブート)の際にCPUがなすべき一連の処理を記述したブートプログラムをROMに予め書き込んでおき、実際の起動時にこれを実行することにより、例えばディスク装置からオペレーティングシステムを自己のRAMに読み込み、目的のプログラム(ユーザプログラム)が実行されるシステムもある。従来、コンピュータシステムを開発する場合、このようなブートプログラムを例えばプログラマブルROMに書き込み、各種動作試験が行われる。
また近年では、システムの高速化及び多機能化を目的として、複数のCPUを具備するいわゆるマルチプロセッサー方式も一般的になっている。このようなマルチプロセッサー方式のコンピュータシステムの例が、下記特許文献1に開示されている。この文献では、所定のCPUがROMに格納されたデータを使用して起動する。更に所定のCPUは他のCPUを起動するためのデータをROMもしくはその他の記憶装置から読み出して共通メモリ上に書き込こんだ上で、前記他のCPUに起動信号を送る。所定のCPU以外のCPUはこの起動信号を受けて、共通メモリ上に書き込まれたデータを使用して起動を行う。
特開平4−177452号公報
コンピュータシステムの開発では、ブートコードあるいは目的のプログラムを容易に変更できることが望まれる。上記特許文献1では、ブートコードのみが所定のCPUにより共有メモリに記録され、該ブートコードが他のCPUにより実行される。一般にコンピュータシステムは、CPU及びROMの他に、RAM、電源部及びクロック発生部のような複数の周辺デバイスを含んでいる。システムの設計変更あるいは様々なタイプのコンピュータシステムに対応するためには、上記周辺デバイスの各種設定(パラメータ)を容易に変更できることが望まれる。
また、コンピュータシステムを開発する場合、上記したようなブートコード及び/または目的のユーザプログラムを変更する場合、例えばプログラマブルROMの内容を変更する必要がある。この変更は、ROMライターのような専用装置を使用してROMの内容を変更し、ICソケットに装着されたROMを専用の器具を用いて交換する必要がある。
本発明は、各々CPUを有するメインシステム及びサブシステムを含むコンピュータシステムにおいて、メインシステムを起動するための様々手段を容易に提供することを目的とする。
本発明の一実施例に係るシステム起動方法は、メインCPUを有するメインシステムと、該メインシステムの起動を制御しサブCPUを有するサブシステム2とを含むコンピュータシステムにおける、前記メインシステムを起動する方法であって、前記サブCPUは、前記メインCPUの周辺デバイスを起動し、前記メインシステム内のメモリにアクセスする経路を確立し、前記メインCPUのブートコードを、前記コンピュータシステムに装着された可搬型メモリから読出し、前記確立された経路を介して前記メインシステムのメモリに移動し、前記メインCPUによるブートコードの実行を許可する。
メインシステム及びサブシステムを含むコンピュータシステムにおいて、メインシステムを起動するための様々手段が容易に提供される。
以下、図面を参照して本発明の実施形態を説明する。
図1は本発明の一実施形態に係るコンピュータシステム100の全体構成を示すブロック図である。コンピュータシステム100は、メインCPU10を持つコンピュータシステム(メインシステム)1と、該メインシステム1の起動(ブート)に必要な処理(後述のパワーオンリセットなど)を行うサブコンピュータシステム(サブシステム)2を含む。メインシステム1とサブシステム2は物理的には一体のハードウェアシステムである。メインシステム1とサブシステム2は、シリアルバス(I2CやSPIなど)30及びパラレルバス(PCIバスなど)31により接続されている。コンピュータシステム100は、家電製品あるいはAV機器など様々の電子機器の開発に用いることができる。
サブシステム2はメインシステム1の電源制御、リセット制御、クロック制御などを行う周辺デバイスをシリアルバス30を介して制御し、メインシステム上のメモリとサブシステム上のメモリ間のデータ転送をパラレルバス31を介して制御する。
メインシステム1は、メインCPU11に直結したメインシステムメモリ11Aと、IO系制御用の周辺デバイス12Aに直結したメインシステムメモリ11Bを持つ。メインCPU10と周辺デバイス12AはIOバス14により接続されている。メインシステムの周辺デバイス12Aは、メインシステムROM13と接続され、メインCPU10からのアクセスが可能である。メインCPU10のメモリアクセス速度の関係は「メインシステムメモリ11A>メインシステムメモリ11B>メインシステムROM13」となっている。周辺デバイス12B、12C、12Dはそれぞれメインシステム1の電源制御、クロック制御、リセット制御を行う機能を持つ。各周辺デバイス12A〜12D及びメインCPU10は、サブシステム2のサブCPU21により制御されるシリアルバスインタフェースをそれぞれ持つ。周辺デバイス12Aは、メインCPU10とサブCPU21間の通信に利用されるMail Box15を持つ。
サブシステム2は、サブCPU21に直結したサブシステムメモリ22、サブシステムROM25、更にサブシステム本体から着脱可能なサブシステムRAM(メモリカード)24を持つ。サブシステムRAMはカードスロット24aによりサブシステム2に装着すなわち接続される。またサブシステムRAM24はPC(personal computer)などでも利用可能なファイルシステムを持ち、本システム100で使用するためのユーザプログラム、ブートコードなどのプログラムを、PCを利用して保存することができる。サブシステム2は、シリアルバス31のインターフェースコントローラ及びパラレルバス32のインターフェースコントローラ(共に図示されず)を、例えばサブCPU21内に有している。
上記システムの構成を利用して以下に述べる機能や動作を実現することが可能となる。
(1)システム全体の起動(ブート)方法及びブートコード配置
このシステム100全体では、システム各部を起動する手順のなかで、メインCPU10を起動するためのプログラム(ブートコードと呼ぶ)を配置する方法として以下の方法を採用することが可能である。尚、サブシステム2のサブCPU21の起動は、サブシステムROM23に書き込まれたブートコードをサブCPU21がフェッチすることで実現する。以下に示すサブCPU21の起動方法において、サブCPUにより実行される処理は、例えばプログラムとしてサブシステムROM23に格納されている。
このシステム100全体では、システム各部を起動する手順のなかで、メインCPU10を起動するためのプログラム(ブートコードと呼ぶ)を配置する方法として以下の方法を採用することが可能である。尚、サブシステム2のサブCPU21の起動は、サブシステムROM23に書き込まれたブートコードをサブCPU21がフェッチすることで実現する。以下に示すサブCPU21の起動方法において、サブCPUにより実行される処理は、例えばプログラムとしてサブシステムROM23に格納されている。
(1−1)サブシステムRAMに保存したブートコードによる起動(サブシステム主導)
先ず、メインCPUがサブシステム主導で、サブシステム上のサブシステムRAM24に保存されたブートコードにより起動する方法について述べる。図2はこのメインCPU起動方法を示すフローチャート(メインCPUの起動1)である。
先ず、メインCPUがサブシステム主導で、サブシステム上のサブシステムRAM24に保存されたブートコードにより起動する方法について述べる。図2はこのメインCPU起動方法を示すフローチャート(メインCPUの起動1)である。
サブシステムRAM24には予めメインCPUのブートコード情報テーブルが保存される(ブロック101)。ブートコード情報テーブルにはブートコード本体の他に、ブートコードの例えばサイズ等の属性情報と、ブートコードをメインシステム上のどこに配置するかというアドレス情報も記録されている。
図3はブートコード情報テーブル40の一例を示す。図3の例では、ブートコード情報テーブル40は4つの起動用プログラム41A〜41D、及び各プログラムに関する関連情報42A〜42Dを含む。これらプログラム41A〜41Dは全てブートコードであっても良いし、1つのブートプログラムとOSあるいはアプリケーションプログラム等のプログラムであっても良い。ここでは全てブートコードであるとする。例えば関連情報42Aは、ファイル名が「PROGA.BIN]のブートコードの転送元ファイルアドレスが「0x00010000]、転送先ファイルアドレスが「0x40000000」であることを示す。転送元アドレスはサブシステムRAM24のアドレスであって、オフセット値で示され、転送先アドレスはメインシステムメモリ11Bのアドレスを示す。
サブシステム2は、例えばその電源が投入されると起動し(ブロック102)、サブシステムRAM24に記録されたブートコード情報テーブル40を読み、そのテーブル40に従い、サブシステムRAMに格納されたブートコードをメインシステムメモリに移動する(ブロック103)。ここでは図3のように、サブシステムRAM24に保存されたブートコード41A〜41Dがメインシステムメモリ11Bに配置されるようにアドレス情報が保存されているものとする。
サブCPU21はメインシステム1のメインシステムメモリ11Bにブートコードを配置するために、メインシステム1のメインCPU10以外のハードウェア(電源投入(周辺デバイス12B)、クロック起動(周辺デバイス12C)、リセット解除(周辺デバイス12C)等)を起動する(ブロック104)。尚、この動作は後述の項目(3)にて詳細に説明される。
これらハードウェアの起動後、サブCPU21はメインシステムメモリ11Bに接続された周辺デバイス12Aを初期設定する。すなわちサブCPU21は、サブCPU21と周辺デバイス12A間のパラレルバス(PCIバス)の開通させ、メインシステムメモリ11Bまでのアクセス経路を確立する(ブロック105)。サブCPU21はパラレルバス31と周辺デバイス12Aを介したメインシステムメモリ11Bまでのアクセス経路が確立したところで、サブシステムRAM24に保存されたブートコードをメインシステムメモリ11Bに転送する(ブロック106)。このときサブCPU21はサブシステムメモリ22をブートコードの一時バッファとして利用することも可能である。
メインシステムメモリ11Bに対するブートコードの転送が完了したところで、サブCPU21はメインCPU10によるブートコードフェッチを許可する(許可する方法については、項目(4)で後述する)。これにより、メインCPU10は起動し、メインシステムメモリ11Bに配置されたブートコードのフェッチを開始する(ブロック107)。
本実施例(1−1)によれば、メインシステムROM13にメインCPU用のプログラムを全く保存する必要がなく、かつサブシステムRAM24を利用し、例えばPCを用いてプログラムを容易に更新可能なため、ブートコードの開発フェーズ(開発の初期段階)に有効である。同様にサブCPU主導で、周辺デバイス12Aのパラレルバス初期化、メインシステムメモリ11Bの初期化を実施するため、これら初期化プログラムの開発フェーズに有効である。またシステムブート後にアプリケーションプログラムなどのユーザプログラムを、サブシステムRAM24からメインシステム1に転送して実行するという開発フェーズに有効である。
(1−2) サブシステムRAMに保存したブートコードによる起動(メインシステム主導)
次に、メインシステム1が主導でメインCPU10を起動する場合について述べる。図4はメインシステム主導でメインCPUを起動する方法を示すフローチャート(メインCPUの起動2)である。
次に、メインシステム1が主導でメインCPU10を起動する場合について述べる。図4はメインシステム主導でメインCPUを起動する方法を示すフローチャート(メインCPUの起動2)である。
サブシステムRAM24には1−1同様のブートコード情報テーブル40が予め保存される(ブロック201)。サブシステムが起動されると(ブロック202)、サブCPU21はサブシステムRAM24に記録されたブートコード情報テーブル40をサブシステムメモリ22に転送する(ブロック203)。続いてサブCPU21はメインシステム1のハードウェアを前述したように起動し(ブロック204)、メインCPU10によるブートコードフェッチを許可する(ブロック205)。
メインCPU10はフェッチ許可に応答して、先ずメインシステムROM13に保存されたデバイス初期化プログラム及びロードプログラムをフェッチする(ブロック206)。そしてメインCPU10は、デバイス初期化プログラムに従って、周辺デバイス12Aの初期設定を行い、周辺デバイス12AとサブCPU間のパラレルバス(PCIバス)を開通させ、周辺デバイス12Aとメインシステムメモリ11B間の経路を確立する。これでパラレルバス31を経由してメインCPU10がサブシステムメモリ22にアクセスする経路が確立される(ブロック207)。
ロードプログラムによりメインCPU10は、サブシステムメモリ22に配置されたブートコード情報テーブル40を参照して、そのブートコードを対応するアドレスの領域に転送し、メインシステムメモリ11Bにブートコードを再配置する(ブロック208)。配置完了後、ロードプログラムはメインシステムメモリ11Bに配置されたブートコードへのジャンプをメインCPU10に命令し、メインCPU10は再起動する(ブロック209)。
[効果]
本実施例(1−2)によれば、後述の(1−3)の手法に最終的に移行する前段階として有効である。すなわち、メインCPU10がメインシステムROM13に格納されているデバイス初期化プログラムやブートコードのロードプログラムを実行し、最終的にブートコードが起動されることを確認するのに有効である。またシステムブート後にアプリケーションプログラムなどのユーザプログラムを、サブシステムRAM24からメインシステムRAMに移動及び再配置して実行するという開発フェーズに有効である。
本実施例(1−2)によれば、後述の(1−3)の手法に最終的に移行する前段階として有効である。すなわち、メインCPU10がメインシステムROM13に格納されているデバイス初期化プログラムやブートコードのロードプログラムを実行し、最終的にブートコードが起動されることを確認するのに有効である。またシステムブート後にアプリケーションプログラムなどのユーザプログラムを、サブシステムRAM24からメインシステムRAMに移動及び再配置して実行するという開発フェーズに有効である。
メインCPU10がメインシステムROM13のロードプログラム及びデバイス初期化プログラムをフェッチし実行する方法は2通りある。
(1−2−1)1つ目は、デバイス初期化プログラム及びロードプログラムを全てメインシステムROM13から読み込む方法である。一般的にROMアクセスは低速なので、この方法はプログラム実行速度が比較的遅い。
(1−2−2)2つ目は、ロードプログラム及びデバイス初期化プログラムのうち、主にロードプログラムをメインシステムROM13からメインシステムメモリ11Bに再配置して実行する方法である。メインCPU10は、フェッチ許可された後、メインシステムROM13に格納されたデバイス初期化プログラムを実行し、周辺デバイス12Aとメインシステムメモリ11B間の経路を確立する。
その後、メインCPU10はロードプログラムをメインシステムROM13からメインシステムメモリ11Bに再配置し、メインシステムメモリ11B上のロードプログラムに命令ジャンプして、ロードプログラムを実行する。この方法は、メインシステムROM13へアクセスして実行する場合に比べ、高速にロードプログラムを実行することが可能になる。
(1−3)メインシステムROM13に保存したブートコードによる起動
図5はメインシステムROM13に保存したブートコードにより、メインCPUを起動する方法を示すフローチャート(メインCPUの起動3)である。
図5はメインシステムROM13に保存したブートコードにより、メインCPUを起動する方法を示すフローチャート(メインCPUの起動3)である。
この場合は1−1、1−2のようにサブシステムとメインシステム間でブートコードの移動は行わない。メインCPU10のブートコードは予めメインシステムROM13に保存される(ブロック301)。
システム起動手順は次のようになる。サブシステム2が起動後、サブCPU21はメインシステム1のハードウェアを前述したように起動し、次にサブCPU21はメインCPU10のフェッチ許可を実施する(ブロック302)。メインCPU10はメインシステムROM13より命令をフェッチして起動(ブート)する(ブロック303)。
この場合、先に述べたようにサブシステム2とメインシステム1間でブートコードの移動がないために、1−2のようなロードプログラム及びデバイス初期化プログラムを、ブートコード起動前に実行する必要がない。ただしブートコード実行速度を高速化するために、1−2−2に示した方法を合せて使用した上で、ブートコードをメインシステムメモリ11Bに再配置して起動させてもよい。その場合には、デバイス初期化プログラムもメインシステムROM13に保存し、メインCPUが実行してもよい。
[効果]
本実施例(1−3)で示した方法は、メインCPU10が起動するためのブートコードあるいはアプリケーションプログラムの安定動作が確認された後すなわち開発完了後の起動方法として有効である。
本実施例(1−3)で示した方法は、メインCPU10が起動するためのブートコードあるいはアプリケーションプログラムの安定動作が確認された後すなわち開発完了後の起動方法として有効である。
(2)システム起動後のユーザプログラムのメインシステムメモリ11Aへの配置
1−1の方法、1−2の方法、又は1−3と1−2−2の方法を組み合わせた方法にて、ブートコードをメインシステムメモリ11Bに配置し(1−1、1−2ならば、サブシステムRAM24からメモリ11Bに、1−3ならばメインシステムROM13からメモリ11Bに配置し)、起動した場合、更にブートコードにより、メインシステムメモリ11Bに配置されたアプリケーションプログラムなどのユーザプログラムを、メインシステムメモリAに転送して再配置することが可能である。この場合ブートコードには、メインCPU10がメインシステムメモリ11A上のプログラムにジャンプするための命令が含まれる。このようにして、サブシステムRAM24にユーザプログラムを格納しておき、該ユーザプログラムをメインシステム1にて実行可能である。
1−1の方法、1−2の方法、又は1−3と1−2−2の方法を組み合わせた方法にて、ブートコードをメインシステムメモリ11Bに配置し(1−1、1−2ならば、サブシステムRAM24からメモリ11Bに、1−3ならばメインシステムROM13からメモリ11Bに配置し)、起動した場合、更にブートコードにより、メインシステムメモリ11Bに配置されたアプリケーションプログラムなどのユーザプログラムを、メインシステムメモリAに転送して再配置することが可能である。この場合ブートコードには、メインCPU10がメインシステムメモリ11A上のプログラムにジャンプするための命令が含まれる。このようにして、サブシステムRAM24にユーザプログラムを格納しておき、該ユーザプログラムをメインシステム1にて実行可能である。
[効果]
本実施例(2)によれば、システム起動後のユーザプログラムのメインシステムメモリ11Aへの配置を実行することで、メモリアクセスの速度が速くなるため、ユーザプログラムは高速に実行される。
本実施例(2)によれば、システム起動後のユーザプログラムのメインシステムメモリ11Aへの配置を実行することで、メモリアクセスの速度が速くなるため、ユーザプログラムは高速に実行される。
(3)メインシステム1のハードウェア起動(パワーオンリセット制御の実行)
メインCPUを持つメインシステム1は、パワーオンリセット制御として、
a.電源の投入(メインCPU、周辺デバイスなど)
b.リセット信号の解除(各周辺デバイスには電源投入時、リセット信号が供給されている)
c.クロックデバイスの初期化によるクロックの発振
d.メインCPU10と周辺デバイス間(CPU10と周辺デバイス12Aとメインシステムメモリ11Aなど)の高速通信インタフェースの初期化
e.物理層・データリンク層・ロジカル層など各層の初期化(ハードウエア的に層(layer)がある)
e.データリンク層キャリブレーションによる高速データ通信の確立
f.メインCPU10の初期化(初期化データの書込み)
等の処理が必要である。これらはサブシステムにより制御され、その結果メインCPU10は起動のためのブートコードの読み込みを周辺デバイスより行い起動可能となる。またこれらのパワーオンリセット制御は、システムの初期電源投入時のみならず、動作中のシステムを停止制御及びリセット制御をするときも実行可能である。
メインCPUを持つメインシステム1は、パワーオンリセット制御として、
a.電源の投入(メインCPU、周辺デバイスなど)
b.リセット信号の解除(各周辺デバイスには電源投入時、リセット信号が供給されている)
c.クロックデバイスの初期化によるクロックの発振
d.メインCPU10と周辺デバイス間(CPU10と周辺デバイス12Aとメインシステムメモリ11Aなど)の高速通信インタフェースの初期化
e.物理層・データリンク層・ロジカル層など各層の初期化(ハードウエア的に層(layer)がある)
e.データリンク層キャリブレーションによる高速データ通信の確立
f.メインCPU10の初期化(初期化データの書込み)
等の処理が必要である。これらはサブシステムにより制御され、その結果メインCPU10は起動のためのブートコードの読み込みを周辺デバイスより行い起動可能となる。またこれらのパワーオンリセット制御は、システムの初期電源投入時のみならず、動作中のシステムを停止制御及びリセット制御をするときも実行可能である。
(3−1)サブシステムによるパワーオンリセット制御プログラム
サブシステム2が上記メインシステム1のハードウェアを起動をするために実行するパワーオンリセット制御プログラム(以下POR制御プログラム)について述べる。これらのパワーオンリセット制御は、前述のブロック104、204等の処理に対応する。
サブシステム2が上記メインシステム1のハードウェアを起動をするために実行するパワーオンリセット制御プログラム(以下POR制御プログラム)について述べる。これらのパワーオンリセット制御は、前述のブロック104、204等の処理に対応する。
メインシステム1のハードウェア起動には、上記したように大量のステップ数におよぶデバイス制御をしなくてはならない。デバイス制御は物理的にはI2CやSPIなどのシリアルバスアクセスにて行われる。
メインシステム1の開発段階においては、ハードウエアの仕様変更による制御パラメータの変更が発生したり、システム全体の動作仕様の変更(例えばメインCPU10の動作周波数、メインシステムメモリ11Aのメモリサイズ、また電源制御における電圧値などの変更)が発生することもある。このような設定パラメータの変更に柔軟に対応することを可能とするために、本POR制御プログラムでは、各デバイスへの設定情報は、プログラム本体とは別に用意したファイルに記述したスクリプトプログラムによって取得される。
POR制御プログラムは、サブCPU起動後、サブシステムROM23またはサブシステムRAM24からサブシステムメモリ22に転送及び配置され、サブCPU21が実行する。サブCPU21は、POR制御プログラムに従って、ファイルから読み出したスクリプトプログラムに基づき、シリアルバスインタフェースを使ったアクセスにより、メインシステム上のメインCPU10、周辺デバイス12A〜12Dのパラメータ設定(レジスタライト)、状態の取得(レジスタリード)を実行する。
更にPOR制御中に、メインシステムのメインCPU10が固有の情報(CPU単体毎に異なる情報)を持つ場合において、その固有の情報をPOR制御パラメータとして利用することも可能である。たとえばメインCPUの適切な電圧設定値にばらつきなどがあるような時に、その設定値情報が個別にメインCPUに記録されているならば、その情報をサブシステムにより読み込み、POR制御プログラムにおいて、設定値情報に基づいてメインCPUの電圧設定値を、周辺デバイス12Dを用いて適切な電圧に設定することも可能となる。
メインシステム1のメインCPU10及び各周辺デバイスは、ファイルに記述された一連のスクリプトプログラムにより制御されることで、上述したパワーオンリセット制御が実現する。
スクリプトプログラムを含むファイルは、サブシステムRAM24に保存され、サブシステムROM23のPOR制御プログラムに従って読み出される。更に最終的にはシステム全体の開発が完了し、メインシステム1の各デバイスへのパラメータ設定値などが確定した場合には、サブシステムRAM24のファイルからスクリプトプログラムを読み込むのではなく、POR制御プログラムにパラメータ確定値などを取り込むことにより、POR制御シーケンスが実現される。
(4)メインCPUとサブCPU間の通信方法
上記パワーオンリセット制御時、またはメインシステム起動後に、メインCPU10がサブシステムへ、システムの状態やイベント通知をするために、周辺デバイス12Aが利用される。この周辺デバイス12Aを用いた情報通信に使用されるデータ格納部をMailBoxと呼ぶ。MailBox15は、実際には周辺デバイス12Aに内蔵されている数Kバイト程度の書込み/読み込み可能なレジスタまたはメモリである。サブシステム2はMailBox15に記録された情報から、メインシステム1の状態を認識可能である。他方でサブシステム側の状態やイベント通知も、同様にMailBoxを利用してメインCPU10に通知可能である。
上記パワーオンリセット制御時、またはメインシステム起動後に、メインCPU10がサブシステムへ、システムの状態やイベント通知をするために、周辺デバイス12Aが利用される。この周辺デバイス12Aを用いた情報通信に使用されるデータ格納部をMailBoxと呼ぶ。MailBox15は、実際には周辺デバイス12Aに内蔵されている数Kバイト程度の書込み/読み込み可能なレジスタまたはメモリである。サブシステム2はMailBox15に記録された情報から、メインシステム1の状態を認識可能である。他方でサブシステム側の状態やイベント通知も、同様にMailBoxを利用してメインCPU10に通知可能である。
(4−1)メインCPU起動許可イベント
(3)に示したパワーオンリセット制御を実行中に、メインCPU10は起動可能な状態になり、メインシステムROM13またはメインシステムメモリ11Bに命令フェッチを開始できる。しかしながら、サブシステムによるパワーオンリセット制御シーケンスの完了までは、メインCPU側のブートコードまたはプログラムの実行を抑制しておきたい場合がある(例えば、メインCPU10とメインシステムメモリ11A間のメモリインタフェースの初期化が完了していない時)。このような場合、MailBox15を用いて通信が行われる。サブCPU21はフェッチを許可する場合、メインCPU10のフェッチ許可を意味するコードをMailBox15に書き込む。メインCPU10はMailBoxへそのコードが書き込まれるまで、ループ待ちをして次の処理には進まない。
(3)に示したパワーオンリセット制御を実行中に、メインCPU10は起動可能な状態になり、メインシステムROM13またはメインシステムメモリ11Bに命令フェッチを開始できる。しかしながら、サブシステムによるパワーオンリセット制御シーケンスの完了までは、メインCPU側のブートコードまたはプログラムの実行を抑制しておきたい場合がある(例えば、メインCPU10とメインシステムメモリ11A間のメモリインタフェースの初期化が完了していない時)。このような場合、MailBox15を用いて通信が行われる。サブCPU21はフェッチを許可する場合、メインCPU10のフェッチ許可を意味するコードをMailBox15に書き込む。メインCPU10はMailBoxへそのコードが書き込まれるまで、ループ待ちをして次の処理には進まない。
(5)システムの制御
(1)、(2)、(3)、(4)に示した機能を利用することで、図1に示すシステム100において以下のような制御を実現することが可能となる。
(1)、(2)、(3)、(4)に示した機能を利用することで、図1に示すシステム100において以下のような制御を実現することが可能となる。
(5−1)システムの起動
サブシステム2への電源投入により、サブCPU21が起動し、サブシステムはPOR制御プログラムを実行可能な状態となる。メインシステム起動イベントの発生(例えばリモコンによる電源ONなど、ソフトウエア及びハードウエアのどちらからでもよい)により、POR制御プログラムが起動され、(3)に示したようにメインシステム1が起動される。メインCPU10の起動方法は(1)、(4)に示した方法により実現可能である。メインシステム1は最終的に(2)で示したような手順を実行し、システム全体が起動し、目的のプログラムが動作する。
サブシステム2への電源投入により、サブCPU21が起動し、サブシステムはPOR制御プログラムを実行可能な状態となる。メインシステム起動イベントの発生(例えばリモコンによる電源ONなど、ソフトウエア及びハードウエアのどちらからでもよい)により、POR制御プログラムが起動され、(3)に示したようにメインシステム1が起動される。メインCPU10の起動方法は(1)、(4)に示した方法により実現可能である。メインシステム1は最終的に(2)で示したような手順を実行し、システム全体が起動し、目的のプログラムが動作する。
(5−2)システム停止/電源断イベント
(5−1)にて起動して動作している状態から、メインシステム停止または電源断イベント(ソフトウエア及びハードウエアのどちらでもよい)が発生すると、サブシステムはメインシステム停止を、プログラム実行中のメインCPU10に通知する必要がある。ここでは、(4)で示したMailBoxを用いて、サブCPU21はメインシステム停止をメインCPU10に通知する。尚、MailBoxによる通知以外の通知方法あるいは割り込みなども利用できる。メインCPU10から停止許可の通知をサブCPU21が受け取ると、サブCPU21はPOR制御プログラムにおいて、メインシステム電源断を行うスクリプトプログラムを実行する。
(5−1)にて起動して動作している状態から、メインシステム停止または電源断イベント(ソフトウエア及びハードウエアのどちらでもよい)が発生すると、サブシステムはメインシステム停止を、プログラム実行中のメインCPU10に通知する必要がある。ここでは、(4)で示したMailBoxを用いて、サブCPU21はメインシステム停止をメインCPU10に通知する。尚、MailBoxによる通知以外の通知方法あるいは割り込みなども利用できる。メインCPU10から停止許可の通知をサブCPU21が受け取ると、サブCPU21はPOR制御プログラムにおいて、メインシステム電源断を行うスクリプトプログラムを実行する。
(5−3)メインシステム1の停止状態からの復帰(システム再起動)
この場合、メインシステム1のみ停止状態で、サブシステム2は(5−1)の起動後の状態から、POR制御プログラム実行待ちになり、メインシステム起動イベントが発生した後は(5−1)と同じである。
この場合、メインシステム1のみ停止状態で、サブシステム2は(5−1)の起動後の状態から、POR制御プログラム実行待ちになり、メインシステム起動イベントが発生した後は(5−1)と同じである。
(5−4)システム起動状態からメインシステム1のリセット及びシステム再起動
(5−1)のようにメインシステム1が起動後、メインシステム1にリセットイベントが発生した場合である。サブCPU21はリセットイベントを検出すると、メインシステム1のリセット制御デバイス(周辺デバイス12D)を制御するスクリプトプログラムを実行する。
(5−1)のようにメインシステム1が起動後、メインシステム1にリセットイベントが発生した場合である。サブCPU21はリセットイベントを検出すると、メインシステム1のリセット制御デバイス(周辺デバイス12D)を制御するスクリプトプログラムを実行する。
以上の説明はこの発明の実施の形態であって、この発明の装置及び方法を限定するものではなく、様々な変形例を容易に実施することができる。
1…メインシステム、2…サブシステム、10…メインCPU、11A、11B…メインシステムメモリ、12A〜12D周辺デバイス、13…メインシステムROM、21…サブCPU、22…サブシステム、24…サブシステムRAM、30…シリアルバス、31…パラレルバス、40…ブートコード情報テーブル。
Claims (9)
- メインCPUを有するメインシステム1と、該メインシステムの起動を制御しサブCPUを有するサブシステム2とを含むコンピュータシステムにおける、前記メインシステムを起動する方法であって、
前記サブCPUは、
前記メインCPUの周辺デバイスを起動し、
前記メインシステム内のメモリにアクセスする経路を確立し、
前記メインCPUのブートコードを、前記コンピュータシステムに装着された可搬型メモリから読出し、前記確立された経路を介して前記メインシステムのメモリに移動し、
前記メインCPUによるブートコードの実行を許可することを特徴とするシステム起動方法。 - 前記サブCPUは、前記ブートコードと共に前記メインCPUにより実行されるユーザプログラムを前記メインシステムのメモリに転送し、
前記ブートプログラムには、前記メインCPUがメインシステムのメモリ上の前記ユーザプログラムにジャンプするための命令が含まれることを特徴とする請求項1記載の方法。 - 前記可搬型メモリは、メモリカードであることを特徴とする請求項1記載の方法。
- 前記コンピュータシステムは、前記メインCPU及びサブCPUが通信を行う際に共通に使用されるデータ格納部を具備し、前記ブートコードの実行許可を示す通知は、前記サブCPUにより前記データ格納部に書き込まれ、前記メインCPUがそれを読み出すことにより、前記メインCPUは前記ブートコードの実行許可を判断することを特徴とする請求項1記載の方法。
- メインCPUを有するメインシステムと、該メインシステムの起動を制御しサブCPUを有するサブシステムとを含むコンピュータシステムにおける、前記メインシステムを起動する方法であって、
前記サブCPUは、
(a1)可搬型メモリに格納され前記メインCPUを起動するためのブートコードを、該可搬型メモリから前記サブシステム内のメモリに転送し、
(a2)前記メインCPUの周辺デバイスを起動し、
(a3)前記メインCPUによるブートコードのフェッチを許可し、
前記メインCPUは、
(b1)前記サブシステム内のメモリにアクセスする経路を確立し、
(b2)前記ブートコードを前記サブシステム内のメモリから、前記確立された経路を介して前記メインシステム内のメモリに転送し、
(b3)前記メインシステム内のメモリに転送されたブートコードを実行することを特徴とする方法。 - 前記サブCPUは、前記ブートコードと共に前記メインCPUにより実行されるユーザプログラムを前記サブシステム内のメモリに転送し、
前記ブートプログラムには、前記メインCPUが前記サブシステム内のメモリに転送された前記ユーザプログラムにジャンプするための命令が含まれることを特徴とする請求項5記載の方法。 - 前記可搬型メモリは、メモリカードであることを特徴とする請求項5記載の方法。
- メインCPUと、メモリと、前記メインCPUにより制御される周辺デバイスを有するメインシステムと、該メインシステムの起動を制御しサブCPUを有するサブシステムとを含むコンピュータシステムであって、
前記サブシステムは、
前記メインCPUの前記周辺デバイスを起動する手段と、
前記メインシステム内の前記メモリにアクセスする経路を確立する手段と、
可搬型メモリを装着するための装着手段と
前記装着手段に接続された前記可搬型メモリから前記メインCPUのブートコードを読出し、前記確立された経路を介して前記メインシステムのメモリに移動する手段と、
前記メインCPUによるブートコードの実行を許可する手段と、
を具備することを特徴とするコンピュータシステム。 - 前記メインCPU及びサブCPUとの通信を可能とする通信手段、及び該通信手段により前記メインCPU及びサブCPUが通信を行う際に共通に使用されるデータ格納部とを具備し、
前記実行許可手段は、前記ブートコードの実行許可を示す通知を前記データ格納部に書き込み、前記メインCPUがそれを読み出すことにより、前記メインCPUは前記ブートコードの実行許可を判断することを特徴とする請求項7記載のコンピュータシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006023614A JP2007206885A (ja) | 2006-01-31 | 2006-01-31 | コンピュータシステム及びシステム起動方法 |
US11/657,651 US20070180223A1 (en) | 2006-01-31 | 2007-01-25 | Computer system and method of booting the system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006023614A JP2007206885A (ja) | 2006-01-31 | 2006-01-31 | コンピュータシステム及びシステム起動方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007206885A true JP2007206885A (ja) | 2007-08-16 |
Family
ID=38323512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006023614A Withdrawn JP2007206885A (ja) | 2006-01-31 | 2006-01-31 | コンピュータシステム及びシステム起動方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20070180223A1 (ja) |
JP (1) | JP2007206885A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009093502A (ja) * | 2007-10-10 | 2009-04-30 | Canon Inc | 情報処理装置及びその制御方法 |
CN106339328A (zh) * | 2015-07-06 | 2017-01-18 | 李尔公司 | 共享存储器体系结构自动更新器 |
US10127051B2 (en) | 2014-11-07 | 2018-11-13 | Samsung Electronics Co., Ltd. | Multi-processor device |
US10331355B2 (en) | 2016-09-23 | 2019-06-25 | Casio Computer Co., Ltd. | Control device, electronic timepiece, processing control method and computer readable storage medium |
JP2020154518A (ja) * | 2019-03-19 | 2020-09-24 | 富士ゼロックス株式会社 | マルチプロセッサシステム |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101815988A (zh) * | 2007-10-04 | 2010-08-25 | 无极公司 | 固件映像更新和管理 |
EP2244186A3 (en) * | 2009-03-11 | 2010-11-10 | Harman Becker Automotive Systems GmbH | Computing device and start-up method therefor |
JP5578811B2 (ja) * | 2009-06-30 | 2014-08-27 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法及びプログラム |
US8245024B2 (en) | 2009-08-21 | 2012-08-14 | Micron Technology, Inc. | Booting in systems having devices coupled in a chained configuration |
US8429391B2 (en) | 2010-04-16 | 2013-04-23 | Micron Technology, Inc. | Boot partitions in memory devices and systems |
JP5683911B2 (ja) * | 2010-11-11 | 2015-03-11 | 株式会社ザクティ | プログラム処理装置 |
US8706955B2 (en) * | 2011-07-01 | 2014-04-22 | Apple Inc. | Booting a memory device from a host |
US9858084B2 (en) * | 2013-03-15 | 2018-01-02 | Bitmicro Networks, Inc. | Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
FR3010553B1 (fr) * | 2013-09-10 | 2015-09-04 | Sagemcom Broadband Sas | Procede de mise a jour d'un logiciel de demarrage d'un dispositif multiprocesseur |
TWI595361B (zh) * | 2013-12-13 | 2017-08-11 | 祥碩科技股份有限公司 | 電子裝置與其載入程式碼之方法 |
JP6049781B2 (ja) * | 2015-02-25 | 2016-12-21 | キヤノン株式会社 | 画像形成装置、制御方法、及びプログラム |
JP7289641B2 (ja) * | 2018-11-30 | 2023-06-12 | キヤノン株式会社 | 情報処理装置、およびその制御方法 |
CN110737480B (zh) * | 2019-09-18 | 2022-05-13 | 瑞芯微电子股份有限公司 | 一种串口驱动程序复用方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6601167B1 (en) * | 2000-01-14 | 2003-07-29 | Advanced Micro Devices, Inc. | Computer system initialization with boot program stored in sequential access memory, controlled by a boot loader to control and execute the boot program |
JP4282201B2 (ja) * | 2000-03-06 | 2009-06-17 | 株式会社東芝 | 符号化データ記録装置 |
US6976058B1 (en) * | 2000-09-29 | 2005-12-13 | Hewlett-Packard Development Company, L.P. | Computer card for storing bootable images and providing remote management functions |
US7296143B2 (en) * | 2004-06-22 | 2007-11-13 | Lenovo (Singapore) Pte. Ltd. | Method and system for loading processor boot code from serial flash memory |
-
2006
- 2006-01-31 JP JP2006023614A patent/JP2007206885A/ja not_active Withdrawn
-
2007
- 2007-01-25 US US11/657,651 patent/US20070180223A1/en not_active Abandoned
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009093502A (ja) * | 2007-10-10 | 2009-04-30 | Canon Inc | 情報処理装置及びその制御方法 |
US10127051B2 (en) | 2014-11-07 | 2018-11-13 | Samsung Electronics Co., Ltd. | Multi-processor device |
CN106339328A (zh) * | 2015-07-06 | 2017-01-18 | 李尔公司 | 共享存储器体系结构自动更新器 |
US10331355B2 (en) | 2016-09-23 | 2019-06-25 | Casio Computer Co., Ltd. | Control device, electronic timepiece, processing control method and computer readable storage medium |
JP2020154518A (ja) * | 2019-03-19 | 2020-09-24 | 富士ゼロックス株式会社 | マルチプロセッサシステム |
JP7419662B2 (ja) | 2019-03-19 | 2024-01-23 | 富士フイルムビジネスイノベーション株式会社 | マルチプロセッサシステム |
Also Published As
Publication number | Publication date |
---|---|
US20070180223A1 (en) | 2007-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007206885A (ja) | コンピュータシステム及びシステム起動方法 | |
US9240924B2 (en) | Out-of band replicating bios setting data across computers | |
TW445416B (en) | Upgrade card for a computer system and method of operating the same | |
US8949205B2 (en) | Information processing apparatus for processing application software and a patch file | |
EP3491519A1 (en) | Optimized uefi reboot process | |
US10725770B2 (en) | Hot-swapping operating systems using inter-partition application migration | |
TWI397007B (zh) | 系統支援儲存及電腦系統 | |
JP2004334486A (ja) | ブートコードを用いた起動システム、及び起動方法 | |
JP2015102889A (ja) | ファームウェアの更新方法、電子機器、コンピュータおよびコンピュータ・プログラム | |
JP2005010942A (ja) | ブートコードが格納されるシーケンシャルアクセス・メモリデバイスを備えた装置及び前記装置の起動方法 | |
CN110647359B (zh) | 半导体装置、其操作方法和具有其的层叠存储装置 | |
CN113672250A (zh) | 用于存储器设备固件升级的接口和热重置路径 | |
WO2022066296A1 (en) | Memory device firmware update and activation without memory access quiescence | |
KR20140083530A (ko) | 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법 | |
JP5622429B2 (ja) | マイクロコンピュータ | |
JP5636276B2 (ja) | 半導体装置 | |
TWI840849B (zh) | 計算系統、電腦實施方法及電腦程式產品 | |
TWI605332B (zh) | 使用唯cpu重設的支援先進組態與電力介面(acpi)休眠狀態的方法及裝置 | |
JP4791792B2 (ja) | デジタルシグナルプロセッサシステムおよびそのブート方法。 | |
JP2009223805A (ja) | 情報処理装置およびデバイスコントローラの駆動制御方法 | |
US11347496B2 (en) | Driver update via sideband processor | |
US11709669B2 (en) | Operating system update via sideband processor | |
JP2007164492A (ja) | デバイス・コントローラの設定方法およびコンピュータ・システム | |
JP2011008688A (ja) | 組み込みシステムの制御方法 | |
JP2014021540A (ja) | ディジタルシグナルプロセッサシステム、ディジタルシグナルプロセッサシステム起動装置およびディジタルシグナルプロセッサのブート方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090113 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20091008 |