CRC8
Masz problem? Zapytaj na forum elektroda.pl
From: "wojk" <902_at_nospam_mcd.com.pl>
Subject: CRC8
Date: Mon, 3 Sep 2001 16:17:00 +0100
Witam
Gdzie w sieci można znaleźć źródło w C do obliczania CRC8.
Znalazłem tylko od 16 w górę.
Dzięki za pomoc
K.W.
From: "Martin Walter" <usrpwalt_at_nospam_kki.net.pl>
Subject: Re: CRC8
Date: Mon, 3 Sep 2001 19:43:58 +0200
| Gdzie w sieci można znaleźć źródło w C do obliczania CRC8.
| Znalazłem tylko od 16 w górę.
Przy ośmiu bitach nie poszalejesz sobie z liczeniem sumy kontrolnej!
Zależnie do czego potrzebujesz ta procedurę możesz napisać swoją.
Wyznaczać np. parzystość słowa.
Jeśli tylko weryfikujesz za pomocą CRC poprawność transmisji
to nie potrzebujesz więcej. Jeśli chcesz wykorzystać CRC
do odtworzenia brakujących bitów w ciągu to im duszy wielomian
tym skuteczniej to zrobisz ale procedura nie będzie prosta i szybka
do zaimplementowania np. w układzie mikroprocesorowym.
Tu potrzebne było by rozwiązanie sprzętowe.
Martin
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: CRC8
Date: Mon, 3 Sep 2001 23:29:34 +0200
"Martin Walter" <usrpwalt_at_nospam_kki.net.pl> wrote in message
news:9n0fh6$g51$1_at_nospam_news.tpi.pl...
| Gdzie w sieci można znaleźć źródło w C do obliczania CRC8.
| Znalazłem tylko od 16 w górę.
Przy ośmiu bitach nie poszalejesz sobie z liczeniem sumy kontrolnej!
Zależnie do czego potrzebujesz ta procedurę możesz napisać swoją.
Wyznaczać np. parzystość słowa.
Jeśli tylko weryfikujesz za pomocą CRC poprawność transmisji
to nie potrzebujesz więcej. Jeśli chcesz wykorzystać CRC
do odtworzenia brakujących bitów w ciągu ...
...
czy za pomoca CRC mozna odtwarzac bity ?
Andrzej
From: "Martin Walter" <usrpwalt_at_nospam_kki.net.pl>
Subject: Re: CRC8
Date: Mon, 3 Sep 2001 23:52:28 +0200
| czy za pomoca CRC mozna odtwarzac bity ?
A po co wymyślono sumy kontrolne?
Jednak głównie wykorzystuje się je
do określenia poprawności oraz
integralności danych.
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: CRC8
Date: Tue, 4 Sep 2001 03:22:39 +0200
"Martin Walter" <usrpwalt_at_nospam_kki.net.pl> wrote in message
news:9n0u33$idi$1_at_nospam_news.tpi.pl...
| czy za pomoca CRC mozna odtwarzac bity ?
A po co wymyślono sumy kontrolne?
Jednak głównie wykorzystuje się je do określenia poprawności oraz
integralności danych.
...
nie upieram sie ale nigdy nie slyszalem o mozliwosci
odtwarzania uszkodzonych bitow przy pomocy CRC
wydaje mi sie, ze CRC sluzy tylko i wylacznie do kontroli poprawnosci
do odtwarzania usterek sluza kody korekcyjne np. kod Hamminga
widziales na wlasne oczy taki algorytm CRC, ktory umozliwia
korekcje bitow ?
o ile rozumiem dzialanie CRC to jakos nie moge sobie wyobrazic
, zeby w takiej "zmielonej", w rejestrze przesuwnym z kilkoma sprzezeniami
sygnaturze mozna zawrzec informacje, ktory bit jest uszkodzony
moze ktos mnie oswieci w tym temacie:
czy istnieje jakis algorytm CRC, ktory sluzy do korekcji a nie tylko do
kontroli ?
Andrzej
From: "Marek Dubiel" <selekt_at_nospam_mikrotech.com.pl>
Subject: Re: CRC8
Date: Tue, 4 Sep 2001 10:12:57 +0200
witam.
jesli masz ciag slow binarnuch i do kazdego dolaczysz sume kotrolna bitow
(w najprostszym przypadku bit parzystosci)
nastepnie obliczysz sume konrolna calego ciagu i dolaczysz
na koncu do ciagu (w najprostszym przypadku XOR kolejnych slow ciagu)
to na tej podstawie mozna odzyskac utracone bity.
przy bicie parzystosci i CRC-XOR mozna odzyskac az JEDEN przklamany bit :)
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: CRC8
Date: Tue, 4 Sep 2001 13:47:58 +0200
"Marek Dubiel" <selekt_at_nospam_mikrotech.com.pl> wrote in message
news:9n226a$afb$1_at_nospam_news.tpi.pl...
witam.
jesli masz ciag slow binarnuch i do kazdego dolaczysz sume kotrolna bitow
(w najprostszym przypadku bit parzystosci)
nastepnie obliczysz sume konrolna calego ciagu i dolaczysz
na koncu do ciagu (w najprostszym przypadku XOR kolejnych slow ciagu)
to na tej podstawie mozna odzyskac utracone bity.
przy bicie parzystosci i CRC-XOR mozna odzyskac az JEDEN przklamany bit :)
a jaki wpyw ma dlugosc ciagu ?
mozna odzyskac jeden na ile ?
jeden bit w kazdym bajcie ?
w jaki sposob uzyskuje sie informacje, ktory bit jest uszkodzony ?
chyba nie poprawia sie na slepo kolejnych bitow
az zgodzi sie CRC
Andrzej
From: jfox_at_nospam_friko6.onet.pl (J.F.)
Subject: Re: CRC8
Date: Tue, 04 Sep 2001 20:48:35 GMT
On Tue, 4 Sep 2001 10:12:57 +0200, Marek Dubiel wrote:
jesli masz ciag slow binarnuch i do kazdego dolaczysz sume kotrolna bitow
(w najprostszym przypadku bit parzystosci)
nastepnie obliczysz sume konrolna calego ciagu i dolaczysz
na koncu do ciagu (w najprostszym przypadku XOR kolejnych slow ciagu)
to na tej podstawie mozna odzyskac utracone bity.
przy bicie parzystosci i CRC-XOR mozna odzyskac az JEDEN przklamany bit :)
W tym co proponujesz tez jeden. No chyba ze tak ci sie szczesliwie
zdarzylo ze sie przeklamaly 3 [5,7] bity w jednym bajcie.
J.
From: Tadeusz Gozdek <taddy_at_nospam_sys.net.pl>
Subject: Re: CRC8
Date: Tue, 04 Sep 2001 10:14:13 +0200
Witam
Jezeli ktos potrzebuje mam szybka procedurke do CRC8 oparta o gotowe tablice.
Kod w C (Keila) i asm (tez Keila) dla '51.
--
Pozdrawiam
Tadeusz Gozdek (Taddy) Network manager [TG2442-RIPE]
Mobile: +48 609 70 20 77 Gadu-gadu: 2919
From: Krzysztof Piecuch <kpiecuch_at_nospam_optic.com.pl>
Subject: Re: CRC8
Date: Tue, 04 Sep 2001 10:56:59 +0200
Tadeusz Gozdek napisał(a):
Witam
Jezeli ktos potrzebuje mam szybka procedurke do CRC8 oparta o gotowe tablice.
Kod w C (Keila) i asm (tez Keila) dla '51.
Mozna prosic :-).
--
**** Krzysztof Piecuch -- SP9RQA ****
kpiecuch_at_nospam_optic.com.pl
sp9rqa_at_nospam_radio.org.pl
**********Linux User #132375*********
From: "Jacek Meyerhold" <jacekmey_at_nospam_poczta.onet.pl>
Subject: Re: CRC8
Date: Wed, 5 Sep 2001 17:16:46 +0200
Krzysztof Piecuch napisał(a) w wiadomości:
<3B94975B.2946DD1D_at_nospam_optic.com.pl>...
Tadeusz Gozdek napisał(a):
Jezeli ktos potrzebuje mam szybka procedurke do CRC8 oparta o gotowe
tablice.
Kod w C (Keila) i asm (tez Keila) dla '51.
=>I ja..
Jacek
From: "Martin Walter" <usrpwalt_at_nospam_kki.net.pl>
Subject: Re: CRC8
Date: Tue, 4 Sep 2001 14:52:39 +0200
nie upieram sie ale nigdy nie slyszalem o mozliwosci
odtwarzania uszkodzonych bitow przy pomocy CRC
Ale napewno słyszałeś o czymś takim jak płyta CD.
Trzydzieści procent danych to kody korekcyjne CRC
i nie służą one jak wiadomo tylko do informowania o tym,
że coś nie jest w porządku z danymi ale niosą również
informację pozwalającą odtworzyć (w jakimś zakresie)
uszkodzone dane.
Jest trochę literatury po polsku omawiającej temat
sum kontrolnych ich algorytmów i sposobów lokalizacji
i odtwarzania błędnych bitów w strumieniu danych.
im dłuższy wielomian wyliczający CRC tym większa
skuteczność korekcji błędnych danych.
Przykładem wyżej wspomniana płytka CD.
Martin Walter
From: jfox_at_nospam_friko6.onet.pl (J.F.)
Subject: Re: CRC8
Date: Tue, 04 Sep 2001 20:48:32 GMT
On Tue, 4 Sep 2001 14:52:39 +0200, Martin Walter wrote:
Ale napewno słyszałeś o czymś takim jak płyta CD.
Trzydzieści procent danych to kody korekcyjne CRC
Tyle ze nie tyle Cyclic Redundance Check typowo uzywane,
co wlasnie Reed-Solomon Correction Code.
Jest trochę literatury po polsku omawiającej temat
sum kontrolnych ich algorytmów i sposobów lokalizacji
i odtwarzania błędnych bitów w strumieniu danych.
im dłuższy wielomian wyliczający CRC tym większa
skuteczność korekcji błędnych danych.
Przykładem wyżej wspomniana płytka CD.
No - nie do konca tak. Tam sie skutecznosc zapewnia "rozrzuceniem
blokowym" ..
J.
From: jfox_at_nospam_friko6.onet.pl (J.F.)
Subject: Re: CRC8
Date: Tue, 04 Sep 2001 20:48:38 GMT
On Tue, 4 Sep 2001 03:22:39 +0200, Andy wrote:
[...]
o ile rozumiem dzialanie CRC to jakos nie moge sobie wyobrazic
, zeby w takiej "zmielonej", w rejestrze przesuwnym z kilkoma sprzezeniami
sygnaturze mozna zawrzec informacje, ktory bit jest uszkodzony
Nie musisz - jesli CRC sie nie zgadza, to zmieniasz po kolei
jeden bit w sygnale, liczyc ponownie CRC i sprawdzasz czy
sie zgadza. Jak masz szczescie to sie okaze ze tylko
jeden bit daje poprawny wynik - to ten, o ile nie
przeklamalo wiekszej ilosci.
Z tym ze zwykle sie tak nie robi - predzej CRC sprawdza czy korekcja
wczesniejszymi kodami dala poprawny wynik
J.
From: jfox_at_nospam_friko6.onet.pl (J.F.)
Subject: Re: CRC8
Date: Tue, 04 Sep 2001 20:48:11 GMT
On Mon, 3 Sep 2001 23:29:34 +0200, Andy wrote:
[...] Jeśli chcesz wykorzystać CRC
do odtworzenia brakujących bitów w ciągu ...
...
czy za pomoca CRC mozna odtwarzac bity ?
Niby sie do tego nie uzywa, ale w zasadzie czemu nie ?
Jesli dobre CRC po przeklamaniu 1 bitu danych zmienia kilka bitow CRC,
a po przeklamaniu innego zmienia inne bity w CRC - to mozna
sprobowac uzyc do znalezienia przeklamanego bitu.
Tylko ze to bedzie 1 bit w calym pakiecie - raczej nie wyobrazam sobie
tej techniki dla wiekszej ilosci, no i do "odtworzenia brakujacych"
to sie nie nadaje ..
J.
From: "tomkawal" <tkawala_at_nospam_creativeteam.com.pl>
Subject: Re: CRC8
Date: Tue, 4 Sep 2001 11:29:14 +0200
w jakiejs nocie do układów Dallas'a
Gdzie w sieci można znaleźć źródło w C do obliczania CRC8.
From: "wojk" <902_at_nospam_mcd.com.pl>
Subject: Re: CRC8
Date: Tue, 4 Sep 2001 18:44:34 +0100
dzieki
tomkawal <tkawala_at_nospam_creativeteam.com.pl> wrote in message
news:9n26t2$blo$1_at_nospam_news.tpi.pl...
w jakiejs nocie do układów Dallas'a
Gdzie w sieci można znaleźć źródło w C do obliczania CRC8.
From: "Kumex" <kumex_at_nospam_interia.pl>
Subject: Odp: CRC8
Date: Wed, 5 Sep 2001 07:36:33 +0200
Użytkownik wojk <902_at_nospam_mcd.com.pl> w wiadomości do grup dyskusyjnych
napisał:9n03ef$2a9$1_at_nospam_news.tpi.pl...
Witam
Gdzie w sieci można znaleźć źródło w C do obliczania CRC8.
Znalazłem tylko od 16 w górę.
Jeśli chodzi o 8-bitową sumę kontrolną CRC umieszczaną np. na końcu każdego
wiersza pliku Intel-HEX, to obliczam ją w chyba najprostszy możliwy sposób:
- przed rozpoczęciem zeruję 8-bitową zmienną bez znaku do obliczania CRC,
- sukcesywnie odejmuję od niej wartości kolejnych bajtów, ignorując
wszelkie pożyczki, przeniesienia i znaki:
SumaCRC = SumaCRC - kolejny_bajt,
- po odjęciu ostatniego bajtu mam w rej. SumaCRC gotowy wynik.
Moim zdaniem nie ma prostszego sposobu i śmiać mi się chce, gdy widzę jakieś
"algorytmy tablicowe" i inne takie.
Pozdr.,
QmX.
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: CRC8
Date: Wed, 5 Sep 2001 15:06:12 +0200
"Kumex" <kumex_at_nospam_interia.pl> wrote in message
news:9n4dlp$64o$1_at_nospam_korweta.task.gda.pl...
...
Jesli chodzi o 8-bitowa sume kontrolna CRC umieszczana np. na koncu
kazdego
wiersza pliku Intel-HEX, to obliczam ja w chyba najprostszy mozliwy
sposób:
- przed rozpoczeciem zeruje 8-bitowa zmienna bez znaku do obliczania CRC,
- sukcesywnie odejmuje od niej wartosci kolejnych bajtów, ignorujac
wszelkie pozyczki, przeniesienia i znaki:
SumaCRC = SumaCRC - kolejny_bajt,
- po odjeciu ostatniego bajtu mam w rej. SumaCRC gotowy wynik.
Moim zdaniem nie ma prostszego sposobu i smiac mi sie chce,
gdy widze jakies
"algorytmy tablicowe" i inne takie.
prostszego pewnie nie ma moze inny porownywalny:
xor = xor ^ kolejny_bajt;
tyle, ze kolega rozpoczynajacy ten watek chcial CRC8
a nie najprostszy algorytm na sume kontrolna
w ogole to chyba lekko zatarla sie roznica w nazewnictwie
ale moze jestem w bledzie
jak dla mnie to nie nalezy podciagac zwyklej sumy (+)
modulo 256 lub xora pod CRC
zalezy co chcemy sprawdzac ale zwykla suma i xor
jest nieodporna np. na zmiane kolejnosci bajtow
mnie zawsze CRC kojarzy sie z rejestrem przesuwnym
do "mielenia" (xor'owania) bitow przychodzacych ze strumienia
z odpowiednimi bitami z tego rejestru
do roznych zastosowan bierze sie sprzezenia z roznych bitow
pojecia nie mam dlaczego z tego czy z innego
ale pewnie zalezy od od rodzaju bledow
i jakis madry czlowiek zrobil jakies badania i tak mu wyszlo
Andrzej
From: Tadeusz Gozdek <taddy_at_nospam_sys.net.pl>
Subject: Re: CRC8
Date: Wed, 05 Sep 2001 22:20:15 +0200
Kumex napisał(a):
[.]
Jeśli chodzi o 8-bitową sumę kontrolną CRC umieszczaną np. na końcu każdego
wiersza pliku Intel-HEX, to obliczam ją w chyba najprostszy możliwy sposób:
- przed rozpoczęciem zeruję 8-bitową zmienną bez znaku do obliczania CRC,
- sukcesywnie odejmuję od niej wartości kolejnych bajtów, ignorując
[..]
To nie jest CRC (w koncu CRC liczy sie z wielomianow).
Moim zdaniem nie ma prostszego sposobu i śmiać mi się chce, gdy widzę jakieś
"algorytmy tablicowe" i inne takie.
Taka prosta suma kontrolna nie jest odporna na duzy procent przeklaman.
Czyli jezeli zakradnie sie blad wynik dalej moze byc poprawny.
Sam to sprawdzalem jak wybieralem zabezpieczenie dla transmisji
danych po 485 i moim zadniam CRC jest nie do pobicia. Choc przy 8-bitowym CRC
nie da sie poszalec, niemniej przy pewnych ograniczeniach i 8 bitow doskonale
spelnia swoje zadanie.
--
Pozdrawiam
Tadeusz Gozdek (Taddy) Network manager [TG2442-RIPE]
Mobile: +48 609 70 20 77 Gadu-gadu: 2919
From: jfox_at_nospam_friko6.onet.pl (J.F.)
Subject: Re: CRC8
Date: Thu, 06 Sep 2001 21:33:54 GMT
On Wed, 05 Sep 2001 22:20:15 +0200, Tadeusz Gozdek wrote:
Kumex napisał(a):
Jeśli chodzi o 8-bitową sumę kontrolną CRC umieszczaną np. na końcu każdego
wiersza pliku Intel-HEX, to obliczam ją w chyba najprostszy możliwy sposób:
- przed rozpoczęciem zeruję 8-bitową zmienną bez znaku do obliczania CRC,
- sukcesywnie odejmuję od niej wartości kolejnych bajtów, ignorując
[..]
To nie jest CRC (w koncu CRC liczy sie z wielomianow).
To nie - ale taki np XOR wszystkich bajtow na dobra sprawe jest CRC
liczonym wielomianem x^8+1 :-)
J.
From: Tadeusz Gozdek <taddy_at_nospam_sys.net.pl>
Subject: Re: CRC8
Date: Thu, 06 Sep 2001 23:43:40 +0200
"J.F." napisał(a):
On Wed, 05 Sep 2001 22:20:15 +0200, Tadeusz Gozdek wrote:
Kumex napisał(a):
Jeśli chodzi o 8-bitową sumę kontrolną CRC umieszczaną np. na końcu każdego
wiersza pliku Intel-HEX, to obliczam ją w chyba najprostszy możliwy sposób:
- przed rozpoczęciem zeruję 8-bitową zmienną bez znaku do obliczania CRC,
- sukcesywnie odejmuję od niej wartości kolejnych bajtów, ignorując
[..]
To nie jest CRC (w koncu CRC liczy sie z wielomianow).
To nie - ale taki np XOR wszystkich bajtow na dobra sprawe jest CRC
liczonym wielomianem x^8+1 :-)
Tylko jego wartosc jako kodu zabezpieczajcego jest stosunkowo niska...
Wada podobna jak tego powyzej dlatego w bardziej wymagajacych aplikacjach
jednak stosuje sie CRC8 czy 16.
--
Pozdrawiam
Tadeusz Gozdek (Taddy) Network manager [TG2442-RIPE]
Mobile: +48 609 70 20 77 Gadu-gadu: 2919