(57)【特許請求の範囲】
【請求項１】
ホストとマイクロコンピュータ間のデータ送受信のインターフェースを行うＵＳＢ
イターフェース回路と、電気的に書き換え及び読み出し可能なプログラム格納用の不揮発性メモリと、前記不揮発性メモリのアドレスを指し示すプログラムカウンタと、前記プログラムカウンタが指し示す前記不揮発性メモリから読み出されるプログラムを実行するＣＰＵと、を備えたマイクロコンピュータであって、
前記不揮発性メモリは、書き込み制御プログラムを格納された第１のプログラム領域と、前記書き込み制御プログラムによってプログラムデータを書き込まれる第２のプログラム領域と、前記マイクロコンピュータの供給者を特定するための識別情報が記憶された第３のプログラム領域とを有し、
初期化時、前記ＵＳＢインターフェース回路を介して、前記識別情報を前記ホストに送信し、前記ホストでは前記識別情報を照合し、予め登録されている識別情報と一致すれば、前記ホストは前記プログラムデータを前記ＵＳＢインターフェース回路に送信し、前記ＣＰＵは前記ＵＳＢインターフェース回路に送信された前記プログラムデータを前記第１のプログラム領域に書き込まれた前記書き込み制御プログラムに従って前記第２のプログラム領域に書き込み、前記プログラムカウンタの値を第２のプログラム領域の先頭アドレスの値にすることを特徴とするマイクロコンピュータ。
【請求項２】
前記ホストはパーソナルコンピュータであることを特徴とする請求項１に記載のマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＵＳＢインターフェース回路及びプログラム格納用メモリとしてＥＥＰＲＯＭを内蔵したマイクロコンピュータに関するものであり、特にマイクロコンピュータの供給者を特定するための識別情報を有するマイクロコンピュータに関する。
【０００２】
【従来の技術】
近年、パーソナルコンピュータ等において、周辺デバイスの拡張性の自由度を高めるために、ＵＳＢ（Universal Serial Bus）のサポートが始められている。ＵＳＢはユーザの利便性を考慮して考案されたシリアルインターフェース規格であって、キーボード、マウス、カメラ、プリンタ、スキャナー、スピーカ等の様々な周辺デバイスとパーソナルコンピュータ等との通信に共通に使用できる。
【０００３】
図４はＵＳＢを利用したパーソナルコンピュータと周辺デバイスとの接続構成例を示す図である。上位のパーソナルコンピュータ１００とハブ１０１との間はＵＳＢケーブルで接続され、さらにハブ１０１の下位には周辺デバイス１０２〜１０５が接続され得る。そして、パーソナルコンピュータ１００によって周辺デバイス１０２〜１０５の管理が行われる仕組みになっている。このように、ＵＳＢは多重スター型のネットワーク構造の双方向通信可能なシリアルバスといえる。
【０００４】
ここで、ＵＳＢケーブルには４本の信号線が含まれる。その内訳は電源用２本と、データ信号用２本である。データ信号は基本的には差動信号（Ｄ+，Ｄ-）として扱われる。また、ＵＳＢを利用したデータ転送は、転送単位がフレームという概念で時間分割され、そのフレームを積み重ねていくことにより行う。１つのフレームはＳＯＦ（Start Of Frame）パケットにより開始する。そして、ホストのパーソナルコンピュータは予めそのフレームの中にスケジューリングされたデータ転送要求トークン（キーボードやカメラからのデータ入力要求や、音声データの出力要求）を順次送出することにより、複数の周辺デバイスとのデータ転送を並行して行う。
【０００５】
なお、ＵＳＢに関する技術文献として、例えば「Interface」（１９９７年１月号）、特開平１１−２０５４１２号公報等がある。
【０００６】
【発明が解決しようとする課題】
ところで、ＵＳＢの初期化の過程において、ホスト側からデバイスを特定するために各デバイスに対してアドレスデータの割り付けが行われると共に、デバイス側からは、デバイスの供給者を特定するための識別情報（以下、ベンダーＩＤという）をホスト側へ送信し、ホストにおいてベンダーＩＤの照合が行われる。このベンダーＩＤはＵＩＦ（USB Implemental Forum）という機関において登録、発行が行われている。したがって、デバイス側でベンダーＩＤを保持することが必要であったが、そのデバイスに最適な保持方法について従来は十分検討がなされていなかった。
【０００７】
そこで、本発明は、供給者を特定するための識別情報を効率的に保持すると共に、ホスト側のベンダーＩＤの照合を円滑に行えるようにしたマイクロコンピュータを提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明のマイクロコンピュータは、上述した課題を解決するために、ホストとマイクロコンピュータ間のデータ送受信のインターフェースを行うＵＳＢインターフェース回路と、電気的に書き換え及び読み出し可能なプログラム格納用の不揮発性メモリと、前記不揮発性メモリから読み出されるプログラムを実行するＣＰＵと、を備えたマイクロコンピュータであって、当該マイクロコンピュータの供給者を特定するための識別情報を記憶するための特定のメモリ領域を前記不揮発性メモリ内に設け、ＵＳＢの初期化時において、前記特定のメモリ領域から読み出された前記識別情報を前記ＵＳＢインターフェース回路を介して、ホストに送信することを特徴とする。
【０００９】
これにより、供給者を特定するための識別情報を効率的に保持すると共に、ホスト側のベンダーＩＤの照合を円滑に行うことができる。
【００１０】
【発明の実施の形態】
次に、本発明の実施形態について図面を参照しながら説明する。図１は、本発明の実施形態に係るマイクロコンピュータの構成を示すブロック図である。
【００１１】
以下で、マイクロコンピュータ１０は８ビット構成として説明する。マイクロコンピュータ１０とパーソナルコンピュータ１００とは１対の差動信号線によって接続される。そして、ＵＳＢ差動信号（Ｄ+，Ｄ-）はマイクロコンピュータ１０の端子Ｐ１，Ｐ２を介して入出力される。２０は、端子Ｐ１，Ｐ２に接続された入出力回路であって、差動入力バッファ２１、入力バッファ２２，２３及び出力バッファ２４，２５から構成されている。ここで、入力バッファ２２，２３はＵＳＢ差動信号（Ｄ+，Ｄ-）の状態が（Ｌ，Ｌ）となる場合を考慮して設けられている。
【００１２】
マイクロコンピュータ１０に内蔵されたＵＳＢインターフェース回路３０は、パーソナルコンピュータ１００との間のデータ送受信のインターフェースを行うもので、特にデータ受信時は入出力回路２０からのＵＳＢ差動信号（Ｄ+，Ｄ-）を受けて各種のデータ処理を行う。ＵＳＢ差動信号（Ｄ+，Ｄ-）は、ＵＳＢ通信プロトコルに従ったシリアルデータ信号である。
【００１３】
ＵＳＢインターフェース回路３０は、上記シリアルデータ信号から必要なデータを抽出する。この時、ＵＳＢインターフェース回路３０は当該シリアルデータ信号が如何なる転送フォーマットであるかを判別すると共に、エラー信号処理等を行う。またＵＳＢインターフェース回路３０は、上記データ処理が施されたシリアル信号をマイクロコンピュータ１００が処理可能な所定形式のパラレル信号（例えば８ビット構成）に変換する。
【００１４】
さらに、ＵＳＢインターフェース回路３０は、パラレル変換された８ビット×４＝３２ビットのプログラムデータを一時記憶するテンポラリレジスタ３１及び制御レジスタ（不図示）を備えている。
【００１５】
制御レジスタにはパーソナルコンピュータ１００がホストとして管理すべき各種データがセットされる。例えば、エニュミュレーションによるＵＳＢの初期化の中で、デバイスに割り付けられるアドレスデータがセットされる。
【００１６】
なお、ＵＳＢインターフェース回路３０はマイクロコンピュータ１０からパーソナルコンピュータ１００へのデータ送信時には上記と全く逆のデータ処理（パラレルデータからシリアルデータへの変換等）を行っている。
【００１７】
ＲＡＭ４０はＵＳＢインターフェース回路３０のテンポラリレジスタ３１のデータから逐次転送される３２ビット単位のプログラムデータを一時記憶するために利用される。そして、ＵＳＢインターフェース回路３０とＲＡＭ４０との間のデータ転送を行うために、専用の３２本の信号線が設けられている。ＲＡＭ４０に蓄積されたプログラムデータが所定量（例えば１２８バイト）に達すると、１２８バイトのプログラムデータはマイクロコンピュータ１０のバス４５を経由してフラッシュＲＯＭ５０へ転送される。
【００１８】
逆に、フラッシュＲＯＭ５０に書き込まれたプログラムデータをＲＡＭ４０へ転送し、そのＲＡＭ４０内に記憶されたプログラムデータをＵＳＢインターフェース回路３０のテンポラリレジスタ３１へ転送することも可能である。
【００１９】
一般に、ＵＳＢ通信によればパーソナルコンピュータ１００から大量のデータがデバイス側に送出されるため、デバイス側には特別のデータバッファを設けることが行われる。
【００２０】
これに対して、本発明ではマイクロコンピュータ１０がデータメモリとして本来有しているＲＡＭ４０をＵＳＢ通信によるデータを一時記憶するために利用するという構成を採ることでデータメモリの有効活用を図っている点も特徴である。
【００２１】
図２は、ＲＡＭ４０及び周辺回路を示すブロック図である。ＵＳＢインターフェース回路３０からはアドレス信号ＡＤＲ１、ＣＰＵ７０からはアドレス信号ＡＤＲ２が出力され、アドレス選択回路８０に入力される。アドレス選択回路８０はアドレス信号ＡＤＲ１，ＡＤＲ２のいずれかを選択してアドレス指定回路８１に入力する。
【００２２】
そして、アドレス指定回路８１の出力はアドレスデコーダ４１に入力され、アドレス信号ＡＤＲ１，ＡＤＲ２のいずれかに応じて同一のデータ領域がアクセス可能に構成されている。
【００２３】
上述した構成によれば、ＲＡＭ４０のデータ領域４２はアドレス信号ＡＤＲ２が選択された場合はＣＰＵ７０がコントロールするデータメモリ領域として利用可能であると共に、アドレス信号ＡＤＲ１が選択された場合には、ＵＳＢインターフェース回路３０からのプログラムデータ（３２ビット単位）を一時記憶するためのデータメモリ領域としても利用可能である。すなわち、ＲＡＭ４０のデータ領域は、ＣＰＵ７０とＵＳＢインターフェース回路３０の両方からアクセス可能である。
【００２４】
ただし、上記のアドレス選択は、パーソナルコンピュータ１００とのデータ送受信中については、ＵＳＢインターフェース回路３０からのアドレス信号ＡＤＲ１を選択するように構成されている。これはパーソナルコンピュータ１００からのデータ転送が途中で中断できないというＵＳＢの特性に基づくものである。具体的は、ＵＳＢインターフェース回路３０のテンポラリレジスタ３１がフル状態なったことを検知する信号に基づいて、マイクロコンピュータ１０はウエイト（待機）状態に自動的に設定される。
【００２５】
また、図１において、５０はフラッシュＲＯＭであり、ＵＳＢ制御プログラム（ＵＳＢの初期化プログラム及びプログラムデータの書き込み制御プログラム）が予め書き込まれ、格納された第１のプログラム領域５３とパーソナルコンピュータ１００からのプログラムデータがＲＡＭ４０を経由して書き込まれる第２のプログラム領域５２と、に分割されている。
【００２６】
そして、第１のプログラム領域５３に隣接してベンダーＩＤデータ領域５４が設けられている。ベンダーＩＤデータ領域５４にはマイクロコンピュータの供給者を特定するための識別情報が含まれている。なお、ベンダーＩＤデータ領域５４はフラッシュＲＯＭの中であれば、どのアドレス領域に設けられていても良いが、そのアドレスは特定されていなければならない。
【００２７】
６０はプログラムカウンタであって、その出力はフラッシュＲＯＭ５０のアドレスデコーダ５１に印加されている。プログラムカウンタ６０の出力値は後に説明するようにＵＳＢ通信の状態に応じて、ＣＰＵからの命令により所定番地にジャンプする。
【００２８】
すなわち、パーソナルコンピュータ１００かのプログラムデータの書き込み時には、プログラムカウンタ６０は第１のプログラム領域５３（書き込み制御プログラム）の先頭アドレスである（ＦＦ００）番地にジャンプすると共に、プログラムデータの書き込み後は、第２のプログラム領域５２の先頭アドレスである（００００）番地にジャンプする。そして、ＣＰＵ７０は、フラッシュＲＯＭ５０から読み出されるプログラム命令に従ってマイクロコンピュータ１０の動作を実行する。
【００２９】
次に、上述したマイクロコンピュータ１０の動作例について図３のフローチャートを参照しながら説明する。まず、最初のステップ２００では、マイクロコンピュータ１０がＵＳＢケーブルに接続される。このとき、ＵＳＢケーブルの電源ラインによってマイクロコンピュータ１０に電源が投入されることにより、マイクロコンピュータ１０がパワーオンリセットによりリセットされる。
【００３０】
次に、ステップ２０１において、プログラムカウンタ６０の値は、第１のプログラム領域５３（書き込み制御プログラム）の先頭アドレスである（ＦＦ００）番地へジャンプする。従って、その後マイクロコンピュータ１０は当該書き込み制御プログラムに従って以下の処理を実行する。
【００３１】
上記のようにステップ２０１においてＵＳＢケーブルにマイクロコンピュータ１０が接続されると、マイクロコンピュータ１０側に設けられたプルアップ抵抗を介して、ＵＳＢ差動信号（Ｄ+，Ｄ-）が（Ｌ，Ｌ）から例えば（Ｈ，Ｌ）へと変化する。パーソナルコンピュータ１００はこのＵＳＢ差動信号（Ｄ+，Ｄ-）の変化により、マイクロコンピュータ１００がＵＳＢネットワークに接続されたことを検知し、所定時間後にＵＳＢバスリセット信号を発行する。ステップ２０２では、このＵＳＢバスリセット信号待ち状態である。
【００３２】
ステップ２０３は、ＵＳＢバスリセット信号を受信したか否かを判定するステップであり、ＮＯと判定された場合には待ち状態を維持する。ＹＥＳと判定されると、次のステップ２０４に進む。
【００３３】
ステップ２０４は、エニュミュレーション（Enumeration）によるＵＳＢの初期化を行う。ここで、エニュミュレーションとは、一般にマイクロコンピュータ１０とパーソナルコンピュータ１００との間でＵＳＢデータの送受信を行うことが可能な環境設定を行うための一連のソフトウエア処理である。
【００３４】
エニュミュレーションにより行われる主な処理は、パーソナルコンピュータ１００の初期化と、パーソナルコンピュータ１００が支配するデバイスにアドレスを割り付ける処理、及びベンダーＩＤの照合である。ベンダーＩＤの照合（ステップ２０４Ａ）において、フラッシュＲＯＭ５０のベンダーＩＤデータ領域５４からベンダーＩＤが読み出され、ＵＳＢインターフェース回路３０を経由して、パーソナルコンピュータ１００へ送信される。パーソナルコンピュータ１００側では、そのベンダーＩＤが正規に登録されているものかどうかを照合する。
【００３５】
また、マイクロコンピュータ１０はパーソナルコンピュータ１００が割り当てた特定のアドレスをＵＳＢインターフェース回路３０内の制御レジスタ（アドレスレジスタ）内に記憶する。これにより、マイクロコンピュータ１０は、ＵＳＢの初期化後にパーソナルコンピュータ１００が送信して来たＵＳＢパケット内のアドレスと上記アドレスレジスタ内のアドレスとを照合し、それらが一致した場合にのみ送信されてきたＵＳＢデータの処理を行う。
【００３６】
こうして、ＵＳＢデータの送受信を行うことが可能な環境設定が終了すると、ステップ２０５ではパーソナルコンピュータ１００からフラッシュＲＯＭに書き込むべきプログラムデータがＵＳＢ差動信号データ（Ｄ+，Ｄ-）の形で入力されてくる。
【００３７】
ステップ２０６ではこの入力されたＵＳＢ差動信号データ（Ｄ+，Ｄ-）をＵＳＢインターフェース回路３０によってデータ処理する。このデータ処理内容は上述した通りであるが、シリアルデータ（８ビット×４）を所定のパラレルデータ（３２ビット）に変換するのがその主な処理である。
【００３８】
ステップ２０７では、ＵＳＢインターフェース回路３０からＲＡＭ４０へパラレル変換されたプログラムデータが書き込まれる。そして、ＲＡＭ４０へ書き込まれたプログラムデータ量が所定量（例えば１２８バイト）に達すると、この所定量を単位としてＲＡＭ４０からバス４５を介してフラッシュＲＯＭ５０の第２のプログラム領域５２へ書き込みが開始される（ステップ２０８）。これはフラッシュＲＯＭ５０が複数ブロックに分割されており、１２８バイトをブロックとして構成されていることによる。したがって、ＲＡＭ４０のデータの蓄積量はフラッシュＲＯＭ５０のブロック構成に応じて適宜に選択可能である。
【００３９】
ここで、実際にはＵＳＢインターフェース回路３０からＲＡＭ４０へパラレル変換されたプログラムデータの書き込み動作と、ＲＡＭ４０からフラッシュＲＯＭ５０への書き込み動作は並行して行われるために、高速書き込みが実現される。
【００４０】
ステップ２０８において、フラッシュＲＯＭへの書き込みが開始されるがこれには所定の時間を要する。そこで、ステップ２０９ではマイクロコンピュータ１０はソフト的にＮＡＣＫ状態にセットされる。これはＵＳＢパケットのハンドシェイク・パケットの一種であって、ホストであるパーソナルコンピュータ１００からのデータを受け付けることができないことを知らせるためにパーソナルコンピュータ１００へ返される。
【００４１】
そして、ステップ２１０では書き込み終了か否かを判定する。その判定結果がＮＯであれば、ＮＡＣＫ状態を維持する。その判定結果がＹＥＳであれば、ＡＣＫ状態にセットされ、ＡＣＫはマイクロコンピュータ１０側でデータを受け付け可能であることを知らせるためにパーソナルコンピュータ１００へ返される。
【００４２】
そして、次のステップ２１２ではフラッシュＲＯＭ５０へのプログラムデータの書き込みが全て終了したかを判定する。その判定結果がＮＯであれば、ステップ２０４へ戻り、残余のプログラムデータの書き込みを続行する。ここで、プログラムデータの書き込みはブロック（ページ）単位（例えば１２８バイト）で行われるため、全部のページが書き込まれるまでこの処理は繰り返される。
【００４３】
判定結果がＹＥＳの場合には、プログラムカウンタ６０の値は第２のプログラム領域５２の先頭アドレスである（００００）番地にジャンプする。
【００４４】
そして、マイクロコンピュータ１０はパーソナルコンピュータ１０から供給されたプログラムデータを読み出し、ＣＰＵ７０は解読されたプログラム命令に基づいてマイクロコンピュータの動作を実行開始する。
【００４５】
なお、上述した実施形態では、パーソナルコンピュータ１００からマイクロコンピュータ１０のフラッシュＲＯＭ５０に対してプログラムデータを書き込む場合について説明したが、フラッシュＲＯＭ５０に書き込まれたプログラムデータを読み出して、パーソナルコンピュータ１００へ送り返し、ベリファイを行うことも可能である。その場合には、データ処理の順序は上述したものと逆の順序となる。
【００４６】
すなわち、フラッシュＲＯＭ５０から読み出されたプログラムデータはＲＡＭ４０に一時記憶された後、ＵＳＢインターフェース回路３０へ逐次転送される。そして、ＵＳＢインターフェース回路３０では書き込みの際とは逆のデータ処理を施し、パラレルデータを所定のシリアルデータに変換後、ＵＳＢケーブルを介してパーソナルコンピュータ１００へ送出する。
【００４７】
また、上述した実施形態では初期状態においてプログラムデータを書き込むべき第１のプログラム領域が空状態であるが、これに限定されることなくプログラムのバージョンアップに伴うプログラムの書き換えも同様に適用することができる。
【００４８】
【発明の効果】
本発明によれば、マイクロコンピュータの供給者を特定するための識別情報（ベンダーＩＤ）を記憶するための特定のメモリ領域をマイクロコンピュータに内蔵された不揮発性メモリ内に設け、ＵＳＢの初期化時にそのメモリ領域から読み出された識別情報をホストに送信するようにしたので、当該識別情報を効率的に保持することができると共に、ホスト側での識別情報の照合が円滑に行われる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るマイクロコンピュータを示すブロック図である。
【図２】本発明の実施形態に係るマイクロコンピュータのＲＡＭ及び周辺回路を示すブロック図である。
【図３】本発明の実施形態に係るマイクロコンピュータ１０の動作例を示すフローチャートである。
【図４】ＵＳＢを利用したパーソナルコンピュータと周辺デバイスとの接続構成例を示す図である。
【符号の説明】
１０    マイクロコンピュータ
２０    入出力回路
３０    ＵＳＢインターフェース回路
４０    ＲＡＭ
４５    バス
５０    フラッシュＲＯＭ
５１    アドレスデコーダ
５２    第２のプログラム領域
５３    第１のプログラム領域
６０    プログラムカウンタ
７０    ＣＰＵ
【図１】
0005010065.tif 000002
【図２】
0005010065.tif 000003
【図３】
0005010065.tif 000004
【図４】
0005010065.tif 000005