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
:
Gesperrt durch Moderator
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.
Bibo schrieb: > Wäre über ne Aufklärung sehr Dankbar! Wenn es Dir um das Verständnis geht, dann sollte das hier schon helfen: http://de.wikipedia.org/wiki/Zyklische_Redundanzpr%C3%BCfung Sind auch Codebeispiele dabei. Grüße Andreas
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
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
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.
oli schrieb: > Ich hänge auch an dem Problem, das nachzuvollziehen: Nein. Du kaperst einen Thread, der mit deinem Problem gerade mal „CRC“ gemeinsam hat. Das ist nicht sinnvoll. Lass die Threadleiche im Keller, und öffne für dein Problem einen neuen Thread.