我正在尝试为 8052 嵌入式平台上的应用程序代码计算 CRC32。
以下是计算 CRC 的指南:
void TestChecksum()
{
unsigned short calc = 0;
/* Run the checksum algorithm */
calc = slow_crc16(0, (unsigned char *) ChecksumStart, (ChecksumEnd - ChecksumStart+1));
/* Rotate out the answer */
unsigned char zeros[2] = {0, 0};
calc = slow_crc16(calc, zeros, 2);
etc...
}
在哪里
unsigned short slow_crc16(unsinged short sum, unsigned char *p, unsigned int len)
{
while (len--)
{
int i;
unsigned char byte = *(p++);
for (i = 0; i < 8; ++i)
{
etc...
}
}
这个例子的问题是指针自动指向 XData 而我在 CODE 之后。我知道我想计算 CRC 的代码地址,比如 0x2000 到 0x2FFF。
是否可以将指针定义为:
uint8_t __code *Ptr;
并将地址 0x2000 作为 uint32 传递给 CRC 函数?
基本上我不知道如何让一个指针指向一个实际存储为变量的地址。
任何帮助将不胜感激,我不确定这是否可能。