CRC-8 Code erklärung

Gast #3720218
Lesenswert?

Hallo zusammen,

hat mir jemand einen Simplen C-Code für einen CRC8?
Vielleicht nen Pseudocode der Step by Step ausführlich erklärt?

Das ganze muss nicht sehr schnell sein oder Optimiert. Hab da nun schon
einiges drüber gelesen, jedoch bin ich relativ neu bei der uController
Programmierung und bin noch nicht so versiert was das Bitshiften angeht.


Wenn mir jemand die einzelnen Schritte erklären kann wär ich sogar noch
dankbarer, da ich es lieber verstehen will, anstatt einfach nen Code
von jemand anderem zu benutzen.


Gibt ja viele CRC8 versionen mit unterschiedlichen Initialisierungen,
Inverse oder sonswas... ich habe den Code von dem CRC8 (siehe Link)
angeschaut und verstehe da nicht so ganz was da passiert und warum.

Beitrag "CRC8 und CRC32 in C"

Wäre über ne Aufklärung sehr Dankbar!


Herzliche Grüße
Bibo
Gast #3720235
Lesenswert?

Ich verstehe dein Problem da nicht. Auf Wikipedia findest du doch 
wahrlich das gaze perfekt auf Deutsch erklärt. Dann such mal nach CRC8 
code und das zweite Ergebnis ist 
https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/d96b25d0c0a739d351b8f09b128782ca12b7b0e1/firmware/lib/crc8.c

Diese Funktion kannst du entweder verwenden oder du zeichnest dir mal 
das Ablaufdiagramm davon auf und vergleichst es mit dem was auf 
Wikipedia beschrieben ist. Wenn du nicht verstehst was Bitshifting ist, 
dann solltest du dir eine normale C Referenz nehmen und schauen was da 
gemeint ist. Es ist ziemlich schwer "alles" zu erklären. Versuch selbst 
zu verstehen.
Gast #3720246
Lesenswert?

Hallo Andreas,

danke erstma für die schnelle Antwort. Ich verstehe schon wie das 
Prinzip funktioniert! Von Hand auch kein Problem. Nur die Beispielcodes 
mit dem  Bitshifting verunden und verodern da steigt mein Hirn aus :(

Wie gesgat ware sehr net wenn mir jemand den gegebenen Algorithmus step 
by step erklären könnte oder einen aufschlussreichen Pseudocode liefern 
könnte.


Herzliche Grüße
Bibo
#3720365
Lesenswert?

Bibo schrieb:
> Nur die Beispielcodes
> mit dem  Bitshifting verunden und verodern da steigt mein Hirn aus :(

Das mit dem step-by-step kann ich leider im Moment nicht bieten.

Aber wenn Du mit dem verunden/verodern nicht klar kommst, dann die kurze 
Anmerkung, das hier in F_2 gerechnet wird.
Da wirkt ein OR wie eine Addition, ein AND wie eine Division (wenn ich 
das noch richtig in Erinnerung habe).

Grüße
Andreas
Gast #5155767
Lesenswert?

Ich hänge auch an dem Problem, das nachzuvollziehen:

Ich versuche, einen CRC nachzurechnen, habe aber ein Verständnisproblem, 
wie Ich den Codegenerator bedienen soll:

https://de.scribd.com/document/77545011/crc-gen


Example:    05 : x5 + x2 + 1
          8005 : x16 + x15 + x2 + 1


Angeblich beinhaltet diese Polynomdarstellung das jeweils höchste Bit 
nicht.
Warum ist das so und wie ist das zu interpretieren?

Wenn Ich das höchste weglassen, komme Ich auch nicht auf die Binärzahl 5 
sondern 3


Ich habe auch versucht aus dem VHDL die Berechnung nachzuvollziehen, 
komme aber nicht auf die Werte.

In meinem Fall benötige Ich das Polynom X8 + X6 + X4 + 1

Wenn Ich das auf http://outputlogic.com/?page_id=321  einsetze und 
eintippe:

1x   x4x x6x und die anderen frei, bekomme Ich einen Code, der laut 
Kommentar auch zu dem Polynom passt:

-- CRC module for data(7:0)
--   lfsr(7:0)=1+x^4+x^6+x^8;

Der stimmt aber nicht. Wie muss Ich die Daten einsetzen?

CRC wird mit 0 inititalisiert und geht schon beim ersten Zykluis falsch.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.