avr-libc-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-libc-dev] [RFC,patch] xmodem-crc


From: E . Weddington
Subject: Re: [avr-libc-dev] [RFC,patch] xmodem-crc
Date: Mon, 10 Nov 2003 19:54:06 GMT

> 
> 
> On Mon, 10 Nov 2003, E.Weddington wrote:
> 
> > > Hi,
> > >
> > > Attached is a patch for avr/crc.h which adds dox and 
the
> > xmodem crc
> > > function.
> > >
> > > Any objections to committing this to HEAD and 1.0?
> > >
> > > Ted Roth
> > >
> >
> > 1. This would add a new function (API) so shouldn't it 
only
> > go into HEAD according to policy?
> 
> Adding functionality is OK. Changing existing 
functionality is BAD.
> 
> Note that vfprintf_P and vfscanf_P have already been 
released as
> extensions to the API in 1.0.1.

Ah, right you are. Sorry for my mix-up.

 
> >
> > 2. Your "xmodem crc" polynomial of x^16+x^12+x^5+1 (for
> > easier notation: [16,12,5,1]) is also more commonly 
known
> > as the CRC-CCITT (Comité Consultatif International
> > Télégraphique et Téléphonique) and is used in many
> > different protocols, not just XMODEM. I would suggest
> > renaming the function to reflect that it is the CCITT 
CRC,
> > as most people (I would think), when they look for a CRC
> > function, would be looking for a "CCITT" CRC.
> 
> Actually, crc-xmodem is not the same as crc-ccitt. They 
both use the
> same polynomial, but ccitt shifts in the LSB first and 
xmodem shifts in
> the MSB first. Thus, you get different incompatible 
results.

Huh. I wasn't aware of that, thanks!

 
> The test code I posted on friday shows expected values. 
Here they are
> for both xmodem and CCITT:
> 
>   Input:                             
xmodem:               CCITT:
> 
>   'M'                                
0x9969                0x99e1
>   'T'                                
0x1a71                0x14a1
>   'THE'                              
0x1e0a                0x7d8d
>   'THE,QUICK,BROWN,FOX,0123456789'   
0x0498                0x7dc5
> 
> Those values where taken from Crenshaw's article.
> 
> >
> > I'm getting some of this info from _Numerical Recipes in
> > C_, 2nd edition by Press, Teukolsky, Vetterling, and
> > Flannery.
> 
> Look at the table on page 898. All of the protocols in 
that table use
> the same polynomial.

Right. Same table I was referring to.
 
> Now that I understand the algorithm, it's rather trivial 
to get the
> rules for generating the CRC and then slightly less 
trivial to write the
> asm. I've already considered adding a few more commonly 
used CRCs when I
> get some more time.

Cool!

 
> For reference, the openoffice spreadsheet I used to work 
out the XOR
> rules is here:
> 
>   http://www.openavr.org/misc/Crc16-rules.sxc
> 
> Ted Roth
> 

Thanks for the extra info!
Eric






reply via email to

[Prev in Thread] Current Thread [Next in Thread]