Everything

-CRc


CRC演算を行うかどうかを指定します。

[指定形式]

-CRc=address=operation-range[/operation-method][(initial-value)][:endian]
    operation-range  := start-end[,start-end]... 【V1.01】
                       {start-end|section}[,{start-end|section}]... 【V1.02以降】
    operation-method := {16-CCITT-MSB-LITTLE-4|16-CCITT-LSB|SENT-MSB} 【V1.01】
                       {CCITT|16-CCITT-MSB|16-CCITT-MSB-LITTLE-4|16-CCITT-MSB-
                        LITTLE-2|16-CCITT-LSB|16|SENT-MSB|32-ETHERNET} 【V1.02以降】
    endian           := {BIG|LITTLE}[-size-offset]

 

-

省略時解釈

CRC演算,および演算結果の出力を行いません。

[詳細説明]

-

指定した範囲のロード・オブジェクトを,下位アドレスから上位アドレスの順でCRC(Cyclic Redundancy Check)演算を行い,演算結果を出力アドレスへエンディアンの指定方式で出力します。

-

addressには出力アドレスを指定します。
指定可能な値の範囲は,0x0~0xFFFFFです。

-

startendには演算範囲(開始アドレス,終了アドレス)を指定します。
指定可能な値の範囲は,0x0~0xFFFFFです。

-

演算方法には以下のいずれかを指定します。

演算方法

内容

CCITT

【V1.02以降】

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

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

16-CCITT-MSB

【V1.02以降】

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

【V1.02以降】

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

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

16-CCITT-LSB

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

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

16

【V1.02以降】

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

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

SENT-MSB

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

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

32-ETHERNET

【V1.02以降】

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

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

なお,演算方法の指定を省略した場合は,16-CCITT-MSB-LITTLE-4を指定したものとします。

-

initial-valueには演算用の初期値を指定します。
指定可能な値の範囲は,演算方法が32-ETHERNETの場合は0x0~0xFFFFFFFF,SENT-MSBでは0x0~0xF,それ以外は0x0~0xFFFFです。
初期値を省略した場合は,演算方法がSENT-MSBの場合は0x5,CCITTの場合は0xFFFF,32-ETHERNETの場合は0xFFFFFFFF,それ以外は0x0を指定したものとして演算を行います。

-

endianにはエンディアン,サイズ,オフセットを指定します。
指定可能な組み合わせを以下に示します。

-

LITTLE

-

LITTLE-2-0

-

LITTLE-4-0

-

BIG

-

BIG-2-0

-

BIG-4-0

-

エンディアンのBIGまたはLITTLE指定が省略された場合は,入力オブジェクト・ファイルのエンディアンと同じになります。

-

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

-

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

-

演算範囲にある空き領域は,-spaceオプションを指定していない場合は-space=FFオプションを指定していると仮定して,CRC演算を行います。
ただし,CRC演算は,空き領域では0xFFで計算を行いますが,0xFFを埋めることはありません。
演算範囲として指定した下位アドレスから上位アドレスの順に演算を行います。

-

本オプションを複数回指定した場合,指定した全てのCRC演算を出力します。【V1.12以降】

[使用例]

例 1.

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

 

 

-crcオプション:-crc=2FFE=1000-2FFD

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

計算範囲にある空き領域は-spaceオプションを指定していない場合,-space=FFオプションを指定していると仮定して,CRC演算を行います。

 

-outputオプション:-output=out.mot=1000-2FFF

-spaceオプションを指定していないため,空き領域はout.motに出力されません。

CRC演算は,空き領域では0xFFで計算を行いますが,0xFFを埋めることはありません。

注意 1.

CRC出力位置は計算範囲に含むことはできません。

注意 2.

CRC出力位置は-outputオプションの出力範囲に含まれている必要があります。

 

例 2.

>rlink *.obj -form=stype -start=.SEC1/1000,.SEC2/1800,.SEC3/2000 -space=7F -crc=2FFE=1000-17FF,2000-27FF -output=out.mot=1000-2FFF

 

 

-crcオプション:-crc=2FFE=1000-17FD,2000-27FF

0x1000~0x17FDと0x2000~0x27FFの2つの領域に対してCRC演算を行い,その結果を0x2FFE番地に出力します。

CRC演算は,計算対象として連続していない複数の計算範囲を指定することができます。

 

-spaceオプション:-space=7F

指定した計算範囲の空き領域は-spaceオプションの値(0x7F)で計算されます。

 

-outputオプション:-output=out.mot=1000-2FFF

-spaceオプションを指定しているため,空き領域はout.motに出力されます。

空き領域は0x7Fで充填されます。

注意 1.

CRC演算の計算順は計算範囲の指定順ではありません。下位アドレスから上位アドレスの順に計算されます。

注意 2.

-crcオプションと-spaceオプションを同時に指定する場合,-spaceオプションにrandom,または2バイト以上の値を指定することはできません。1バイトのデータを指定してください。

 

例 3.

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

 

 

-crcオプション:-crc=1FFE=1000-1FFD,2000-2FFF

0x1000~0x1FFDと0x2000~0x2FFFの領域に対してCRC演算を行い,その結果を0x1FFE番地に出力します。

計算範囲にある空き領域は-spaceオプションを指定していない場合,-space=FFオプションを指定していると仮定して,CRC演算を行います。

 

-outputオプション:-output=flmem.mot=1000-1FFF

-spaceオプションを指定していないため,空き領域はflmem.motに出力されません。

CRC演算は,空き領域では0xFFで計算を行いますが,0xFFを埋めることはありません。

 

例 4.

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

 

 

 

-crcオプション(1):-crc=2FFC=1000-1FFF

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

-crcオプション(2):-crc=2FFE=2000-2FFB

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

[備考]

-

本オプションは,複数のロード・モジュール・ファイルを入力した場合は無効となります。

-

【V1.06以前】

本オプションは,-form={stype|hexadecimal}オプションを指定した場合のみ有効です。

【V1.07以降】

本オプションは,-form={stype | hexadecimal | bin} オプションを指定した場合のみ有効です。

-

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

-

CRC演算の計算範囲にオーバーレイ指定されている領域が含まれる場合,エラーとなります。

-

RL78,78K0R C コンパイラ・パッケージ CA78K0R(別売)のオブジェクト・コンバータ(OC78K0R)と本製品の最適化リンカの-crcオプション指定との対応は,以下の様になります。

OC78K0R

最適化リンカ

HIGH

16-CCITT-MSB-LITTLE-4

HIGH(SENT)

SENT-MSB

GENERAL

16-CCITT-LSB