(57)【特許請求の範囲】
【請求項１】
第１のプロセッサが制御する不揮発性メモリに格納されたメインプログラムを、第２のプロセッサが制御する揮発性メモリに転送し、前記第２のプロセッサは前記揮発性メモリに転送された前記メインプログラムを実行するマルチプロセッサシステムであって、
前記メインプログラムを前記揮発性メモリに転送する転送プログラムと、その転送プログラムを前記揮発性メモリのプログラムエリアからワークエリアにコピーするコピー処理とを含むブートプログラムを、前記不揮発性メモリから前記揮発性メモリの前記プログラムエリアに転送する転送手段と、
（ａ）前記転送したブートプログラムのうち、前記コピー処理を実行することにより、前記転送プログラムを前記プログラムエリアから前記ワークエリアにコピーすると共に、
（ｂ）コピーした前記転送プログラムを前記ワークエリアにおいて実行することにより、前記メインプログラムを、前記不揮発性メモリから読み出して前記プログラムエリアに書き込み、この書き込みに応じて前記プログラムエリア上から前記ブートプログラムを消去し、そして
（ｃ）前記プログラムエリアに書き込まれた前記メインプログラムを実行することにより、前記ワークエリアにコピーされていた前記転送プログラムを消去する実行消去手段とを備えた
ことを特徴とするマルチプロセッサシステム。
【請求項２】
前記実行消去手段は、
前記メインプログラムに含まれる初期化プログラムを前記プログラムエリアにおいて実行することによって、前記ワークエリアに所定値を書き込む初期化を行い、これにより前記転送プログラムを前記ワークエリアから消去する
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
前記転送手段は、
前記ブートプログラムを、前記不揮発性メモリから前記揮発性メモリの前記プログラムエリアに転送するに際して、前記プログラムエリアの先頭アドレスから順に格納する
ことを特徴とする請求項１または２記載のマルチプロセッサシステム。
【請求項４】
前記第１のプロセッサは、
前記第２のプロセッサの停止状態において前記転送手段を実行し、
前記第２のプロセッサは、
前記第１のプロセッサが前記停止状態を解除するのに応じて、前記実行消去手段を実行する
ことを特徴とする請求項１乃至３の何れかに記載のマルチプロセッサシステム。
【請求項５】
第１のプロセッサが制御する不揮発性メモリに格納されたメインプログラムを、第２のプロセッサが制御する揮発性メモリに転送し、前記第２のプロセッサは前記揮発性メモリに転送された前記メインプログラムを実行するマルチプロセッサシステムの起動方法であって、
前記メインプログラムを前記揮発性メモリに転送する転送プログラムと、その転送プログラムを前記揮発性メモリのプログラムエリアからワークエリアにコピーするコピー処理とを含むブートプログラムを、前記不揮発性メモリから前記揮発性メモリの前記プログラムエリアに転送し、
前記転送したブートプログラムのうち、前記コピー処理を実行することにより、前記転送プログラムを前記プログラムエリアから前記ワークエリアにコピーし、
コピーした前記転送プログラムを前記ワークエリアにおいて実行することにより、前記メインプログラムを、前記不揮発性メモリから読み出して前記プログラムエリアに書き込み、この書き込みに応じて前記プログラムエリア上から前記ブートプログラムを消去し、
前記プログラムエリアに書き込まれた前記メインプログラムを実行することにより、前記ワークエリアにコピーされていた前記転送プログラムを消去する
ことを特徴とするマルチプロセッサシステムの起動方法。
【請求項６】
前記メインプログラムに含まれる初期化プログラムを前記プログラムエリアにおいて実行することによって、前記ワークエリアに所定値を書き込む初期化を行い、これにより前記転送プログラムを前記ワークエリアから消去する
ことを特徴とする請求項５記載のマルチプロセッサシステムの起動方法。
【請求項７】
前記ブートプログラムを、前記不揮発性メモリから前記揮発性メモリの前記プログラムエリアに転送するに際して、前記プログラムエリアの先頭アドレスから順に格納する
ことを特徴とする請求項５または６記載のマルチプロセッサシステムの起動方法。
【請求項８】
請求項１乃至請求項４の何れかに記載のマルチプロセッサシステムを備えた
ことを特徴とする携帯端末。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサでメモリを共有しながらメモリへの誤書き込みを防ぐマルチプロセッサシステムに関する。
【背景技術】
【０００２】
近年、携帯電話など通信機能を有する携帯機器では、通信機能部とアプリケーション機能部とを異なるプロセッサで制御することで、両機能とも高性能化を実現することが可能となってきた。このような複数のプロセッサを保持するシステムでは、各プロセッサが実行するプログラムを格納する不揮発性メモリがプロセッサ毎に必要である。しかしながら、携帯機器という性質上、省電力化、小型化が要求され、且つ販売競争が激化するなかで利益を追求するためにもコストダウンを進める必要がある。よって、上記のような複数のプロセッサを有するシステムではプロセッサ毎に高価な不揮発性メモリが必要となるため、省電力化、小型化、コストダウンの妨げとなっていた。
【０００３】
上記の問題を解決するため、複数のプロセッサでメモリを共有することが進められてきた。中でも、プログラムを格納するための不揮発性メモリを削減するために、不揮発性メモリを特定のプロセッサのみに保有させ、この不揮発性メモリに他のプロセッサが実行するメインプログラムを格納させ、上記他のプロセッサが持つ揮発性メモリに転送してその揮発性メモリ上で実行する方式が用いられることが少なくない。
【０００４】
上記のように、不揮発性メモリを持たない各プロセッサの揮発性メモリにメインプログラムを転送するには、以下のように動作する。まず、不揮発性メモリを持つプロセッサが、メインプログラムを転送するためのブートプログラムを、他のプロセッサの揮発性メモリに転送する。ブートプログラムを転送された各プロセッサはこれを実行することにより、自己の揮発性メモリにメインプログラムを転送する。転送終了後、メインプログラムを実行する。
【０００５】
上記動作を行うマルチプロセッサシステムは、例えば特許文献１に開示される。ここに開示されるマルチプロセッサシステムの起動方式は、複数の中央処理装置と、各中央処理装置ごとに設けられた書込み読出しメモリと、オペレーティングシステムを格納する二次記憶装置とを備え、以下のように動作する。一の中央処理装置のみ起動時にシステムのブートを行うイニシャルローダプログラムを格納した読み出し専用メモリを備え、他の各中央処理装置のそれぞれのイニシャルローダプログラムを二次記憶装置に格納しておき、起動時に前記一の中央処理装置がイニシャルローダプログラムを実行することにより、二次記憶装置内のイニシャルローダプログラムをそれぞれ対応する各書込み読出しメモリに転送する。
【０００６】
以下、図面を参照して具体的に説明する。図３は従来のマルチプロセッサシステムの構成図である。図に示すように、マルチプロセッサシステムは２つのプロセッサＡ（１０１）、プロセッサＢ（２０１）を有し、プロセッサＡはメモリバス１１０を介して不揮発性メモリ１０２を制御し、プロセッサＢはメモリバス２１０を介して揮発性メモリ２０２を制御する。不揮発性メモリ１０２には、プログラムＡ（１０３）、プログラムＢ（１０４）、ブートプログラム１０５が格納される。プログラムＡ，ＢはそれぞれプロセッサＡ，Ｂが実行するプログラムである。ブートプログラム１０５は、不揮発性メモリ１０２から揮発性メモリ２０２にプログラムＢを転送するためのプログラムであり、本システムの起動時に実行される。また、プログラムＡは不揮発性メモリ１０２から揮発性メモリ２０２にブートプログラム１０５を転送するプログラム部を含むとする。
【０００７】
システム起動時に、プロセッサＡはプログラムＡを実行する。これにより、不揮発性メモリ１０２からメモリバス１１０，２１０を介して揮発性メモリ２０２にブートプログラム１０５が転送される。続いて、プロセッサＢが、転送されたブートプログラム１０５を実行する。これにより、不揮発性メモリ１０２からメモリバス１１０，２１０を介して揮発性メモリ２０２にプログラムＢが転送される。
【０００８】
図４は上記手順により揮発性メモリ２０２に格納されたプログラムの配置を説明する図である。図に示すように、揮発性メモリ２０２の先頭アドレス0x0000番地からブートプログラム、プログラムＢが順に格納され、残りの領域はワークエリアとなる。プログラムＢの転送終了後、プロセッサＢはプログラムＢを実行する。
【０００９】
【特許文献１】特開平５−２４２０５７号
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従来のマルチプロセッサシステムは上記のように構成され、プロセッサＢの揮発性メモリ上に転送したブートプログラムが残っているので、プロセッサＢが誤ってブートプログラムを実行してしまう恐れがあり、その場合は揮発性メモリの内容が破壊されて異常な動作を起こしてしまう可能性があるという課題があった。ここで、もし誤書き込み防止の機能をハードウェアが保持していたとしても、ブートプログラムではメモリへの書き込みを行うためにこの書き込み防止機能を解除するので、誤書き込み防止の機能の効力を失ってしまう。また、プログラムが破壊されてしまうので、異常処理後に再起動をする際は再度ブートプログラムを実行してプログラムの転送をしなければならない。
【００１１】
この発明は上記課題を解決するためになされたものであり、揮発性メモリ上のプログラムエリアへの誤書き込みを防止するマルチプロセッサシステム、マルチプロセッサシステムの起動方法、および携帯端末を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明に係るマルチプロセッサシステムは、第１のプロセッサが制御する不揮発性メモリに格納されたメインプログラムを、第２のプロセッサが制御する揮発性メモリに転送し、前記第２のプロセッサは前記揮発性メモリに転送された前記メインプログラムを実行するマルチプロセッサシステムであって、
前記メインプログラムを前記揮発性メモリに転送する転送プログラムと、その転送プログラムを前記揮発性メモリのプログラムエリアからワークエリアにコピーするコピー処理とを含むブートプログラムを、前記不揮発性メモリから前記揮発性メモリの前記プログラムエリアに転送する転送手段と、
（ａ）前記転送したブートプログラムのうち、前記コピー処理を実行することにより、前記転送プログラムを前記プログラムエリアから前記ワークエリアにコピーすると共に、
（ｂ）コピーした前記転送プログラムを前記ワークエリアにおいて実行することにより、前記メインプログラムを、前記不揮発性メモリから読み出して前記プログラムエリアに書き込み、この書き込みに応じて前記プログラムエリア上から前記ブートプログラムを消去し、そして
（ｃ）前記プログラムエリアに書き込まれた前記メインプログラムを実行することにより、前記ワークエリアにコピーされていた前記転送プログラムを消去する実行消去手段とを備えた
ことを特徴とする。
【００１３】
例えば前記実行消去手段は、前記メインプログラムに含まれる初期化プログラムを前記プログラムエリアにおいて実行することによって、前記ワークエリアに所定値を書き込む初期化を行い、これにより前記転送プログラムを前記ワークエリアから消去することができる。
【００１４】
本発明に係るマルチプロセッサシステムの起動方法は、第１のプロセッサが制御する不揮発性メモリに格納されたメインプログラムを、第２のプロセッサが制御する揮発性メモリに転送し、前記第２のプロセッサは前記揮発性メモリに転送された前記メインプログラムを実行するマルチプロセッサシステムの起動方法であって、
前記メインプログラムを前記揮発性メモリに転送する転送プログラムと、その転送プログラムを前記揮発性メモリのプログラムエリアからワークエリアにコピーするコピー処理とを含むブートプログラムを、前記不揮発性メモリから前記揮発性メモリの前記プログラムエリアに転送し、
前記転送したブートプログラムのうち、前記コピー処理を実行することにより、前記転送プログラムを前記プログラムエリアから前記ワークエリアにコピーし、
コピーした前記転送プログラムを前記ワークエリアにおいて実行することにより、前記メインプログラムを、前記不揮発性メモリから読み出して前記プログラムエリアに書き込み、この書き込みに応じて前記プログラムエリア上から前記ブートプログラムを消去し、
前記プログラムエリアに書き込まれた前記メインプログラムを実行することにより、前記ワークエリアにコピーされていた前記転送プログラムを消去する
ことを特徴とする。
【００１６】
本発明に係る携帯端末は、上記構成を備えるマルチプロセッサシステムを備えたことを特徴とする。
【発明の効果】
【００１７】
以上説明したように、本発明によれば、揮発性メモリ上のプログラムエリアへの誤書き込みを防止することができる。
【発明を実施するための最良の形態】
【００１８】
次に図面を参照して本発明の実施の形態を説明する。図１は本発明によるマルチプロセッサシステムの構成図である。図に示すように、このマルチプロセッサシステムは、主機能を司るメインプロセッサ４０１と、副機能を司るサブプロセッサ５０１の２つのプロセッサを備える。携帯電話など通信機能を有する携帯機器では、一例として、メインプロセッサがアプリケーション機能部を実行し、サブプロセッサが通信機能部を実行してもよい。
【００１９】
メインプロセッサ４０１は、揮発性メモリＭ_ＲＡＭ（Random Access Memory）４０２と不揮発性メモリＲＯＭ（Read Only Memory）４０３を、メモリバス４０４を介して制御する。Ｍ_ＲＡＭ４０２は、ディスク装置（図示せず）等に格納されるＯＳ（Operating System）やアプリケーションプログラム等のデータの一時保存、実行を行うワークメモリとして使用される。
【００２０】
ＲＯＭ４０３はプログラムを格納するメモリであり、メインプロセッサ４０１が実行するプログラムＭ（４１１）、サブプロセッサ５０１が実行するプログラムＳ（４１２）、およびプログラムＳを転送してＳ_ＲＡＭ５０２に書き込むためのブートプログラム４１３部を格納する。プログラムＳは圧縮されていてもよく、この場合はブートプログラム４１３はプログラムＳを解凍した後にＳ_ＲＡＭ５０２に書き込むプログラムとなる。
【００２１】
サブプロセッサ５０１は、揮発性メモリＳ_ＲＡＭ５０２をメモリバス５０４を介して制御する。Ｓ_ＲＡＭ５０２は、プログラムの一時保存、実行領域であり、先頭アドレス0x0000番地から0x7FFF番地までをプログラム格納エリアとして、0x8000番地から0xFFFFまでをワークエリアとして、マッピングされているとする。この場合、マッピングの番地は一例に過ぎず、他の番地でもよい。
【００２２】
また、メインプロセッサ４０１とサブプロセッサ５０１との間は、経路Ｓ−ＲＥＳＥＴ４２２を介して接続される。Ｓ−RＥＳＥＴ４２２とは、メインプロセッサ４０１がサブプロセッサ５０１に対してリセット制御を行うための信号を送出する経路である。また、メインプロセッサ４０１側のメモリバス４０４とサブプロセッサ５０１側のメモリバス５０４とは、バスの接続を制御するバスブリッジ４２１を介して接続される。本発明による実施の形態は、サブプロセッサ５０１が実行するプログラムＳをＳ_ＲＡＭ５０２に転送するためのブートプログラムを、本揮発性メモリのＲＯＭ４０３からＳ_ＲＡＭ５０２に転送する転送手段として、プログラムＭとバスブリッジ４２１とメモリバス４０４，５０４とを有する。また、本実施の形態は、転送したブートプログラムを実行後に消去する実行消去手段として、プログラムＳの初期化プログラムとサブプロセッサ５０１とを有する。
【００２３】
次に動作について説明する。
【００２４】
本マルチプロセッサシステムを起動すると、まずメインプロセッサ４０１はサブプロセッサ５０１にＳ−ＲＥＳＥＴ４２２を介してリセット信号を送出する。リセット信号を送出すると、サブプロセッサは初期状態のまま動作を停止する。メインプロセッサ４０１は、リセット信号を送出した状態で、ＲＯＭ４０３内のプログラムＭを実行する。プログラムＭは、ＲＯＭ４０３に格納されるブートプログラム４１３をＳ_ＲＡＭ５０２に転送するプログラム部を有する。このプログラム部にしたがって、メインプロセッサ４０１はブートプログラム４１３を読み出して、メモリバス４０４、バスブリッジ４２１およびメモリバス５０４を介してＳ_ＲＡＭ５０２に転送する。
【００２５】
図２（ａ）〜（ｅ）は、Ｓ_ＲＡＭ５０２に格納されるプログラムの配置を説明するメモリマップ図である。通常のプロセッサはリセット状態の解除後先頭アドレスから順にプログラムを実行するので、図２（ａ）に示すように、転送されたブートプログラム４１３は先頭アドレス0x0000番地から順に格納される。ブートプログラム４１３の転送終了後、メインプロセッサ４０１はＳ−ＲＥＳＥＴ４２２を介してサブプロセッサ５０１のリセット状態を解除して、引き続きＲＯＭ４０３内のプログラムＭを実行する。
【００２６】
サブプロセッサ５０１は、リセット状態が解除されると動作を開始する。すなわち、Ｓ_ＲＡＭ５０２の0x0000番地から順次命令を読み出して実行する。ここでは転送されたブートプログラム４１３を実行する。上述したように、ブートプログラム４１３は、ＲＯＭ４０３に格納される圧縮されたプログラムＳを解凍してＳ_ＲＡＭ５０２に書き込むためのプログラムである。具体的には、この処理を行うための転送プログラム部と、転送プログラム部実行のために必要な初期化処理部とを含む。サブプロセッサ５０１が0x0000番地から命令を読み出して実行すると、まず初期化処理部が実行される。
【００２７】
ブートプログラム４１３は転送プログラム部のコピー処理を含む。これは、ワークエリアに転送プログラム部を退避させるためである。ブートプログラム４１３には転送プログラム部のアドレスとコピー先のアドレスが記載されるので、初期化処理部の実行が完了するとこれに従ってサブプロセッサ５０１は転送プログラム部を図２（ｂ）のようにワークエリアの先頭アドレスである0x8000番地以降にコピーする。
【００２８】
続いて、サブプロセッサ５０１は図２（ｃ）のように実行アドレスを0x8000番地にジャンプし、コピーした転送プログラム部を実行する。これにより、ＲＯＭ４０３に格納されたプログラムＳが、メモリバス４０４、バスブリッジ４２１およびメモリバス５０４を介して読み出され、解凍されてＳ_ＲＡＭ５０２の先頭アドレス0x0000番地からその容量分書き込まれる。
【００２９】
プログラムＳの転送終了後、サブプロセッサ５０１はバスブリッジ４２１を制御して、メモリバス４０４とメモリバス５０４とを切断する。これによりサブプロセッサ５０１での動作がメインプロセッサ４０１に影響することを防ぐことができる。続いて、サブプロセッサ５０１は、図２（ｄ）のように実行アドレスを0x0000にジャンプして、プログラムＳを実行する。プログラムＳは、初期化プログラムとしてワークエリア0x8000番地から0xFFFF番地の領域に“0x00“を書き込む初期化プログラムを有する。したがって、サブプロセッサ５０１がプログラムＳを実行すると図２（ｅ）のようにワークエリアに“0x00“が書き込まれ、これにより転送プログラム部が消去される。
【００３０】
以上のように、この実施の形態によるマルチプロセッサシステムでは、プログラムＳを転送するためのブートプログラムをメインプロセッサ４０１のＲＯＭ４０３からサブプロセッサ５０１のＳ_ＲＡＭ５０２に転送し、そのブートプログラムを実行後に消去するようにしたので、Ｓ_ＲＡＭ５０２への誤書き込み、およびそれによるプログラムの破壊を防止できる効果が得られる。また、プログラムの破壊の防止によりプログラム領域が保護されるので、再起動時のブート処理を削減できる効果が得られる。
【図面の簡単な説明】
【００３１】
【図１】本発明によるマルチプロセッサシステムの構成図である。
【図２】本発明のマルチプロセッサシステムによりＳ_ＲＡＭに格納されるプログラムの配置を説明する図である。
【図３】従来のマルチプロセッサシステムの構成図である。
【図４】従来のマルチプロセッサシステムにより揮発性メモリに格納されるプログラムの配置を説明する図である。
【符号の説明】
【００３２】
１０１    プロセッサＡ
１０２    不揮発性メモリ
１０３    プログラムＡ
１０４    プログラムＢ
１０５    ブートプログラム
１１０，２１０，４０４，５０４    メモリバス
２０１    プロセッサＢ
２０２    揮発性メモリ
４０２    Ｍ_ＲＡＭ
４０３    ＲＯＭ
４１１    プログラムＭ
４１２    プログラムＳ
４２１    バスブリッジ
４２２    Ｓ−ＲＥＳＥＴ
５０１    サブプロセッサ
５０２    Ｓ_ＲＡＭ
【図１】
0004876459.tif 000002
【図２】
0004876459.tif 000003
【図３】
0004876459.tif 000004
【図４】
0004876459.tif 000005