Еще раз добрый день!
Столкнулся с такой проблемой - создаю CRC так:
Код
-J2,crc=8005,,,,,=(CODE)0-1
получаю вот это:
Код
Symbol Checksum Memory Start End Initial value
------ -------- ------ ----- --- -------------
__checksum 0xab7b CODE 00000000 - 00000001 0x0000 (#0x0000)
В программе использую следующий код для подсчета CRC (задача сравнить его с CRC прошивки) (пробую пока на 2 байтах...)
Код
#define POLY 0x8005
unsigned short slow_crc16(unsigned short sum, unsigned char __flash *p,
unsigned int len)
{
while (len--)
{
int i;
unsigned char byte = *(p++);
for (i = 0; i < 8; ++i)
{
unsigned long osum = sum;
sum <<= 1;
if (byte & 0x80)
sum |= 1;
if (osum & 0x8000)
sum ^= POLY;
byte <<= 1;
}
}
return sum;
unsigned short calc = 0;
/* Run the checksum algorithm */
calc = slow_crc16(calc, (unsigned char __flash*)0,(0x1));
}
внимание, вопрос... Не сходятся CRC...
Функция подсчета CRC взята из
IAR Linker and Library Tools
Reference Guide стр.36
В чем может быть дело???
Заранее благодарю...