-
From: Piotr Gałka <p...@C...pl>
Newsgroups: pl.misc.elektronika
References: <4d592d2d$1@news.home.net.pl> <ijc64m$951$1@news.onet.pl>
<ijc7pv$hc5$1@news.onet.pl>
Subject: Re: Jak się liczy CRC dla (x^24+4x^3+3x+1)
Date: Tue, 15 Feb 2011 13:20:04 +0100
Lines: 69
MIME-Version: 1.0
Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=response
Content-Transfer-Encoding: 8bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5994
NNTP-Posting-Host: 213.192.88.238
Message-ID: <4d5a6f1b$1@news.home.net.pl>
X-Trace: news.home.net.pl 1297772315 213.192.88.238 (15 Feb 2011 13:18:35 +0100)
Organization: home.pl news server
X-Authenticated-User: piotr.galka.micromade
Path: news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.home.net
.pl!not-for-mail
Xref: news-archive.icm.edu.pl pl.misc.elektronika:605016
[ ukryj nagłówki ]
Użytkownik "Adam Dybkowski" <a...@4...pl> napisał w wiadomości
news:ijc7pv$hc5$1@news.onet.pl...
>
> Tyle że w dokumentacji Atmela jest błąd i w rzeczywistości CRC jest
> liczone wg bardziej powszechnego wzoru:
>
> x^19 + x^4 + x^3 + x^1 + 1
>
> http://www.avrfreaks.net/index.php?name=PNphpBB2&fil
e=printview&t=29418
Może komuś się przyda moja wersja tego CRC:
dword crcXmega(byte *buf,dword n,dword crc)
{
for(n>>=1;n--;buf+=2)crc=(crc<<1)^*(word*)buf^((crc&
0x800000)?0x80001B:0);
return crc&0xFFFFFF;
}
Wynik zgodził mi się dla wszystkich sum liczonych przez XMEGA po skasowaniu
(3 wyniki) i po wpisaniu programu z bootloaderem (kolejne 3).
Na maszynie mającej odwrotną kolejność bajtów w word mój zapis nie zadziała.
Nie wnikałem jak to działa bez obracania 16 razy (bo 2 bajty za jednym
ruchem) po bicie, ale sądzę, że przyczyną jest duża odległość między bitem
x^19 a następnymi. I tak brakuje mi gdzieś przesunięcia o 8 w jedną albo o
16 w drugą.
Zastanawia mnie też to, że do XOR użyta jest liczba, która by odpowiadała
zapisowi x^23 + x^4 + x^3 + x^1 + 1.
Czy brak obracania może mieć związek z zastąpieniem x^19 przez x^23. Gdyby
różnica była 8, ale jest 4.
Mam podejrzenie, że to crc tak na prawdę nie jest opisane żadnym z tych
wielomianów.
P.G.
Dla porównania oryginał:
--------------------------
#define CRC32_POLY (0x0080001BUL) /* Polynomial for use with Xmega 'A'
devices */
/* This CRC Routine is the corresponding routine implemented in Xmega
hardware: */
uint32_t CRC_Reference( uint32_t startWord_u32, uint32_t endWord_u32 )
{
uint32_t addr_u32, data_reg_u32, help_a_u32, help_b_u32;
uint32_t crc_reg_u32 = 0;
for( addr_u32 = startWord_u32; addr_u32 <= endWord_u32; addr_u32 += 2 )
{
help_a_u32 = crc_reg_u32 << 1;
help_a_u32 &= 0x00FFFFFEUL; /* Always act as 24-bit variable */
help_b_u32 = crc_reg_u32 & (1UL << 23);
if( help_b_u32 > 0 )
{
help_b_u32 = 0x00FFFFFFUL;
}
data_reg_u32 = SP_ReadWord( addr_u32 );
crc_reg_u32 = (help_a_u32 ^ data_reg_u32) ^ (help_b_u32 & CRC32_POLY);
crc_reg_u32 = crc_reg_u32 & 0x00FFFFFFUL;
}
return( crc_reg_u32 );
}
Następne wpisy z tego wątku
- 15.02.11 14:52 J.F.
- 15.02.11 15:48 Piotr Gałka
Najnowsze wątki z tej grupy
- Ściąganie hasła frezem
- Koszyk okrągły, walec 3x AA, na duże paluszki R6
- Brak bolca ochronnego ładowarki oznacza pożar
- AMS spalony szybkim zasilaczem USB
- stalowe bezpieczniki
- Wyświtlacz ramki cyfrowej
- bateria na żądanie
- pradnica krokowa
- Nieustający podziw...
- Coś dusi.
- akumulator napięcie 12.0v
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
Najnowsze wątki
- 2025-01-29 Warszawa => Mid IT Recruiter <=
- 2025-01-29 Białystok => UX Designer <=
- 2025-01-29 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-01-29 Warszawa => Expert Recruiter 360 <=
- 2025-01-29 Zdalny podpis
- 2025-01-29 Nazbyt "muzyczne" słuchawki
- 2025-01-29 Warszawa => QA Engineer <=
- 2025-01-29 Prawo jak je [nie]rząd rozumie.
- 2025-01-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-01-29 Ostrów Wielkopolski => Konsultant Wdrożeniowy Comarch XL/Optima (Ksi
- 2025-01-29 Warszawa => Software .Net Developer <=
- 2025-01-28 Ściąganie hasła frezem
- 2025-01-28 Rok 1973
- 2025-01-28 Warszawa => Programista Dynamics 365 CRM <=
- 2025-01-28 Warszawa => Senior Frontend Developer (React + React Native) <=