我正在开发一个软件实用程序,将某些数据传输到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 ]
- 工作CRC模板应具有以下定义:
boost :: crc_optimal< 32,0x04c11db7,0xffffffff,0x0,false,false,false> - 在处理之前,应将每8个字节的顺序撤销
- std :: for_each用于获得结果,而不是process_bytes,我仍然不太了解它们之间的区别。
您可以使用crc_32_type
-首先,您必须确保您的字节的顺序与硬件人员的字节相同。Easics代码使用的约定是流中的第一个字节进入数据[63:56]。