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 回答