Доброго времени суток.
SasaVitebsk, если Вы разобрались с CRC в IAR, то прошу помощи.
MEGA32
Строка в .xcl - -J2,crc16,1,=(CODE)0-1(для пробы считаю CRC для первых
двух байт прошивки)
Значения во FLASH 0x0000=0C, 0x0001=94
На месте CHECKSUM#7FFF - af 79
В .map:
Symbol Checksum Memory Start End Initial value
------ -------- ------ ----- --- -------------
__checksum 0x79af CODE 00000000 - 00000001 0x0
Вычисляю:
void crc16_buf(u08 const __flash *buf,u16 buf_size)
{
u32 oldcrc = 0;
u32 newcrc;
u16 bit;
u08 byte,count;
while(buf_size){
byte = (*buf);
count = 7;
do{
if(byte & 0x80)
bit = 1;
else
bit = 0;
newcrc = (oldcrc << 1) ^ bit;
// if(oldcrc & 0x80000000) newcrc ^= 0xA0010000;
if(oldcrc & 0x8000) newcrc ^= 0x1021;
oldcrc = newcrc;
byte <<= 1;
}while(count--);
buf++;
buf_size--;
}
crc16mb_prev = oldcrc;
}
Не получается получить такой же результат.
Может увидите где ошибаюсь
Заранее спасибо.