Tag: crc32

MicroController上的CRC-32(Atmel)

我目前正在尝试在ATMEGA1280上为传入的数据流(串行通信)实现CRC-32而且我有点迷失在C中的嵌入式端如何执行此操作….如果有人能指出我正确的方向和/或无论如何帮助我会非常感激…

计算大型CRC32的正确方法是什么?

这篇文章描述了如何使用现代x86-64处理器中的内置CRC32指令计算最大1024字节的CRC32。 但是,我需要计算超过1024字节的CRC32。 计算1024字节的每个块的CRC32并最终求和它们是否是正确的方法,还是不正确? 如果是这样,那么正确的方法是什么?

802.11 FCS(CRC32)

以下代码是否正确计算无线802.11帧的FCS值? 因为以下代码生成的值与wireshark显示的值不匹配。 const uint32_t crctable[] = { 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, […]

CRC中的CRC32算法/实现没有查找表和公共许可证

我试图在C中实现一个不使用查找表的CRC32算法(我需要在没有足够内存可用的引导加载程序中使用它)。 是否有可用的公共许可证解决方案?

如何利用英特尔特定指令实现CRC32?

英特尔在SSE4.2指令集中提供了特定的CRC32指令 。 如何利用此指令加速CRC32计算?

快速CRC算法?

我想用ASCII字符串创建一个32位数字。 CRC32算法正是我正在寻找的,但我无法使用它,因为它需要的表太大了(它适用于资源非常少的嵌入式系统)。 那么:对快速而纤薄的CRC算法的任何建议? 与原始CRC32相比,何时碰撞更可能无关紧要。 谢谢!

_mm_crc32_u64定义不明确

为什么世界上_mm_crc32_u64(…)定义是这样的? unsigned int64 _mm_crc32_u64( unsigned __int64 crc, unsigned __int64 v ); “crc32”指令总是累加32位CRC,而不是 64位CRC(毕竟,CRC32不是CRC64)。 如果机器指令CRC32 恰好具有64位目标操作数,则忽略高32位,并在完成时填充0,因此没有使用EVER具有64位目标。 我理解为什么英特尔允许在指令上使用64位目标操作数(为了均匀性),但如果我想快速处理数据,我想要一个尽可能大的源操作数(即如果剩下那么多数据,则为64位,尾部较小)并且始终是32位目标操作数。 但内在函数不允许使用64位源和32位目标。 注意其他内在函数: unsigned int _mm_crc32_u8 ( unsigned int crc, unsigned char v ); “crc”的类型不是8位类型,也不是返回类型,它们是32位。 为什么没有 unsigned int _mm_crc32_u64 ( unsigned int crc, unsigned __int64 v ); ? 英特尔指令支持这一点, 这是最有意义的内在因素。 有没有人有可移植的代码(Visual Studio和GCC)来实现后者的内在? 谢谢。 我的猜测是这样的: #define CRC32(D32,S) __asm__(“crc32 %0, %1” : […]