什么是 64b 输入和 32b 输出的 CRC?



我正在开发一个软件实用程序,将某些数据传输到PCI-E板。为了避免数据传输故障,我在每个数据包中添加了一个CRC字段,以便PCI-E板可以用CRC值验证接收到的数据。

然后我们发现CRC值未能通过验证。

我正在使用 boost :: CRC_32_TYPE 来生成CRC值,而硬件Guy告诉我,董事会中的CRC实现来自http://www.easics.com/webtools/crctool,他们正在使用 64 crc32 的数据总线宽度版本 - 以太网/AAL5。

那么,是否可以使用boost :: crc_32_type与他们正在使用的那个使用?

任何建议都将不胜感激!

[编辑2013.02.20 ]

  1. 工作CRC模板应具有以下定义:
    boost :: crc_optimal< 32,0x04c11db7,0xffffffff,0x0,false,false,false>
  2. 在处理之前,应将每8个字节的顺序撤销
  3. std :: for_each用于获得结果,而不是process_bytes,我仍然不太了解它们之间的区别。

您可以使用crc_32_type-首先,您必须确保您的字节的顺序与硬件人员的字节相同。Easics代码使用的约定是流中的第一个字节进入数据[63:56]。

最新更新