(57)【特許請求の範囲】
【請求項１】
マイクロプロセッサ（ＭＰ）と、
プログラム命令を格納するための第１メモリ（１６）と、
前記マイクロプロセッサ及び前記第１メモリに接続された、データを格納するための第２メモリ（１４）と、
入力データバス（１０）と、
前記第１メモリ（１６）に接続されたメモリ接続バス（１２）と、
前記入力データバス（１０）、前記メモリ接続バス（１２）、及び前記マイクロプロセッサ（ＭＰ）に接続されたステートマシン（２２）と、
前記入力データバス（１０）に接続可能で、前記入力データバスを介して、前記ステートマシン（２２）に特定の状態を確立するためのコマンドを入力するため、及び前記第１メモリ（１６）に格納される前記プログラム命令を入力するためのプログラム命令ユニット（１９）とを有するマイクロプロセッサシステムであって、
前記ステートマシン（２２）は、
前記マイクロプロセッサシステムへの電源投入時に入る初期状態（Ｓ１）と、
前記初期状態から自動的に移行する、前記プログラム命令ユニット（１９）からの前記コマンドを待機するコマンド待機状態（Ｓ２）と、
前記コマンドの先頭にある同期データを検出したときに移行する、前記コマンドのデータバイトの受信を待機するコマンドデータ待機状態（Ｓ３）と、
前記プログラム命令ユニット（１９）から格納コマンドを受けたときに移行する、前記プログラム命令を前記第１メモリ（１６）に書き込むための格納状態（Ｓ４）とを含み、
前記マイクロプロセッサの起動時には、前記ステートマシン（２２）は、前記格納状態（Ｓ４）の下で前記マイクロプロセッサを起動するための起動プログラムを前記マイクロプロセッサ（ＭＰ）を関与させることなく前記第１メモリ（１６）に書き込み、その後リセット信号が前記マイクロプロセッサと前記ステートマシンに供給されて前記マイクロプロセッサが始動されたときマイクロプロセッサが前記起動プログラムを実行可能とすることによって、前記マイクロプロセッサを起動するための手段を提供し、
前記ステートマシン（２２）はさらに、前記マイクロプロセッサの動作中にコマンドオペレーションをチェックするためのチェックコマンドを受けたときに移行する、前記チェックコマンドより特定されたデータの取込みを行うオペレーションチェック状態（Ｓ７）であって、前記マイクロプロセッサへのデータメモリアドレスリクエストを実行し、前記マイクロプロセッサがアクセス時間を与えたときにそのデータの取出しを可能にする、該オペレーションチェック状態（Ｓ７）を含み、
前記マイクロプロセッサ（ＭＰ）の起動後は、前記マイクロプロセッサ（ＭＰ）は、前記プログラム命令ユニット（１９）から入力されたリセットコマンドによってディスエーブル状態にされ得、前記ステートマシン（２２）は、前記オペレーションチェック状態または前記格納状態の下で、前記マイクロプロセッサの動作を一時中断させて前記第１メモリ（１６）及び前記第２メモリ（１４）から情報を取り出すか、または情報を格納する動作を行なうことを特徴とするマイクロプロセッサシステム。
【請求項２】
請求項１に記載のマイクロプロセッサシステムの起動方法であって、
前記マイクロプロセッサに電源を投入後、前記プログラム命令ユニット（１９）を入力データバス（１０）に接続して、前記ステートマシンの前記格納状態を確立するための前記格納コマンドを、前記入力データバスを介して前記ステートマシン（２２）に入力する過程と、
前記ステートマシン（２２）から前記メモリ接続バス（１２）を介して前記起動プログラムを前記第１メモリ（１６）に格納する過程であって、前記起動プログラムの格納は前記マイクロプロセッサを関与させずに行う、該過程と、
前記リセット信号を前記マイクロプロセッサ及び前記ステートマシンに供給して、前記マイクロプロセッサが始動させる過程とを有することを特徴とするマイクロプロセッサシステムの起動方法。
【発明の詳細な説明】
技術分野
本発明はマイクロプロセッサに関し、特にマイクロプロセッサの起動及びプログラミングに関する。
発明の背景
プロセッサベースのシステムには常に、非揮発性プログラム−いわゆる“起動”プログラムが存在している。この起動プログラムは、主プログラムをロードしたり、非揮発性プログラムメモリ内で主プログラムと結合される。何れの場合でも、起動プログラムにより、初めに電源が投入されたとき、プロセッサが初期動作を適切に開始することができる。起動プログラムがないと、プロセッサは未知の状態で動作を開始することになり、最後には“破損”することになる。起動プログラムは、製造時にプロセッサボード上に設置されるように設計されている。このようにすることで、起動プログラムは起動時に常にプロセッサにアクセスすることができるのである。
従来技術において繰り返し用いられてきたこの方法を、さまざまに改善することができるが、これには少なからぬコストがかかる。第１に、起動プログラムを汎用（空の）非揮発性メモリチップにコピーし、次いでそのチップをプリント基板上に設置する製造過程に対して繰り返し発生するコストがある。従来技術によれば、非揮発性メモリはコア型またはＵＶ型メモリであって、使用にあたっては特別な装置及び製造過程においてメモリをプロテクトするための注意深く設計されたプロセスが必要である。これらのメモリは着脱自在であること及び個別のソケットと基板上の領域を必要とし、このことも製造コストを上昇させる。多くの応用対象において、この起動メモリは、必要な基板上のスペースがより広いアプリケーションプログラムで損なわれることのないように、隔離されて設置される。
従来の方法を採用することにより、ハードウェア及び製造工程の設計においてかかる費用には一回性のものもいくつかあるが、そのなかで重要なのは起動プログラムの開発において発生するコストである。起動プログラムは各プロセッサごとに独特であり、各アプリケーションの初期化設定の特定の必要性に応じて特別に用いられるものである。この不可避的なカスタマイズのために、全てのシステム、全ての違い、全ての必要なメンテナンス及びプログラムサポートに関して、新たな起動プログラムを作成しなければならず、これももちろんコストを増加させる。
ＥＰＲＯＭ及びフラッシュメモリ技術の開発により、メモリソケットを除去し、ボード設置型ブランクメモリを備えたハードウェアを製造することが可能となった。このメモリデバイスは外部からプログラミングが可能であり、プログラミング技術の１つでは、メモリに命令を入力するためにカードエッジコネクタを用いる。これが高価である。このような型のメモリデバイスは繰り返しプログラミングすることが可能なため、機能（capability）が存在するのはボックスの外部、いわばＲＳ−３３２またはＲＳ−４２２プロトコルバスのような１つのバス／レシーバを介して（プロセッサにより実行される起動プログラムに助けを得て）ローディングされるアプリケーションプログラムに機能が存在する。しかし、起動プログラムそのものは、ブランクメモリを備えた空のボード上にこのようにロードすることはできないのは明らかである。なぜならローディングのための起動プログラムが存在していないからである。
多くの実行に時間のかかるアプリケーションにおいては、アプリケーションプログラムの動作中に目的のパラメータを入れたりモニタリングを行う機能は重要なものとなる。典型的には、このタスクは起動プログラムまたはそれに続いてロードされるプログラム、即ち“ソフトウェア開発パッケージ”（ＳＤＰ）プログラムと称されることもあるプログラムによって行われる。しかし、ＳＤＰプログラムのリアルタイム処理機能の欠点は、多くの状態の下で許容され得ないという点である。これはつまり、モニタリング及び更新処理が通常バックグラウンドタスクとして非常に遅い速度で実行されるということである。
発明の開示
発明の目的は、従来技術の利用に伴い発生していたコストを低減せしめ、コンピュータシステムにアプリケーションプログラムの外部からのプログラミング、モニタリング、及び変更を行う機能を賦与するという、起動ファンクションに対する要求を満たすことである。
本発明の目的は、プログラミングされた汎用起動エンジンを擁するマイクロプロセッサを備えた基板を製造することであり、ここで汎用というのは、回路基板上に設置され得るさまざまなマイクロプロセッサとともに使用できるという意味である。このようにして、製造者は選択したマイクロプロセッサエンジンを備えた全ての回路基板を前もって組み立てて、回路基板がメモリチップやコネクタを使用せずに完全に組み立てられた後、次いでメモリへのプログラミングを行う。
本発明の他の目的は、基板の組み立ての後、起動メモリへの外部からの接続を不要にすることである。本発明の更に別の目的は、アプリケーションプログラムの処理に割り込みを入れることなく、基板上の任意のプロセッサに状態問合わせを行う（interrogate）ことである。
本発明によれば、マイクロプロセッサ及びそのメモリユニットが起動ステートマシンを備えた回路基板上に一体に組み付けられ、該ステートマシンは、基本的な起動、プログラミング、及びデータ状態問合わせ処理を行う有限の個数の状態を有している。Ｎビットワードのプログラミング命令は、シリアルバスを介してステートマシンに送られる。この命令は、ステートマシンの状態を制御し、その状態に基づいて、ステートマシンは起動プログラムが実行するタスクと同等の基本的タスクを実行する。このタスクには、バスプロトコルの管理、及びマイクロプロセッサのメモリの入出力ポートとのデータのやり取りが含まれる。
上述の内容以外の本発明の他の目的、利点、及び特徴は、以下の説明を参照することにより、当業者には明らかとなろう。
【図面の簡単な説明】
第１図は、回路基板上に組み付けられた従来のマイクロプロセッサシステムの、簡略化したブロック図である。
第２図は、本発明の実施例であるマイクロプロセッサベースのシステムの簡略化したブロック図である。
第３図は、第２図のシステムに含まれているステートマシンで用いられる起動状態を示す状態図である。
発明の好適実施例の説明
第１図に示す従来の回路は、マイクロプロセッサＭＰ及び多数の付属部品を備えたプリント基板９上に設置されていることが想定されているが、図面に示されているのは本発明に密接な関係のある構成要素のみである。マイクロプロセッサ（ＭＰ）には、標準的なＲＳ−２３２入力バス／レシーバ１０（ＲＣＶＲ）が接続されており、他のバス１２によってＲＡＭ（揮発性メモリ）１４、（起動命令に対する）“プログラム命令”を含むＥＰＲＯＭ１６（プログラムメモリ）及び該プロセッサ用の特定の起動命令を含む他のＥＰＲＯＭ１８（起動メモリ）が接続されている。このＲＡＭは、マイクロプロセッサ用の一時メモリ（スクラッチパッドメモリ）となる。プログラムメモリ１６、マイクロプロセッサが特定のアプリケーション用の特定の処理及びファンクション（function）を実行するのに用いる機械語命令を格納しているということは、現在基本的な了解事項である。プログラムメモリがプリント基板９に取り付けられた後、プログラムはマイクロプロセッサを介してプログラムメモリ１６に入力される。プログラム命令は外部のプログラム命令ユニット１９から接続部（機械的なクリップ）２０を通して入力されるが、これは、プログラムメモリを利用するためには、それが回路基板上に設置されるときメモリが空にされていなければならないからである。一方、起動プログラムメモリ１８は、通常予めプログラムされて次いで製造工程の中で基板上に設置されるが、このことによりメモリが損傷を受けるリスクが生ずるのは明らかである。起動メモリ１８に格納された起動プログラムがどのようなものかは、プロセッサが必要とするプログラムコードの型に応じて決まる。両者のプログラムコードの型は一致していなければならないのである。
次に第２図を参照すると、本発明の一実施例が示されており、ここには第１図のものと同じ構成要素が存在している。プログラムメモリ１６は回路基板９に設置されるときには空にされておりプログラム命令が入力されるのを待つ状態となっているが、第２図の回路は、バス１０と、マイクロプロセッサＭＰ及びプログラムメモリ１６及びＲＡＭ１４の間にいわゆる“ステートマシン”２０を有している。バス１２は、バス１０とマイクロプロセッサＭＰとを接続しておらず、ステートマシン２０に接続されており、このステートマシン２０は、その状態に基づいて、バス１２を介してプログラムメモリ及びＲＡＭとやり取りすることにより命令を実行する。ステートマシンはよく知られたものであり、いくつかの点でマイクロプロセッサとは異なっている。これについての具体的な説明は、“Ｆｕｎｄａｍｅｎｔａｌｓ  ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｅｎｇｉｎｅｅｒｉｎｇ（Ｈｅｒｍａｎ  Ｌａｍ，Ｊｏｈｎ  Ｏ’Ｍａｌｌｅｙ著、１９８８年Ｊｏｈｎ  Ｗｉｌｅｙ＆Ｓｏｎｓ社刊）”に記載されている。ステートマシンは有限の個数の安定状態を有しており、各状態はこのステートマシンに対する入力の状態のファンクションとしてアクセスされる。このような処理は非常に高速で決定論的（deterministic）である。この処理はプログラムに従っていないことから、非常に高速である一方、複雑さに欠ける。このステートマシン２０は、第２図の回路では、非常に限定的な機能を有するものとして企図されている。このステートマシンはマイクロプロセッサの起動を開始するための独立した複数の状態を有する。つまり、このステートマシンはＲＳ−２３２バスを通してアプリケーションプログラム命令を受け取り、これをＥＰＲＯＭ１６にロードすることが可能となる必要十分な数の状態を有するものとして形成されているのである。回路上の全ての要素に電源が投入されると、ステートマシンは自動的にある状態に入る。第３図を参照すると、バスからのコマンドに応じて入った１つの状態の下で、ステートマシンが周辺装置からのデータを受け取り、それをバス１２を通してＲＡＭ及びプログラムメモリにロードする準備ができている。マイクロプロセッサＭＰはこのプロセスには関与しておらず、外部より入力されたリセットコマンドによってディスエーブル状態にされている。ステートマシンはバス１２上にデータを出力する限られた数の状態を有することができ、マイクロプロセッサの動作が不要になるという点で効果的な機構である。ライン２０．１を通してリセット信号（ＲＥＳＥＴ）が外部からマイクロプロセッサＭＰ及びステートマシン２０に供給される。この信号は、ステートマシンがプログラムロード処理を行った後、マイクロプロセッサを再スタートさせる信号である。ステートマシンに対する命令及びプログラミング状態はマイクロプロセッサとは無関係である。というのは、プロセッサではなくステートマシンが、プログラムメモリに状態問い合わせ（interrogating）をするためのノードとしての役目を果たすからである。
第３図に示すのは、ステートマシン２０の各状態を示す状態図である。状態Ｓ１、即ち初期化状態には電源が投入されたときに入り、その後ステートマシン２０は状態Ｓ２に入り、ここではバス１２を介して行われるステートマシンへの入力がモニタリングされＮビットの入力データにおける同期バイトデータ対（ｓｙｎｃ．バイトデータ対）を探す。同期バイトデータ対が存在しない限り、状態は状態Ｓ２に留まる。データ対が見つかると、ステートマシンの状態は状態Ｓ３に移動し、ここではどんな処理をすべきか（次の状態）を命令するコマンドバイトを受け取る。例えば、“格納コマンド”により、ステートマシン２０は状態Ｓ４に入り、ここでステートマシンは単にこのコマンドの処理を実行、例えばその命令を適当なメモリに格納する。次いでステートマシンの状態は状態Ｓ２に戻る。コマンドバイトが“ボーレート変更”の命令である場合にはコマンドバイトは別の状態Ｓ５に移動する。状態Ｓ５において、ステートマシン２０はこのコマンドセットが照合（balance）されるのを待つ。このコマンドセットが正しい、即ちＯＫである場合は、ステートマシンの状態は状態Ｓ６に移動してボーレートが設定され、次いで状態Ｓ２に戻る。コマンドセットが正しくない場合には、ステートマシンは直接状態Ｓ２に戻る。プロセッサの動作中（リセットモードに入っていない）ときにコマンドオペレーションをチェックするために、ステートマシン２０は“チェック”コマンドに応答して状態Ｓ７に入ることができる。この状態Ｓ７では、チェックコマンドにより特定されたデータがマイクロプロセッサに対するＤＭＡ（データメモリアドレス）リクエストを実行し、マイクロプロセッサアクセス時間を与えたときデータの取込みを行うことができる。状態Ｓ７から、ステートマシンは再びＳ２に戻る。状態Ｓ３において、“未定”コマンドが与えられると状態Ｓ８に進み、ここではコマンドバイトに関連するコマンドパケットの残りを受け取るが、使用しないでおくことができる。状態Ｓ８においてひとたびパケットが受け取られると、ステートマシンはバス１０上にデータを送出した後、再び状態Ｓ２に戻る。状態Ｓ２とＳ３との間には、肯定応答（ＡＣＫ）及び否定応答（ＮＡＫ）プロトコルが与えられており、“データ対”を受け取り状態Ｓ３に入ったことを示すハンドシェイキングが確立される。
バス１０からステートマシンへの入力は、“コマンドパケット”と称するが、以下このコマンドパケットについて説明し、本発明に基づくステートマシンの制御の一方法について具体的に説明する。コマンド用言語それ自体は本発明の必要不可欠な特徴ではなく、マイクロプロセッサを起動するためのプログラムをステートマシンに外部からプログラミングできるようにするためには、入力バスと整合しておりステートマシンが認識可能な構造さえあればよいということを強調しておくことは重要であろう。この説明において提示されている実施例は、ＲＳ−２３２バスプロトコルと共に使用されている。コマンドパケットの基本的な構造は、同期ブロック、それに続くコマンドブロック、更にそれに続くコマンドブロックのチェックサム（checksum）からなる。初めに、コマンドパケットの開始部は、２つの同期バイト（Ｓｙｎｃ．バイト）によって示される。第２に、コマンドブロックは、基本的な“スタンダードデベロップメントプログラム”（ＳＤＰ）コマンド及びバイトカウント、それに続く特定のコマンドのために定義されたデータバイトを含む。コマンドパケットの最終バイトは、コマンドブロックにおける全てのバイトのチェックサムであり、データ伝送の完全性についてのチェックを行う。つまり、全てのコマンドパケットの標準的なフォーマットは、ＳＹＮＣ／ＳＹＮＣ／ＣＯＭＭ／ＢＣＮＴ／ＤＡＴＡ／ＤＡＴＡ／．．．／ＣＵＳＭなるフォーマットである。ここでＳＹＮＣは、同期をとるために送られる各コマンドパケットにおける初めの２バイトであり、ＣＯＭＭはコマンドパケットにおける第３バイトであり、常に１つのコマンドを表す。前に述べたように、このバイト（ワード）はパケットによって伝送されたデータを用いて行われる処理の型を定義する。ＢＣＮＴ、即ちコマンドパケットとにおける第４のバイトは、データバイトのカウントであり、それに続くチェックサム（ＣＳＵＭ）ＤＡＴＡ、即ち第５バイトはＣＯＭＭバイトの性質に従属している。コマンドによってはターゲット（即ちアドレス）を特定するためにデータではなくＤＡＴＡを用いることもある。ＣＵＳＭ、標準的フォーマットにおける最終バイトは、コマンドバイト、バイトカウントバイト、及び全てのデータバイトのモジュール２８チェックサムである。
前に説明したように、状態Ｓ２とＳ３との間には、応答パケットの形でハンドシェイキングが確立されている。典型的な応答パケットは、肯定応答（ＡＣＫ）及び否定応答（ＮＡＫ）パケットからなり、所望に応じてコマンド応答が含まれることもある。前に説明したように、ＡＣＫ／ＮＡＫパケットは、同期ブロックバイトから始まり、それに続くＡＣＫ／ＮＡＫコードを有している。コマンド応答パケットの基本的な構造は、コマンドパケットの構造に類似しており、ＳＹＮＣ／ＳＹＮＣ／ＯＰＣＤ／ＤＣＮＴ／ＤＡＴＡＴ／ＤＡＴＡ／．．．．／ＣＳＵＭなるフォーマットを有する。
このようなバス１０からのステートマシンへの入力は“コマンドパケット”と称され、本発明に基づきステートマシンを制御するための一方法を示している。コマンド用言語それ自体は本発明の必要不可欠な特徴ではなく、マイクロプロセッサを起動するためのプログラムをステートマシンに外部からプログラミングできるようにするためには、入力バスと整合しておりステートマシンが認識可能な構造さえあればよいということを強調しておくことは重要であろう。この説明において提示されている実施例は、ＲＳ−２３２バスプロトコルと共に使用されている。
本発明の好適実施例の説明をもとに、当業者は本発明の範囲及び精神を逸脱することなく、その全体若しくは一部分についてさまざまな変更を加えることができよう。
以上説明してきた本発明の請求の範囲は以下の通りである。
【図１】
0003839844.tif 000002
【図２】
0003839844.tif 000003
【図３】
0003839844.tif 000004