I got the crc stuff to work properly. There is documentation in the
xlink.pdf file that resides in the doc directory. It computes the crc
or checksum on the image starting at 0x1100 to the end of the image
and including the INTVEC area(0xFFE0-0xFFFF). There is an INFO area
in my linker file from 0x1000 to 0x1100 - I'm not sure what this is
for; maybe configuration stuff.
One important trick I needed to do was to fool the fill byte
generation which is required for CRC generation. I gave it a negative
region for the fill region(-hFFDC-FFDB). Also, any unused interrupt
vectors need to be filled in with something.
One can select whichever polynomial they want(CRC=0xXXXX).
Thanks for your help.
Mike
--- In msp430@y..., "Ian Okey" <ian_okey@h...> wrote:
> I had something that looked very similar but I
could not ues it in
my app.
> I use some parts of flash to store configuration
items using
> flash write routines in the application code. As the linker
includes
> these areas in the CRC generation any changes to
the unit stored
> configuration will cause the CRC to fail. IAR told me that it is
> not possible to exclude parts if the flash array from the CRC.
>
> This seems to be a function that promises much and delivers little.
> Good for the marketing specs ;-)
>
> Ian
>
> http://www.satamatics.com
>
> >From: "Matthew Bivans" <mbivans@r...>
> >Reply-To: msp430@y...
> >To: <msp430@y...>
> >Subject: RE: [msp430] MSP430 CRC generation with IAR tools
> >Date: Wed, 2 Oct 2002 16:00:23 -0400
> >
> >Here's the CRC generating code that IAR sent me when I asked the
same
> >question of them. I can't say that
I've tried it, as I ended up
using the
> >generic checksum method instead. Hope it
helps.
> >
> >matt
> ><snip>
> >
> ></snip>
> >-----Original Message-----
> >From: mjruley [mailto:mjruley@y...]
> >Sent: Wednesday, October 02, 2002 3:43 PM
> >To: msp430@y...
> >Subject: [msp430] MSP430 CRC generation with IAR tools
> >
> >
> >I am using the IAR toolset to automatically generate a CRC for my
> >image. This is done by adding the -J2,CRC16 switch in my linker
file.
> >I assumed this was using either the 0x11021 or
the 0x18005
> >polynomial. When I test it attempting to generate a CRC for a 1
byte
> >image, I get the following results:
> >
> > Byte value resulting CRC value
> > 0x1 0x8DDC
> > 0x2 0x0B99
> > 0x4 0x1732
> > 0x8 0x2e64
> > 0x10 0x5cc8
> > 0x20 0xb990
> > 0x40 0x6301
> > 0x80 0xc602
> >There is little documentation on this feature. Has anyone used the
> >CRC generator and, if so, what is the polynomial?
> >
> >Thanks, Mike
> >
> >
> >
> >To unsubscribe from the msp430 group, send an email to:
> >msp430-unsubscribe@e...
> >
> >
> >
> >">http://docs.yahoo.com/info/terms/> >
> >
>
>
>
>
> _________________________________________________________________
> MSN Photos is the easiest way to share and print your photos:
> http://photos.msn.com/support/worldwide.aspx
I still haven't found anyone that will actually admit to using IARs
Visual State application. Anyone? Anyone? Maybe it works so well
that the people using it don't need any support?
CP
--- In msp430@y..., "Ian Okey" <ian_okey@h...> wrote:
<snip>
>
> This seems to be a function that promises much and delivers little.
> Good for the marketing specs ;-)
>
> Ian
<snip>
Reply by Ian Okey●October 3, 20022002-10-03
I had something that looked very similar but I could not ues it in my app.
I use some parts of flash to store configuration items using
flash write routines in the application code. As the linker includes
these areas in the CRC generation any changes to the unit stored
configuration will cause the CRC to fail. IAR told me that it is
not possible to exclude parts if the flash array from the CRC.
This seems to be a function that promises much and delivers little.
Good for the marketing specs ;-)
Ian
http://www.satamatics.com>From: "Matthew Bivans"
<mbivans@mbiv...>
>Reply-To: msp430@msp4...
>To: <msp430@msp4...>
>Subject: RE: [msp430] MSP430 CRC generation with IAR tools
>Date: Wed, 2 Oct 2002 16:00:23 -0400
>
>Here's the CRC generating code that IAR sent me when I asked the same
>question of them. I can't say that I've tried it, as I ended up
using the
>generic checksum method instead. Hope it helps.
>
>matt
><snip>
>
></snip>
>-----Original Message-----
>From: mjruley [mailto:mjruley@mjru...]
>Sent: Wednesday, October 02, 2002 3:43 PM
>To: msp430@msp4...
>Subject: [msp430] MSP430 CRC generation with IAR tools
>
>
>I am using the IAR toolset to automatically generate a CRC for my
>image. This is done by adding the -J2,CRC16 switch in my linker file.
>I assumed this was using either the 0x11021 or the 0x18005
>polynomial. When I test it attempting to generate a CRC for a 1 byte
>image, I get the following results:
>
> Byte value resulting CRC value
> 0x1 0x8DDC
> 0x2 0x0B99
> 0x4 0x1732
> 0x8 0x2e64
> 0x10 0x5cc8
> 0x20 0xb990
> 0x40 0x6301
> 0x80 0xc602
>There is little documentation on this feature. Has anyone used the
>CRC generator and, if so, what is the polynomial?
>
>Thanks, Mike
>
>
>
>.
>
>
>
>">http://docs.yahoo.com/info/terms/
>
>
_________________________________________________________________
MSN Photos is the easiest way to share and print your photos:
http://photos.msn.com/support/worldwide.aspx
Reply by Matthew Bivans●October 2, 20022002-10-02
Here's the CRC generating code that IAR sent me when I asked the same
question of them. I can't say that I've tried it, as I ended up using
the generic checksum method instead. Hope it helps.
matt
/* - checksum.c -
Simple checksum routines.
Created 970615 by Grzm.
(c) Copyright IAR Systems 1997.
$Id: checksum.c 1.1 1997/06/30 12:20:20 Grzm Exp $
$Log: checksum.c $
Revision 1.1 1997/06/30 12:20:20 Grzm
Initial revision
*/
/* Here's a couple of sample functions to use to calculate a checksum in
a few different ways. Take whatever you need and modify as desired. */
const
unsigned short
crc16_table[256] {
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108,
0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210,
0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b,
0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401,
0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee,
0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6,
0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d,
0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5,
0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc,
0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4,
0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd,
0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13,
0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a,
0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e,
0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1,
0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb,
0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0,
0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8,
0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657,
0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9,
0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882,
0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e,
0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07,
0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d,
0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74,
0x2e93, 0x3eb2, 0x0ed1, 0x1ef0,
};
const
unsigned long
crc32_table[256] {
0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7,
0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3,
0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef,
0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb,
0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,
0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4,
0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,
0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08,
0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc,
0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,
0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050,
0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,
0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1,
0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5,
0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9,
0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd,
0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,
0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2,
0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,
0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e,
0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a,
0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,
0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676,
0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4,
};
unsigned long
sum32(unsigned long sum, unsigned char *p, unsigned long len)
{
while (len--)
sum += *p++;
return sum;
}
unsigned short
fast_crc16(unsigned short sum, unsigned char *p, unsigned long len)
{
while (len--)
sum = crc16_table[(sum >> 8) ^ *p++] ^ (sum << 8);
return sum;
}
unsigned long
fast_crc32(unsigned long sum, unsigned char *p, unsigned long len)
{
while (len--)
{
sum = crc32_table[(sum >> 24) ^ *p++] ^ (sum << 8);
}
return sum;
}
/* Note that if you use this algorithm, you need to call it with
an extra number of zero bytes equal to the size of the checksum
(in this case 2). */
unsigned short
slow_crc16(unsigned short sum, unsigned char *p, unsigned long 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 ^= 0x1021;
byte <<= 1;
}
}
return sum;
}
-----Original Message-----
From: mjruley [mailto:mjruley@mjru...]
Sent: Wednesday, October 02, 2002 3:43 PM
To: msp430@msp4...
Subject: [msp430] MSP430 CRC generation with IAR tools
I am using the IAR toolset to automatically generate a CRC for my
image. This is done by adding the -J2,CRC16 switch in my linker file.
I assumed this was using either the 0x11021 or the 0x18005
polynomial. When I test it attempting to generate a CRC for a 1 byte
image, I get the following results:
Byte value resulting CRC value
0x1 0x8DDC
0x2 0x0B99
0x4 0x1732
0x8 0x2e64
0x10 0x5cc8
0x20 0xb990
0x40 0x6301
0x80 0xc602
There is little documentation on this feature. Has anyone used the
CRC generator and, if so, what is the polynomial?
Thanks, Mike
.
">http://docs.yahoo.com/info/terms/
Reply by mjruley●October 2, 20022002-10-02
I am using the IAR toolset to automatically generate a CRC for my
image. This is done by adding the -J2,CRC16 switch in my linker file.
I assumed this was using either the 0x11021 or the 0x18005
polynomial. When I test it attempting to generate a CRC for a 1 byte
image, I get the following results:
Byte value resulting CRC value
0x1 0x8DDC
0x2 0x0B99
0x4 0x1732
0x8 0x2e64
0x10 0x5cc8
0x20 0xb990
0x40 0x6301
0x80 0xc602
There is little documentation on this feature. Has anyone used the
CRC generator and, if so, what is the polynomial?
Thanks, Mike