-CRC


CRC コードを出力します。

[指定形式]

-CRC = <サブオプション>
 <サブオプション> : <出力位置>=<計算範囲>[/<演算方法>][(<初期値>)][:<エンディアン>]
      <出力位置> : <アドレス>
      <計算範囲> : { <先頭アドレス>-<終了アドレス> | <セクション> }[,...]
      <演算方法> : { CCITT | 16-CCITT-MSB | 16-CCITT-MSB-LITTLE-4 | 
                    16-CCITT-MSB-LITTLE-2 | 16-CCITT-LSB | 16 | SENT-MSB | 32-ETHERNET }
        <初期値> : <初期値>
   <エンディアン> : { BIG | LITTLE }[-<サイズ>-<オフセット>]

 

[詳細説明]

-

指定した範囲のセクションのデータを,下位アドレスから上位アドレスの順でCRC(Cyclic Redundancy Check)演算を行い,演算結果を出力アドレスへエンディアンの指定方法で出力します。

-

演算方法には以下のいずれかを指定することができます。演算方法の指定を省略した場合は,32-ETHERNET を指定したものとして演算を行います。

演算方法

内容

CCITT

CRC-16-CCITTでMSB First,初期値0xFFFF,XOR反転による演算結果を得ることができます。

生成多項式はx16+x12+x5+1です。

16-CCITT-MSB

CRC-16-CCITTでMSB Firstによる演算結果を得ることができます。

生成多項式はx16+x12+x5+1です。

16-CCITT-MSB-LITTLE-4

入力をLITTLEエンディアン4バイト単位としCRC-16-CCITTでMSB Firstによる演算結果を得ることができます。

生成多項式はx16+x12+x5+1です。

16-CCITT-MSB-LITTLE-2

入力をLITTLEエンディアン2バイト単位としCRC-16-CCITTでMSB Firstによる演算結果を得ることができます。

生成多項式はx16+x12+x5+1です。

16-CCITT-LSB

CRC-16-CCITTでLSB Firstによる演算結果を得ることができます。

生成多項式はx16+x12+x5+1です。

16

CRC-16でLSB Firstによる演算結果を得ることができます。

生成多項式はx16+x15+x2+1です。

SENT-MSB

入力をLITTLEエンディアン1バイト中下位4bit単位としSENT準拠で初期値0x5,MSB Firstによる演算結果を得ることができます。

生成多項式はx4+x3+x2+1です。

32-ETHERNET

CRC-32-ETHERNETによる演算結果を得ることができます。演算結果は初期値0xFFFFFFFF,XOR反転,ビットリバースされています。

生成多項式はx32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1です。

-

<初期値>として指定可能な値の範囲は,演算方法が32-ETHERNETでは0x0〜0xFFFFFFFF,それ以外は0x0〜0xFFFFです。

-

<初期値>を省略した場合は,演算方法がSENT-MSBでは0x5,CCITTでは0xFFFF,32-ETHERNETでは0xFFFFFFFF,それ以外は0x0を指定したものとして演算を行います。

-

演算結果の出力アドレスへの出力は,サイズで確保した領域の先頭からオフセットの位置に,BIGかLITTLEで指定したバイトオーダーで書き込みます。確保した領域の先頭からオフセットの位置直前までは0を出力します。

-

サイズとオフセットが省略された場合,サイズは2バイトで,オフセットは0とします。

-

計算範囲にある空き領域はspaceオプションが指定されていない場合は,space=FFが指定されていると仮定して,CRC演算を行います。ただし,CRC演算は,空き領域では0xFFで計算を行いますが,0xFFを埋めることはありません。

-

演算範囲として指定した下位アドレスから上位アドレスの順に演算を行います。

[使用例]

-

0x1000〜0x2FFDの領域に対してCRC演算を行い,その結果を0x2FFE番地に出力します。

>rlink *.obj -form=stype -start=.SEC1,.SEC2/1000,.SEC3/2000
 -crc=2FFE=1000-2FFD -output=out.mot=1000-2FFF

[備考]

-

複数のロード・モジュール・ファイル入力時は,本オプションはワーニングを出力して無視します。

-

出力形式がform={hexadecimal | stype}の場合に有効です。これ以外の場合はエラーを出力して終了します。

-

space オプションが指定されていない場合で,計算範囲に出力されない空き領域があるとき,空き領域には0xFFが設定されているものとしてCRCの計算が行われます。

-

CRC演算の計算範囲にオーバーレイ指定されている領域が含まれる場合はエラーを出力して終了します。

-

エンディアンの指定で,サイズとオフセットには,以下が指定できます。これ以外の場合はエラーを出力して終了します。

-

LITTLE

-

LITTLE-2-0

-

LITTLE-4-0

-

BIG

-

BIG-2-0

-

BIG-4-0