• 締切済み

CRCチェック 多項式の選び方

今、CRCチェックの多項式を何にすればよいか悩んでいます。多項式を選ぶ基準はあるのでしょうか?私は、マイコンのソフト設計を業務にしており、EEPROMにマイコン側で書き込んだデータが正しく、EEPROMから読み出しているかを確認する為にCRCチェックで確認をしようとしています。例えば、EEPROMの容量は1024BYTEで、各セクション=16BYTE(1セクション=16BYTE)単位で各セクションには、SHORT型もしくはCHAR型等のサイズは多種のデータが混在します。セクション単位でCRCチェックを実施しようと考えたいますが、CRCの多項式を選ぶ基準について御教示願いたいです。

みんなの回答

  • mark225
  • ベストアンサー率37% (6/16)
回答No.2

#1です。 私はシリアル通信でCRCやBCCを使いますので、その感覚で回答させて頂いたのですが、どうも貴殿の方がレベルが上の様です(^^; 正直、よく分かりません。 ごめんなさい。(__)

すると、全ての回答が全文表示されます。
  • mark225
  • ベストアンサー率37% (6/16)
回答No.1

先頭から末尾まで(16バイト)を (1)XOR(排他的論理和)する。 (2)和算した下位8ビットを採用する。 (1)又は(2)の演算結果を17バイト目に添付書き込み。 尚、(1)と(2)では特にどちらが優れていると言う訳ではありませんので「趣味」になると思います。 もし、メモリ容量が許されるのであれば両方を使うと信頼性は上がります。 こんな回答で良かったでしょうか?

mihomayumi
質問者

お礼

ご回答ありがとうございます。 (2)はSUMチェックと思います(データを先頭から末尾まで足しこんで下位1BYTEが0x00とか0xFF等の特定の数値に合わるようなデータを、17BYBE目に埋め込むことと思います)。 (1)がCRCチェックに近いと思いますが。 CRCチェックには一般的にCRC-8/CRC-16/CRC-32等があると思いますが、どの種類のCRCチェック(どの多項式)を使うべきか迷っています。 その為、チェックするデータ長などにより、多項式を選ぶ基準があるのでしょうか。なにを元に多項式を選ぶのでしょうか。との事が知りたいです。 たとえば、データ長で多項式を選ぶ基準があるとすれば、下記のような構造体(計4BYTE)のデータをCRCチェックで実施する場合 short/char/char 多項式では何を選ぶべきなのでしょうか。 ご教示願いたいです。

すると、全ての回答が全文表示されます。