(57)【要約】      （修正有）【課題】  通信装置において通信装置上のＣＰＵの汎用ダイレクトメモリアクセス機能が１チャネルしか利用できない場合、受信データ転送と送信データ転送で１チャネルの汎用ダイレクトメモリアクセス機能を共用するための、送受信処理排他制御手段を提供する。【解決手段】  通信装置を搭載した制御装置から送信要求があったとき、送信要求がある旨を通信装置のレジスタに書いてもらい、通信装置は一定間隔で該レジスタをチェックし、送信要求があれば受信データの転送を一時中断し、送信処理を行う。【選択図】  図２
2006133965.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークからのパケット受信処理やネットワークへのパケット送信処理を行うネットワークコントローラを有し、ネットワークプロトコル処理を行い、ダイレクトメモリアクセスコントローラによりパケットデータを転送する機能を有するＣＰＵと、該ＣＰＵが受信パケットおよび送信パケットのパケットデータを格納するメモリと、通信装置を搭載する制御装置上のバスに接続するための処理および該ＣＰＵのダイレクトメモリアクセス機能により順次データを制御装置上のバスに転送する機能および該ＣＰＵのダイレクトメモリアクセス機能を制御するためのレジスタを有するバスインタフェースとを備えた通信装置において、該ＣＰＵはデータを直接転送させることができるダイレクトメモリアクセス機能をネットワークコントローラ用に２チャンネル、汎用に２チャンネル有し、通信装置全体のシステム制限により汎用ダイレクトメモリアクセス機能を１チャネルしか使用できない場合、受信データ転送と送信データ転送で１チャネルの汎用ダイレクトメモリアクセス機能を共用するために、該レジスタに該通信装置を搭載した制御装置からのデータ転送要求を検知してダイレクトメモリアクセス機能の使用に関して排他制御を行う手段を有する通信装置。
【請求項２】
請求項１に記載の通信装置の排他制御手段において、該通信装置を搭載した制御装置がバスインタフェースのダイレクトメモリアクセス制御用レジスタに送信データ転送要求がある旨を書き込み、該通信装置はいくつかの受信データ転送終了毎に該レジスタをチェックし、送信データ転送要求があれば該制御装置のメモリから該通信装置のメモリへダイレクトメモリアクセス機能を用いて全送信データを転送する方法を用いてダイレクトメモリアクセス機能の使用に関して排他制御を行う手段を有する通信装置。
【請求項３】
請求項１に記載の通信装置の排他制御手段において、該通信装置上のＣＰＵに対して、該通信装置を搭載した制御装置上のＣＰＵが直接割り込み信号を発してデータ転送要求する手段を用いてダイレクトメモリアクセス機能の使用に関して排他制御を行う手段を有する請求項１に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信装置に関し、より詳しくは汎用で使用できるＤＭＡチャネルが一つしかない安価なＣＰＵを用いて、一つのＤＭＡチャネルを送信と受信で共用する装置に関するものである。
【背景技術】
【０００２】
情報処理装置がイーサネット（登録商標）を介して、プリンタなどのデバイス装置にデータを転送しようとするとき、イーサネット（登録商標）上でデータを損失しないようにするため、一般にＴＣＰ／ＩＰのＴＣＰを用いて情報処理装置とデバイス装置の間で通信する。ＴＣＰでは通信データの損失を防ぐためのさまざまな処理を行う。一般にデバイス装置に内蔵されるＣＰＵは高性能足りえないので、デバイス装置内のＣＰＵでＴＣＰ処理を行った場合、デバイス装置内のＣＰＵに多大な負荷をかけてしまう。
【０００３】
そこで通信装置にＣＰＵやメモリを搭載して、通信装置上のＣＰＵにプロトコル処理を行わせる方法がある。通信装置にＣＰＵやメモリを搭載した場合、プロトコル処理を行わない通常の通信装置に比べて、価格はより高価となる。そこでプロトコル処理可能な通信装置を安価に構成するために、搭載するメモリの容量を少なくしたり、性能の低いＣＰＵを搭載したりする。
【０００４】
又、別の従来例としては、各チャネルの転送順序に起因する転送エラーを確実に検出して、転送順序に起因する転送エラーをＣＰＵに通知するＤＭＡコントローラ（例えば特許文献１参照）をあげることが出来る。
【特許文献１】特開２０００−２６７９８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
性能の低い安価なＣＰＵは、利用できる機能が制限されることがあり、例えば汎用に利用できるＤＭＡチャネルが１チャネルしかない、ということがある。ＤＭＡチャネルが１つしかないＣＰＵをプロトコル処理可能な通信装置に搭載した場合、通信装置は送信時と受信時にデータをＤＭＡ転送するので、１つしかないＤＭＡチャネルを送受信で共用しなければならない。送受信でＤＭＡチャネルを共用するにあたり、受信データをデバイス装置へＤＭＡ転送途中にデバイス装置からデータ送信要求があり、ＤＭＡＣをデータ送信用に設定したとき、ＤＭＡＣは誤動作して受信データを損失してしまう。
【課題を解決するための手段】
【０００６】
そこで本発明では、イーサネット（登録商標）等のネットワークからのパケット受信処理やイーサネット（登録商標）等のネットワークへのパケット送信処理を行うネットワーク（イーサネット（登録商標））コントローラを有し、ネットワークプロトコル処理を行い、ダイレクトメモリアクセスコントローラによりパケットデータを転送する機能を有するＣＰＵと、該ＣＰＵが受信パケットおよび送信パケットのパケットデータを格納するメモリと、通信装置を搭載する制御装置上のバスに接続するための処理および該ＣＰＵのダイレクトメモリアクセス機能により順次データを制御装置上のバスに転送する機能および該ＣＰＵのダイレクトメモリアクセス機能を制御するためのレジスタを有するバスインタフェースとを備えた通信装置において、該ＣＰＵはデータを直接転送させることができるダイレクトメモリアクセス機能をネットワークコントローラ用に２チャンネル、汎用に２チャンネル有し、通信装置全体のシステム制限により汎用ダイレクトメモリアクセス機能を１チャネルしか使用できない場合、受信データ転送と送信データ転送で１チャネルの汎用ダイレクトメモリアクセス機能を共用するために、該レジスタに該通信装置を搭載した制御装置からのデータ転送要求を検知してダイレクトメモリアクセス機能の使用に関して排他制御を行う手段を有する通信装置を使用することで、汎用で使用できるＤＭＡチャネルが一つしかない安価なＣＰＵを用いて、一つのＤＭＡチャネルを送信と受信で共用するために、データを一定量受信したとき、または受信データがないときに、デバイス装置からの送信要求を処理することができ、安価なＣＰＵを搭載して、プロトコル処理機能搭載の通信装置を提供することができる。
【発明の効果】
【０００７】
以上説明したように、本発明に係る発明によれば、ネットワークからのパケット受信処理やネットワークへのパケット送信処理を行うネットワークコントローラを有し、ネットワークプロトコル処理を行い、ダイレクトメモリアクセスコントローラによりパケットデータを転送する機能を有するＣＰＵと、該ＣＰＵが受信パケットおよび送信パケットのパケットデータを格納するメモリと、通信装置を搭載する制御装置上のバスに接続するための処理および該ＣＰＵのダイレクトメモリアクセス機能により順次データを制御装置上のバスに転送する機能および該ＣＰＵのダイレクトメモリアクセス機能を制御するためのレジスタを有するバスインタフェースとを備えた通信装置において、該ＣＰＵはデータを直接転送させることができるダイレクトメモリアクセス機能をネットワークコントローラ用に２チャンネル、汎用に２チャンネル有し、通信装置全体のシステム制限により汎用ダイレクトメモリアクセス機能を１チャネルしか使用できない場合、受信データ転送と送信データ転送で１チャネルの汎用ダイレクトメモリアクセス機能を共用するために、該レジスタに該通信装置を搭載した制御装置からのデータ転送要求を検知してダイレクトメモリアクセス機能の使用に関して排他制御を行うことで、プロトコル処理機能搭載の安価な通信装置を提供することができる。
【発明を実施するための最良の形態】
【０００８】
以下、添付図面に従って本発明にかかる実施形態を詳細に説明する。
【実施例１】
【０００９】
図１は本発明の実施の形態に係る通信装置１０１を含むシステム全体のブロック図を示したものである。１０１は本発明の通信装置である。通信装置１０１はデバイス装置１０２内の制御装置１０６に接続されており、イーサケーブル１０３、ネットワーク１０４を介して情報処理装置１０５から出力されたパケットを受信する。通信装置１０１はＣＰＵやメモリを搭載しており、ＬＰＲやＦＴＰなどのプロトコルを処理することができる。
【００１０】
図２は本発明の実施の形態にかかる通信装置１０１および、通信装置１０１を搭載した制御装置１０６のブロック図を示したものである。通信装置１０１はパケットを受信すると、ＣＰＵ２０２内部にある受信パケット用メモリにパケットを格納する。そしてＣＰＵ２０２は受信パケットのパケットヘッダを取り除き、パケットデータをメモリ２０３へ書き込む。パケットデータが制御装置１０６に転送する必要がある場合、ＣＰＵ２０２は、先ず制御装置１０６に割り込みを上げて受信データがあることを知らせ、次に内蔵のＤＭＡＣを用いてＡＳＩＣ２０４を介して制御装置のメモリ２０５へメモリ２０３上の受信パケットデータをＤＭＡ転送する。受信パケットデータをＤＭＡ転送する前に、ＣＰＵ２０２内のＤＭＡＣを受信用に設定する必要がある。受信時はＤＭＡ転送元をメモリ２０３に、ＤＭＡ転送先を制御装置のメモリ２０５に、ＤＭＡ転送サイズをＡＳＩＣ２０４内のデータ入出力用レジスタ２０４１で設定される受信データ転送単位３０２にそれぞれ設定する。受信データ転送単位３０２は、制御装置１０６が設定する。設定値は、受信パケットデータ用に確保できるメモリ２０３上の容量やデバイス装置１０２のデータ送受信の割合で決定する。例えばデバイス装置１０２を印刷装置と仮定すると、受信データが圧倒的に多いので、メモリ２０３に確保できる容量をＤＭＡ転送サイズとする。ＡＳＩＣ２０４は制御装置１０６上のバスに接続するためのインタフェース、およびＤＭＡ転送制御用のレジスタである。ＡＳＩＣ２０５を安価なものにするため、ＡＳＩＣにはＤＭＡチャネルを搭載しない。次に制御装置１０６からのデータ送信について説明する。制御装置１０６は送信データを制御装置のメモリ２０５に用意し終えたら、ＡＳＩＣ２０４内のデータ入出力用レジスタ２０４１にある送信要求ビット３０１を有効にする。このとき通信装置１０１は、ＣＰＵ２０２内蔵のＤＭＡＣを用いて受信パケットデータを制御装置のメモリ２０５へ転送している途中であれば、制御装置のメモリ２０５にある送信データの転送を直に行わない。受信データ転送単位分受信データを制御装置のメモリ２０５へ転送し終えたとき、送信要求ビット３０１が有効であれば、ＣＰＵ２０２は内蔵のＤＭＡＣをデータ送信用に設定し、制御装置のメモリ２０５の送信データをメモリ２０３へＤＭＡ転送する。送信データをＤＭＡ転送する前に、ＣＰＵ２０２内蔵のＤＭＡＣを送信用に設定する必要がある。送信時はＤＭＡ転送元を制御装置のメモリ２０５に、ＤＭＡ転送先をメモリ２０３に、ＤＭＡ転送サイズを送信データサイズにそれぞれ設定する。送信データをＤＭＡ転送し終えたら、ＣＰＵ２０２は送信要求ビット３０１をクリアして、制御装置１０６に対して送信データ転送完了を知らせる割り込みを上げる。ＣＰＵ２０２は送信データをメモリ２０３へＤＭＡ転送し終えたら、送信データにパケットヘッダを負荷し、送信パケットをネットワークへ転送する。
【００１１】
図３はＣＰＵ２０２内蔵のＤＭＡを制御するためのレジスタである。送信要求ビット３０１は、制御装置１０６がセットし、通信装置１０１がクリアするビットである。制御装置１０６が、送信データを制御装置のメモリ２０５に準備し終えたら、通信装置１０１にデータ送信の要求があることを知らせるために送信要求ビット３０１をセットする。送信要求ビット３０１がセットされると、通信装置１０１は制御装置のメモリ２０５からメモリ２０３へ送信データをＤＭＡ転送し、ＤＭＡ転送を完了すると送信要求ビット３０１をクリアする。受信データ転送単位３０２は制御装置１０６が設定するフィールドである。通信装置１０１は、メモリ２０３から制御装置のメモリ２０５へＤＭＡ転送するとき、転送サイズを受信データ転送単位３０２に設定された値とし、ＤＭＡ転送終了毎に送信要求ビット３０１をチェックする。
【００１２】
図４は本発明の特徴となる、ＣＰＵ２０２内蔵のただひとつのＤＭＡチャネルを送信と受信で共用するためのＣＰＵ２０２側の排他制御処理を示すフローチャートである。ＣＰＵ２０２側の排他制御の方法をステップ毎に説明する。
【００１３】
Ｓ４０１：受信パケットがＣＰＵ２０２に到達したかどうかをチェックする。受信パケットがあればステップＳ４０２へ進む。受信パケットがなければステップＳ４０５へ進む。
【００１４】
Ｓ４０２：ＣＰＵ２０２に到達した受信パケットのパケットヘッダを取り除き受信パケットのデータをメモリ２０３へ格納する。
【００１５】
Ｓ４０３：受信パケットデータを制御装置のメモリ２０５へＤＭＡ転送するために、ＣＰＵ２０２内蔵のＤＭＡＣをデータ受信用に設定する。ＤＭＡＣへの設定項目は、データ転送方向、転送元アドレス、転送先アドレスおよび転送サイズである。データ転送方向はメモリ２０３から制御装置のメモリ２０５への方向である。転送元アドレスはメモリ２０３のアドレスである。転送先．アドレスは制御装置のメモリ２０５のアドレスである。転送サイズは、受信データ転送単位３０２に設定された値である。
【００１６】
Ｓ４０４：ＣＰＵ２０２内蔵のＤＭＡＣに転送要求して、受信データをメモリ２０３から制御装置のメモリ２０５へＤＭＡ転送させる。
【００１７】
Ｓ４０５：ＡＳＩＣ２０４内のレジスタ２０４１に設定される送信要求ビット３０１が有効であるかどうかをチェックする。有効であればＳ４０６へ進む。有効でなければＳ４０１へ進む。
【００１８】
Ｓ４０６：制御装置のメモリ２０５に格納されている送信データをメモリ２０３へＤＭＡ転送するために、ＣＰＵ２０２内蔵のＤＭＡＣをデータ送信用に設定する。ＤＭＡＣへの設定項目は、データ転送方向、転送元アドレス、転送先アドレスおよび転送サイズである。データ転送方向は制御装置のメモリ２０５からメモリ２０３への方向である。転送先アドレスはメモリ２０３のアドレスである。転送元アドレスは制御装置のメモリ２０５のアドレスである。転送サイズは、制御装置のメモリ２０５に格納された送信データサイズである。
【００１９】
Ｓ４０７：ＣＰＵ２０２内蔵のＤＭＡＣに転送要求して、送信データを制御装置のメモリ２０５からメモリ２０３へＤＭＡ転送させる。
【００２０】
Ｓ４０８：ＡＳＩＣ２０４内にあるレジスタ２０４１の送信要求ビット３０１をリセットする。
【００２１】
Ｓ４０９：メモリ２０３上の送信データにパケットヘッダを付加し、送信パケットをネットワークに出力する。
【００２２】
Ｓ４１０：送信パケットを全て送信し終えたら、制御装置１０６に対してパケット送信完了割り込みを上げる。
【００２３】
図５は本発明の特徴となる、デバイス装置側のデータ送信処理を示すフローチャートである。デバイス側の処理方法をステップ毎に説明する。
【００２４】
Ｓ５０１：制御装置１０６に送信したいデータがあり、全送信データを制御装置のメモリ２０５へ格納し終えたならステップＳ５０２へ進む。全送信データを準備し終えていないならステップＳ５０１へ進む。
【００２５】
Ｓ５０２：制御装置１０６は、送信データを格納した制御装置のメモリ２０５上の先頭アドレスと、送信データサイズを通信装置１０１に通知する。通知方法は、例えばＡＳＩＣ２０４内にアドレスとデータサイズを格納するレジスタを用意し、そのレジスタに書き込むことで通信装置１０１に知らせる、という方法が考えられる。
【００２６】
Ｓ５０３：デバイス装置が、送信要求ビット３０１を有効にする。本ビットを有効にすることで、通信装置１０１は、受信データ転送中であればデータ転送終了後、アイドル状態であればただちに制御装置のメモリ２０５上の送信データをメモリ２０３へＤＭＡ転送する。
【００２７】
Ｓ５０４：制御装置１０６は、通信装置１０１からの送信完了割込みが上がるまで待つ。
【実施例２】
【００２８】
実施例１では、制御装置１０６からのデータ送信要求があった場合、通信装置１０１上のＣＰＵ２０２は受信データ転送単位ごとに送信要求ビット３０１をポーリングして送信データがあるかどうかを調べて排他制御する方法を述べた。実施例２では、制御装置１０６にデータ送信要求があるとき、制御装置１０６上のＣＰＵが通信装置１０１上のＣＰＵ２０２に対して割り込みを上げて要求を知らせる方法について述べる。一般にＣＰＵにはプログラマブルＩ／Ｏと呼ばれる、プログラムで変更可能なポートがある。制御装置１０６上のＣＰＵのプログラマブルＩ／ＯポートをＣＰＵ２０２の割込みポートに接続することで、割り込みを上げて要求を知らせることが容易に実装できる。
【００２９】
図６は本発明の特徴となる、ＣＰＵ２０２内蔵のただひとつのＤＭＡチャネルを送信と受信で共用するためのＣＰＵ２０２側の排他制御処理を示すフローチャートである。ＣＰＵ２０２側の排他制御の方法をステップ毎に説明する。
【００３０】
Ｓ６０１：受信パケットがＣＰＵ２０２に到達したかどうかをチェックする。受信パケットがあればステップＳ６０２へ進む。受信パケットがなければステップＳ６０１へ進む。
【００３１】
Ｓ６０２：ＣＰＵ２０２に到達した受信パケットのパケットヘッダを取り除き受信パケットのデータをメモリ２０３へ格納する。
【００３２】
Ｓ６０３：受信パケットデータを制御装置のメモリ２０５へＤＭＡ転送するために、ＣＰＵ２０２内蔵のＤＭＡＣをデータ受信用に設定する。ＤＭＡＣへの設定項目は、データ転送方向、転送元アドレス、転送先アドレスおよび転送サイズである。データ転送方向はメモリ２０３から制御装置のメモリ２０５への方向である。転送元アドレスはメモリ２０３のアドレスである。転送先．アドレスは制御装置のメモリ２０５のアドレスである。転送サイズは、受信データ転送単位３０２に設定された値である。
【００３３】
Ｓ６０４：ＣＰＵ２０２内蔵のＤＭＡＣに転送要求して、受信データをメモリ２０３から制御装置のメモリ２０５へＤＭＡ転送させる。
【００３４】
以下、制御装置１０６上のＣＰＵから送信要求割込みが上がった場合の処理をステップごとに説明する。
【００３５】
Ｓ６０５：ＣＰＵ２０２は、受信パケットデータをメモリ２０３から制御装置のメモリ２０５へＤＭＡ転送中であるかどうかを調べる。ＤＭＡ転送中であればＳ６０５へ進む。ＤＭＡ転送中でなければＳ６０６へ進む。
【００３６】
Ｓ６０６：制御装置のメモリ２０５に格納されている送信データをメモリ２０３へＤＭＡ転送するために、ＣＰＵ２０２内蔵のＤＭＡＣをデータ送信用に設定する。ＤＭＡＣへの設定項目は、データ転送方向、転送元アドレス、転送先アドレスおよび転送サイズである。データ転送方向は制御装置のメモリ２０５からメモリ２０３への方向である。転送先アドレスはメモリ２０３のアドレスである。転送元アドレスは制御装置のメモリ２０５のアドレスである。転送サイズは、制御装置のメモリ２０５に格納された送信データサイズである。
【００３７】
Ｓ６０７：ＣＰＵ２０２内蔵のＤＭＡＣに転送要求して、送信データを制御装置のメモリ２０５からメモリ２０３へＤＭＡ転送させる。
【００３８】
Ｓ６０８：メモリ２０３上の送信データにパケットヘッダを付加し、送信パケットをネットワークに出力する。
【００３９】
Ｓ６０９：送信パケットを全て送信し終えたら、制御装置１０６に対してパケット送信完了割り込みを上げる。
【００４０】
図７は本発明の特徴となる、制御装置１０６側のデータ送信処理を示すフローチャートである。制御装置１０６側の処理方法をステップ毎に説明する。
【００４１】
Ｓ７０１：制御装置１０６に送信したいデータがあり、全送信データを制御装置のメモリ２０５へ格納し終えたならステップＳ７０２へ進む。全送信データを準備し終えていないならステップＳ７０１へ進む。
【００４２】
Ｓ７０２：制御装置１０６は、送信データを格納した制御装置のメモリ２０５上の先頭アドレスと、送信データサイズを通信装置１０１に通知する。通知方法は、例えばＡＳＩＣ２０４内にアドレスとデータサイズを格納するレジスタを用意し、そのレジスタに書き込むことで通信装置１０１に知らせる、という方法が考えられる。
【００４３】
Ｓ７０３：ＣＰＵ２０２の割り込みポートに接続された、制御装置  １０６上のＣＰＵのプログラマぶるＩ／Ｏポートをイネーブルにする。ＣＰＵ２０２は、受信データＤＭＡ転送中であればＤＭＡ転送終了後に、ＤＭＡ転送してなければすぐに送信処理を開始する。
【００４４】
Ｓ５０４：制御装置１０６は、通信装置１０１からの送信完了割込みが上がるまで待つ。
【図面の簡単な説明】
【００４５】
【図１】発明に係る通信装置を含むシステム全体の構成図である。
【図２】発明に係る通信装置と、通信装置を搭載した制御装置のブロック図である。
【図３】発明の排他制御処理に使用する通信装置内のレジスタのブロック図である。
【図４】発明の特徴となるポーリングを用いた排他制御処理の通信装置側の処理フローである。
【図５】発明の特徴となるポーリングを用いた排他制御処理の制御装置側の処理フローである。
【図６】発明の特徴となる割込み信号を用いた排他制御処理の通信装置側の処理フローである。
【図７】発明の特徴となる割込み信号を用いた排他制御処理の制御装置側の処理フローである。
【符号の説明】
【００４６】
１０１  通信装置
１０２  デバイス装置
１０３  イーサケーブル
１０４  ネットワーク
１０５  情報処理装置
１０６  制御装置
２０２  ＣＰＵ
２０３  メモリ
２０４  ＡＳＩＣ（バスインタフェース）
２０４１  データ入出力用レジスタ
２０５  制御装置のメモリ
３０１  送信要求ビット
３０２  受信データ転送単位
【図１】
2006133965.tif 000003
【図２】
2006133965.tif 000004
【図３】
2006133965.tif 000005
【図４】
2006133965.tif 000006
【図５】
2006133965.tif 000007
【図６】
2006133965.tif 000008
【図７】
2006133965.tif 000009