(57)【特許請求の範囲】
【請求項１】
ネットワーク上で通信をする、再プログラム可能なネットワーク通信装置であって、
現プログラムイメージデータと、ネットワーク媒体のタイプを識別するためのネットワーク媒体構成情報を含む前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを記憶する再プログラム可能ＲＯＭと、
前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータを記憶するためのＲＡＭと、
前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報に含まれるネットワーク媒体構成情報によって識別されるネットワーク媒体のタイプと互換性があるかどうかを確認し、互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行するプロセッサーとを含むことを特徴とするネットワーク通信装置。
【請求項２】
前記新しいプログラムイメージデータは、新しいネットワーク情報ファイルブロックを含み、前記ソフトウエア再プログラムモジュールを実行する前に、前記プロセッサーは、前記新しいネットワーク情報ファイルブロックの少なくとも一部分を、前記現ネットワーク情報ファイルブロックの対応する部分で置き換えることを特徴とする請求項１に記載のネットワーク通信装置。
【請求項３】
前記新しいプログラムイメージデータは、ネットワークを介して前記ネットワーク通信装置にダウンロードされることを特徴とする請求項１或いは２に記載のネットワーク通信装置。
【請求項４】
前記構成情報は、前記ネットワーク通信装置に固有のＭＡＣアドレスを含むことを特徴とする請求項１乃至３のいずれかに記載のネットワーク通信装置。
【請求項５】
前記プロセッサーは、前記現ネットワーク情報ファイルブロックのネットワーク媒体構成情報と、前記新しいネットワーク情報ファイルブロックのネットワーク媒体構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とする請求項１乃至４のいずれかに記載のネットワーク通信装置。
【請求項６】
ネットワーク上で通信をする、再プログラム可能なネットワーク通信装置であって、
現プログラムイメージデータと、前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを記憶する再プログラム可能ＲＯＭと、
前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータを記憶するためのＲＡＭと、
前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報と互換性があるかどうかを確認し、互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行するプロセッサーとを有し、
前記構成情報は、物理的なコネクタのタイプを識別するためのネットワーク媒体構成情報を含み、
前記プロセッサーは、前記現ネットワーク情報ファイルブロックのネットワーク媒体構成情報と、前記新しいネットワーク情報ファイルブロックのネットワーク媒体構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とするネットワーク通信装置。
【請求項７】
ネットワーク上で通信をする、再プログラム可能なネットワーク通信装置であって、
現プログラムイメージデータと、前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを記憶する再プログラム可能ＲＯＭと、
前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータを記憶するためのＲＡＭと、
前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報と互換性があるかどうかを確認し、互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行するプロセッサーとを有し、
前記構成情報は、前記ネットワーク通信装置を内蔵する周辺機器へのインターフェースのタイプを識別するためのホストインターフェース構成情報を含み、
前記プロセッサーは、前記現ネットワーク情報ファイルブロックのホストインターフェース構成情報と、新しいネットワーク情報ファイルブロックのホストインターフェース構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とするネットワーク通信装置。
【請求項８】
前記構成情報は、製品のタイプを識別するための製品構成情報を含み、
前記プロセッサーは、前記現ネットワーク情報ファイルブロックの製品構成情報と、新しいネットワーク情報ファイルブロックの製品構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とする請求項１乃至７のいずれかに記載のネットワーク通信装置。
【請求項９】
前記構成情報は、プロセッサのタイプを示すプロセッサー構成情報を含み、
前記プロセッサーは、前記現ネットワーク情報ファイルブロックのプロセッサー構成情報と、新しいネットワーク情報ファイルブロックのプロセッサー構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とする請求項１乃至８のいずれかに記載のネットワーク通信装置。
【請求項１０】
前記構成情報は、前記ネットワーク通信装置のメモリの構成を示すメモリ構成情報を含み、
前記プロセッサーは、前記現ネットワーク情報ファイルブロックのメモリ構成情報と、新しいネットワーク情報ファイルブロックのメモリ構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とする請求項１乃至９のいずれかに記載のネットワーク通信装置。
【請求項１１】
ネットワーク上で通信をするネットワーク通信装置を再プログラムする方法であって、
現プログラムイメージデータと、ネットワーク媒体のタイプを識別するためのネットワーク媒体構成情報を含む前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを再プログラム可能ＲＯＭに記憶する工程と、
前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータをＲＡＭに記憶する工程と、
前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報に含まれるネットワーク媒体構成情報によって識別されるネットワーク媒体のタイプと互換性があるかどうかを確認する工程と、
互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行する工程とを含むことを特徴とするネットワーク通信装置を再プログラムする方法。
【請求項１２】
前記新しいプログラムイメージデータは、新しいネットワーク情報ファイルブロックを含み、前記ソフトウエア再プログラムモジュールを実行する前に、前記新しいネットワーク情報ファイルブロックの少なくとも一部分を、前記現ネットワーク情報ファイルブロックの対応する部分で置き換える工程を更に含むことを特徴とする請求項１１に記載のネットワーク通信装置を再プログラムする方法。
【請求項１３】
前記新しいプログラムイメージデータを、ネットワークを介して前記ネットワーク通信装置にダウンロードする工程を更に含むことを特徴とする請求項１１又は１２に記載のネットワーク通信装置を再プログラムする方法。
【請求項１４】
前記構成情報は、前記ネットワーク通信装置に固有のＭＡＣアドレスを含むことを特徴とする請求項１１乃至１３のいずれかに記載のネットワーク通信装置を再プログラムする方法。
【請求項１５】
前記現ネットワーク情報ファイルブロックのネットワーク媒体構成情報と、前記新しいネットワーク情報ファイルブロックのネットワーク媒体構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とする請求項１１乃至１４のいずれかに記載のネットワーク通信装置を再プログラムする方法。
【請求項１６】
ネットワーク上で通信をするネットワーク通信装置を再プログラムする方法であって、
現プログラムイメージデータと、前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを再プログラム可能ＲＯＭに記憶する工程と、
前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータをＲＡＭに記憶する工程と、
前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報と互換性があるかどうかを確認する工程と、
互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行する工程とを有し、
前記構成情報は、物理的なコネクタのタイプを識別するためのネットワーク媒体構成情報を含み、
前記現ネットワーク情報ファイルブロックのネットワーク媒体構成情報と、前記新しいネットワーク情報ファイルブロックのネットワーク媒体構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とするネットワーク通信装置を再プログラムする方法。
【請求項１７】
ネットワーク上で通信をするネットワーク通信装置を再プログラムする方法であって、
現プログラムイメージデータと、前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを再プログラム可能ＲＯＭに記憶する工程と、
前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータをＲＡＭに記憶する工程と、
前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報と互換性があるかどうかを確認する工程と、
互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行する工程とを有し、
前記構成情報は、前記ネットワーク通信装置を内蔵する周辺機器へのインターフェースのタイプを識別するためのホストインターフェース構成情報を含み、
前記現ネットワーク情報ファイルブロックのホストインターフェース構成情報と、新しいネットワーク情報ファイルブロックのホストインターフェース構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とするネットワーク通信装置を再プログラムする方法。
【請求項１８】
前記構成情報は、製品のタイプを識別するための製品構成情報を含み、
前記現ネットワーク情報ファイルブロックの製品構成情報と、新しいネットワーク情報ファイルブロックの製品構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とする請求項１１乃至１７のいずれかに記載のネットワーク通信装置を再プログラムする方法。
【請求項１９】
前記構成情報は、プロセッサのタイプを示すプロセッサー構成情報を含み、
前記現ネットワーク情報ファイルブロックのプロセッサー構成情報と、新しいネットワーク情報ファイルブロックのプロセッサー構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とする請求項１１乃至１８のいずれかに記載のネットワーク通信装置を再プログラムする方法。
【請求項２０】
前記構成情報は、前記ネットワーク通信装置のメモリの構成を示すメモリ構成情報を含み、
前記現ネットワーク情報ファイルブロックのメモリ構成情報と、新しいネットワーク情報ファイルブロックのメモリ構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とする請求項１１乃至１９のいずれかに記載のネットワーク通信装置を再プログラムする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク上で通信する、再プログラム可能なネットワーク通信装置に関する。特に、本発明は、再プログラムする前に、再プログラムようのイメージデータが互換性があるものであることを確認する、再プログラム可能なネットワーク通信装置に関する。
【０００２】
【従来の技術】
近年、ローカルエリアネットワーク（LAN）が複雑になるにつれ、入手可能な最新の技術をもってネットワーク通信装置をグレードアップすることが一般的となっている。このようなグレードアップは、LANを介して行うのが簡単である。例えば、ネットワーク統括者は、新しいデータを遠隔操作でネットワーク通信装置にダウンロードすることによって、この装置のファームウエアのイメージデータを変更することができ、装置はこの新しいファームウエアイメージデータで再プログラムを行う。
【０００３】
ネットワーク統括者がログインすることができる典型的なパーソナルコンピューター（ＰＣ）は２つ以上のLANに接続されていることもある。例えば、ＰＣはEthernet LAN及びToken-ring LANの両方に接続していてもよく、両方のネットワークの統括者として機能してもよい。また、それぞれのLANは、いくつかの再プログラム可能なネットワーク通信装置に接続していてもよい。従って、このような構成においては、ネットワーク統括者が潜在的に再プログラムすることのできる装置が複数あり、従って、ネットワーク統括者が、うっかりこれらの装置のどれかを互換性のないイメージデータで再プログラムしてしまう可能性がある。
【０００４】
互換性がないイメージデータをダウンロードした結果は、破壊的なものでありうる。例えば、ネットワーク統括者が誤ってToken-ringイメージデータをEthernet LANに接続されているカードにダウンロードし、その後にそのカードがToken-ringイメージデータで再プログラムした場合、カードはEthernet LAN上で通信を行うことが全くできなくなる。これはつまり、カードがLANから再プログラムすることさえできないことを意味する。Ethernet LANに関しては全く「役立たず」のボードとなるわけである。例えば、ホストインターフェース構成や、製品構成や、プロセッサー構成や、メモリ構成における非互換性は、「役立たず」のボードにしてしまう可能性がある。
【０００５】
【発明が解決しようとする課題】
本発明は上記従来例に鑑みてなされたもので、ネットワーク通信装置に互換性のないイメージデータがダウンロードされた場合に上記のような悲惨な結果を招かないようにするために、ダウンロードされたイメージデータが互換性のあるものであるかどうか、再プログラムを行う前に確認する装置及び方法を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、本発明における再プログラム可能ネットワーク通信装置は、以下のような構成からなる。すなわち、現プログラムイメージデータと、ネットワーク媒体のタイプを識別するためのネットワーク媒体構成情報を含む前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを記憶する再プログラム可能ＲＯＭと、前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータを記憶するためのＲＡＭと、前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報に含まれるネットワーク媒体構成情報によって識別されるネットワーク媒体のタイプと互換性があるかどうかを確認し、互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行するプロセッサーとを含む。
【０００７】
また、本発明におけるネットワーク通信装置の再プログラム方法は、現プログラムイメージデータと、ネットワーク媒体のタイプを識別するためのネットワーク媒体構成情報を含む前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを再プログラム可能ＲＯＭに記憶する工程と、前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータをＲＡＭに記憶する工程と、前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報に含まれるネットワーク媒体構成情報によって識別されるネットワーク媒体のタイプと互換性があるかどうかを確認する工程と、互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行する工程とを含む。
また、別の構成によれば、ネットワーク上で通信をする、再プログラム可能な本発明のネットワーク通信装置は、現プログラムイメージデータと、前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを記憶する再プログラム可能ＲＯＭと、前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータを記憶するためのＲＡＭと、前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報と互換性があるかどうかを確認し、互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行するプロセッサーとを有し、前記構成情報は、物理的なコネクタのタイプを識別するためのネットワーク媒体構成情報を含み、前記プロセッサーは、前記現ネットワーク情報ファイルブロックのネットワーク媒体構成情報と、前記新しいネットワーク情報ファイルブロックのネットワーク媒体構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とする。
また、ネットワーク上で通信をするネットワーク通信装置を再プログラムする本発明の方法は、現プログラムイメージデータと、前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを再プログラム可能ＲＯＭに記憶する工程と、前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータをＲＡＭに記憶する工程と、前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報と互換性があるかどうかを確認する工程と、互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行する工程とを有し、前記構成情報は、物理的なコネクタのタイプを識別するためのネットワーク媒体構成情報を含み、前記現ネットワーク情報ファイルブロックのネットワーク媒体構成情報と、前記新しいネットワーク情報ファイルブロックのネットワーク媒体構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認する。
更に、別の構成によれば、ネットワーク上で通信をする、再プログラム可能な本発明のネットワーク通信装置は、現プログラムイメージデータと、前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを記憶する再プログラム可能ＲＯＭと、前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータを記憶するためのＲＡＭと、前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報と互換性があるかどうかを確認し、互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行するプロセッサーとを有し、前記構成情報は、前記ネットワーク通信装置を内蔵する周辺機器へのインターフェースのタイプを識別するためのホストインターフェース構成情報を含み、前記プロセッサーは、前記現ネットワーク情報ファイルブロックのホストインターフェース構成情報と、新しいネットワーク情報ファイルブロックのホストインターフェース構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認することを特徴とする。
また、ネットワーク上で通信をするネットワーク通信装置を再プログラムする本発明の方法は、現プログラムイメージデータと、前記ネットワーク通信装置のための構成情報を含む現ネットワーク情報ファイルブロックと、再プログラム可能ＲＯＭを再プログラムするためのソフトウエア再プログラムモジュールとを再プログラム可能ＲＯＭに記憶する工程と、前記再プログラム可能ＲＯＭのための新しいプログラムイメージデータをＲＡＭに記憶する工程と、前記新しいプログラムイメージデータが前記現ネットワーク情報ファイルブロックの構成情報と互換性があるかどうかを確認する工程と、互換性が確認された場合に、前記再プログラム可能ＲＯＭを前記新しいプログラムイメージデータで再プログラムするために、前記ソフトウエア再プログラムモジュールを実行する工程とを有し、前記構成情報は、前記ネットワーク通信装置を内蔵する周辺機器へのインターフェースのタイプを識別するためのホストインターフェース構成情報を含み、前記現ネットワーク情報ファイルブロックのホストインターフェース構成情報と、新しいネットワーク情報ファイルブロックのホストインターフェース構成情報とを比較することによって、前記新しいプログラムイメージデータが互換性があるかどうかを確認する。
【０００８】
好ましくは、現ネットワーク情報ファイルブロックにおける構成情報は、MACアドレスと、ネットワーク構成情報と、ホストインターフェース構成情報と、製品構成情報と、プロセッサー構成情報と、メモリ構成情報とを含む。プロセッサーは、現ネットワーク情報ファイルブロックを新しいネットワーク情報ファイルブロックと比較することによって、新しいプログラムイメージデータの互換性を確認する。
【０００９】
上記の問題を解決するための手段は、本発明が迅速に理解されるように提供されたものである。本発明に関する更に詳しい理解は、添付図面を参照して説明された、下記の好適な実施例の詳細を参照することにより、明かになるであろう。
【００１０】
【発明の実施の形態】
以下添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
最も好適な例としては、本発明はネットワークボード（NEB）の形態を取る。このNEBは、プリンターや対話型インテリジェント・ネットワーク・メンバー等のネットワーク周辺機器を、ネットワークからデータを受信して処理するだけではなく、詳細な状態情報や演算パラメーター等の周辺機器に関する多量のデータをネットワークに送信することができるようにする、ハードウエアやソフトウエア、又はファームウエアを用いた解決法を提供する。また、本発明をスキャナーやファクシミリ、コピー機、画像処理装置等の、ネットワークに接続された他の周辺機器に使用してもよい。このようなハードウエア、ソフトウエア、ファームウエアを周辺機器と融合することで、パーソナルコンピューターを周辺機器のサーバーとして使用する必要がなくなる。
［ネットワーク構成］
図１は、ネットワークボード（NEB）１０１を、開放型アーキテクチャを持つプリンター１０２へつなげた場合を示す図である。NEB１０１はローカルエリアネットワーク（LAN）１００へ、例えば、同軸コネクタをもつEthernetインターフェース１０Base-2や、ＲＪ−４５を持つ１０Base-T等のLANインターフェースを介してつながれている。
【００１１】
ＰＣ１０３やＰＣ１０４等の複数のパーソナルコンピューター（ＰＣ）もまた、１００に接続されており、ネットワークオペレーティングシステムの制御の下、これらのＰＣはNEB１０１と通信することができる。ＰＣの一つ、例えばＰＣ１０３を、ネットワーク管理部として使用するように指定することができる。ＰＣに、ＰＣ１０４に接続されているプリンター１０５のようなプリンターを接続してもよい。
【００１２】
また、LAN１００にファイルサーバー１０６が接続されており、これは大容量（例えば１００億バイト）のネットワークディスク１０７に記憶されたファイルへのアクセスを管理する。プリントサーバー１０８は、接続されたプリンター１０９a及び１０９b、又は遠隔地にあるプリンター１０５などのプリンターに印刷を行わせる。また他の図示しない周辺機器をLAN１００に接続してもよい。
【００１３】
更に詳しくは、図１に示すネットワークは、様々なネットワークメンバー間で効率良く通信を行うために、NovellやUNIXのソフトウエアなどのネットワークソフトウエアを使用することができる。どのネットワークソフトウエアを使用することも可能であるが、本実施の形態においては、Novell社のNetWare（Novell社の商標。以下省略） ソフトウエアを使用したLANに基づいて説明する。このソフトウエアパッケージに関する詳細な説明は、１９９０年に著作権登録されたM＆Tブックス社発行の「NetWareユーザーガイド」及び「NetWareスーパーバイザーガイド」に示されている。また、Novell社発行の１９９１年３月版「NetWareプリントサーバー」（Novell Part第１００−０００８９２−００１）も参照されたい。
【００１４】
簡潔に説明すると、ファイルサーバー１０６は、LANメンバー間でデータのファイルの受信や、記憶、キューイング、キャシング、及び送信を行う、ファイル管理部としての役割を果たす。例えば、ＰＣ１０３及びＰＣ１０４それぞれによって作られたデータファイルは、ファイルサーバー１０６へ送られ、ファイルサーバー１０６はこれらのデータファイルを順に並べ、そしてプリントサーバー１０８からのコマンドに従って、並べられたデータファイルをプリンター１０９aへ送信する。
【００１５】
ＰＣ１０３とＰＣ１０４はそれぞれ、データファイルの生成や、生成したデータファイルのLAN１００への送信や、また、LAN１００からのファイルの受信や、更にそのようなファイルの表示及び／又は処理を行うことのできる、通常のＰＣで構成される。図１にパーソナルコンピューター機器が示されているが、ネットワークソフトウエアを実行するのに適切であるような、他のコンピューター機器を含んでもよい。例えば、UNIXのソフトウエアを使用している場合に、UNIXワークステーションをネットワークに含んでもよく、これらのワークステーションは、適切な状況下で、図示されているＰＣと共に使用することができる。
【００１６】
通常、LAN１００などのLANは、一つの建物内の一つの階又は連続した複数の階でのユーザーグループ等の、幾分ローカルなユーザーグループにサービスを提供する。例えば、ユーザーが他の建物や他県に居るなど、あるユーザーが他のユーザーから離れるに従って、ワイドエリアネットワーク（WAN）を作ってもよい。WANは、基本的には、いくつかのLANを高速度サービス総合デジタルネットワーク（ISDN）電話線等の高速度デジタルラインで接続して形成された集合体である。従って、図１に示すように、LAN１００と、LAN１１０と、LAN１２０とは変調／復調（MODEM）／トランスポンダー１３０及びバックボーン１４０を介して接続されWANを形成する。これらの接続は、数本のバスによる単純な電気的接続である。それぞれのLANは専用のＰＣを含み、また、必ずしも必要なわけではないが、通常はファイルサーバー及びプリントサーバーを含む。
【００１７】
従って図１に示すように、LAN１１０は、ＰＣ１１１と、ＰＣ１１２と、ファイルサーバー１１３と、ネットワークディスク１１４と、プリントサーバー１１５と、プリンター１１６及びプリンター１１７とを含む。対象的に、LAN１２０はＰＣ１２１とＰＣ１２２のみを含む。LAN１００と、LAN１１０と、LAN１３０とに接続されている機器は、WAN接続を介して、他のLANの機器の機能にアクセスすることができる。
【００１８】
ＰＣ１０４には、例えばRPINTERソフトウエアプログラムが搭載されており、これによりネットワーク周辺機器の制限された制御を行うことができる。RPINTERプログラムは、MS-DOSターミネート・アンド・ステイ・レジデント（TSR）プログラムである。このプログラムにより、ユーザーがＰＣ１０４に接続されたプリンター１０５を共有していても、ＰＣ１０４は印刷以外の他のアプリケーションを実行することができる。RPINTERは、ワークのためのプリンターキューを検索する機能を持たない、比較的非インテリジェントなプログラムである。RPINTERはネットワーク上のどこかで稼働しているプリントサーバー１０８からワークを受ける。ＰＣ１０４で実行されているRPINTERは、接続されたプリンターと、プリンターのパラレルポートを介して通信を行うため、プリンター１０５から限られた状態情報のみを手に入れ、その状態情報をプリントサーバー１０８へLAN１００を介して返すことができる。制御の点から見ると、RPINTERは印刷ジョブの中止や（例えば、プリンターの用紙切れや、接続されていない場合に行われる）、他のいくつかの制御を行うことができる。プリンターによっては、パーソナルコンピューターで実行されている、RPINTER TSRプログラムの特長機能のいくつかを供給する、内部又は外部回路ボードを提供することにより、RPINTERと同様の機能を持つことができる。
【００１９】
プリントサーバー１０８はLAN周辺機器に対して、更に多くの制御を行なうことができるが、他のタスクに使用することのできない専用のＰＣを必要とする。プリントサーバー１０８はＰＣであってもよく、多数のユーザー定義のプリントキューをサービスし、ダイナミック検索キューの更新を行い、例外（失敗）条件及び状態・制御性能についての、定義された通知手順を提供することができる。また、プリントサーバー１０８は、ローカルプリンター１０９aおよび１０９b（つまり、物理的にプリントサーバー１０８に接続されているプリンター）と、遠隔地にあるプリンターとの両方を制御することができる。ローカルプリンター１０９aおよび１０９bはシリアルポート又はパラレルポートのどちらにも接続することができ、プリンター１０５のような遠隔地にあるプリンターは、RPRINTERソフトウエアを介してプリントサーバー１０８が制御する、システムの何処かで稼働しているプリンタである。
【００２０】
プリントサーバー１０８は、多数のローカル又は遠隔地のプリンターを制御したり、多数のファイルサーバーキューから印刷情報をリクエストすることができる。しかし、ネットワークプリントサービスを制御するためにプリントサーバー１０８に頼ることに関して、いくつかの欠点がある。第１の欠点は、複数のプリンターストリームが単一のネットワークノードを介して集められなければならないことである。これは障害となりうる。第２の欠点は、最も効率的な操作のためには、プリンター１０９a及び１０９bのように、プリンターをプリントサーバーにローカルに接続しなけらばならないことである。このため、プリンターがプリントサーバー１０８の周辺に集まっていなければならず、ユーザーがプリンターの集まっている場所までわざわざ行かなければならないということから、ユーザーにとって不便である。第３の欠点は、RPRINTERによってサービスされているプリンター１０５のように、制御されているプリンターが遠隔地にある場合、プリントデータは、先ずファイルサーバー１０６からプリントサーバー１０８へ、次にプリントサーバー１０８からRPRINTERを稼働しいるプリンターへと、いくつかの経路を辿らなければならないことである。これは非効率である。
【００２１】
第４の欠点は、限られた量のプリンター状態及び制御情報しか、プリントサーバー１０８を通して供給されないことである。既に説明したとおり、RPRINTERは、「用紙切れ」及び「オフライン」等の基本的な状態情報以上のものを供給しないことである。パーソナルコンピューターパラレルポートの制限を鑑みて設計されているため、プリントサーバー１０８は、これ以上の情報を提供しないのである。
［ネットワークボード］
NEB１０１をプリンター１０２にインストールすることによって、上記のネットワーク周辺機器制御に多くの利点をもたらす。そのうちの一つは、プリンター１０２をインテリジェントな対話式ネットワークメンバーにすることである。
【００２２】
図２に示すように、好ましくは、NEB１０１は、プリンター１０２の内部拡張I/Oスロットに内蔵されており、本発明の実施の形態においては、プリンターはキヤノン社のＬＢＰ１２６０レーザープリンターを用いている。これにより、NEB１０１は、下に示す処理及びデータ記憶機能を持つ、「埋め込まれた」ネットワークノードとなる。
【００２３】
このNEB１０１の構成により、大きなマルチエリアWANネットワークを統括及び管理するための、特徴的な補助機能を持つという利点をもたらす。これらの補助機能は、例えば、ネットワーク上の遠隔地（ネットワーク統括者の事務所など）からのプリンター制御及び状態観察や、各印刷ジョブ後の次のユーザーのための保証初期環境を提供するためのプリンター構成の自動管理、及びプリンターの負荷量を特徴付け、あるいはトナーカートリッジの交換スケジュールを組むためにネットワークを通してアクセスできる、プリンターログ又は使用統計を含む。
【００２４】
NEB設計において重要な要因は、共有メモリ等の両方向インターフェースを介して、NEB１０１からプリンター制御状態にアクセスする機能である。共有メモリ以外に、SCSIインターフェース等のインターフェースを使用することもできる。これにより、多数の便利な補助機能のプログラムができるように、プリンター操作情報をNEB１０１又は外部ネットワークノードへ送出することができる。印刷画像データ及び制御情報のブロックは、NEB１０１上にあるマイクロプロセッサーによって構成され、共有メモリに記述され、そして、プリンター１０２によって読み込まれる。同様に、プリンター状態情報は、プリンター１０２から共有メモリへ送られ、そこからNEBプロセッサーによって読み込まれる。
【００２５】
図２は、NEB１０１をプリンター１０２にインストールした状態を示す断面図である。図２に示すように、NEB１０１はネットワーク接続の為のフェースプレート１０１bを設置した印刷回路ボード１０１aから構成されており、コネクタ１７０を介してプリンターインターフェースカード１５０に接続されている。後で説明するが、プリンターインターフェースカード１５０は、プリンター１０２のプリンターエンジンを直接制御する。印刷データ及びプリンター状態コマンドは、NEB１０１からコネクタ１７０を介して、プリンターインターフェースカード１５０へ入力され、また、プリンター状態情報はプリンターインターフェースカード１５０からやはりコネクター１７０を介して得られる。NEB１０１はこの情報を、フェースプレート１０１ｂのネットワークコネクタを介して、LAN１００上で通信する。同時に、プリンター１０２は、従来のシリアルポート１０２a及びパラレルポート１０２bから、印刷データを受信することもできる。
【００２６】
図３は、NEB１０１とプリンター１０２とLAN１００との電気的接続を示すブロック図である。NEB１０１は、LAN１００へはLANインターフェースを介して、プリンター１０２へはプリンターインターフェースカード１５０を介して直接接続されている。本発明の実施の形態においては、このプリンターインターフェースカード１５０は、Peerless System社から販売されている、PeerlessＬＢＰ−８６０／１２６０−エクスターナル・スタンダードI/Oボードインターフェースである。この詳細は、１９９４年３月１０日付けPeerless System社PeerlessスタンダードI/Oインターフェース設計仕様書、改訂版２．０７aに記されている。このボードはインテル８０９６０ＫＢ−２０マイクロプロセッサー１５１を搭載している。これは３２ビット機であるが、マイクロプロセッサー１５１はNEB１０１とのデータのアクセスを２バイト幅（１６ビット）で、NEB１０１に設置されている共有メモリ２００を介して行う。マイクロプロセッサー１５１は、実際に印刷機構を動かす、プリンターエンジン１６０とも通信する。
［NEBの物理的配列］
図４は、好ましいNEB１０１の構成要素の大小、及びその主要な構成要素の物理的配列を示す図である。NEBカードは縦３．９３インチ、横５．６インチである。NEB１０１は、プリンターインターフェースに接続するプリンターインターフェースカードコネクタ１７０（Peerlessプリンターインターフェースカードの場合、８０ピンコネクタ）と、LAN１００に接続可能なコネクター３０１及び３０２を持つフェースプレート３００とを含む。また、このフェースプレートは、４状態発光ダイオード（LED）３０３乃至３０６を含む。NEBカード上には、トランシーバー１７１と、水晶発振器１７２と、マイクロプロセッサー１７３と、アービター制御論理回路４００と、フラッシュ消去可能プログラム可能ROM（EPROM）１７４と、ダイナミックRAM（DRAM）１７５と、第１スタティックRAM（SRAM）（共有メモリ）２００と、第２SRAM１７６と、ネットワーク及びNEB制御論理回路５００と、シリアルポートコネクタ６００とが配置されている。これらの構成要素それぞれについては、後で詳細に説明する。
【００２７】
図５は、大きさが縦４．５６インチ、横１．２８インチのフェースプレート３００を更に詳しく示す図である。上記のとおり、NEB１０１はLAN１００にコネクタ３０１及び３０２を介してつながれている。好ましくは、コネクタ３０１は１０Base-Tを接続することができるＲＪ−４５コネクタであり、コネクタ３０２は１０Base-2を接続することができる簡易同軸コネクタである。状態LED３０３は、NEB１０１がLAN１００上にデータを送信しているときに点灯し、状態LED３０４は、NEB１０１がLAN１００からデータを受信しているときに点灯する。状態LED３０５は、ＲＪ−４５コネクタ３０１がLAN１００に接続しているときに点灯し、また、状態LED３０６は、NEB１０１の自己診断中に点灯する。搭載穴３０７は、NEB１０１をプリンター１０２へ固定するためのねじを受けるためのものである。
［NEBの構成］
NEB１０１の構成を図６に示す。＋５Ｖ電源１７７からNEB１０１へ電気を供給することによって、すべての回路に電気が供給される。＋５Ｖの電圧は、電圧変換装置１７８及び１７９へも供給される。電圧変換装置１７８は、−９Ｖの電圧をトランシーバー１７１へ供給し、また電圧変換装置１７９は、＋１２Ｖの電圧をフラッシュEPROM１７４へ「フラッシュするために」（つまり、EPROMを再プログラムするために）供給する。
【００２８】
ネットワーク・NEB制御論理回路５００は、ネットワーク制御部５１０及びNEB制御論理回路５２０を含む、単一の１４４ピンアプリケーション用集積回路（ASIC）であることが好ましい。ネットワーク制御部５１０はナショナルＤＰ８３９０２A「ST-NIC」Ethernetコントローラーと互換性のある、NCRマクロセルであり、このコントローラーの詳細はナショナルセミコンダクター社の１９９３年版ローカルエリアネットワークデータブック（Local Area Network Data Book）、ナショナルセミコンダクターp/n４０００５５に示されるとおりである。ネットワーク制御部５１０は、CSMA/CD-タイプ（キャリア検知多重アクセス／衝突検出）ローカルエリアネットワークとインターフェースするように設計されている。
【００２９】
ネットワーク制御部５１０は、ＲＪ−４５コネクタ３０１に直接接続し、同軸コネクタ３０２へは、トランシーバー１７１を介して接続する。同軸コネクタ３０２は、ナショナル半導体ＤＰ８３９２同軸トランシーバーインターフェースであることが好ましく、その詳細は、ナショナルセミコンダクター社のローカルエリアネットワークデータブックに示されている。ネットワーク制御部５１０はまた、Ethernetデータのための入出力パケットバッファとして利用される、８ＫＢのSRAM１７６につながれている。このメモリのアクセス時間は、約７０ns以下であることが好ましい。
【００３０】
NEB制御論理回路５２０は、ネットワーク制御部５１０と、マイクロプロセッサー１７３と、メモリ装置であるEPROM１７４およびDRAM１７５との間のインターフェースを提供する。また、NEB制御論理回路５２０は、不揮発性RAM（NVRAM）１８０とインターフェースする。このNVRAM１８０は、NEB１０１を内蔵するプリンター１０２のパワーサイクリング中の初期化データの記憶部のために使用される、２５６バイトの電気的に消去可能プログラム可能シリアルメモリである。プリンターが最初にネットワークにインストールされたときに、プリンターがオフ・オンの一巡をした後に、NEBソフトウエアがインストール用のパラメーターをリカバーするために、ネットワーク及びプリンター構成パラメーターがNVRAM１８０へ書き込まれる。
【００３１】
また、NEB制御論理回路５２０は、デバッグを行うためにシリアルデータ列を送受信するためのデータ受信ピン６０１（ＲＸ）とデータ送信ピン６０２（ＴＸ）とを持つ、シリアルポートコネクタ６００へつながれている。NEB制御論理回路５２０は、現在受信データ線上にあるデータを感知し、定間隔でシリアルビットをサンプリングする。この方法は、後に詳しく説明する。
【００３２】
NEB１０１の中央処理部はマイクロプロセッサー１７３であり、好ましくは、インテル８０C１８８EA−２０８−ビットプロセッサーである。このプロセッサーの詳細は、インテル社の８０C１８６EA／８０１８８EAユーザーマニュアル、インテルp/n２７０９５０−００１に記されている。このプロセッサーは、８ビットプロセッサーで、ダイレクトメモリアクセス（DMA）、割り込み機能、タイマー、及びDRAMリフレッシュ制御機能を持つ。AMD８０C１８８−２０８−ビットマイクロプロセッサーのような、他のプロセッサーを代わりに使用してもよい。２５６ＫＢのフラッシュEPROM１７４及び５１２ＫＢのDRAM１７５は、NEB制御論理回路５２０を介してマイクロプロセッサー１７３につながれており、３２ＫＢのSRAM２００（プリンターインターフェースカード１５０と共有されている）は、アービター制御論理回路４００を介してマイクロプロセッサー１７３につながれている。４０ＭＨｚ、５０ｐｐｍの水晶発振器１７２は、プリンターインターフェースカード１５０のマイクロプロセッサー１５１へ供給されるクロック信号と、非同期で完全に異なるクロック信号を、マイクロプロセッサー１７３に供給する。
【００３３】
マイクロプロセッサー１７３は、制御ファームウエアと印刷アプリケーションソフトウエアを記憶するフラッシュEPROM１７４に記憶された命令を実行する。電源投入時の自己診断（POST）を終えると、コードは選択的に高性能５１２ＫＢDRAM１７５へ移動する。このDRAM１７５は、実際の実行では、約８０nsのアクセス時間を持つことが好ましい。後述するように、LAN１００からフラッシュEPROM１７４を、再プログラム、つまり、「フラッシュ」することが可能である。
【００３４】
図７は、フラッシュEPROM１７４に記憶されているコードブロック、つまりモジュールの数例を示す図である。XPLモジュールは、プリンター１０２とNEB１０１間に標準化されたインターフェースを供給する。MLID（マルチリンクインターフェースドライバ）は、ネットワーク接続の最下層である専用コード（ハードウエア補助モジュール、又はHSM）の一部と共にリンクする、Novellコード（メディア補助モジュール、又はMSM）の一部である。また、LSL（リンク補助層）は、下層のMLIDとその上層にあるいくつかのプロトコルスタック間のマルチプレクサとして機能する、Novellコードの一部である。CNETXは、ローカルDOSのような機能呼び出しを、OPEN、READ、WRITE、CLOSEのようなファイル機能を提供するネットワーク機能呼び出しへ変える、専用コードである。
【００３５】
PRETASKモジュールは、以下に示すように、いかなるフレームタイプが上記の様々なプロトコルスタックのどれに関連するかを識別する。MEB１０１は複数のプロトコルスタックを補助するため、このモジュールはNEB１０１が作動しているかぎり存在する。
NovellのIPX/SPXプロトコルスタックは、フラッシュEPROM１７４に含まれており、SAPつまりサービスアドバタイジングプロトコルによって補助されている。SAPは、アクティブ及び非アクティブなネットワーク要素をリストにするファイルサーバーのバインダリー（bindery）へ、機器がそれ自身を登録できるようにした、Novellのコンセプトである。プリントサーバーはある特殊なバインダリー項目であるため、SAPはNEB１０１をCPSOCKETを介して登録し、また、NEB１０１がプリントサーバーとして構成されている場合には、SAPはプリントサーバーをNetWareバインダリーにも登録する。
CPRINTSERVERは、Novellプリントサーバーアプリケーションが専用に実行する。このモジュールは自己発生印刷バナー（banner）と、ユーザーへの完了及び例外状態の通知と、印刷データ及び情報コマンドのプリンターエンジンへの送信とを提供する。これは、CPRINTSERVERがローカルプリンター（つまり、NEB１０１が内蔵されているプリンター１０２）の作動のみを行い、遠隔地のRPRINTERを動かすことができないという点で、Novellのプリントサーバーとは異なる。このプログラムは、印刷ジョブを継続するための印刷データチャンネルを所有している。RPRINTERは、NovellのRPRINTERプリントアプリケーションが専用実行する。このモジュールは、NovellプリントサーバーアプリケーションによってデータをLAN１００の何処かへ送信する、従属アプリケーションである。
【００３６】
TCP/IPプロトコルスタックは、その内部にユーザーデータグラムプロトコル（UDP）と、逆アドレス分解プロトコル（RARP）と、BootP補助とを持つ。INTERRUPTは、TCP/IPタスクの為の割り込み取り扱い部であり、TIMERTICKはUNIXのTCP/IPネットワークタスクのためのタイマーチック（timer tick）である。LPRINTSERVERはTCP/IPプリントサーバーアプリケーションであり、印刷ジョブを継続するための印刷データチャンネルを所有している。
【００３７】
CPSOCKETプログラムは、全てのプロトコルスタックのために動作する。プログラムは接続リクエストや、データダウンロードリクエストや、遠隔地の装置からのサービスのリクエスト等に応答し、中間処理通信を介して他のタスクへ状態及び制御を供給する。典型的なCPSOCKETは、NEB１０１とプリンター１０２間の状態及び制御チャンネルを持っているため、状態チャンネルを介してプリンター状態を得る機能を持つのは、このタスクだけである。CPSOCKETは、Novellオリエントの状態と制御機器（CPNET）間、又はUNIXオリエントの状態と制御機器（cpnet）間の、ネットワーク接続及びパケットの内容を取り扱う。
【００３８】
MONITORは、タスクの生成と、タスクの終了と、マイクロプロセッサーディスパッチ（microprocessor dispatch）とを行う、専用マルチタスクモニターである。MONITOR はまた、メモリ管理サブモジュールMEMGET及びMEMFREEを持つ。RESIDENTは、NVRAM読み込み及び書き込み、FLASHコード、ROMベースのデバッガー、ハードウエアタイマーチック、及び他の基本的な機能などの、一般的なサービスを提供する、ルーチンのブロックである。POSTは起動時の自己診断モジュールで、電源供給開始時のNEBハードウエア及びソフトウエアの保全度を確認する。
【００３９】
フラッシュEPROM１７４は、ネットワークボードや、ハードウエア構成や、ボード修正番号などに独特の、メディアアクセス制御（MAC）アドレスのようなボード不変の情報及びソフトウエアバージョン番号のような可変情報を記憶する、ネットワーク識別ファイル（NIF）ブロックも記憶する。NIFブロックの情報は、フラッシュEPROM１７４が互換性の無いイメージデータで再プログラムされていないことを確認する為に使用される。このNIFブロックは、後で図１３を参照して詳しく説明する。
【００４０】
NEB１０１とプリンターインターフェース回路１５０間の全ての通信は、３２ＫＢの共有SRAM２００を介して行われる。アービター制御論理回路４００は、好ましくは単一の１００ピンASICであり、プリンターインターフェースマイクロプロセッサー１５１による２バイト幅のメモリアクセスと、NEBマイクロプロセッサー１７３による１バイト幅のメモリアクセスとの調整を行う。なお、それぞれのメモリアクセスは、完全に独立したものである。
【００４１】
一般的に言えば、マイクロプロセッサー１７３の８ビットデータバスが搭載されたNEB１０１は、バス制御論理回路４１０と通信し、また、マイクロプロセッサー１５１の３２ビットデータバスが搭載されたプリンターインターフェースカード１５０はバス制御論理回路４２０と通信する。それぞれのバスからのメモリアクセスは、共有メモリアービター４３０を経由しておこなわれ、この共有メモリアービター４３０はどちらのバスが優先されるべきかを判断し（後で説明するアービトレーション技術による）、優先権のあるバスがSRAMインターフェース４４０を介してSRAM２００へアクセスすることを許可する。割り込み制御レジスタ４５０は共有メモリアービター４３０を介してアクセスされ、一方のマイクロプロセッサーが他方のマイクロプロセッサーへ割り込めるようにする。
［NEBの機能性］
大まかに言えば、NEB１０１は、プリンター１０２をLAN１００へつなぎ、プリンター１０２を応答可能でインタラクティブなネットワークメンバーにする、通話型ネットワーク回路ボードである。NEB１０１は、印刷ジョブ情報及び状態リクエストをLAN１００から受信し、印刷データ及び状態コマンドを実行するためにプリンター１０２へ送信し、状態情報をプリンター１０２から受信し、更に、その状態情報をLAN１００へ返す。
【００４２】
従って、NEB１０１はRPRINTER遠隔プリンターサービス及びPSERVERプリントサーバー機能を実行するだけでなく、様々な種類の情報及び制御特性をネットワークのメンバーに提供することができる。NEB１０１を介して、ネットワークメンバーは、印刷ジョブの数や、１つのジョブ当たりのページ数、１分当たりのページ数、１つのジョブ当たりの時間、１日当たりの全ページ数、１日当たりのジョブの数など、NEBに記憶されている非常に多くの状態情報にアクセスすることができる。更に、例えば、ネットワークに接続されたＰＣからプリンターのフロントパネル機能を試験するなど、ネットワークからプリンター１０２へ、多量の制御情報が供給されることもある。
【００４３】
ネットワークトラフィック（network traffic）の全ては、トランシーバー１７１を介してネットワーク制御部５１０とインターフェースするBNCコネクタ３０２もしくは、ネットワーク制御部５１０に直接インターフェースするＲＪ−４５コネクタ３０１のどちらかを介して、NEB１０１に入出力される。ユーザーがスイッチの位置を動かす必要性を省くために、NEB１０１は、上記２つのうちのどちらのコネクタがネットワークにつながれているかを自動的に検出する、ハードウエア及びソフトウエアを含む。ネットワーク通信は、選択されたコネクタとボードの残りとの間で、ネットワーク制御部５１０と、選択されたコネクタ上のネットワークトラフィックとマイクロプロセッサー１７３のデータバスとの間のデータの流れを制御する、NEB制御論理回路５２０とを用いて行われる。
【００４４】
マイクロプロセッサー１７３によって実行される全てのソフトウエアモジュールは、フラッシュEPROM１７４に格納されている。タイマーチックやNVRAM読み込み等のように、常に必要とされる下層モジュールのいくつかはEPROM１７４から直接実行することもできるが、ほとんどの部分について、マイクロプロセッサー１７３はソフトウエアモジュールをフラッシュEPROM１７４から直接実行することはせず、これら必要なモジュールをDRAMから実行する為に、選択的にDRAM１７５へロードする。こうすることにより、NEB１０１の構成を柔軟性のあるものにするために、DRAM１７５から実行するようにフラッシュEPROM１７４からリトリーブされるこれら特定のモジュールを選択することができる。
【００４５】
例えば、多くの通信プロトコルタイプがLAN１００でブロードキャストされているため、NEB１０１はそのフラッシュEPROM１７４中に、多重プロトコルを補助するためのソフトウエアモジュールを持つ。NEB１０１は、使用されているプロトコルのタイプを判定するために、異種ネットワーク上のネットワークトラフィックを観察し、判定したプロトコルに対応するプロトコルスタックをDRAM１７５へロードする。
【００４６】
新しいプロトコルスタックを含む可能性のある新しいイメージデータでフラッシュEPROM１７４を再プログラムすることは、DRAM１７５を介しても行われる。ネットワーク又はシリアルポートコネクタ６００から受信されるコマンドなどの、再プログラムの為の新しいイメージデータ及びコマンドが受信されると、ソフトウエア再プログラムモジュールがEPROM１７４からDRAM１７５へロードされる。マイクロプロセッサー１７３は、このモジュールをDRAM１７５から実行し、新しいファームウエアイメージデータがNEB１０１の構成と互換性があることを確認し、互換性があると判断すると、EPROM１７４を以下に詳しく示すように、再プログラムする。
【００４７】
DRAM１７５からロードされたプロトコルスタックを実行するマイクロプロセッサー１７３は、そのプロトコルを使用している他のLANメンバーと、ネットワーク通信を行うことができる。印刷ジョブデータはネットワーク制御部５１０によって受信され、NEB制御論理回路５２０を介してマイクロプロセッサー１７３へ送られる。マイクロプロセッサー１７３は、その印刷ジョブデータを共有メモリSRAM２００へ書き込み、プリンターマイクロプロセッサー１５１はその共有メモリSRAM２００からデータを読み出し、そのデータに従ってプリンターエンジン１６０を操作する。更に、マイクロプロセッサー１７３及び１５１は、それぞれお互いのマイクロプロセッサーの共有メモリの他の部分に、メッセージデータを書き込むことができる。
【００４８】
上記に説明したとおり、共有SRAM２００へのアクセスは、調停優先順位技術に基づいて、アービター制御論理回路４００によって調停される。アービター制御論理回路４００は、マイクロプロセッサーが共有SRAMに先着順にアクセスすることを許可し、また、高優先プロセッサーがアクセスを行っている間に待機状態を低優先プロセッサーに示すことにより、２つのマイクロプロセッサーの同時アクセスを互いにインターリーブする。２つのマイクロプロセッサーが全く同時にアクセスした場合には、NEB１０１のマイクロプロセッサー１７３が任意に優先される。
【００４９】
共有SRAM２００の大部分はリングバッファとして構成され、NEBマイクロプロセッサー１７３はそこに印刷データを書き込み、プリンターインターフェースマイクロプロセッサー１５１はそこから印刷データを読み込む。それぞれのプロセッサーがデータブロックを書き込み又は読み込む度に、プロセッサーがアクセスすべき次の場所を示すために、SRAM２００の他の場所に記憶されている「プット（put）」ポインターまたは「ゲット（get）」ポインタをそれぞれ更新する。
【００５０】
この構成により、プットポインタ及びゲットポインタをお互いに比較することにより、書き込みプロセッサーは書き込み可能な領域がメモリ中にあるか否かを判断することができ、読み込みプロセッサーは読み込むべき残りのデータが存在しているか否かを判断することができる。この２つのプロセッサー間の共有メモリの競合の回数を減らすために、NEBマイクロプロセッサー１７３は所定の時間、メモリへの書き込みを停止し（これに伴い、読み込み及びポインターの更新を停止する）、プリンターインターフェースマイクロプロセッサー１５１が追い付くまで、プロセッサー１５１が単独でメモリにアクセスするようにする。この動作は後で詳しく説明する。
【００５１】
シリアルポートコネクタ６００は、NEB１０１を外部コンピューターからデバッグできるようにするために設置される。シリアルポートコネクタ６００は、NEB制御論理回路５２０につながれており、シリアルポートコネクタ６００のデータ受信ピン６０１からシリアルデータを受け付け、マイクロプロセッサー１７３とビット単位でシリアルデータを通信する。また、シリアルデータの最初のビットが、そのマイクロプロセッサー１７３のマスク不可能な割り込みを作動させるように、マイクロプロセッサー１７３はNEB制御論理回路５２０を構成する。そして、マイクロプロセッサー１７３はシリアルデータのデータビットを８ビットのワードに組み立てる。更に、NEB制御論理回路５２０はマイクロプロセッサー１７３のデータバスを監視し、そのデータバス上に存在するデータのシリアル列を、シリアルポートコネクタ６００のデータ送信ピン６０２へ渡す。この動作は後に詳しく説明する。
［ネットワークハードウエア接続の自動検出］
ネットワークインターフェースカードは、一般的に、ネットワークケーブルをLANへ接続する為の、数種の異なるタイプの物理的接続手段を提供する。例えばNEB１０１は、１０BASE−２同軸ケーブルをつなぐことのできるBNCコネクタ３０２及び、１０BASE-T非シールドツイストペア（UTP）線をつなぐことのできるＲＪ−４５コネクタ３０１を有する。シールドツイストペア（STP）線の為のIBMデータコネクタや光ファイバーケーブルの為のＳＴ光ファイバーコネクタ等、他の物理的接続も可能である。
【００５２】
典型的には、ネットワークインターフェースカードが数個のコネクタの一つを介してLANに接続されたときは、LANとの接続を設定又は変更するユーザーは、データが適切なコネクタを通してやり取りされるように、LANケーブルを適切なコネクタに挿入しなければならないだけでなく、ハードスイッチ、又は「ジャンパー（jumpers）」の位置を物理的に変更しなければならない。
【００５３】
しかし、ユーザーの手違いによって、ジャンパーを変更することを忘れる可能性や、設定された接続にそぐわない状態にジャンパーを変えてしまう可能性がある。そのような場合、言うまでもなく、カードはネットワークと全く会話することができない。これらの問題を弁別して訂正するために、時間や、人力や、コンピュータ資源を無駄に費やす結果となる。どのコネクタがLANに接続されているかを自動的に感知し、そのコネクタを通してデータをやり取りするネットワークインターフェースカードは、接続の設定及び／又は変更処理を大幅に能率的にする。
【００５４】
本発明は、テストによって上記のようにハードウエアを自動検出し、コネクターそれぞれのネットワークへの接続性を調べ、そして一つのコネクターを選択することにより、ネットワーク通信がその選択されたコネクタとボード上のプロセッサ間で行われるようにする。概略としては、ネットワーク制御部は、第１のコネクタがネットワークに電気的に接続されていることを検出する第１検出部と、第２のコネクタが不適切に終端していることを示す「ジャバー（jabber）」ビットを記憶する、プロセッサーが読み出すことのできる第１レジスターとを含む。やはりプロセッサーが読み出すことのできる第２レジスターは、前記第１検出部が第１のコネクタがネットワークに電気的に接続されていることを検出したことを示す、「リンク良好（good-link）」ビットを記憶する。また、プロセッサーが書き込むことのできる制御レジスタは、選択ビットを記憶する。この制御レジスタは、記憶されている選択ビットに応じて選択信号を出力する。
【００５５】
マイクロプロセッサーはソフトウエアによって制御される選択処理を次の方法によって実行する。即ち、（１）第１のコネクタ（ここではＲＪ−４５、コネクタ３０１）を選択する選択信号を出力させるように、制御レジスタに選択ビットを書き込み、（２）リンク良好ビットを第２レジスタから読み出し、（３）リンク良好ビットがネットワークへの電気的な接続を示す時に選択ビットの状態を保持し、（４）リンク良好ビットがネットワークへの電気的な接続を示さない時に、第２のコネクタ（ここではUTP、コネクタ３０２）を選択する選択信号を出力させるように、制御レジスタに選択ビットを書き込み、（５）ジャバービットを第１レジスタから読み込み、（６）ジャバービットが第２コネクタの電気的に不適切な終端であることを示さない場合に、選択ビットの状態を保持し、（７）ジャバービットが第２コネクタが電気的に不適切な終端状態にあることを示す場合に、選択処理を繰り返す。この手順により、それはボードの電源が投入されてしばらくたった後に、選択処理を行なうことができる。一度選択されると、ボードに電力が供給されている間中保持される。
【００５６】
具体的には、図８を参照して説明すると、BNCコネクタ３０２（トランシーバー１７１を介して）と、ＲＪ−４５コネクタ３０１は、それぞれネットワーク制御部５１０のセレクタ５１１につながれている。ネットワークトラフィックは、セレクタ５１１の状態に応じて、バス１８１及びBNCコネクタ３０２又はＲＪ−４５コネクタ３０１を介して、マイクロプロセッサー１７３に入出力される。セレクタ５１１の位置は、制御レジスタ５２１の出力によって判断される。
【００５７】
ＲＪ−４５コネクタ３０１がLANに接続すると、電流がコネクターに供給される。従って、ネットワーク制御部５１０は、ＲＪ−４５コネクタ３０１が電気的にLAN１００に接続されていることをＲＪ−４５コネクタ３０１が判断するところを監視する、リンク良好検出部５１２を含む。８３９０２ネットワーク制御部においては、リンク良好検出部５１２は、開放ドレイン型（open drain）のＮ−チャンネルデバイスとして構成されている。電流がＲＪ−４５コネクタ３０１で検出されると、リンク良好検出部５１２からの出力は低くなり、状態LED３０５が点灯することにより、電気的に接続していることを示す。反対に、ＲＪ−４５コネクタ３０１に電流がない場合、リンク良好検出部５１２からの出力は高くなり、状態LED３０５は消灯する。リンク良好ビットは、NEB制御論理回路５２０のリンク良好レジスタ５２２にも入力される。これにより、マイクロプロセッサー１７３はリンク良好信号の状態を読み込めるようになる。
【００５８】
BNCコネクタ３０２などのBNCコネクタは、例えば、LANにT−タイプの同軸アダプタを用いてつながれたときなど、コネクタが適切に終端するまでジャバーし続ける。ネットワーク制御部５１０は、当業者に知られる方法でBNCコネクタ３０２でジャバリングがあるかどうかを検出するジャバー検出回路５１３を含み、その検出結果をジャバーレジスター５１４に書き込む。従って、ジャバーレジスタ５１４は、BNCコネクタ３０２が適切に終了したか否かを示すビットを含む。そして、このジャバービットはソフトウエアによって読み込まれる。
【００５９】
マイクロプロセッサー１７３は、フラッシュEPROM１７４に格納されているソフトウエアモジュールを実行することによって、セレクタ５１１の状態を制御する。制御の方法は、以下に図９のフローチャートを参照にして説明する。NEB１０１が投入された後（ステップＳ９００）、マイクロプロセッサー１７３は、０を制御レジスタ５２１にバス１８１を介して書き込むことにより、セレクタ５１１をＲＪ−４５の位置へ設定する（ステップＳ９０１）。プログラムはリンク良好レジスタ５２２の状態を読み込み（ステップＳ９０２）、そして、リンク良好レジスタ５２２に記憶されたビットが低レベルならば（電流を示唆する）、プログラムはＲＪ−４５コネクタ３０１がLAN１００に接続され、処理を抜けて、セレクタ５１１をＲＪ−４５の位置に残しておく（ステップＳ９０３、Ｓ９０４）。
【００６０】
リンク良好検出部５１２を構成するＮ−チャンネルデバイスのスイッチングにおいて、固有の遅れがあるために、電気的接続を検出するための充分な時間をリンク良好検出部５１２に与えることが必要である。従って、リンク良好レジスタ５２２に記憶されているビットが高レベルならば（電気的接続がないことを示す）、プログラムはリンク良好レジスタ５２２を繰り返し読み込み、読み出した内のどれかが低レベルならば、処理を抜けて、セレクタをＲＪ−４５の位置に留めておく（ステップＳ９０５−Ｓ９０６−Ｓ９０２）。しかし、読み込みを５００回繰り返してもリンク良好レジスタ５２２に記憶されているビットが高レベルである場合は、プログラムは１を制御レジスタ５２１へ書き込むことによって、セレクタ５１１をBNCの側に設定する（ステップＳ９０７）。
【００６１】
そして、プログラムはジャバーレジスタ５１４を読み込む（ステップＳ９０８）。ジャバーレジスタ５１４の状態が低レベルならば（BNCコネクタ３０２が適切に終端し、BNC接続があることを示す）、プログラムは処理を抜けて、セレクタ５１１をBNCの側に残しておく（ステップＳ９０９及びＳ９１０）。ジャバービットの状態が高レベルの場合（BNCコネクタ３０２が不適切に終端し、LAN１００に接続されていないことを示す）、プログラムはステップＳ９０１へ戻り、セレクタ５１１をＲＪ−４５の位置へリセットする。そして、ＲＪ−４５又はBNC接続が設定されるまで、プログラムは定期的に再実行される。
【００６２】
このように、NEB１０１はBNCコネクタ３０２とＲＪ−４５コネクタ３０１の間を断続し続け、特定のコネクタがLAN１００に接続されたことをトグルする度に確認する。この構成により、電源投入時（及び接続がなされるまで）に、NEB１０１は、操作者が実際にスイッチを変えることを必要とせずに、そのBNCコネクタ３０２又はＲＪ−４５コネクタ３０１がネットワークに接続されたか否かを判断することができる。従って、NEB１０１が、LAN１００につながれていないコネクタを通してLAN１００と通信しようとする可能性がなくなる。
【００６３】
本実施の形態において、電力が供給されている現サイクル中、選択されたハードウエア接続は保持される。電力が供給されている現サイクル中において選択がなされた後に、ハードウエア接続が有効でなくなったときを感知し、選択処理を繰り返し、コネクタを変更することを許可するソフトウエアを実行することは可能である。これにより、一つの接続から他の接続へのダイナミックな切り換えを可能にする。
［ネットワークプロトコルセンサー］
マルチプロトコルシステムにおける適切な操作を確実にし、またネットワーク上で使用されるプロトコル及びフレームタイプに関する不適切な前提を作らせないようにするために、NEB１０１は、ネットワークトラフィックで使用されるフレームタイプを決定し、NEB１０１が使用することのできる数種の異なるプロトコルのうちのある一つにこれらのフレームタイプを関連させるための自動プロトコル判断を使用する。特に、フラッシュEPROM１７４に格納されているPRETASKモジュールの使用を通じて、NEBマイクロプロセッサー１７３は、どのフレームタイプがネットワークトラフィックのために使用されているかを判断し、そのフレームタイプを数種の異なるプロトコルの一つに関連づけ、そのプロトコル及び検出されたフレームタイプを使用したネットワーク通信を続けるために、フラッシュEPROM１７４からプロトコルスタック（IPX/SPX又はTCP/IP等）をロードすることができる。
【００６４】
図１０乃至図１４は、この処理を説明する為の図である。図１０は、フラッシュEPROM１７４にロードされたPRETASKソフトウエアモジュールに基づいて、NEBマイクロプロセッサー１７３によって実行される処理ステップを示すフローチャートである。PRETASKは、異なってはいるが、PRESCANソフトウエアモジュールに似ている。PRESCANソフトウエアモジュールは、審査中の特許出願番号第０７／９７８，４０９の、「ローカルエリアネットワーク上で扱われるデータパケットの形式を適応判断する方法及び装置（Method And Apparatus For Adaptively Determining The Format Of Data Packets Carried On A Local Area Network）」に示されている通りである。
【００６５】
ステップＳ１００１で、マイクロプロセッサー１７３はMLID（マルチリンクインターフェースドライバ）をフラッシュEPROM１７４からDRAM１７５へロードし、MLIDを実行開始する。上記のとおり、MLIDはネットワークと通信する、最下層ソフトウエアである。したがって、MLIDはネットワーク線上で扱われるネットワークフレームパケットへの直接のソフトウエアインターフェースとして振る舞う。
【００６６】
ステップＳ１００２において、マイクロプロセッサー１７３はMLIDの上層にLSL（リンク補助層）をロードし、LSLを実行開始する。LSLは、下層のMLIDとその上層にロードされる様々なプロトコルスタックとの間の、マルチプレクサとして機能する。特に、LSLは、ネットワーク上でフレームパケットを運ぶ、様々なフレームタイプの登録を受け入れる。従って、例えばEthernet環境では、LSLは８０２．２、８０２．３、Ethernet_II、Ethernet_Snap等の登録を受け入れ、またToken-ring環境では、LSLは８０２．５、及びToken_Ring_Snapの登録を受け入れる。フレームタイプをLSLに登録することにより、LSLより上層のソフトウエアモジュールは登録されたフレームタイプに適合する全てのフレームパケットをモジュールに供給するように、LSLに命令する。
【００６７】
ステップＳ１００３において、マイクロプロセッサー１７３はLSLより上層にPRETASKをロードする。上記のとおり、PRETASKは、NEB１０１が通信を受け入れられた様々なプロトコルに、どのフレームタイプが関連するかを識別する。ステップＳ１００４で、LSLから受信するために、PRETASKはMLIDにサポートされた全てのフレームタイプを登録する。従って、本実施の形態におけるEthernet環境では、PRETASKは８０２．２、８０２．３、Ethernet_II、Ethernet_SnapをLSLに登録し、これにより、登録されたフレームパケットに適合する全てのフレームパケットをPRETASKに供給するように、LSLに命令する。
【００６８】
処理はステップＳ１００５へ進み、MLIDとLSLはネットワークのトラフィックを監視する。特に、ステップＳ１００５では、ネットワークはブロードキャストトラフィック手段を監視して、トラフィックの行き先が決定されていない（つまり、行き先はどこでもよい）ことを観察する。通常、ブロードキャストトラフィックは、行き先のMACアドレス、例えば１６進法のＦが１２並んでいるアドレスなどのグローバルな特定によって識別される。LANブロードキャストトラフィックが検出されるまでは、PRETASKは何もしない。
【００６９】
PRETASKを実行中のこの時点では、様々なソフトウエアモジュールの関係は図１１に示すとおりである。図から分かるように、それぞれが異なるフレームタイプを用いる異なるプロトコルを起動している機器１８２、１８３、１８４、及び１８５などの複数のネットワーク機器全てが、一つのLAN１００に接続する可能性がある。図１１において、機器１８２はNovelタイプの機器で８０２．２フレームタイプを使用するIPX/SPXプロトコルを起動しており、機器１８３はUNIXタイプのネットワーク機器でEthernet_IIフレームタイプを使用するTCP/IPプロトコルを起動しており、機器１８４はMacintoshタイプの機器でEthernet_Snapフレームタイプを使用するEtherTalkプロトコルを起動しており、機器１８５は不明のフレームで、８０２．３フレームタイプを使用するプロトコル機器である。言うまでもなく、図１１に示す組み合わせは図示のためだけのものであり、これに限られるものではなく、例えば、NovellのIPX/SPXが８０２．３フレームタイプ又は他のフレームタイプを使用することも可能である。ただし、それぞれのプロトコルが唯一のフレームタイプにのみ、関連づけられなければならない。
【００７０】
NEB１０１はまたLAN１００に接続されており、MLID１８６の上層にロードされたLSL１８７を含む。PRETASK１８８は、LAN１００上にブロードキャストされる異なるフレームタイプをそれぞれ登録したものとして示されている。従って、図１１に示すように、PRETASK１８８は、８０２．２を１８９に、Ethernet_IIを１９０に、Ethernet_Snapを１９１に、そして８０２．３を１９２に登録している。
【００７１】
LANブロードキャストトラフィックが検出されると、ステップＳ１００６へ進み、LSLはPRETASKへフレームパケットを供給する。ステップＳ１００７で、そのフレームパケットで使用されているプロトコルを識別するために、PRETASKはフレームのプロトコルのヘッダを復号する。このヘッダへのオフセットは、プロトコルが使用しているフレームタイプによって異なる。下記のテーブルは１６進法による値と、異なるプロトコルを識別するためのプロトコルのヘッダの数例を含む。
１６進法値                  プロトコルタイプ
０８００                          IP
０８０６                         ARP
８０９Ｂ                      EtherTalk
８１３７                      IPX/SPX
図１２はこの手順を示す。図１２から分かるように、ネットワーク機器１８２は、８０２．２フレームタイプを使用するブロードキャストフレームパケットを発する。図１１の１８９にPRETASKはLSLに８０２．２を登録しているため、LSLはそのフレームパケットをPRETASKに提供する。そのフレームタイプで使用されているプロトコルを判定するために、PRETASKは上記のテーブルを使用してそのフレームのプロトコルのヘッダーを復号する。
【００７２】
図１０のステップＳ１００８において、PRETASKは、LSLから受信したばかりのフレームタイプの登録を取り消す。従って、図１２の１８９aに示すとおり、PRETASKは８０２．２の登録を取り消す。
ステップＳ１００８では、全ての場合に登録を取り消す場合を示しているが、登録を取り消さないほうがより好ましい場合もある。特に、それぞれ異なるプロトコルがそれに関して、受け入れ可能なフレームタイプのリストを持つ場合である。IPX/SPX及びTCP/IPの受け入れ可能なフレームタイプの例を以下に示す。
IPX/SPX            TCP/IP
Ethernet_II            Ethernet_II
Ethernet_Snap        Ethernet_Snap
８０２．２
８０２．３
上記のリストから、２つのフレームタイプ（Ethernet_IIとEthernet_Snap）が、異なるプロトコルで使用可能であることが分かる。なお、同じフレームタイプを同じLAN上の異なるプロトコルで使用してもよい。従って、好ましいモードでは、ステップＳ１００６でPRETASKによって受信されたフレームタイプがLSLに登録されていないプロトコルで使用可能な場合は、ステップＳ１００８の登録取消は行われない（後に示すステップＳ１０１０を参照）。後で受信されたプロトコルをロードするために、先に登録されたものと異なる、後で受信されたプロトコルのフレームタイプをPRETASKによって適切に検出し、処理することができるため、この好ましいモードでは、LANで使用することのできる全てのプロトコルの検索及び操作をすることができる。
【００７３】
ステップＳ１００９において、PRETASKは、ステップＳ１００７で復号したプロトコルに対応するプロトコルスタックをロードする。図１２の例では、IPX/SPXプロトコルが復号されたので、PRETASKはフラッシュEPROM１７４からIPX/SPXプロトコルスタックをロードする。ロードする前に、プロトコルスタックは、LSLから受信したばかりのフレームタイプ、ここでは８０２．２で初期化される。
【００７４】
ステップＳ１０１０では、新たにロードされたプロトコルスタックは、例えば図１３に示すように、LSLに登録される。図に示すように、IPX/SPXプロトコルスタックは８０２．２をLSLに登録する。上記のように登録することによって、登録されたフレームタイプ（ここでは８０２．２）に適合する全てのフレームパケットを新たにロードされたプロトコルスタックに提供するように、IPX/SPXは、LSLに通知する。
【００７５】
そして、ブロードキャストトラフィックのために引き続きネットワークを観察するために、PRETASKはステップＳ１００５へ戻る。LSLが、PRETASKによって登録された残りのフレームタイプに適合するフレームパケットを見つけると、LSLは、図１０に示す処理を行うためにこれらのフレームタイプをPRETASKに供給する。このように、例えばTCP/IPプロトコルに関連するフレームタイプのような追加フレームタイプが見つかる度に、フラッシュEPROM１７４から適切なプロトコルスタックがロードされるように、これらのフレームはPRETASKによって処理される。
【００７６】
また、図１４に示すように、プロトコルスタックは既にロードされているため、ネットワーク上での操作を開始する。特に、PRETASKが完全に受け身で、ネットワーク通信をブロードキャストしないのに対し、IPX/SPXはそれに関するSAPリクエストをブロードキャストする。PRETASKによってロードされた他のプロトコルタスクは、それらに関連するリクエストをブロードキャストしてもよい。例えば、TCP/IPプロトコルスタックがロードされた場合、最も近くのネットワークサーバーからそのアドレスを得るために、RARPSをブロードキャストする。
［スマートフラッシュ］
ローカルエリアネットワークがより複雑になるにつれて、NEB１０１のようなネットワークインターフェースカードを、最新の技術を用いてグレードアップする必要性が出てきた。従って、NEB１０１は操作用ソフトウエアに組み込まれているため、そのソフトウエアを後でLAN１００から再プログラムすることができる。例えば、ネットワーク統括者は、統括者のＰＣ１０３から新しいデータをダウンロードすることによって、フラッシュEPROM１７４のROMファームウエアイメージデータを遠隔操作で変更することができる。その新しいデータは、例えば、パッチコードと、製造テストルーチンと、ファームウエア全体の更新と、異なる言語バージョンとを含む。
【００７７】
典型的なＰＣは、２つ以上のLANに接続されている。例えば、図１５に示すように、ＰＣ１０３はEthernetのLANであるLAN１００と、Token-ringLANであるLAN１９３とに接続しており、実際に両ネットワークのネットワーク統括者用ＰＣとして機能してもよい。それぞれのLANはまた、独立したNEBをそれぞれ内蔵する複数のプリンターに接続されていてもよい。また、他の再プログラム可能な機器を、これらのLANの一方又は両方に接続することもできる。従って、ネットワーク統括者が潜在的に再プログラムすることができる、複数のNEBや他の機器がある。
【００７８】
ある特定のNEBを再プログラムする場合、ネットワーク統括者はＰＣ１０３から、ネットワークに接続されている全てのネットワーク機器から適切なフラッシュターゲットを識別するために、そのネットワークのバインダリーをスキャンするためのプログラムを稼働する。適するフラッシュターゲットは、フラッシュ機能を持ち、Ethernet機器及びToken-ring機器を含む、NEBのような機器を全て含む。ネットワーク統括者は、再プログラムのために機器の一つを選択し、その機器とのネットワーク通信を確立する。そしてボード上のフラッシュEPROMは、新しいイメージデータでそれ自身を再プログラムする。
【００７９】
ネットワーク統括者が、ネットワークに接続されたいくつかの再プログラム可能ボードをそれぞれ含む、２つ以上のネットワークを統括している場合があるため、統括者は適切なイメージデータが目的のNEBに送られたことを確認しなければならない。従って、ネットワーク統括者が、NEB１０１上のフラッシュEPROM１７４を再プログラムしたい場合（NEBはEthernet LANに接続されている）、送信するイメージデータがEthernetイメージデータであることを確認し、NEB１０１の他の機能と互換性があることを確認しなければならない。
互換性がないイメージデータをダウンロードした結果は、破壊的なものでありうる。例えば、ネットワーク統括者が誤ってToken-ringイメージデータをNEB１０１にダウンロードし、その後にNEB１０１がフラッシュEPROM１７４をそのイメージデータで再プログラムした場合、フラッシュEPROM１７４はEthernet LAN１００上で通信を行うことが全くできなくなる。これはつまり、NEB１０１がLAN１００から再プログラムすることさえできないことを意味する。Ethernet LANに関しては全く「役立たず」のボードとなるわけである。例えば、ホストインターフェース構成（NEBとそれが内蔵されている周辺機器間のインターフェースのタイプ）や、製品構成（NEBのボードのタイプ）や、プロセッサー構成（ボード上のプロセッサーのタイプ及び速度）や、メモリ構成（ボードメモリ上の様々な部品のサイズ及び消去性）における非互換性は、問題となる可能性がある。従って、ある製品の前世代のものがある場合、新しい世代のものでしか動かないフラッシングソフトウエアはやはり「役立たず」のボードとなってしまうのである。
【００８０】
互換性のないイメージデータがダウンロードされた場合にこのような悲惨な結果を招かないようにするために、NEB１０１は、実際に再プログラムが行われる前に、ダウンロードされたイメージデータが互換性のあるものであるかを確認するソフトウエアコードを含む。具体的には、NEB１０１のフラッシュEPROM１７４は、NEB１０１のための構成情報を含むネットワーク情報ファイル（NIF）ブロックを含む、現プログラムイメージデータと、フラッシュEPROM１７４を再プログラムするためのソフトウエアモジュールとを記憶する。マイクロプロセッサー１７３はネットワーク通信を送受信し、そして新しいプログラムイメージデータをネットワークから受信した時に、マイクロプロセッサー１７３はその新しいプログラムイメージデータをDRAM１７５へダウンロードし、その新しいプログラムイメージデータがNIFブロック中の構成情報と互換性があることを確認し、そして、互換性が確認された場合に限ってフラッシュEPROM１７４を再プログラムする。
【００８１】
更に詳しくは、NIFブロックは、恒常的なアダプタ特有の構成情報を含み、それぞれの個別のNEBに特有のものである。一例としては、NIFブロックはフラッシュEPROM４１３中のメモリスペースのうち３２バイトを占め、それぞれ８バイトの４バンクに分けられる。図１６に示すように、NIFブロックは、MACアドレス情報バンクと、ボードバージョン及び識別情報バンクと、構成要素識別情報バンクと、一般情報バンクとを含む。
【００８２】
MACアドレス情報バンクは、その名が示すとおり、ボードに特有のMACアドレスを記憶する。ボードバージョン及び識別情報バンクは、４つのバンクに更に分割される。NEB以外のネットワークインターフェースカードをLANにつなぐことも可能なため、製品カテゴリーバンクはLANにつながれた製品のタイプを識別し、そしてボード修正バンクは製品の修正番号を識別する。
【００８３】
ネットワーク物理的媒体バンクは更に２つのバンクに分割される。これらは、ボードが使用されている物理的媒体（例えば、Ethernet、Token-ring、FDDIなど）を識別する物理的ネットワークバンクと、ボードが補助する物理的コネクタ（例えば、Ethernetネットワークの場合は１０baseTと、１０base２と、１０base５、そしてToken-ringの場合はUTP及びSTP）のタイプを識別する補助接続バンクである。ホストインターフェース方法バンクでは、ボードを内蔵する周辺機器（NEB１０１の場合は、プリンター１０２等）へのインターフェースのタイプを識別する。これらのインターフェースタイプの例としては、共用RAMや、小型コンピューターシステムインターフェース（SCSI）や、標準パラレルインターフェースや、ＲＳ−２３２Ｃシリアルインターフェースや、セントロニクスパラレルインターフェース等がある。
【００８４】
構成要素識別情報バンクもまた、いくつかの更に小さいバンクに分けられている。これらのバンクは、ボード上のROMや、DRAM及びNVRAMのサイズ及び細かさと、ROMの消去性を識別する。また、ネットワーク制御部（Ethernetの場合はＤＰ８３９０２チップ、Token-ringの場合はTI３８９Ｃ２５）及びホスト制御部（調停された共用RAM、ＮＣＲ５３Ｃ９０A SCSIコントローラー又はＮＣＲ５３Ｃ８０ SCSIコントローラー）が識別される。CPU識別バンクには、プロセッサーのタイプとクロックスピードが記憶される。最後に、一般情報バンクは、ハードウエア修正レベル等、ボードに関する追加構成属性を識別するための他のデータを記憶する。
【００８５】
次に図１７のフローチャートを参照して説明する。ネットワーク統括者のＰＣ上のCPFLASHプログラムがバインダリーをスキャンしたときに、NEB１０１のフラッシュEPROM１７４の再プログラミングが開始され（ステップＳ１４０１）、潜在的なフラッシュターゲットのリストを統括者に表示する。統括者はターゲットを選択し（ステップＳ１４０２）、CPFLASHはそのターゲットとの通信を確立して、新しいフレームウエアイメージデータをLANへダウンロードし、NEBのDRAM１７５に記憶する（ステップＳ１４０３）。
【００８６】
一度新しいイメージデータがDRAM１７５にダウンロードされると、現在実行されているプロトコルスタックはプログラムされようと（少なくとも潜在的に）しているので、プログラムされている間はネットワーク通信を行うことができないので、NEBマイクロプロセッサー１７３は、そのプロトコルスタックをインアクティブにする（ステップＳ１４０４）。マイクロプロセッサー１７３は次に、現在のNIFブロックをフラッシュEPROM１７４からDRAM１７５にコピーし（ステップＳ１４０５）、ソフトウエア再プログラミングモジュールを実行する。
【００８７】
そして、ソフトウエア再プログラミングモジュールは、新しいイメージデータが互換性があることを確認するために、現イメージデータNIFブロックに記憶されている情報（DRAM１７５にコピーされた情報）を参照して、その情報を新しいフレームウエアイメージNIFブロックに記憶されている情報と比較して、イメージデータが互換性チェックを行う（ステップＳ１４０６）。NIFブロックはNEB１０１に関する多量の情報を持っているため、様々なチェックを行うことによってこのような互換性を判断することができる。
【００８８】
最初の互換性チェックは、NIFブロックの物理的ネットワークバンクに記憶されたデータを参照することによって行う、新しいイメージデータが正しいネットワーク媒体のタイプか否かを判断するためのネットワーク媒体構成チェックを含む。同様に、２番目の互換性チェックは、NIFブロックのホストインターフェース方法バンクとホストインターフェース制御部バンクに記憶されたデータと新しいイメージデータとを比較することによって行う、新しいイメージデータが適切なホスト（例えば、共有RAM又はSCSI）にインターフェースするためのイメージデータであるか否かを判断するためのホストインターフェース構成チェックを含む。
【００８９】
３番目の互換性チェックは、NIFブロックの製品カテゴリーバンクとボード修正バンクを参照し、そのデータを新しいイメージデータと比較することによって行われる、新しいイメージデータがEPROMが内蔵されたボードのタイプの為のものであるか否かを判断するための製品構成チェックを含む。また、プロセッサー構成チェックは、新しいイメージデータがボード上のプロセッサーと互換性があるか否かを判断するために、NIFブロックのCPUバンクを参照することによって行なうことができる。更に、メモリ構成チェックは、新しいイメージデータがボードのメモリと互換性があるか否かを判断するために、NIFブロックのROMバンク、DRAMバンク、及び／又はNVRAMバンクに記憶されているデータを新しいイメージデータと比較することによって行なうことができる。NIFブロックに記憶された他の情報を使用することによって、他の互換性チェックを行うこともできる。
【００９０】
新しいイメージデータが互換性が無いと判断された場合、現プロトコルスタックは再度アクティブにされ（ステップＳ１４０７、Ｓ１４０８）、LAN１００を通して、ネットワーク統括者のＰＣ１０３にエラーを告げ、互換性が無いイメージデータを用いてNEB１０１を再プログラムする試みがなされたことを知らせる（ステップＳ１４０９）。
【００９１】
反対に、新しいイメージデータが互換性がある場合、ボード特有の情報（MACアドレスやボード修正番号等）を保持するために、新しいイメージデータのNIFブロックのボード不変部分が、現イメージデータのNIFブロックの対応する部分で置き換えられる（ステップＳ１４０７とＳ１４１０）。そしてプログラムは現イメージデータをフラッシュEPROM１７４から消去し、上記の処理によってオリジナルのNIFブロックを含んでいる、DRAM１７５に記憶された新しいイメージデータでフラッシュEPROM１７４を再プログラムする。
【００９２】
この構成により、互換性の無いイメージデータが誤ってLAN１００からダウンロードされた場合でも、マイクロプロセッサー１７３が、互換性の無いイメージデータでフラッシュEPROM１７４を再プログラムすることがなくなる。そればかりか、ネットワーク統括者が互換性の無いイメージデータでNEB１０１を再プログラムしようとした場合、NEB１０１は、互換性の無いことを知らせるメッセージをネットワーク統括者に送る。従って、このような人的なエラーに対応する、失敗することのないメジャーが、安価で効率的な方法で供給される。
［アービトレーション機器］
図１８乃至図２０は、プリンターインターフェースカード１５０又はボード上のNEBマイクロプロセッサー１７３からのアクセスリクエストに応答した、共有SRAM２００のアービトレーションを説明する図である。
【００９３】
図１８は、プリンターアドレス／データバス（A/Dバス）７０１と、印刷アドレスラッチイネーブル（ALE）信号７０２と、プリンターデータイネーブル（DEN）信号７０４と、プリンタークロック線７０５と、プリンター準備完了信号７０６とを示す。これらの信号は全て、プリンターインターフェースコネクタ１７０を介して、プリンターインターフェースカード１５０から受信される。具体的には、例えば、A/Dバス７０１は、プリンターインターフェースカード１５０に搭載されたプリンターマイクロプロセッサー１５１の為のA/Dバスである。プリンターALE信号７０２は、有効なアドレス情報がA/Dバス７０１上で運ばれた時を示す信号であり、そして、プリンターDEN信号７０４は、有効データ情報がA/Dバス７０１上で運ばれた時を示す信号である。プリンタークロック７０５はプリンターマイクロプロセッサー１５１の為の主要クロック信号で、プリンター準備完了信号７０６は、それが「偽」である場合に、メモリアクセスが完了していないことと、メモリアクセスが完了するまで続けるように、マイクロプロセッサー１５１が待機状態を挿入しなければならないことを示す信号である。
【００９４】
また、図１８には、NEBアドレス／データバス（A/Dバス）７１１と、NEB ALE信号７１２と、読み込み及び書き込み信号（ＷＲ及びＲＤ）７１４と、NEBクロック７１５と、NEB準備完了信号７１６とが示されている。NEB A/Dバス７１１は、マイクロプロセッサー１７３のための主要アドレスバスであり、NEB１０１に搭載された全ての構成要素のアドレス及びデータ情報を運ぶ。NEB ALE信号７１２は、有効なアドレス情報がA/Dバス７１１上に現れたときを示す信号であり、読み込み及び書き込み信号７１４は有効データ情報がA/Dバス７１１上に現れたときを示し、さらに、そのデータを読み込むか書き込むかを示す信号であり、NEBクロック７１５は水晶発振機１７２によって供給される主要クロック信号であり、NEB準備完了信号７１６は、それが「偽」である場合に、メモリアクセスがまだ行うことができないことと、メモリアクセスを行えるようになるまでマイクロプロセッサー１７３が待機状態を挿入するように、NEBマイクロプロセッサー１７３に知らせる信号である。
【００９５】
上記のとおり、プリンターマイクロプロセッサー１５１とNEBマイクロプロセッサー１７３は、共有SRAM２００を介して通信する。共有SRAM２００へのアクセスリクエストは、プリンターマイクロプロセッサー１５１とNEBマイクロプロセッサー１７３によって、A/Dバス７０１及び７１１上にそれぞれ発行される。そして上記のとおり、アービター制御論理回路４００によって調停される。更に詳しくは、図６を参照して説明したとおり、アービター制御論理回路４００は、NEB A/Dバス７１１上のバスアクセスを制御するためのバス制御論理回路４１０と、プリンターA/Dバス７０１上のバストラフィックを制御するためのバス制御論理回路４２０と、A/Dバス７０１およびA/Dバス７１１上のアクセスリクエストの調停を行うための共有メモリアービター４３０と、プリンターA/Dバス７０１とNEB A/Dバス７１１を、それぞれSRAMのためのアドレス及びデータバスにインターフェースするためのSRAMインターフェース４４０とを含む。これらの部分のそれぞれは、以下に詳しく説明する。
【００９６】
バス制御論理回路４１０は、ラッチされたアドレス情報７１９を提供するために、NEB ALE信号７１２に応答してNEB A/Dバス７１１上のアドレス情報をラッチする、ラッチ７１７を含む。復号部７２０は、読み込み及び書き込み信号７１４がアクティブであるときに、NEB A/Dバス上のアドレス情報が共有SRAM２００のアドレス空間に対応している場合に、NEBリクエスト信号（NREQ信号）７２１を提供するために、ラッチされたアドレス情報を復号する。
【００９７】
同様に、バス制御論理回路４２０は、プリンターALE信号７０２が高レベルであるときに、ラッチされたアドレス情報７２４を提供するために、プリンター A/Dバス７０１上のアドレス情報をラッチするラッチ７２２を含む。復号部７２５は、プリンターDEN信号７０４がアクティブであって、ラッチされたアドレス情報が共有SRAM２００のアドレス空間に対応している場合に、ラッチされたアドレス情報に応答し、プリンターリクエスト信号（PREQ）７２６を出力する。
【００９８】
共有メモリアービター４３０は、PREQアクセスリクエスト信号とNREQアクセスリクエスト信号を共通のクロック（ここではNEBクロック７１５）に同期させるための同期回路と、上記リクエスト信号のどちらかに断片的なクロックディレイを鋏み込む遅延回路と、最初に受信したリクエスト信号にアクセスを許可し、後で受信されたアクセスリクエストを延期する延期回路と、再同期回路とを含む。特に、NREQ７２１とPREQ７２６は共に、共通のクロックに同期させるためにNEBクロック７１５に同期させる同期回路に入力する。ここで示す一例では、プリンタークロック信号７０５に固有に同期されたPREQは、NEBクロック信号７１５に同期される。遅延信号７２９は、オフセットリクエスト信号を生成するために、アクセスリクエスト信号のどちらか一方（ここではプリンターからのアクセスリクエスト信号）に挿入される。遅延回路は、２つのアクセスリクエストが共に全く同時に発行された場合でも、一方のアクセスリクエストが延期回路７３０に他より必ず先に到着するように、２分の１クロック遅延の様な、断片的なクロック遅延信号を挿入する。
【００９９】
延期回路７３０は、第１及び第２のアクセスリクエスト信号に応じて、第１及び第２アクセス許可信号、PACK及びNACKを出力する。第１及び第２オフセットリクエスト信号で先に受信された順番に応じて、第１及び第２アクセス許可信号の厳密に一方がアクティブにされる。他の（つまり、後で受信された）オフセットリクエスト信号は、先に受信されたアクセスリクエスト信号の処理が終了するまで延期される。延期されたマイクロプロセッサーにアクセスが拒否されたことを示すために、準備未完了信号が発行される。例えば、NEBアクセスリクエストが、プリンターアクセスリクエストより後に受信された場合、延期回路７３０はプリンターにアクセス許可を与え、NEBからのアクセスを延期する。この場合、NEB準備完了信号７１６は取り下げられ、アクセス許可がおりるまで待機状態を挿入するように、マイクロプロセッサー１７３に示す。反対に、NEBアクセスリクエストが、プリンターアクセスリクエストより先に受信された場合、延期回路７３０はNEBにアクセス許可を与え、プリンターのアクセスを延期する。この場合、延期回路７３０はプリンター準備完了信号を遅らし、マイクロプロセッサー１５１にアクセス許可がおりるまで待機状態を挿入するように指示する。
【０１００】
プリンターのためのPACKアクセス許可信号は、同期しないように制御された信号をそれ自身のクロックに再同期するように、再同期回路７３１へ入力される。この再同期された信号はFPACKとして指示される。再同期されたアクセス許可信号FPACK及びNACKは、アクセス許可を受けたマイクロプロセッサーと共用SRAM２００との間の適切なインターフェースを提供する、SRAMインターフェース４４０に入力される。
【０１０１】
共用メモリアービター４３０は、Ｄタイプフリップフロップ及び標準の論理回路で構成することが好ましい。好ましい構成の一つを図１９に示す。図１９に示されるように、プリンターからのアクセスリクエスト信号７２６は、NEBクロック信号７１５にクロックされる、同期するＤタイプフリップフロップ７２８aに入力され、その後、第２のＤタイプフリップフロップ７２８bに入力する。同時に、NEBからのアクセスリクエスト信号７２１は、Ｄタイプフリップフロップ７２７aに入力され、その後、第２のＤタイプフリップフロップ７２７bに入力する。これら２つのフリップフロップ７２７a及びフリップフロップ７２７bは、アクセスリクエスト信号７２１に適した同期及び遅延を確認するために提供される。立下がり制動Ｄタイプフリップフロップ７２９は、プリンターからのアクセスリクエスト信号７２６に、１．５クロックの遅延を挿入するために供給されている。フリップフロップ７２９の出力は、アクセス許可信号がNEBに既に供給されている場合（つまり、NACK信号が高レベル）に供給されるリセット信号７３２によって、低レベルに保たれる。反対に、NEBに対してアクセス許可が下りていない場合、プリンターからのアクセスリクエスト信号は、PACK信号を形成するために、クロックスルー（clocked through）される。このPACK信号は、プリンタークロック７０５によってクロックされる再同期フリップフロップ７３１へ送られる。同時に、PACK信号は、クロックされたNEBアクセスリクエスト信号に連動するNANDゲート７３４に供給される。プリンターにアクセス許可が下りると、NANDゲート７３４は、アクセスリクエストがあったとしても、PACKが低レベルに変わるまで、NEBのアクセスが拒絶されたことを確認する。
【０１０２】
図１９に示す構成により、延期回路７３０が第１及び第２の許可信号を出力したとしても、一時に、これら２つの許可信号のうちのどちらか一方のみがアクティブにされる。つまり、プリンターにアクセス許可が下りると、NEBのアクセスは延期される。逆に、NEBにアクセス許可が下りると、プリンターのアクセスは延期される。
【０１０３】
図１８に戻ると、SRAMインターフェース４４０は再同期されたプリンターアクセス許可信号FPACKと、NEBアクセス許可信号NACKとを受信し、この信号のうちどちらがアクティブにされているかに基づいて、プリンターマイクロプロセッサー１５１とNEBマイクロプロセッサー１７３の間での、共有SRAM２００へのアクセスを調整する。
【０１０４】
更に詳しくは、図１８に示すとおり、NEBアクセス許可信号NACKはマルチプレクサ７３５へ供給される。このマルチプレクサ７３５は、ラッチされたNEBアドレス情報７１９又はラッチされたプリンターアドレス情報７２４のどちらかを、NACK信号に基づいて選択し、選択されたアドレス情報を内部アドレスバス７３６へ供給する。NACKがアクティブである場合、マルチプレクサ７３５は、ラッチされたNEBアドレス情報７１９の１３ビット全てを、内部アドレスバス７３６へ供給する。反対に、NACKがアクティブでない場合（つまり、プリンターがアクセス権を持つ）、マルチプレクサ７３５は、ラッチされたプリンターアドレス情報７２４の１３ビットの内、１２ビットを内部アドレスバス７３６へ供給する。第１３番目のビット、ここではAOは、ジェネレーター７４７によって、以下に示す方法で供給される。
【０１０５】
バッファ７３７は、内部アドレスバス７３６からのアドレス情報をSRAMアドレスバス７４０にバッファする。バッファ７３７はORゲート７３９の出力により、アクティブにされる。ORゲート７３９は、NEBアクセス許可信号NACKを入力の一つとして受け付ける。これにより、NACKが高レベルになるとすぐに、バッファ７３７は、内部アドレスバス７３６上のアドレス情報をSRAMアドレスバス７４０にバッファする。
【０１０６】
読み込み又は書き込みのどちらがリクエストされたかによって、つまり、読み込み又は書き込み信号７１４の状態に応じて、SRAM２００はデータ情報を、データバス７４１から受信またはデータバス７４１へ送出する。このデータ情報は、両方向バッファ７４２を介して内部データバス７４４へ送信される。両方向バッファ７４２は、NEBアクセス許可信号NACKを入力の一つとして受け付ける、ORゲート７４５からの出力によってアクティブにされる。従って、NACKが高レベルになると、ORゲート７４５の出力も高レベルになり、SRAMデータバス７４１から内部データバス７４４へのデータ情報の送信を許可することになる。内部データバス７４４上のデータ情報は、NEBアクセス許可信号NACKによってアクティブにされる両方向バッファ７４６を介して、NEB A/Dバス７１１へ送出される。NEBアクセス許可信号NACKは、読み込み又は書き込み信号７１４によって起動される復号部７２０から最終的に導き出されるため、バス７１１が有効なアドレスデータが出現することを期待せず、有効なデータ情報が出現することを期待するので、NEB A/Dバス７１１上のデータ情報のタイミングは適切である。
【０１０７】
従って、まとめると、NEBが共有SRAM２００にアクセスする許可を受けると、ラッチ７１７からのラッチされたアドレス情報は、マルチプレクサ７３５及びバッファ７３７を介して、SRAMアドレスバス７４０にバッファされ、データ情報は、両方向バッファ７４２及び７４６を介して、NEB A/Dバス７１１へ（から）SRAMデータバス７４１から（へ）バッファされる。NEBのためのアクセス操作が終了すると、プリンターからの延期されたアクセスリクエストが処理される。
【０１０８】
プリンターマイクロプロセッサー１５１が、共有SRAM２００にアクセスする許可を受けている場合には、NEBマイクロプロセッサー１７３が使用するのと同じ１３ビット幅のアドレスを、プリンターマイクロプロセッサー１５１が使用していたとしても、プリンターマイクロプロセッサー１５１はSRAM２００のデータバス幅と異なるものを持っているため、これらのビット幅の差を解決するために、上位又は下位バイトバッファが必要とされる。詳しくは、上記のとおり、プリンターマイクロプロセッサー１５１は、規則に基づいて１６ビット幅の共有RAMデータアクセスを通して外部機器と通信する、３２ビットのインテル８０９６０ＫＢRISCマイクロプロセッサーである。プリンターマイクロプロセッサー１５１の内部３２ビットフォーマットへの１６ビットアクセスの問題解決は、プリンターマイクロプロセッサーに依存する。しかし、８ビット幅の共有SRAM２００への、プリンターマイクロプロセッサー１５１からの１６ビットデータアクセスの問題解決は、SRAMインターフェース４４０及び上記の上位又は下位バイトバッファに依存する。この構造を以下に更に詳しく説明する。
【０１０９】
具体的には、ラッチ７２２でラッチされたアドレス情報については、マルチプレクサ７３５は１３ビット中の１２ビットを、内部アドレスバス７３６へ送信する。第１３番目のビット、ここではAOは、ジェネレーター７４７から供給される。ジェネレーター７４７は、ストローブ（strobe）ジェネレーター７５１からの下位ストローブ出力７５０及び上位ストローブ出力７５２によってアクティブにされる。ストローブジェネレーター７５１は、共有メモリアービター４３０からのFPACKアクセス許可信号の受信に応じて、２つの連続する信号、つまり下位ストローブ７５０及び上位ストローブ７５２を供給するように構成されている。下位ストローブ信号７５０はジェネレーター７４７へ供給され、ジェネレーター７４７は二値の０ビットを第１３番目のアドレスビットのために、マルチプレクサ７３５へ供給する。マルチプレクサ７３５は、これらの１３のアドレスビットを選択し、内部アドレスバス７３６へ出力する。内部アドレスバス７３６に関するアドレス情報は、上述したとおり、バッファ７３７を介してSRAMアドレスバス７４０へラッチされる。バッファ７３７は下位ストローブ７５０及び上位ストローブ７５２をその入力として含む、ORゲート７３９の出力によってアクティブにされる。従って、続く下位ストローブ７５０及び上位ストローブ７５２に応じて、ORゲート７３９はバッファ７３７へ信号を出力し、これにより、内部アドレスバス７３６上のアドレス情報が、SRAMアドレスバス７４０へ送信されることになる。
【０１１０】
上位アドレスストローブ７５２は、ジェネレーター７４７へも供給され、ジェネレーター７４７は二値の１を第１３番目のアドレスビットとして生成し、マルチプレクサ７３５へ供給する。マルチプレクサ７３５は、内部アドレスバス７３６へ出力する、これらの１３ビットを選択する。ORゲート７３９による上位ストローブ７５２の受信に続いて、この更新されたアドレス情報は、SRAM２００のアドレスバス７４０へ送出される。
【０１１１】
データ情報の取り扱いは、プリンターマイクロプロセッサー１５１によって読み込み、書き込みのどちらがリクエストされたかによって変わる。書き込みの場合、ストローブジェネレーター７５１は、バッファ７５４へ下位ストローブ信号７５０を供給する。バッファ７５４はプリンターA/Dバス７０１に関するデータ情報の下位バイトを内部データバス７４４にバッファする。そしてプリンターアクセス許可信号FPACKをその入力の一つとして受け入れるORゲート７４５の出力によってアクティブにされる両方向バッファ７４２を介して、このデータ情報はSRAMデータバス７４１にバッファされる。従って、プリンターA/Dバス７０１上にあるデータ情報の下位バイトはバッファ７５４を介して、内部データバス７４４、それからSRAMデータバス７４１にバッファされる。
【０１１２】
プリンターA/Dバス７０１上にあるデータ情報の上位バイトは、ストローブジェネレーター７５１からの上位ストローブ７５２によってアクティブにされるバッファ７５５によってバッファされる。上記と同様に、データ情報の上位バイトは両方向バッファ７４２を介して、内部データバス７４４、それからSRAMデータバス７４１に送信される。
【０１１３】
プリンターマイクロプロセッサー１５１がSRAMデータの読み込みをリクエストした場合、下位ストローブ信号７５０と上位ストローブ信号７５２はそれぞれ遅延回路７５６及び７５７によって遅延され、遅延されたストローブはそれぞれラッチ７５８及び７５９を制御する。これらのラッチは、SRAM２００のデータバス７４１から供給された、それぞれ下位及び上位バイトをラッチし、上位及び下位バイトをプリンターA/Dバス７０１へアセンブルし、アセンブルされたデータ情報をプリンターマイクロプロセッサー１５１に供給する。
【０１１４】
従って、要約すると、プリンターマイクロプロセッサー１５１が共有SRAM２００へのアクセスを許可されると、ラッチ７２２にラッチされたアドレス情報はSRAM２００のアドレスバスに供給され、また、SRAM２００へ書き込まれた（または、SRAM２００から読み込まれた）データ情報は、下位及び上位バッファ７５４及び７５５によって、SRAMデータバス７４１用のデータ情報へ分解される（または、ラッチ７５８と７５９によって、データバス７４１からのデータ情報からアセンブルされる）。プリンターマイクロプロセッサー１５１によるアクセスが終了すると、NEBからの延期されていたアクセスリクエストが処理される。
【０１１５】
ORゲート７６０は、チップ選択信号７６１を共有SRAM２００へ出力する。ORゲート７６０への入力は、下位アドレスストローブ７５０と、上位アドレスストローブ７５２と、NEBアクセス許可信号NACKである。従って、これらの信号のどれかに対応して、チップ選択信号７６１は発行される。
図２０は、アービター制御論理回路４００に入力される信号のタイミングを示す、タイミング図である。詳しくは、プリンター側では、上記のとおり、アービター制御論理回路４００には、プリンタークロック７０５と、プリンターALE信号７０２と、プリンターA/Dバス７０１と、プリンターDEN信号７０４と、プリンター準備完了信号７０６とが供給される。共用SRAM２００のアドレス空間に対応し、プリンターALE信号７０２が高レベルになったときに有効でありラッチされ、プリンターDEN信号７０４が低レベルになったときにプリンターリクエスト信号７２６（図１８）を生成する、プリンターA/Dバス７０１上のアドレス情報に対応して、アービター制御論理回路４００の延期回路７３０は、プリンター準備完了信号７０６を生成する。これにより、SRAM２００へのアクセスが許可され、プリンターDEN信号が高レベルになることによって示される有効データがプリンターA/Dバス７０１上に現われるまで、プリンターマイクロプロセッサー１５１は待機状態を発行するようになる。
【０１１６】
NEB側では、共用SRAM２００のアドレス空間に対応し、NEB ALE信号７１２が低レベルになったときに有効でありラッチされ、NEB書き込み信号７１４（不図示）が低レベルになったときにNEBリクエスト信号７２１を生成する、NEB A/Dバス７１１上のアドレス情報に応答して、SRAM２００へのアクセスが許可され、有効データがNEB A/Dバス７１１上に現われるまで、NEB準備完了信号７１６は生成される。
［共有メモリ内のバス競合の削減］
上記のとおり、アービター制御論理回路４００は、NEB１０１の設計に欠くことのできないものであり、その内部で、ある与えられた時点で一つのプロセッサーのみが、共有SRAM２００へアクセスすることを許可する。これにより、同じメモリセルへの同時アクセスは回避され、データ破壊を防ぐことができる。しかし、この調停は、必要上、メモリー列全体について行われ、個々のメモリセルについて行われるわけではない。従って、２つの参照されたアドレスがお互いに異なっていたとしても、一方のプロセッサーは、他方のプロセッサーがメモリにアクセスしている間、待たなければならない。これはメモリアクセス時間を非常に遅くすることとなり、特に、印刷データがネットワークから、NEBマイクロプロセッサー１７３によって、プリンターマイクロプロセッサー１５１へ、共有SRAM２００を介して送信されているときは顕著である。
【０１１７】
図２１は、SRAM２００中の使用可能なメモリが、どのように論理スペースに分割されているかを示す図である。印刷ジョブデータや、コマンドや、状態リクエストを含む、NEB１０１からプリンター１０２へ送信された全てのデータは、NEBマイクロプロセッサー１７３によって、プリンターデータ領域２０１へ書き込まれる。この領域からは、プリンターマイクロプロセッサー１５１によってデータが読み込まれている。反対に、プリンター１０２からNEB１０１へ送信された全てのデータは、プリンターマイクロプロセッサー１５１によって、メッセージデータ領域２０２へ書き込まれる。この領域からは、NEBマイクロプロセッサー１７３によってデータが読み込まれる。
【０１１８】
図２１に示すように、プリンターデータ領域２０１は、リングバッファとして構成されている。この領域においては、最後に達したときに、アドレス付与が自動的に最初から再スタートするように、線形メモリーアレイは巡回してアドレス付与される。このようなメモリ構造は２つのポインタを必要とする。一つは「プット」ポインタで、次にデータを書き込むアドレスをマークし、もう一つは「ゲット」ポインタで、次のデータを読み込むアドレスをマークする。これらのポインターの値は、SRAM２００中の状態メッセージ領域２０３に記憶されている。送信側のプロセッサーは、リングバッファに新しいデータを書き込む度にプットポインタの値を進めることによって、プットポインタの値を制御する。また、受信側のプロセッサーは、データをコピーして取り出す度に、ゲットポインタの値を進めることによって、ゲットポインタの値を制御する。
【０１１９】
データは、リングバッファに２５６バイトのブロック単位で、次のブロックの始まる場所を示すプットポインタ及びゲットポインタと共に書き込まれる。例えば、図２１において、プットポインタはブロック２０１１を示し、そのブロックが、NEBマイクロプロセッサー１７３が書き込むことのできる次のメモリ領域であることを示す。また、ゲットポインタはブロック２０１２を示し、そのブロックが、プリンターマイクロプロセッサー１５１が次に読み込むべきメモリ領域であることを示す。データブロックをメモリに書き込む前に、NEBマイクロプロセッサー１７３は、プットポインタ及びゲットポインタの値を状態メッセージ領域２０３から読み込み、リングバッファ中に使用可能な領域があるか否かを判断するために、これらの値を比較する。同様に、プリンターマイクロプロセッサー１５１は、プットポインタ及びゲットポインタの値を状態メッセージ領域２０３から読み込み、読み込むべきデータがあるか否かを判断するためにこれらの値を比較する。
【０１２０】
従って、一方のプロセッサーから他方のプロセッサに、リングバッファを使用してデータを送信する場合において、受信側のプロセッサーは送信側のプロセッサーを「リングをまわりながら」追跡し、書き込まれたデータを読み出す。受信側のプロセッサーは運転しているプリンターの速さによって制限を受け、送信側のプロセッサーは、通常、受信側のプロセッサーが読み出しするよりも速い速度で書き込むため、従来のシステムにおいては、プットポインターがリングを回って、後にあるゲットポインタに追い付いてしまう傾向がある。このような場合、送信側プロセッサーは、リングバッファのメモリー空間が使用可能になるまで待つ。この待機時間に、従来のシステムにおいて、送信側のプロセッサーは、空間が使用可能になったか否かを判断するために、プットポインター及びゲットポインターを周期的に読み込み、比較する。送信側のプロセッサーによるこのようなポーリングは、送信側のプロセッサーが共有メモリにアクセスしてポインターの値を読み込まなければならないために、受信側プロセッサーの処理速度を低下させる。これによってプリンターによるアクセスが妨害され、システム全体の機能を低下させる。
NEB１０１では、プットポインタをゲットポインタよりも一定量以上先にならないようにし、ゲットポインタが追い付くまで待機することによって、バスの競合は削減される。NEBは、ゲットポインタがプットポインタに追い付いた時を判断するたの共有SRAM２００のポーリングせず、他の機器に依存する。ここでは割り込み制御レジスタ４５０が、ゲットポインタが追い付いた時の通知をする。特に、プリンターインターフェースの特徴として、印刷データは、プリンターが受信通知を、割り込み制御レジスタ４５０を介してNEBへ発行するように命令するコマンドを含んでもよい。NEBは、プリンターへ送信する印刷データの最終ブロックにこのコマンドを挿入し、割り込み制御レジスタ４５０からの受信通知をポーリングの変わりに使用する。具体的には、NEBは印刷データをプリンターに以下の方法によって送信する。即ち、（１）共有RAM中に、印刷データの為の使用可能なスペースがあるか否かを、受信通知の受信予定カウンターを参照することによって決定し、（２）使用可能なスペースがある場合はゲットポインタ及びプットポインタを読み出し、プットポインタが、リングバッファを分割して得られた部分の数に対応する複数の部分インデックスのうちの一つと等しいか否かを判断し、（３）プットポインタの値が、予め設定された複数のインデックスの内の一つと等しい場合に、受信通知を発行するように受信プロセッサー（プリンター）にリクエストするコマンドを書き込み、（４）共有メモリのプットポインタの位置に、印刷データブロックを書き込み、（５）プットポインタの値を更新する。NEB１０１が、受信通知を発行するようにプリンターにリクエストするコマンドを書いたときに、受信通知の受信予定カウンターに１を加えることによって、プリンターから受信することが期待される受信通知の数が更新される。プリンターから受信通知を受信すると、受信通知の受信予定カウンターは、１減少する。このカウンターは共有SRAM２００には記憶されておらず、バス競合の問題の無い、NEBマイクロプロセッサー１７３が持つDRAM１７５中に記憶されている。このように、NEB１０１は、カウンター中に記憶されている受信通知の受信予定数と、リングバッファを分割して得られた部分の数とを比較することによって、リングバッファに使用可能なスペースがあるか否かを判断する。受信通知の受信予定数が、分割部分の数以上ならば、リングバッファは満杯であり、NEB１０１は印刷情報をリングバッファに追加で書き込まない。その代わりに、プリンターがリングバッファの一部分をクリアし、新しい印刷情報を記憶できる部分ができたことを示す受信通知が受信されるまで待機する。反対に、受信通知の受信予定数が、分割部分の数より少なければ、リングバッファ内に使用可能なスペースがまだあることを示す。
【０１２１】
図２２は、NEB１０１の送信側プロセッサー（つまり、NEBマイクロプロセッサー１７３）が、共有SRAM２００にデータを書き込む手順を示す。この処理は、印刷ジョブがLANから受信されたときに開始する（ステップＳ１９０２）。印刷ジョブを受信すると、NEBマイクロプロセッサー１７３は、印刷データのために使用可能なスペースが、リングバッファにあるか否かを判断する。この判断は、プリンターからの受信通知の受信予定数を数えることによって行われる。具体的には、上記のとおり、NEBマイクロプロセッサー１７３は、割り込み制御レジスタ４５０を介してプリンターからNEBマイクロプロセッサー１７３へ送られる受信通知をプリンターに発行させるコマンドを、印刷データに挿入することができる。NEBマイクロプロセッサー１７３は、受信通知の受信予定数、つまり、受信通知のために発行されたコマンドの数から、実際に受信された受信通知の数を引いた数を追跡する。受信通知の受信予定数が、リングバッファを分割して得られた部分の数よりも少いならば（ここではリングバッファは２つに分割されている）、印刷データのために更に使用可能なスペースがリングバッファに存在することになる。反対に、未処理の受信通知の数が、リングバッファを分割して得られた部分の数以上ならば、使用可能なスペースは無く、NEBマイクロプロセッサー１７３は、受信通知を受信するまで待機する。
【０１２２】
従って、ステップＳ１９０３において、NEBマイクロプロセッサー１７３は、プリンターから受信通知を受信したか否かを判断する。受信通知が受信された場合、処理はステップＳ１９０４へ分岐し、受信通知の受信予定数を更新する。そしていづれの場合もステップＳ１９０５へ進み、NEBマイクロプロセッサー１７３は、ステップＳ１９０２で受信された印刷データの為のスペースが、リングバッファ中にあるか否かを判断する。上述したように、NEBマイクロプロセッサー１７３は、プットポインタ及びゲットポインタにアクセスすることによってスペースがあいているか否かを判断することはしない。なぜなら、このようなアクセスは、不必要なバスの競合を招くからである。そのかわりに、NEBマイクロプロセッサー１７３は、受信通知の受信予定数と、リングバッファを分割して得られた部分の数とを比較することによって、使用可能なスペースがあるか否かを判断する。受信通知の受信予定数が、リングバッファを分割して得られた部分の数よりも少なくなければ、リングバッファに使用可能なスペースがなく、処理は、追加の受信通知が受信されるまで、ステップＳ１９０３へ戻る。反対に、受信通知の受信予定数が、リングバッファを分割して得られた部分の数よりも少いならば、リングバッファに使用可能なスペースがあり、処理はステップＳ１９０６へ進む。
【０１２３】
ステップＳ１９０６ではプットポインタ及びゲットポインタが、共有SRAM２００の状態メッセージ領域２０３から読み込まれる。ステップＳ１９０７では、プットポインタが分割されたインデックスと等しい場合、つまり、プットポインタが、図２１のインデックスA及びインデックスＢのように、リングバッファの一部分の最後を示す場合、NEBマイクロプロセッサー１７３は、プリンターに受信通知を発行させるようにコマンドを挿入する。具体的には、プットポインタが分割されたインデックスの一つに等しいならば、処理はステップＳ１９０８に分岐し、NEBマイクロプロセッサー１７３は、印刷データの次のブロックをプットポインタが指定するメモリ位置に書き込み、そのブロックに、受信側のプロセッサー（つまり、プリンターマイクロプロセッサー１５１）に受信通知を発行させるコマンドを入れる。NEBマイクロプロセッサー１７３は、次に、プットポインタの値を更新し（ステップＳ１９０９）、そして、受信通知の受信予定数を更新する（ステップＳ１９１０）。処理はステップＳ１９１１へ進み、印刷データを更にプリンターへ送る必要があるか否かを判断する。データを更に送信する必要がある場合、処理はステップＳ１９０３へ戻り、NEBマイクロプロセッサー１７３は、受信通知の受信予定数を参照することによって、リングバッファ内に使用可能なスペースがあるか否かを判断する。
【０１２４】
反対に、ステップＳ１９０７で、プットポインタが分割されたインデックスのどれにも等しくない場合は、ステップＳ１９１２へ進み、NEBマイクロプロセッサー１７３は、プットポインタに指定されたメモリへ、印刷データの次のブロックを単純に書き込み、プットポインタの値を更新し（ステップＳ１９１３）、ステップＳ１９１１へ進み、プリントデータを更にプリンターへ送る必要があるか否かを判断する。
【０１２５】
受信側のプロセッサーは、共有メモリから通知受信の発行コマンドを含むデータブロックを読み込むと、受信通知を発行する。具体的には、図２３を参照すると、受信側のプロセッサーは、ゲットポインタ及びプットポインタの値を共有メモリから読み込むことによって、データのリトリーブを開始する（ステップＳ２００１）。リトリーブするべきデータがある場合は（ステップＳ２００２）、受信側のプロセッサーは、ゲットポインタによって指定されているメモリ位置からデータブロックを読み込み（ステップＳ２００２からＳ２００４）、ゲットポインタの値を更新する（ステップＳ２００５）。
【０１２６】
そして、受信側プロセッサーは、例えば受信通知発行コマンドなどの、そのデータブロックに含まれているコマンドを全て実行する（ステップＳ２００６）。受信側プロセッサーは、アービター制御論理回路４００の一部である割り込み制御レジスタ４５０に１ビットを書き込むことによって、この受信通知を送信側プロセッサーへの割り込みとして発行する。送信側のプロセッサーは、この割り込みを受信すると、上述したように、受信通知の受信予定数を更新する。
【０１２７】
これにより、リングバッファが２つの部分に分割されると、送信側のプロセッサーは、一回にリングバッファの半分だけにブロックを書き込み、受信側のプロセッサーが残り半分を読み終えたかを確認し、それぞれのインデックス毎に、受信側のプロセッサーが追い付くまで、共有メモリへのアクセスをやめる。別の例では、２つのリングセグメントでは不充分な場合に、リングを更に細かく分割することができる。これらの場合、図２４の（a）から（c）に示すように、追加のインデックスを使用することができる。
【０１２８】
この構成により、NEBマイクロプロセッサー１７３は待機中、共有SRAM２００に全くアクセスしないので、NEBマイクロプロセッサー１７３の待機は、プリンターマイクロプロセッサー１５１の読み込み処理を妨害しない。これにより、非常に多くのデータ処理を達成できるだけでなく、プリンターインターフェースマイクロプロセッサー１５１がより速くそのタスクを達成することができるので、NEBマイクロプロセッサー１７３をプットポインタ及びゲットポインタのポーリングから開放することができ、これにより共有SRAM２００を使用しない他のワークを行なうことができるようになる。
［シリアルポート］
上述のとおり、シリアルポートコネクタ６００は、外部プロセッサー、特にNEB１０１のためのデバッグサービスに関連して使用されるプロセッサーとのシリアル通信を行うために、供給されている。具体的には、NEB１０１がデバッグ状態にセットされたときに、シリアルポートコネクタ６００を介して、外部プロセッサーはNEB１０１によって送信されるデバッグ情報をリトリーブすることができる。この情報は、例えば、内部NEBレジスタの状態や、ネットワークインターフェース３０１（又は３０２、割り込み可能にされた方）のネットワークブロードキャスト及びトラフィックの状態や、印刷情報の状態や、共有SRAM２００に書き込まれた印刷情報の状態などを含む。
【０１２９】
シリアルポートコネクタ６００が、デバックサービスに関連して使用されるために、NEBマイクロプロセッサー１７３の割り込み能力に関わらず、そのポートを介してのシリアル通信をNEBマイクロプロセッサー１７３によって応答することを避けることができない。例えば、プリンター１０２が受信通知を発行するまで、新しい印刷データのSRAM２００への書き込みを待つことによってバスの競合を減らす場合、上記のとおり、プリンターが間違えてそのような受信通知を発行しない可能性がある。こういう場合、NEBマイクロプロセッサー１７３は、受信通知が受信されるまでループを実行し続ける。通常、そのような状態にあるプロセッサーは「ロックアップ（錠を掛けられた；locked-up）」されたことになる。ロックアップとはどのような割り込みにも応じない状態を示す。ロックアップされた状態では、通常、電力を一旦止めて再度投入する必要がある。しかし、このようなエラーのある動作が、シリアルポートコネクタ６００上でデバッグ情報が望まれる動作の種類そのものであるため、NEBマイクロプロセッサー１７３が、そのようなシリアル通信に応答できるようにすることを避けることはできない。
【０１３０】
図２５は、受信チャンネルの信号が、NEBマイクロプロセッサー１７３のマスク不可能な割り込み（NMI）ピンに送信される、シリアルポートの構成を示す。マスク不可能な割り込み特性は、インテルプロセッサー８０Ｘ８６ライン等の、最新のプロセッサーに搭載されており、現状の処理状態に関わらず、プロセッサーに割り込みを掛ける手段を有している。つまり、NMIピンがアクティブにされた時には、プロセッサーは、現在行っている動作の如何に関わらず、その割り込みに応答しなければならない。
【０１３１】
更に具体的には、図２５に示すように、本発明におけるシリアルポート構成は、上述の通り、マスク不可能な割り込み（NMI）ピン１７３１を含みNEB制御論理回路５２０へバス１８１を介して接続されている、NEBマイクロプロセッサー１７３を含む。NEB制御論理回路５２０は、アドレス復号論理回路５２３を含む。このアドレス復号論理回路５２３は、バス１８１上のアドレス信号を復号し、NEB制御論理回路５２０の内部レジスタへの接続を提供する。特に、ここでは、３つのレジスタを考慮する。それらは、送信レジスタ５２４と、受信レジスタ５２５と、NMIイネーブルレジスタ５２６とである。
【０１３２】
送信レジスタ５２４は、シリアルポートの送信ピン６０２に接続されている送信ビットを含む。具体的には、送信ビットは、その二値の１又は０に応じて、NEBマイクロプロセッサー１７３によって、バス１８１及びアドレス復号論理回路５２３を介して書き込み可能となる。二値の１又は０は、＋５ボルト又は０ボルトの電圧として、送信ターミナル６０２に現れる。
【０１３３】
受信レジスタ５２４は、ソフトウエアシリアルポートの受信ピン６０１に接続されている受信ビットを含む。更に詳しくは、受信ターミナル６０１に現れる電圧のレベルに従って、受信ビットは二値の１又は０にセットされ、この受信ビットは、バス１８１及びアドレス復号論理回路５２３を介して、NEBマイクロプロセッサー１７３によって読み込まれる。
【０１３４】
NMIイネーブルレジスタ５２６は、NEBマイクロプロセッサー１７３によって制御されるスイッチで、受信ターミナル６０１とNMIピン１７３１との間に接続されている。NEBマイクロプロセッサー１７３の制御下で、バス１８１及びアドレス復号論理回路５２３を介して、NMIイネーブルレジスタ５２６は、受信ターミナル６０１上の信号をNMIピン１７３１へ接続する割り込み可能状態又は、受信ターミナル６０１上の信号をブロックする割り込み禁止状態を、スイッチで選択する。
【０１３５】
送信レジスタ５２４と、受信レジスタ５２５と、NMIイネーブルレジスタ５２６は、物理的に、一つのレジスタから構成することもできるが、通常は、図２５に示すように、別個にアドレスすることのできるレジスタとして供給される。
図２６は、シリアル受信モードでのシリアルポート処理を示すフローチャートである。図２６における処理ステップは、DRAM１７５に記憶されたソフトウエアの命令に応じて、NEBマイクロプロセッサー１７３によって実行される。
【０１３６】
ステップＳ２３０１において、受信ターミナル６０１上の信号を直接NMIピン１７３１へ送信できるように、NEBマイクロプロセッサー１７３は、NMIイネーブルレジスタ５２６を割り込み可能にする。そしてステップＳ２３０２で、NEBマイクロプロセッサー１７３は、NMI信号が現われるのを確認のためにNMIピン１７３１を観察する。マスク不可能な割り込みを受信すると、NEBマイクロプロセッサー１７３は、コンピューターによって制御されたLANとプリンター間のネットワークを介した印刷処理のような、進行中の処理を続行する（ステップＳ２３０３）。
【０１３７】
反対に、NMI信号がNMIピン１７３１で受信されると、処理はステップＳ２３０４へ進み、NEBマイクロプロセッサー１７３は、進行中の処理を中断する。図２７は、シリアル受信モードでの信号のタイミングを示す図である。図２７に示すように、NMIイネーブルレジスタ５２６は割り込み可能にされているため、NMI信号は、受信ターミナル６０１の開始ビットに対応して受信される。従って、図２７にあるとおり、最初のビットに対応する電圧レベル６１０が受信ターミナル６０１に現れると、NMIイネーブルレジスタ５２６が割り込み可能状態であるために、最初のビットはNMIピン１７３１へ送信される。同時に、最初のビットの電圧レベル６１０のために、受信レジスタ５２５の受信ビットは二値の１にスイッチされる。
【０１３８】
再び図２６に戻って説明を続ける。NEBマイクロプロセッサー１７３が進行中の処理を中断した後（ステップＳ２３０４）、マイクロプロセッサー１７３は、ステップＳ２３０５で、NMI割り込み取り扱い処理を実行開始し、受信ターミナル６０１からNMIピン１７３１への信号の送信を遮るために、NMIイネーブルレジスタ５２６を割り込み禁止にする。そして、この割り込み取り扱い処理は、受信ターミナル６０１に最初のデータビットが現れることのできるように、シリアル送信期間中、待機する。シリアル送信が１９．２ＫＨｚで行われた場合、あらかじめ設定されたシリアル送信周期は、１／１９．２ＫＨｚ、つまり５２msである。あらかじめ設定されたシリアル送信周期が過ぎると、処理はステップＳ２３０７へ進み、受信レジスタ５２５の受信ビットが読み込まれる。これは図２７において、表現上、最初データビットは受信ターミナル６０１の高電圧値に対応して、二値の１である。受信ビットは受信レジスタ５２５からリトリーブされ、８データビットが受信されるまで、ステップＳ２３０６及びＳ２３０７の処理を繰り返す（ステップＳ２３０８）。送信された停止ビット（例えば図２７の６１１）はどれも無視される。
【０１３９】
８ビットのデータが受信されると、処理はステップＳ２３０９へ進み、割り込み取り扱い処理は、受信ターミナル６０１で受信された８ビットバイトデータを記憶する。次に、ステップＳ２３１０で、次のシリアル通信の受信に備えるために、NEBマイクロプロセッサー１７３は、NMIイネーブルレジスタ５２６を割り込み可能にする。１バイトのシリアルデータを受信するための、このシリアル通信サイクルは、これで完了する。
【０１４０】
ステップＳ２３１１では、NEBマイクロプロセッサー１７３は、ステップＳ２３０９で記憶された８ビットバイトが、処理中のソフトウエアタスクに非同期に割り込みのリクエストをしているか否かを判断する。詳しくは、上記のNMI割り込み取り扱い処理が中断されると、処理は通常、CPSOCKET等の、MONITORによって制御されている、進行中の処理へもどる。しかし、NMIによって動かされるシリアルポートの利点は、問題が起きている最中に、実行中のプログラムへ割り込むことができることである。例えば、NEBが、予期しないソフトウエアの問題によってクラッシュしたときは、NEBの状態はしばしばわからないままである。デバッグメッセージを送信することができないほど、非常にタイトなマイクロプロセッサーループ中にある可能性もある。NEBをリセットすることが、しばしば唯一、マイクロセッサーループに割り込む方法であるが、そうすることによって、現状を失ってしまい、また、クラッシュの原因などの情報が全く供給されないこともある。このような場合、NMIによって動作するシリアルポートを介して割り込む機能と、システムを検査する機能は、非常に価値のあるものである。
【０１４１】
従って、ステップＳ２３１１において、シリアルポートコネクタで受信されるバイトが非同期の割り込みをリクエストするものであるか否かを判断する。例えば、すでに設定されている規則を用いると、感嘆符（「！」）の送信が非同期の割り込みを特定することを判断することができる。この場合、NEBマイクロプロセッサー１７３は、進行中の処理の一時停止を続け、インタラクティブデバッガーに入る。このインタラクティブデバッガーは、ROMに保存されているプログラムで、ユーザーがメモリアドレスや、CPUレジスタ及びI/Oポートを観察したり、変更したりすることができる。更に、このインタラクティブデバッガーではコード中に２つの中断点を設定することができ、このようなどの中断点からも実行開始する機能を持つ。このすべては、シリアルポートコネクタ６００を介して、達成される。
【０１４２】
従って、非同期の割り込みにより、トラブルがおこった場合に、トラブルシューターがNEBの現在の状態を分析することができる。シリアル通信の最初のビットによりNMI信号が生成されるので、非同期の割り込みにより、システム状態を分析することを許可するために非常にタイトに結ばれたマイクロプロセッサーループにさえも割り込むことのできる、インタラクティブデバッグのセッションを開始することができる。
【０１４３】
反対に、ステップＳ２３０９で記憶された８ビットバイトが、非同期な割り込みをリクエストしていない場合は、NEBマイクロプロセッサー１７３は、受信したバイトを単純に記憶し、ステップＳ２３０３へ戻り、ステップＳ２３０４で一時停止された進行中の処理の実行を再開する。典型的には、CPSOCKETなどの、NEBマイクロプロセッサー１７３でアクティブな他のソフトウエアモジュールは、８ビットバイトが記憶されたデータバッファを観察する。例えば、新しいソフトウエアモジュールをシリアルポートコネクタ６００上にダウンロードする、ダウンロードサービスのリクエストを、すでに設定されている規則によって、文字列「DNLD」の送信が特定することを判断することができる。このような場合、CPSOCKETは、「DNLD」のそれぞれ文字が受信される度に反応し、その後にダウンロードモードに入るように構成してもよい。
【０１４４】
図２８は、ソフトウエアシリアルポートの送信モードにおける処理の流れを示す図であり、図２９は、送信レジスタ５２４に書き込まれた送信ビットに関連して、送信ターミナル６０２に現われる信号を示す図である。
ステップＳ２４０１において、NEBマイクロプロセッサー１７３は二値の１の開始ビットを、送信レジスタ５２４の送信ビットに書き込む。この送信ビットは、送信ターミナル６０２に接続しているため、送信ターミナル６０２は＋５ボルトの電圧を表すことになる。
【０１４５】
処理はステップＳ２４０２へ進み、NEBマイクロプロセッサー１７３は、あらかじめ設定されたシリアル送信期間待機する。この送信期間は、１９．２ＫＨｚのシリアルレートで、１／１９．２ＫＨｚであるので、５２msである（１インタービット時間）。必要期間待機した後、NEBマイクロプロセッサー１７３は送信ワードの最初のビットを、送信レジスタ５２４の送信ビットへ書き込む（ステップＳ２４０３）。送信されたワードの８ビットすべてが書き込まれるまで（ステップＳ２４０４）、NEBマイクロプロセッサー１７３は、シリアル通信期間は待機し、次のデータビットを送信レジスタ５２４の送信ビットへ書き込む、ステップＳ２４０２及びＳ２４０３の処理を繰り返す。８ビットのすべてが書き込まれると、処理はステップＳ２４０５へ進み、インタービット送信期間中待機した後、送信レジスタ５２４へ停止ビットを書き込む。そしてステップＳ２４０６へ進み、ポイントシリアル通信は終了する。
【０１４６】
上記の説明は、特定の例を参照してなされたが、本発明は上記の実施の形態によって限定されるものではない。関係分野の当業者には、発明の精神と範囲を越えない程度で、上記の説明から多数の変形例が可能であることは明らかであろう。
【０１４７】
【発明の効果】
以上述べた様に本発明によれば、ネットワーク通信装置に互換性のないイメージデータがダウンロードされた場合に上記のような悲惨な結果を招かないようにするために、ダウンロードされたイメージデータが互換性のあるものであるかどうか、再プログラムを行う前に確認することができるという効果がある。
【図面の簡単な説明】
【図１】ネットワークボードがつながれたローカルエリアネットワークとワイドエリアネットワークを示す図である。
【図２】キャノンＬＢＰ１２６０レーザープリンターに嵌め込まれたネットワークボードを示す断面図である。
【図３】プリンターとローカルエリアネットワーク間につながれたネットワークボードを示すブロック図である。
【図４】ネットワークボード上の構成要素の配置を示す図である。
【図５】ネットワークボードのフェースプレートを示す図である。
【図６】ネットワークボードの機能を示すブロック図である。
【図７】フラッシュEPROMに記憶されるソフトウエアモジュールの例を示す図である。
【図８】どのコネクタがネットワークに接続しているかを判断するための構成を示すブロック図である。
【図９】どのコネクタがネットワークに接続しているかを判断するための方法を示すフローチャートである。
【図１０】  PRETASKソフトウエアモジュールの動作を示すフローチャートである。
【図１１】様々なネットワークモジュール間で可能な関係を示す図である。
【図１２】様々なネットワークモジュール間で可能な関係を示す図である。
【図１３】様々なネットワークモジュール間で可能な関係を示す図である。
【図１４】様々なネットワークモジュール間で可能な関係を示す図である。
【図１５】  Ethernetローカルエリアネットワーク及びToken-ringローカルエリアネットワークに接続したＰＣを示すブロック図である。
【図１６】構造情報を記憶するための、ネットワーク情報ファイルブロックの内容を示す図である。
【図１７】フラッシュEPROMの再プログラミングを示すフローチャートである。
【図１８】メモリアービトレーション機器のブロック図である。
【図１９】メモリアービトレーション機器の共有メモリアービターの好ましい構成の一例を示すブロック図である。
【図２０】メモリアービトレーション機器に供給される信号のタイミングを示す図である。
【図２１】共有メモリの構成を示す図である。
【図２２】共有メモリへの書き込みに関する手順を示すフローチャートである。
【図２３】共有メモリからの読み込みに関する手順を示すフローチャートである。
【図２４】共有メモリの構成の別の例を示す図である。
【図２５】シリアルポートのブロック図である。
【図２６】シリアルポートを介してシリアル通信の送受信に関する手順を示すフローチャートである。
【図２７】シリアル送受信モードにおける信号のタイミングを示す図である。
【図２８】シリアルポートを介してシリアル通信の送受信に関する手順を示すフローチャートである。
【図２９】シリアル送受信モードにおける信号のタイミングを示す図である。
【図１】
0003651987.tif 000002
【図２】
0003651987.tif 000003
【図３】
0003651987.tif 000004
【図４】
0003651987.tif 000005
【図５】
0003651987.tif 000006
【図６】
0003651987.tif 000007
【図７】
0003651987.tif 000008
【図８】
0003651987.tif 000009
【図９】
0003651987.tif 000010
【図１０】
0003651987.tif 000011
【図１１】
0003651987.tif 000012
【図１２】
0003651987.tif 000013
【図１３】
0003651987.tif 000014
【図１４】
0003651987.tif 000015
【図１５】
0003651987.tif 000016
【図１６】
0003651987.tif 000017
【図１７】
0003651987.tif 000018
【図１８】
0003651987.tif 000019
【図１９】
0003651987.tif 000020
【図２０】
0003651987.tif 000021
【図２１】
0003651987.tif 000022
【図２２】
0003651987.tif 000023
【図２３】
0003651987.tif 000024
【図２４】
0003651987.tif 000025
【図２５】
0003651987.tif 000026
【図２６】
0003651987.tif 000027
【図２７】
0003651987.tif 000028
【図２８】
0003651987.tif 000029
【図２９】
0003651987.tif 000030