(57)【要約】【課題】エンディアンの異なる他の情報処理装置との間で通信フレームを用いて複数のデータを送受信する場合にエンディアン変換全体に要する処理時間を短縮する情報処理装置を提供することを課題とする。【解決手段】他の情報処理装置との間で通信フレームを用いて複数のデータを送受信する情報処理装置であって、エンディアンの異なる他の情報処理装置に通信フレームを送信する前にエンディアン変換を行う場合又は／及びエンディアンの異なる他の情報処理装置からの通信フレームを受信した後にエンディアン変換を行う場合、通信フレームとバイト並びを反転させた反転バッファを生成することを特徴とし、反転バッファにおける各データのバイト位置を通信フレームのバイトサイズから通信フレームにおける各データのバイト位置とデータのサイズに応じたバイト数を減算した位置とする。【選択図】図３
2011248516.tif 000002
【特許請求の範囲】
【請求項１】
他の情報処理装置との間で通信フレームを用いて複数のデータを送受信する情報処理装置であって、
エンディアンの異なる他の情報処理装置に通信フレームを送信する前にエンディアン変換を行う場合又は／及びエンディアンの異なる他の情報処理装置からの通信フレームを受信した後にエンディアン変換を行う場合、通信フレームとバイト並びを反転させた反転バッファを生成することを特徴とする情報処理装置。
【請求項２】
前記反転バッファにおける各データのバイト位置を通信フレームのバイトサイズから通信フレームにおける各データのバイト位置とデータのサイズに応じたバイト数を減算した位置とすることを特徴とする請求項１に記載する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、他の情報処理装置との間で通信フレームを用いて複数のデータを送受信する情報処理装置に関する。
【背景技術】
【０００２】
エンディアンの異なるＣＰＵ[Central Processing Unit]間でデータを送受信する場合、エンディアン変換が必要となる。特許文献１には、１個以上のビックエンディアンプロセッサと１個以上のリトルエンディアンプロセッサを備えるマルチプロセッサシステムにおいて、ビックエンディアンプロセッサは、バス上にデータを送信するときには送信データをビックエンディアンからリトルエンディアンに変換し、バスからデータを受信したときには受信データをリトルエンディアンからビックエンディアンに変換することが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−６９９７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＬＡＮ[Local Area Network]を介してデータを送受信する場合、通信フレームを用いて複数のデータを送受信する。複数のデータを含む通信フレームをエンディアン変換する場合、データを通信フレームバッファに書き込む毎にエンディアン変換を行うので、データの数だけエンディアン変換が必要となり、変換に要する処理時間が長くなる。特に、データが８ビット（１バイト）の整数倍でない場合、通信フレーム内でのデータ配置が複雑になり、処理時間が更に長くなる。
【０００５】
図４には、Ａ〜Ｄの４個のデータ（１０ビット）を含む通信フレーム（５バイト）を用いる場合であり、リトルエンディアンのＣＰＵにおける送信時のエンディアン変換の一例を示している。この図４に示す変換を、図５に示すフローチャートに沿って説明する。図４（ａ）にはリトルエンディアンで配置されたデータＡのＡ０〜Ａ９の１０ビットデータを示している。データＡ〜Ｄは８ビットの整数倍でないので、まず、左（上位ビット側）に６ビットシフトし、ビット位置を補正する（Ｓ１０１）。このビット位置補正によって、図４（ｂ）に示すようにＡ０〜Ａ９の１０ビットデータが配置される。次に、このビット位置補正されたＡ０〜Ａ９の１０ビットデータのうち０ＢｙｔｅのデータＡ１，Ａ０をビット位置を変えずに１Ｂｙｔｅに移動し、１ＢｙｔｅのデータＡ９〜Ａ２をビット位置を変えずに０Ｂｙｔｅに移動することによって、データＡに対するエンディアン変換を行う（Ｓ１０２）。そして、そのエンディアン変換したＡ０〜Ａ９の１０ビットデータを、通信フレームバッファに書き込む（Ｓ１０３）。次に、通信フレームバッファにＡ〜Ｄの全てのデータが書き込まれたか否かを判定する（Ｓ１０４）。ここで、データＢ、データＣ、データＤについても、上記と同様にＳ１０１〜Ｓ１０３の処理をそれぞれ行う。通信フレームバッファにエンディアン変換後のデータＡ〜Ｄを全て書き込むと、図４（ｄ）に示すように通信フレームバッファにビックエンディアンのデータＡのＡ９〜Ａ０、データＢのＢ９〜Ｂ０、データＣのＣ９〜Ｃ０、データＤのＤ９〜Ｄ０が配置される。Ｓ１０４にて通信フレームバッファに全てのデータが書き込まれたと判定すると、この通信フレームバッファから、ビックエンディアンのデータＡ〜Ｄからなる通信フレームを送信する（Ｓ１０５）。このように従来の方法では、データ毎にエンディアン変換を行って通信フレームバッファに書き込みを行うことになる。
【０００６】
そこで、本発明は、エンディアンの異なる他の情報処理装置との間で通信フレームを用いて複数のデータを送受信する場合にエンディアン変換全体に要する処理時間を短縮する情報処理装置を提供することを課題とする。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、他の情報処理装置との間で通信フレームを用いて複数のデータを送受信する情報処理装置であって、エンディアンの異なる他の情報処理装置に通信フレームを送信する前にエンディアン変換を行う場合又は／及びエンディアンの異なる他の情報処理装置からの通信フレームを受信した後にエンディアン変換を行う場合、通信フレームとバイト並びを反転させた反転バッファを生成することを特徴とする。
【０００８】
この情報処理装置では、エンディアンの異なる他の情報処理装置に通信フレームを送信する前にエンディアンを行う場合あるいはエンディアンの異なる他の情報処理装置から通信フレームを受信した後にエンディアン変換を行う場合、反転バッファを生成する。反転バッファは、通信フレームに対してバイト単位のデータの並び位置が反転しているバッファである。したがって、送信時には生成した反転バッファ全体に対してエンディアン変換（バイト単位での反転スワップ）を行うと通信フレームとなり、受信時には受信した通信フレーム全体に対してエンディアン変換を行うと反転バッファとなる。このように、情報処理装置では、通信フレームとバイト並びを反転させた反転バッファを生成することにより、通信フレームに含まれる全てのデータを一括してエンディアン変換することができ、エンディアン変換全体に要する処理時間を短縮できる。
【０００９】
本発明の上記情報処理装置では、反転バッファにおける各データのバイト位置を通信フレームのバイトサイズから通信フレームにおける各データのバイト位置とデータのサイズに応じたバイト数を減算した位置とする。
【発明の効果】
【００１０】
本発明によれば、通信フレームとバイト並びを反転させた反転バッファを生成することにより、通信フレームに含まれる全てのデータを一括してエンディアン変換することができ、エンディアン変換全体に要する処理時間を短縮できる。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態に係る車載ネットワーク及びネットワークに接続されるＥＣＵの通信機能の構成図である。
【図２】図１のリトルエンディアンのＥＣＵにおける送信時のエンディアン変換の一例を示している。
【図３】図１のリトルエンディアンのＥＣＵにおける送信時の処理の流れを示すフローチャートである。
【図４】従来のリトルエンディアンのＣＰＵにおける送信時のエンディアン変換の一例を示している。
【図５】従来のリトルエンディアンのＣＰＵにおける送信時の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、本発明に係る情報処理装置の実施の形態を説明する。なお、各図において同一又は相当する要素については同一の符号を付し、重複する説明を省略する。
【００１３】
本実施の形態では、本発明に係る情報処理装置を、車両に搭載され、車載ネットワークに接続されるリトルエンディアンのＥＣＵ[Electronic Control Unit]に適用する。本実施の形態に係る車載ネットワークには、リトルエンディアンのＥＣＵとビックエンディアンのＥＣＵが接続され、ネットワークのバス上に複数のデータを含む通信フレームを流す場合にはビックエンディアンで配置された通信フレームを流す。したがって、本実施の形態では、リトルエンディアンのＥＣＵがバス上に通信フレームを送信する場合及びバスから通信フレームを受信した場合にエンディアン変換を行う。
【００１４】
図１を参照して、本実施の形態に係る車載ネットワーク１について説明する。図１は、車載ネットワーク及びネットワークに接続されるＥＣＵの通信機能の構成図である。
【００１５】
車載ネットワーク１は、車両内に構築されているＬＡＮ[Local Area Network]であり、例えば、ＣＡＮ[Controller Area Network]、ＦｌｅｘＲａｙである。車載ネットワーク１には、複数のＥＣＵ２Ａ，２Ｂ，２Ｃ・・・が接続されている。車載ネットワーク１では、ＥＣＵ２Ａ，２Ｂ，２Ｃ，・・・間でデータを送受信する場合に通信フレームを用いる。通信フレームは、複数のデータを格納でき、ビックエンディアンの複数のデータが配置される。なお、本実施の形態では、通信フレームのサイズを５バイト（４０ビット）とし、通信フレーム内の複数のデータを４個の１０ビットデータとして説明する。
【００１６】
図１及び図２を参照して、ＥＣＵ２Ａ，・・・（特に、リトルエンディアンのＥＣＵ）について説明する。図２は、図１のリトルエンディアンのＥＣＵにおける送信時のエンディアン変換の一例を示している。
【００１７】
ＥＣＵ２Ａ，２Ｂ，２Ｃ・・・は、ＣＰＵ[Central ProcessingUnit]や各種メモリ等を有するマイクロコンピュータによって構成される。ＥＣＵ２Ａ，２Ｂ，２Ｃ・・・には、ビックエンディアンのＣＰＵで動作するＥＣＵとリトルエンディアンのＣＰＵで動作するＥＣＵがある。車載ネットワーク１にはビックエンディアンの通信フレームを流さなければならないので、リトルエンディアンのＣＰＵのＥＣＵが、通信フレーム送信時及び通信フレーム受信時にエンディアン変換を行う。以下では、リトルエンディアンのＥＣＵの１つであるＥＣＵ２Ａにおけるエンディアン変換を含む通信機能について説明する。
【００１８】
ＥＣＵ２Ａでは、通信フレーム送信時、リトルエンディアンの複数のデータに対してエンディアン変換を行い、そのエンディアン変換後のビックエンディアンの複数のデータからなる通信フレームを車載ネットワーク１に送信する。また、ＥＣＵ２Ａでは、通信フレーム受信時、車載ネットワーク１から通信フレーム（ビックエンディアンの複数のデータ）を受信し、通信フレームのビックエンディアンの複数のデータに対してエンディアン変換を行う。ＥＣＵ２Ａは、通信機能のためにネットワーク用通信部１０、エンディアン変換部１１、通信フレームバッファ１２等を備えている。
【００１９】
ネットワーク用通信部１０は、通信フレーム送信時に、送信用の通信フレームバッファ１２に格納されている通信フレーム（ビックエンディアンで配置された複数のデータ）を車載ネットワーク１に送信する。また、ネットワーク用通信部１０は、通信フレーム受信時に、車載ネットワーク１から通信フレーム（ビックエンディアンで配置された複数のデータ）を受信し、その受信した通信フレームを受信用の通信フレームバッファ１２に格納する。
【００２０】
エンディアン変換部１１は、通信フレーム送信時、ＣＰＵで処理されたリトルエンディアンの複数のデータを入力すると、そのリトルエンディアンの複数のデータに対してエンディアン変換を行い、送信用の通信フレームバッファ１２にビックエンディアンの複数のデータを格納する。また、エンディアン変換部１１は、通信フレーム受信時、受信用の通信フレームバッファ１２に格納されたビックエンディアンの複数のデータに対してエンディアン変換を行い、リトルエンディアンの複数のデータを出力する。
【００２１】
送信時のエンディアン変換処理について具体的に説明する。エンディアン変換部１１では、データが１０ビットで８ビット（１バイト）の整数倍ではないので、まず、リトルエンディアンのデータを左（上位ビット側）に６ビットシフトし、ビット位置を補正する。図２に示す例の場合、図２（ａ）に示される０Ｂｙｔｅに下位ビットからＡ０〜Ａ７が配置され、１Ｂｙｔｅに下位ビットからＡ８，Ａ９が配置されたリトルエンディアンのデータＡを、左６ビットシフトすると、図２（ｂ）に示すように０Ｂｙｔｅに上位ビットからＡ１，Ａ０が配置され、１Ｂｙｔｅに上位ビットからＡ９〜Ａ２が配置される。
【００２２】
次に、エンディアン変換部１１では、ビット位置補正したデータを、バイト内のビット位置とサイズを変えずに、変換ルールに従ったバイト位置に基づいて通信フレームバッファ１２に書き込む。この変換ルールは、車載ネットワーク１に送信する通信フレーム（全てのデータがビックエンディアンで配置されたフレーム）におけるバイト単位のデータ位置をフレーム全体で逆に並び変えるためのルールであり、（通信フレームのバイトサイズ−通信フレームにおける各データのバイト位置−データのサイズに応じたバイト数）の算出式によって各データのバイト位置を算出できる。通信フレームのバイトサイズは、本実施の形態では５である。通信フレームにおける各データのバイト位置は、通信フレームにおけるエンディアン変換後のビックエンディアンとして配置された各データのバイト位置であり、例えば、データＡの場合には図２（ｄ）に示すように０Ｂｙｔｅから配置されるので０である。データのサイズに応じたバイト数は、データサイズをバイト単位で切り上げた数であり、本実施の形態では１０ビットデータであるので切り上げたバイト数の２である。したがって、例えば、図２に示すデータＡの場合、５−０−２＝３となり、図２（ｃ）に示すように、ビット位置補正された０ＢｙｔｅのＡ１，Ａ０がビット位置を変えずに通信フレームバッファ１２の３Ｂｙｔｅに書き込まれ、ビット位置補正された１ＢｙｔｅのＡ９〜Ａ２がビット位置を変えずに通信フレームバッファ１２の４Ｂｙｔｅに書き込まれる。
【００２３】
エンディアン変換部１１では、通信フレームの全てのデータについて、上記のビット位置補正と変換ルールに従ったバイト位置に基づく通信フレームバッファ１２への書き込みを行う。そして、全てのデータが通信フレームバッファ１２に書き込まれたものを反転バッファと呼ぶ。反転バッファは、エンディアン変換後の通信フレーム（全てのデータがビックエンディアンで配置されたフレーム）に対してバイト並びを反転させた（バイト並びが逆の）バッファである。図２（ｃ）には反転バッファを示しており、図２（ｄ）にはエンディアン変換後の通信フレームを示しており、この図２（ｃ）の反転バッファと図２（ｄ）の通信フレームとを比較すると、フレーム全体でバイト並びが逆になっている。
【００２４】
反転バッファを生成すると、エンディアン変換部１１では、反転バッファ全体をバイト単位で反転スワップする（全てのデータに対する一括でのエンディアン変換）。この反転スワップによって、全てのデータがビックエンディアンで配置された通信フレームとなる。図２に示す例の場合、図２（ｃ）に示す反転バッファにおける０ＢｙｔｅのＤ７〜Ｄ０を４Ｂｙｔｅに移動し、１ＢｙｔｅのＣ５〜Ｃ０とＤ９，Ｄ８を３Ｂｙｔｅに移動し、２ＢｙｔｅのＢ３〜Ｂ０とＣ９〜Ｃ６を３Ｂｙｔｅのままとし、３ＢｙｔｅのＡ１，Ａ０とＢ９〜Ｂ４を１Ｂｙｔｅに移動し、４ＢｙｔｅのＡ９〜Ａ２を０Ｂｙｔｅに移動する。これによって、図２（ｄ）に示すように、ビックエンディアンで配置されたデータＡのＡ９〜Ａ０、データＢのＢ９〜Ｂ０、データＣのＣ９〜Ｃ０、データＤのＤ９〜Ｄ０の通信フレームとなる。
【００２５】
受信時のエンディアン変換処理について具体的に説明する。受信時のエンディアン変換処理は、基本的には、上記の送信時のエンディアン変換と逆に処理を行う。エンディアン変換部１１では、受信用の通信フレームバッファ１２に格納された通信フレーム（全てのデータがビックエンディアンで配置されたフレーム）全体をバイト単位で反転スワップし（全てのデータに対する一括でのエンディアン変換）、反転バッファを生成する。そして、エンディアン変換部１１では、反転バッファにおけるデータ毎に、変換ルールに従ったバイト位置に基づいて通信フレームバッファ１２から読み出し、その読み出したデータをビット位置補正する。
【００２６】
図１を参照して、ＥＣＵ２Ａにおけるデータ送信時の動作を図３のフローチャートに沿って説明する。図３は、リトルエンディアンのＥＣＵにおける送信時の処理の流れを示すフローチャートである。
【００２７】
ＣＰＵで処理されたリトルエンディアンの複数のデータを送信する場合、ＥＣＵ２Ａでは、リトルエンディアンのデータ毎に、ビット位置補正する（Ｓ１）。そして、ＥＣＵ２Ａでは、そのビット位置補正後のデータの反転バッファにおけるバイト位置を変換ルールに従って算出し、その算出したバイト位置に基づいて通信フレームバッファ１２にデータを書き込む（Ｓ２）。
【００２８】
ＥＣＵ２Ａでは、送信する全てのデータについて通信フレームバッファ１２への書き込みが終了したか否かを判定する（Ｓ３）。Ｓ３にて全てのデータについて書き込みが終了していないと判定した場合、ＥＣＵ２Ａでは、Ｓ１に戻って、次のデータに対してＳ１，Ｓ２の処理を行う。
【００２９】
Ｓ３にて全てのデータについて書き込みが終了したと判定した場合、ＥＣＵ２Ａでは、通信フレームバッファ１２に書き込まれている反転バッファ全体をバイト単位で反転スワップし（一括のエンディアン変換を行い）、通信フレームを生成する（Ｓ４）。そして、ＥＣＵ２Ａでは、その通信フレームを車載ネットワーク１に送信する（Ｓ５）。
【００３０】
このＥＣＵ２Ａによれば、通信フレームに対してバイト並びを反転した反転バッファを生成することにより、バイト単位での反転スワップで全てのデータに対するエンディアン変換を一括で行うことができ、通信フレームのエンディアン変換に要する処理時間を短縮できる。特に、１０ビットデータのように８ビット（１バイト）の整数倍でないデータの場合、処理時間の短縮効果が大きい。
【００３１】
以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。
【００３２】
例えば、本実施の形態では車両に搭載されるネットワークに適用したが、他のネットワークにも適用可能である。また、本実施の形態ではＣＡＮやＦｌｅｘＲａｙ等のＬＡＮを介して通信フレームを送受信する場合に適用したが、ＬＡＮを介さない場合にも適用可能である。
【００３３】
また、本実施の形態ではビックエンディアンのデータからなる通信フレームを流すネットワークであり、リトルエンディアンのＥＣＵでエンディアン変換を行う構成としたが、リトルエンディアンのデータからなる通信フレームを流すネットワークであり、ビックエンディアンのＥＣＵでエンディアン変換を行う構成としてもよい。ビックエンディアンからリトルエンディアンに変換する場合も、上記の実施の形態と同様の処理で変換することができる。また、本実施の形態では１つのＥＣＵで送信時及び受信時にエンディアン変換を行う構成としたが、送信時と受信時のいずれか一方でエンディアン変換を行う構成としてもよい。
【００３４】
また、本実施の形態ではデータが８ビット（１バイト）の整数倍でない場合に適用したが、データが８ビットの整数倍の場合にも適用可能である。また、本実施の形態では通信フレームを用いて複数のデータを送受信する構成としたが、通信フレームに類するパッキングデータでもよい。
【００３５】
また、本実施の形態では反転バッファを生成する方法（反転バッファにおける各データのバイト位置の変換ルール等）の一例を示したが、他の方法によって反転バッファを生成してもよい。
【００３６】
また、本実施の形態では反転バッファを生成後に反転バッファを反転スワップで一括のエンディアン変換をし、通信フレームを生成してから送信する構成としたが、反転バッファを生成後に反転バッファの最後尾バイトからデータを順次読み出して送信するようにしてもよい。
【符号の説明】
【００３７】
１…車載ネットワーク、２Ａ，２Ｂ，２Ｃ…ＥＣＵ、１０…ネットワーク用通信部、１１…エンディアン変換部、１２…通信フレームバッファ。
【図１】
2011248516.tif 000003
【図２】
2011248516.tif 000004
【図３】
2011248516.tif 000005
【図４】
2011248516.tif 000006
【図５】
2011248516.tif 000007