improved crc
This commit is contained in:
parent
7a84b80126
commit
86e289f56f
@ -172,14 +172,19 @@ uint32_t Checksum_EEPROM(uint8_t const *data, size_t len)
|
|||||||
{
|
{
|
||||||
if (data == NULL)
|
if (data == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
uint32_t crc = 0;
|
uint32_t crc, mask;
|
||||||
|
crc = 0xFFFFFFFF;
|
||||||
|
|
||||||
while (len--)
|
while (len--)
|
||||||
{
|
{
|
||||||
crc ^= *data++;
|
crc ^= *data++;
|
||||||
for (uint8_t k = 0; k < 8; k++)
|
for (uint8_t k = 0; k < 8; k++)
|
||||||
crc = crc & 1 ? (crc >> 1) ^ 0xb2 : crc >> 1;
|
{
|
||||||
|
mask = -(crc & 1);
|
||||||
|
crc = (crc >> 1) ^ (0xEDB88320 & mask);
|
||||||
}
|
}
|
||||||
return crc ^ 0xff;
|
}
|
||||||
|
return ~crc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dumpEEPROM(uint16_t memoryAddress, uint16_t length)
|
void dumpEEPROM(uint16_t memoryAddress, uint16_t length)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user