(57)【要約】【課題】システム内にエンディアンの異なるＣＰＵが存在する場合に、システムの構築あるいは管理に要する作業負担を可及的に低減できるようにする。【解決手段】エンディアンが異なる複数個のＣＰＵ１２，１６，２１ａ，２２ａ間でデータ通信を行うためのＣＰＵ間データ通信システムにおいて、ビッグエンディアン又はリトルエンディアンのいずれか一方を、システム全体の統一エンディアンとして設定し、自己のエンディアンが前記統一エンディアンと異なるときに、前記ＣＰＵにて実行される通信用プログラムにおいて、通信相手のエンディアンにかかわらず、前記統一エンディアンとなるようにデータを並び替えて送信する送信側の並び替え処理を行う処理部分と、受信したデータを自己のエンディアンに並び替えてメモリに格納する受信側の並び替え処理を行う処理部分とのうちの少なくとも一方を有するように構成されている。【選択図】図１
2005227998.tif 000002
【特許請求の範囲】
【請求項１】
エンディアンが異なる複数個のＣＰＵ間でデータ通信を行うためのＣＰＵ間データ通信システムであって、
ビッグエンディアン又はリトルエンディアンのいずれか一方を、システム全体の統一エンディアンとして設定し、
自己のエンディアンが前記統一エンディアンと異なるときに、前記ＣＰＵにて実行される通信用プログラムにおいて、通信相手のエンディアンにかかわらず、前記統一エンディアンとなるようにデータを並び替えて送信する送信側の並び替え処理を行う処理部分と、受信したデータを自己のエンディアンに並び替えてメモリに格納する受信側の並び替え処理を行う処理部分とのうちの少なくとも一方を有するように構成されているＣＰＵ間データ通信システム。
【請求項２】
前記ＣＰＵが、ビッグエンディアンとリトルエンディアンとに切換え可能に構成されているときに、そのＣＰＵの前記通信プログラムにおける前記処理部分が、前記ＣＰＵのエンディアン情報に基づいて前記並び替え処理を行うか否かを切換えるように構成されている請求項１記載のＣＰＵ間データ通信システム。
【請求項３】
前記ＣＰＵが前記並び替え処理を必要とするか否かにかかわらず、そのＣＰＵの前記通信プログラムにおいて、前記並び替え処理を行う処理部分の少なくとも一方を有して、設定情報に基づいて前記並び替え処理を行うか否かを判断するように構成されている請求項１記載のＣＰＵ間データ通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンディアンが異なる複数個のＣＰＵ間でデータ通信を行うためのＣＰＵ間データ通信システムに関する。
【背景技術】
【０００２】
例えば下記特許文献１に記載のような写真処理システム等の各種のシステムでＣＰＵ間の通信が必要になる。
ＣＰＵには、複数バイトからなるデータをＣＰＵ間で送受信する際に、最上位のバイトから順番に記録又は送信するか、あるいは、最下位のバイトから順番に記録又は送信するかの２つの方式があり、これらは夫々「ビッグエンディアン」，「リトルエンディアン」と称されている。
システム内にこのエンディアンの異なるＣＰＵが存在し、それらの間でデータ通信を行うには、このエンディアンの違いを吸収する手段を設ける必要がある。
従来は、このエンディアンの違いを吸収するために、システム内に存在するＣＰＵのエンディアンの情報をデータテーブル化して各ＣＰＵにデータとして保持させ、通信する相手に応じてエンディアンを調整することが一般的に行われている。
【特許文献１】特開２００２−３７４３２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記のような各ＣＰＵのエンディアン情報をデータテーブル化する手法では、システム内に新たにＣＰＵを導入する度にそのデータテーブルを書き換える必要があり、システムの構築あるいは管理が手間のかかるものとなっていた。
本発明は、かかる実情に鑑みてなされたものであって、その目的は、システム内にエンディアンの異なるＣＰＵが存在する場合に、システムの構築あるいは管理に要する作業負担を可及的に低減できるようにする点にある。
【課題を解決するための手段】
【０００４】
本出願の第１の発明は、エンディアンが異なる複数個のＣＰＵ間でデータ通信を行うためのＣＰＵ間データ通信システムにおいて、ビッグエンディアン又はリトルエンディアンのいずれか一方を、システム全体の統一エンディアンとして設定し、自己のエンディアンが前記統一エンディアンと異なるときに、前記ＣＰＵにて実行される通信用プログラムにおいて、通信相手のエンディアンにかかわらず、前記統一エンディアンとなるようにデータを並び替えて送信する送信側の並び替え処理を行う処理部分と、受信したデータを自己のエンディアンに並び替えてメモリに格納する受信側の並び替え処理を行う処理部分とのうちの少なくとも一方を有するように構成されている。
【０００５】
すなわち、仮にシステム全体の統一エンディアンにビッグエンディアンを設定したとすると、リトルエンディアンのＣＰＵは、通信相手のＣＰＵがリトルエンディアンであるかビッグエンディアンであるかにかかわらず、複数バイトのデータを送信するときは、ビッグエンディアンになるようにデータを並び替えて送信し、複数バイトのデータを受信するときは、受信したデータをリトルエンディアンのデータに並び替えてメモリに格納する。前記統一エンディアンをリトルエンディアンとした場合には、前記並び替え処理をビッグエンディアンのＣＰＵ側で行うことになる。
従って、リトルエンディアン同士のＣＰＵ間の通信においては無駄な並び替え処理が行われていることになるが、近年のＣＰＵの高速化に伴い、このような並び替え処理をプログラム上で行うことの作業負荷は極めて小さい。
【０００６】
一方、上記のように並び替え処理を適宜に実行することで、各ＣＰＵは通信相手のエンディアンが何であるかという情報を一切必要としないので、システム内に新たなＣＰＵを導入するような場合でも何ら設定変更を要することなく導入することが可能となる。
尚、複数バイトのデータについて送信も受信も行うＣＰＵは、前記送信側の並び替え処理及び前記受信側の並び替え処理の双方が必要であるが、複数バイトのデータについては送信あるいは受信のいずれか一方しか行わないようなＣＰＵについては、必ずしも、前記送信側の並び替え処理の処理部分及び前記受信側の並び替え処理の処理部分の双方を備える必要はない。
【０００７】
又、本出願の第２の発明は、上記第１の発明の構成に加えて、前記ＣＰＵが、ビッグエンディアンとリトルエンディアンとに切換え可能に構成されているときに、そのＣＰＵの前記通信プログラムにおける前記処理部分が、前記ＣＰＵのエンディアン情報に基づいて前記並び替え処理を行うか否かを切換えるように構成されている。
すなわち、ＣＰＵには、ビッグエンディアンかリトルエンディアンかを固定的に設定されているものの他に、ビッグエンディアンで動作するかあるいはリトルエンディアンで動作するかを切換えられるものが存在する。
このようなＣＰＵでは、ビッグエンディアンで動作させるかあるいはリトルエンディアンで動作させるかを前記統一エンディアンに適合させて設定すれば問題なく通信できるのであるが、プログラム上から取得できるＣＰＵのエンディアン情報を利用して、前記並び替え処理を行うか否かを切換えるようにすることで、そのＣＰＵのエンディアンの設定が切換えられても、少なくとも入出力データのエンディアンに関しては通信プログラムを変更せずに済ませることができる。
【０００８】
又、本出願の第３の発明は、上記第１の発明の構成に加えて、前記ＣＰＵが前記並び替え処理を必要とするか否かにかかわらず、そのＣＰＵの前記通信プログラムにおいて、前記並び替え処理を行う処理部分の少なくとも一方を有して、設定情報に基づいて前記並び替え処理を行うか否かを判断するように構成されている。
すなわち、仮に前記統一エンディアンをビッグエンディアンとするのであれば、ビッグエンディアンのＣＰＵには、前記並び替え処理に関する処理部分を通信プログラムに備える必要は無いのであるが、このような場合にでも前記並び替え処理に関する処理部分を通信プログラムに組み込んでおき、この並び替え処理を有効とするかあるいは無効とするかを別途設定するようにすることで、通信プログラムを異なるＣＰＵ間で移植する際に、わずかな設定の変更で移植作業を行うことが可能となる。
【発明の効果】
【０００９】
上記第１の発明によれば、各ＣＰＵは通信相手のエンディアンが何であるかという情報を一切必要とせず、システム内に新たなＣＰＵを導入するような場合でも何ら設定変更を要することなく導入することが可能となるので、システム内にエンディアンの異なるＣＰＵが存在する場合に、システムの構築あるいは管理に要する作業負担を可及的に低減できるに至った。
又、上記第２の発明によれば、ビッグエンディアンで動作するかあるいはリトルエンディアンで動作するかを切換えられるＣＰＵにおいて、そのＣＰＵのエンディアンの設定が切換えられても、少なくとも入出力データのエンディアンに関しては通信プログラムを変更せずに済むので、システムの構築あるいは管理に要する作業負担を更に低減できる。
又、上記第３の発明によれば、通信プログラムを異なるＣＰＵ間で移植する際に、わずかな設定の変更で移植作業を行うことが可能となり、システムの構築あるいは管理に要する作業負担をより一層低減することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明のＣＰＵ間データ通信システムを写真プリントシステムに適用した実施の形態を図面に基づいて説明する。
本実施の形態で例示する写真プリントシステムＤＰは、図１に示すように、写真プリント作製用の画像データを入力するためのプリントデータ入力用パーソナルコンピュータＤＡと、入力された写真プリント作製用の画像データに基づいて写真プリントを作製するプリンタ部ＥＰと、プリントデータ入力用パーソナルコンピュータＤＡから入力された画像データをプリンタ部ＥＰにてプリント処理するためのプリント用の画像データに編集（画像処理）するプリントデータ生成用パーソナルコンピュータＤＧとがネットワーク接続されて構成されている。
【００１１】
プリントデータ入力用パーソナルコンピュータＤＡには、ＤＲＡＭその他により構成されるメモリ１１，ＣＰＵ１２及びネットワークに接続するための通信インターフェース１３が備えられると共に、写真プリント作製用の画像データを入力するための外部入出力装置１４が備えられている。
外部入出力装置１４には、メモリーカード，ＣＤ−Ｒメディア及び光磁気ディスク等の各種の記録媒体から画像データを取込むためにそれらの記録媒体に対応するドライブが備えられている。
【００１２】
プリントデータ生成用パーソナルコンピュータＤＧも、プリントデータ入力用パーソナルコンピュータＤＡと同様に、ＤＲＡＭその他により構成されるメモリ１５，ＣＰＵ１６及びネットワークに接続するための通信インターフェース１７が備えられると共に、写真プリント作製用の画像データを入力するための外部入出力装置１８が備えられている。
プリントデータ生成用パーソナルコンピュータＤＧに備えられた外部入出力装置１８は、プリントデータ入力用パーソナルコンピュータＤＡの外部入出力装置１４と同一構成のものであり、プリントデータ生成用パーソナルコンピュータＤＧは、プリンタ部ＥＰのプリンタ主制御装置２１へ送信するプリント用の画像データの生成処理の他に、プリントデータ入力用パーソナルコンピュータＤＡの機能をも併せ持っている。
【００１３】
〔プリンタ部ＥＰの全体構成〕
プリンタ部ＥＰは、図１に概略的に示すように、筐体内部に、記録紙２に対してインクを吐出することにより記録紙２上に画像を形成する画像形成装置２０と、プリンタ部ＥＰ全体の動作を管理するプリンタ主制御装置２１と、受け取った画像データを画像形成装置２０にてプリントするためのデータに編成して出力するデータ出力制御装置２２と、多数の搬送ローラ２９を備えて記録紙ロール２３から記録紙２を引き出し搬送する記録紙搬送系ＰＴと、その記録紙搬送系ＰＴにて搬送される記録紙２を所定のプリントサイズに切断するためのカッタ２４とが設けられ、画像形成装置２０にてプリント処理された記録紙２は、カッタ２４にて所定のプリントサイズに切断された後、筐体外部に備えられたトレー２５上に排出される。
【００１４】
プリンタ主制御装置２１とデータ出力制御装置２２とは、プリントデータ入力用パーソナルコンピュータＤＡ及びプリントデータ生成用パーソナルコンピュータＤＧと共にネットワーク接続され、プリンタ主制御装置２１は、プリントデータ入力用パーソナルコンピュータＤＡからプリントデータ生成用パーソナルコンピュータＤＧを経て入力される画像データを順次に受け入れて、その受け入れたデータをデータ出力制御装置２２の処理の進捗状況に応じて、データ出力制御装置２２へ送信する。
プリンタ主制御装置２１及びデータ出力制御装置２２のいずれも、ＣＰＵ２１ａ，２２ａ及びメモリ２１ｂ，２２ｂを備えると共に、前記ネットワークに接続して通信するための通信インターフェース２１ｃ，２２ｃを備えている。
【００１５】
画像形成装置２０は、図１に概略的に示すように、記録紙２に対してインクを吐出するインクジェット式のプリントヘッド３１と、プリントヘッド３１を制御するヘッドコントローラ３２と、プリントヘッド３１のフラッシング動作時に吐出したインクを吸引除去するための排出ダクト３３とが備えられて構成されている。
プリントヘッド３１は、図示を省略するガイドロッドに支持されて、記録紙２の搬送方向と直交する主走査方向に移動駆動される。
【００１６】
〔ＣＰＵ間のデータ通信の説明〕
図１に示す写真プリントシステムＤＰでは、上述のように、プリントデータ入力用パーソナルコンピュータＤＡからプリントデータ生成用パーソナルコンピュータＤＧへ、プリントデータ生成用パーソナルコンピュータＤＧからプリンタ主制御装置２１へ、プリンタ主制御装置２１からデータ出力制御装置２２へと順次に画像データを受け渡しする他、各種の制御用のデータのやり取りも行っている。
これらのデータ（特に画像データ）には、複数バイトからなるデータが含まれ、このように複数バイトのデータをやり取りする際には、各ＣＰＵ間のエンディアンの相違が問題となる。
【００１７】
本実施の形態では、プリントデータ入力用パーソナルコンピュータＤＡ及びプリントデータ生成用パーソナルコンピュータＤＧのＣＰＵ１２，１６がリトルエンディアンであり、プリンタ主制御装置２１のＣＰＵ２１ａがビッグエンディアンであり、データ出力制御装置２２のＣＰＵ２２ａがエンディアンをビッグエンディアンとリトルエンディアンに切換え可能なＣＰＵであるとして説明する。
本実施の形態の写真プリントシステムＤＰに組み込まれたＣＰＵ間データ通信システムでは、ビッグエンディアン又はリトルエンディアンのいずれか一方をシステム全体の統一エンディアンとして設定し、送信データは必ずその統一エンディアンに適合させて送信することを必須条件としている。本実施の形態では、ビッグエンディアンを前記統一エンディアンに設定したものとして説明する。
【００１８】
従って、リトルエンディアンのＣＰＵ１２，１６では、リトルエンディアンとしてメモリ１１，１５に記憶しているデータを送信するときは、送信相手がリトルエンディアンであるとビッグエンディアンであるとにかかわらずビッグエンディアンのデータに変換して送信する必要があると共に、送信元がリトルエンディアンであるとビッグエンディアンであるとにかかわらず受信したデータをリトルエンディアンに変換してメモリ１１，１５へ格納する必要がある。
逆に、ビッグエンディアンのＣＰＵ２１ａでは、そのようなエンディアンの変換を行う必要がないのであるが、本実施の形態では、各ＣＰＵ１２，１６，２１ａ，２２ａが実行する通信プログラムにおいて、エンディアンに関わる処理部分についてはほぼ同一のプログラムを一律に組み込んでいる。
【００１９】
具体的には、通信プログラムとして、図２のフローチャートに示すデータ送信プログラムと図３のフローチャートに示すデータ受信プログラムを組み込んでいる。
図２及び図３の処理を説明すると、先ず図２のデータ送信プログラムでは、送信するデータをメモリから読み出して、送信メモリにセットする（ステップ＃１）。この送信メモリは、メインメモリとは別のメモリとして備えても良いし、メインメモリ内の特定エリアを送信メモリとして利用しても良い。
【００２０】
次に、自己のエンディアンがビッグエンディアンかリトルエンディアンかを判別し（ステップ＃２）、リトルエンディアンであるときは、ビッグエンディアンのバイト列となるように、送信メモリのデータを並び替えた後（ステップ＃３）、その送信データを通信インターフェースへ送り出して送信する（ステップ＃４）。自己のエンディアンがビッグエンディアンであるときは（ステップ＃２）、送信メモリのデータをそのままのデータ並びで通信インターフェースへ送り出して送信する（ステップ＃４）。
【００２１】
一方、データを受信するときは、図３の処理において、通信インターフェースから受け取ったデータを受信メモリへ一旦書き込む（ステップ＃１１）。この受信メモリも、前記送信メモリと同様に、メインメモリとは別のメモリとして備えても良いし、メインメモリ内の特定エリアを送信メモリとして利用しても良い。
次に、自己のエンディアンがビッグエンディアンかリトルエンディアンかを判別し（ステップ＃１２）、リトルエンディアンであるときは、リトルエンディアンのバイト列となるように、受信メモリのデータを並び替えた後（ステップ＃１３）、その受信データをメモリへ格納する（ステップ＃１４）。自己のエンディアンがビッグエンディアンであるときは（ステップ＃１２）、受信メモリのデータをそのままのデータ並びでメモリに格納する（ステップ＃１４）。
【００２２】
このように処理することで、ビッグエンディアンのＣＰＵとリトルエンディアンのＣＰＵとの間で、２バイトで構成されるデータ「０ｘ０１２３」を送受信する場合を模式的に示す図４（ａ）、４バイトで構成されるデータ「０ｘ０１２３４５６７」を送受信する場合を模式的に示す図４（ｂ）、及び、８バイトで構成されるデータ「０ｘ０１２３４５６７８９ＡＢＣＤＥ」を送受信する場合を模式的に示す図４（ｃ）のように、通信インターフェース間では前記統一エンディアンに設定したビッグエンディアンのデータとなることが保証される。
これは、同じく、「０ｘ０１２３」、「０ｘ０１２３４５６７」及び「０ｘ０１２３４５６７８９ＡＢＣＤＥ」の３パターンのデータについて、リトルエンディアン同士のＣＰＵ間でデータを送受信する場合を模式的に示す図５、ビッグエンディアン同士のＣＰＵ間でデータを送受信する場合を模式的に示す図６でも同様であり、特に図５のように、リトルエンディアン同士のＣＰＵ間でのデータ通信では本来的にはデータの並び替えは不要であるところを、前記統一エンディアンに適合させて送受信することで、通信相手のエンディアンに全く依存しない通信が可能となっている。
【００２３】
本実施の形態では、上述のように、何れのＣＰＵ１２，１６，２１ａ，２２ａの通信プログラムにおいても、自己のエンディアンが前記統一エンディアンと異なるときに、通信相手のエンディアンにかかわらず、前記統一エンディアンとなるようにデータを並び替えて送信する送信側の並び替え処理を行う処理部分と、自己のエンディアンが前記統一エンディアンと異なるときに、通信相手のエンディアンにかかわらず、受信したデータを自己のエンディアンに並び替えてメモリに格納する受信側の並び替え処理を行う処理部分とを有しており、ＣＰＵが前記並び替え処理を必要とするか否かにかかわらず、前記並び替え処理を行う処理部分を有しているので、ステップ＃２及びステップ＃１２の前記並び替え処理を行うか否かを判断する部分が存在する。
【００２４】
各ＣＰＵ１２，１６，２１ａ，２２ａの通信プログラムは、図２及び図３の処理を含み、エンディアンに関する処理についてはほぼ同一のプログラムとなっているのであるが、ＣＰＵのエンディアンによってステップ＃２及びステップ＃１２での具体的な判断根拠が異なる。
すなわち、ＣＰＵ１２，１６，２１ａのように、エンディアンが固定的に決まっているＣＰＵについては、プログラム上の定数値等としてプログラム中に自己のエンディアンの情報を書き込んでおくか、あるいは、不揮発性メモリに自己のエンディアンの情報を書き込んでおく等しておき、ステップ＃２及びステップ＃１２でその情報を読み出して判断する。
【００２５】
一方、ＣＰＵ２２ａのように、エンディアンがビッグエンディアンとリトルエンディアンに切換え可能なＣＰＵであるときは、ＣＰＵ内のレジスタ等の情報からプログラム上でエンディアンの情報を取得可能であり、上記ステップ＃２及びステップ＃１２でそのエンディアン情報を読み出して前記並び替え処理を行うか否かを判断する。
従って、ＣＰＵ２２ａのエンディアンを適宜に切換えても、図２及び図３に示す処理部分については、プログラムを変更せずに使用できる。
【００２６】
〔写真プリントの作製動作〕
次に、上記構成の写真プリントシステムＤＰによる写真プリントの作製動作を概略的に説明する。
オペレータが、プリントデータ入力用パーソナルコンピュータＤＡあるいはプリントデータ生成用パーソナルコンピュータＤＧの外部入出力装置１４，１８に、メモリーカード，光磁気ディスクあるいはＣＤ−Ｒメディア等の記録媒体をセットして、写真プリントの作製を指示入力したときは、その記録媒体の画像データが読取られ、上述のようにエンディアンが調整されて、プリントデータ生成用パーソナルコンピュータＤＧからプリンタ主制御装置２１を経てデータ出力制御装置２２へと画像データが渡り、データ出力制御装置２２は、プリントヘッド３１によるプリントの進捗状況に応じて、ヘッドコントローラ３２へ順次画像データを送信する。
【００２７】
ヘッドコントローラ３２は、データ出力制御装置２２から受け取った画像データに基づいて、各インク吐出ノズル毎にインク吐出の有無及びインクの吐出量を制御する。
ヘッドコントローラ３２の制御によってインク吐出ノズルからインクを吐出させながらプリントヘッド３１を主走査方向に移動させるプリント動作と、記録紙２を前記主走査方向と直交する副走査方向へ設定長搬送する記録紙搬送動作を交互に繰り返して、記録紙２上に画像をプリント形成する。
【００２８】
〔別実施形態〕
以下、本発明の別実施形態を列記する。
（１）上記実施の形態では、ＣＰＵのエンディアンにかかわらず図２及び図３の処理を通信プログラムに組み込む場合を例示しているが、前記並び替え処理が必要なＣＰＵのみにその並び替え処理を組み込むようにしても良い。
（２）上記実施の形態では、本発明を写真プリントシステムＤＰに適用する場合を例示しているが、エンディアンが異なる複数のＣＰＵ間で通信を行う種々のシステムに本発明を適用できる。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施の形態にかかる写真プリントシステムのブロック構成図
【図２】本発明の実施の形態にかかるフローチャート
【図３】本発明の実施の形態にかかるフローチャート
【図４】本発明の実施の形態にかかるデータの並び替えの説明図
【図５】本発明の実施の形態にかかるデータの並び替えの説明図
【図６】本発明の実施の形態にかかるデータの並び替えの説明図
【符号の説明】
【００３０】
１２，１６，２１ａ，２２ａ  ＣＰＵ
【図１】
2005227998.tif 000003
【図２】
2005227998.tif 000004
【図３】
2005227998.tif 000005
【図４】
2005227998.tif 000006
【図５】
2005227998.tif 000007
【図６】
2005227998.tif 000008