提交 d97e947b 作者: wysheng

crc

上级 b5ec882a
......@@ -2,6 +2,57 @@
u8 TcuUpDateBuffer[1024]; //TCU升级数据缓存
unsigned long crc32_a_opt(const unsigned char *buf, unsigned long len)
{
static unsigned long s_table[0x100] = { 0 };
unsigned long rem = 0xFFFFFFFF;
unsigned long b = 0;
unsigned long d = 0;
unsigned long n = 0;
if (s_table[1] == 0)
{
for (n = 0; n < 0x100; n++)
{
s_table[n] = n << 24;
for (b = 0; b < 8; b++)
{
d = s_table[n] & 0x80000000;
s_table[n] <<= 1U;
if (d != 0)
{
s_table[n] ^= 0x04C11DB7;
}
}
}
}
if (buf != 0 && len % 4 == 0)
{
for (n = 0; n < len; n += 4)
{
rem = (rem << 8U) ^ s_table[(rem >> 24U) ^ buf[n + 3]];
rem = (rem << 8U) ^ s_table[(rem >> 24U) ^ buf[n + 2]];
rem = (rem << 8U) ^ s_table[(rem >> 24U) ^ buf[n + 1]];
rem = (rem << 8U) ^ s_table[(rem >> 24U) ^ buf[n + 0]];
}
}
return rem;
}
u32 TCUGetPackageChecksum(void)
{
unsigned long crc = 0;
crc = crc32_a_opt((const unsigned char *)(TcuUpDateBuffer),1024);
return (u32)(crc);
}
u32 TCUGetProgramChecksum(void)
{
unsigned long crc = 0;
crc = crc32_a_opt((const unsigned char *)(BakStartAddr),480*1024);
return (u32)(crc);
}
void TCUUpDateHeartHandle(StructTCUSend * pPgnRecv)
{
static u16 count = 0xffff;
......@@ -236,11 +287,6 @@ void TCUSendDateHandle(StructTCUSend * pPgnRecv)
}
}
u32 TCUGetPackageChecksum(void)
{}
u32 TCUGetProgramChecksum(void)
{}
typedef struct
{
u8 type;//设备类型
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论