3

一部のデータを pci-e ボードに転送するためのソフトウェア ユーティリティを開発しています。データ転送エラーを回避するために、すべてのパケットに CRC フィールドを追加して、PCI-E ボードが受信したデータを CRC 値で検証できるようにしました。

その後、CRC 値が検証に合格しなかったことがわかりました。

私はboost::crc_32_typeを使用してCRC値を生成していますが、ハードウェアの担当者は、ボードのCRC実装はhttp://www.easics.com/webtools/crctoolからのものであり、 64データを使用していると教えてくれましたCRC32 - ETHERNET / AAL5のバス幅バージョン。

それで、boost::crc_32_type を使用して、彼らが使用しているものを操作することは可能ですか?

どんな提案でも大歓迎です!

[編集 2013.02.20 ]

  1. 作業用の crc テンプレートには次の定義が必要です:
    boost::crc_optimal<32, 0x04C11DB7, 0xFFFFFFFF, 0x0, false, false>
  2. 処理される前に、8 バイトごとの順序が逆になります。
  3. std::for_each が process_bytes の代わりに使用されて結果が得られますが、それらの違いはまだよくわかりません。
4

1 に答える 1

3

使用できますcrc_32_type-最初に、バイトがハードウェア担当者のバイトと同じ順序になっていることを確認する必要があります。EASICS コードで使用される規則は、ストリームの最初のバイトが Data[63:56] に入るというものです。

于 2012-10-22T10:09:15.620 に答える