We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
I have tried to generate the Checksum using Linker file and using Software calculation(Fast and Slow 16bit CRC). I used Polynomial as 0X11021 and 0X1021. But the linker CRC and the Software CRC is not matching. I want to know how the linker is calculating the Checksum. is it calculating the checksum for entire memory location(CODE=8002-FFDF, INTVEC=FFE0-FFFF, RESET=FFFE-FFFF), since I am placing the checksum in the beginning -Z(CONST)CHECKSUM=8000-8001.
_______________________________________________________________________________________
Since my ROM memory range is from 8000-FFFF
-Z(CONST)DATA16_C,DATA16_ID,TLS16_ID,DIFUNCT=8002-FFDF-Z(CONST)CHECKSUM=8000-8001// Placing the Checksum at the beginning
-Z(CODE)INTVEC=FFE0-FFFF-Z(CODE)RESET=FFFE-FFFF
________________________________________________________________________________________
I have tried like the example code given in www.iar.com/.../ link also
And i have called the function for both slow and fast like mentioned below,
unsigned short sum=0;
sum = fast_crc16(sum,(unsigned char *)0x8002, 0xFFDF-0x8002+1);sum = fast_crc16(sum,(unsigned char *)0xFFFE, 2);
sum = fast_crc16(sum,(unsigned char *)0x8002, 0xFFFF-0x8002+1);
sum = fast_crc16(sum,(unsigned char *)0x8002, 0xFFDF-0x8002+1);
sum = fast_crc16(sum,(unsigned char *)0x8002, 0xFFDF-0x8002+1);sum = fast_crc16(sum,(unsigned char *)0xFFE0, 0xFFE0-0xFFFD+1);sum = fast_crc16(sum,(unsigned char *)0xFFFE, 2);
sum = fast_crc16(sum,(unsigned char *)0x8002, 0xFFDF-0x8002+1);sum = fast_crc16(sum,(unsigned char *)0xFFE0, 0xFFE0-0xFFFF+1);
__________________________________________________________________________________________
The linker generating CRC and the software generating CRC is not getting match. I need support regarding this issue.
Regards,
Benita.C