Hallo, ich bin gerade dabei eine Kommunikation zwischen zwei µC zu realisieren. Als Prüfsumme möchte ich ein simples XOR verwenden und ein Byte hinten anhängen. Darf ich das ganze in der Dokumentation als CRC bezeichnen oder trifft das nur auf den aufwendigeren Algorithmus mit Generatorpolynom zu? Viele Grüße Skeith
Das ist kein CRC Das was du vorhast ist einfach nur eine Prüfsumme Eine CRC ist eine spezielle Form einer Prüfsumme. Aber nicht jede Prüfsumme ist eine CRC Analogie Ein Fiat Panda ist ein Auto Ein 7-er BWM ist auch ein Auto Du versuchst gerade einen Fiat Panda in deiner Doku als 7-er BWM zu verkaufen.
Das erste C in CRC ist cyclic, und das fehlt bei XOR
Ich würde „CRC“ für irreführend halten. Es ist kein Cyclic Redundancy Check, sondern eine Parität. Weshalb benötigst Du den Begriff?
CRC arbeite normalerweise BIT Weise und mit einem Polynom, daher würde ich nein sagen. Warum überhaupt? Damit es toll klingt? CRC in "richtig" ist auch nicht so schwierig...
OK dann muss ich es doch nur Prüfsummer nennen. Soll für meine Diplomarbeit sein, daher muss es Formal schon passen. @Karl Heinz Anke für diesen anschaulichen Vergleich, hab es begriffen ;)
...wobei der 7er ist dann doch eher ein MD5 oder SHA-1 :)
Ein bytewises XOR ist ganz, ganz schlecht, denn eine gerade Anzahl Mal dasselbe bit falsch ergibt keinen Fehler. Dann besser eine Summe ueber alle Bytes ohne den Ueberlauf, dh modulo die highbytes. Oder, wie schon hingewiesen wurde, ein CRC ist keine Hexerei.
Skeith schrieb: > ...wobei der 7er ist dann doch eher ein MD5 oder SHA-1 :) Warum, ist der so langsam? :-)
Hey noch Was schrieb: > Ein bytewises XOR ist ganz, ganz schlecht, denn eine gerade Anzahl Mal > dasselbe bit falsch ergibt keinen Fehler. Dann besser eine Summe ueber > alle Bytes ohne den Ueberlauf, dh modulo die highbytes. Kommt das bei 2*n-fach gekipptem Bit nicht auch auf das Gleiche raus?
aber auch ein 'richtiger' CRC ist nicht 100% sicher.
MCUA schrieb: > aber auch ein 'richtiger' CRC ist nicht 100% sicher. Nichts ist 100% sicher. Es ist nun mal nicht möglich x Bits auf y Bits einzudampfen ( y < x ), ohne das irgendetwas auf der Strecke bleibt. Und letzten Endes tut man das ja genau hier. Wenn es möglich wäre mittels einer Prüfsumme von jedem einzelnen Bit in allen Fällen exakt sagen zu können, ob es richtig ist, dann bräuchte man nur die Prüfsumme übertragen und der Empfänger könnte daraus die erzeugenden Bits korrekt rekonstruieren :-) Die verschiedenen Prüfsummen-Verfahren unterscheiden sich letzten Endes nur darin, welche typischen Übertragungsfehler sie erkennen (bzw. korrigieren) können.
Klaus Wachtler schrieb: > Das erste C in CRC ist cyclic, und das fehlt bei XOR Wenn man man bös aufgelegt ist, dann kann man das als 8 parallele 1-Bit CRCs sehen - so betrachtet ist das durchaus zyklisch. ;-)
So böse bin ich aber nicht. Du? (Ich hatte auch schon im Kopf, das Nicht-Shiften als Shiften um 0 Stellen zu verkaufen, um das C zu rechtfertigen, hatte es mir aber dann doch verkniffen. Dann kommst du mit sowas...)
>Wenn es möglich wäre mittels einer Prüfsumme von >jedem einzelnen Bit in allen Fällen exakt sagen zu können, ob es richtig >ist, dann bräuchte man nur die Prüfsumme übertragen und der Empfänger >könnte daraus die erzeugenden Bits korrekt rekonstruieren :-) Das DWIW-Modul neuerer AVR kann sowas ;) SCNR
>Die verschiedenen Prüfsummen-Verfahren unterscheiden sich letzten Endes >nur darin, ..wieviel redundante Bits zu der eigentl. Nutz-Infornation hinzugefügt werden (und nach welchem Schema das geschicht). Und je mehr redund. Bits desto besser (sofern das Erzeugungs-Schema nicht zu billig ist). Theoretisch gesehen wäre auch ein Parity-Bit eine CRC, nämlich eine CRC mit 1-Bit-Länge.
Solch eine XOR-Operation als Prüfsumme zu bezeichnen ist aber irgendwie auch falsch, denn es ist ja nicht wirklich eine Summe von irgendwas. Oder sehe ich das falsch?
Jaein. Der Begiff hat sich eingebürgert, auch dann wenn die Operation über alle Datenbytes Bytes streng genommen keine Addition ist. Prüfsumme = Funktion( Datenbytes ) Was genau die Operation ist, spielt dann wieder eniger eine Rolle. Der Begriff Summe drückt nur in einer gewissen Weise aus, dass alle Bytes beteiligt sind, so wie in Summe = Byte1 + Byte2 + Byte3 + Byte4 + ...
Es ist insofern nicht weit von der Addition weg, als daß XOR eine Addition ist, bei der alle Überträge weggworfen werden.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.