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