Forum: PC-Programmierung CRC8 Nachvollziehungsproblem


von tüftler (Gast)


Lesenswert?

Hallo Leute,

ich habe anscheinend ein Problem mit einem CRC8 Algorithmus, leider habe 
ich nicht sehr viel Informationen dazu, ich habe nur ein Beispiel und 
das Generatorpolynom, allerdings komme ich mit dem anscheinend üblichen 
Algorithmus von Wiki nicht an das richtige Ergebnis.

Hier mal das Beispiel:
Polynom: 1 0010 1111
Daten: 1110 1001 0101
Verschieberichtung: nach links
--> Ergebnis: 1101 0101

Ich habe schon alles probiert: also Daten von rückwärts nach vorwärts, 
das Ergebnis am Ende nochmal mit dem Polynom zu xor'n usw. leider kam 
ich nie auf das angegebene Ergebnis.
Mir ist auch noch nicht ganz klar was mit dieser Verschieberichtung 
gemeint ist, ich nehme fast an, dass der Fehler dort begraben ist. 
Leider habe ich bisher diesbezüglich noch keine Erklärung gefunden. 
Hättet ihr vielleicht einen Tipp für mich?

Wäre dankbar für jede Anregung! :)

tüftler

: Verschoben durch Admin
von CarbageCollection (Gast)


Lesenswert?

Ich würde das ASCII Polynom und die ASCII Daten erstmal nach Hex 
umrechnen und dann schauen wieviel Bits man streichen kann. Am Ende 
sollten es nur acht Bits sein und der Rest ist dann rauschen ...

von tüftler (Gast)


Lesenswert?

Danke CarbageCollection,

sowas hatte ich mir auch schon überlegt, aber wie weiß ich denn von 
welcher Seite ich streichen muss? Der 1er am Anfang oder der am Ende? 
Und was meinst du mit Rauschen, schließlich geht es ja um die 
Berechnung...

von Karl K. (Gast)


Lesenswert?

Ist das Generatorpolynom in seiner Breite nicht immer identisch zum 
Algorithmus ? Also 8 Bit CRC und 8 Bit Generatorpolynom ? Da scheint 
sich bei dir ein Fehler eingeschlichen zu haben.

Worum geht es überhaupt ?

von tüftler (Gast)


Lesenswert?

Karl K. schrieb:
> Ist das Generatorpolynom in seiner Breite nicht immer identisch zum
> Algorithmus ? Also 8 Bit CRC und 8 Bit Generatorpolynom ? Da scheint
> sich bei dir ein Fehler eingeschlichen zu haben.

Also als Polynom habe ich: x^8+x^5+x3+x^2+x^1+x^0 was ich als 1 0010 
1111 interpretiert habe oder stimmt das so nicht?

von patrick (Gast)


Lesenswert?

Das Generatorpolynom lautet in der Tat x^8+x^5+x3+x^2+x^1+x^0 und ist 
somit 9 Bit lang. Allerdings wird die letzte 1 weggelassen. Das 
Generatorpolynom lautet so 0010 1111. Die Daten durch dieses 
Generatorpolynom zu teilen müsste zum gewünschten Ergebnis führen. Viel 
Erfolg!

P.S.: Ein ähnliches Problem hatte ich beim USB-Generatorpolynom, die 
letzte 1 wegzulassen und High- und Low-Byte des Polynoms zu tauschen 
(weil in diesem Fall so spezifiziert) war die Lösung.

von tüftler (Gast)


Lesenswert?

patrick schrieb:
> Das Generatorpolynom lautet in der Tat x^8+x^5+x3+x^2+x^1+x^0 und ist
> somit 9 Bit lang. Allerdings wird die letzte 1 weggelassen. Das
> Generatorpolynom lautet so 0010 1111. Die Daten durch dieses
> Generatorpolynom zu teilen müsste zum gewünschten Ergebnis führen. Viel
> Erfolg!
>
> P.S.: Ein ähnliches Problem hatte ich beim USB-Generatorpolynom, die
> letzte 1 wegzulassen und High- und Low-Byte des Polynoms zu tauschen
> (weil in diesem Fall so spezifiziert) war die Lösung.

Vielen Dank, leider komme ich noch immmer nicht auf das richtige 
Ergebnis. Ganz versthe ich das mit dem Generatorpolynom noch nicht und 
wie ich damit umzugehen habe. Vielleicht gehen wir mal den Algorithmus 
durch:
1) Ich nehme meine Nutzdaten und hänge 8 0 daran, da Polynom 8. Ordnung.
2) Ich gehe zur ersten 1 der Nutzdaten ganz links und schreibe mein 
Generatorpolynom darunter, das mit 1 beginnt.
3) Ich xor'e die beiden Zeilen.
4) Schreibe ich das Generatorpolynom wieder unter das Ergebnis und hole 
die nächsten Stellen von oben runter damit ich sie wieder xor'en kann.
usw. so lange bis ich rechts angekommen bin und der Rest sollte mein CRC 
sein, wenn er weniger als 8 Bit hat, hänge ich noch ein paar Nullen 
daran...

Wie gesagt habe ich schon einiges versucht mit unterschiedlichen 
Reihenfolgen, vertauschten Bytes usw. Fällt euch vielleicht noch ein 
anderer Algorithmus ein, den ich noch probieren könnte?

LG
tüftler

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.