Forum: Mikrocontroller und Digitale Elektronik CRC Sicherheit


von Harry M. (harry4516)


Lesenswert?

ich möchte zwei Microcontroller per Funk verbinden und die Übertragung 
mit CRC16 oder CRC32 sichern.
Übertragen sollen immer 100 Byte Blöcke werden.

Ich hab jetzt schon alles durchsucht um herauszufinden mit welcher 
Datenfehlerrate ich da rechnen kann, aber finde nichts aussagekräftiges.
Erreichen möchte ich 10^-8 , aber ist das mit CRC32 zu schaffen ?
Denn es könnte ja auch der CRC bei der Übertragung gestört werden und 
dann evt. zufälligerweise passend zu falschen Daten sein.

Hat jemand von euch Infos oder evt einen Link wo die erreichbare 
Bitfehlerrate gezeigt wird ?
Wikipedia und alles mögliche hab ich schon durchsucht, man findet viel 
Grundlagenwissen, aber keine genauen Angaben zur Fehlerrate.

Danke
Harry

von Klugscheisser (Gast)


Lesenswert?

>ich möchte zwei Microcontroller per Funk verbinden und die Übertragung
>mit CRC16 oder CRC32 sichern

Diese Aufgabe ist so nicht lösbar.

Ich meine, das Deine Auffassung von dem Begriff "eine Übertragung 
sichern" an die übliche angepasst werden könnte. Was verstehst Du 
darunter?

Deine Fragestellung setzt voraus, das die Verwendung von CRC die 
Fehlerrate einer Übertragung an sich verändert. Ohne Kenntnis weiterer 
Kriterien, Parameter und Verfahren ist diese Behauptung aber nicht ganz 
richtig, um nicht zu sagen sinnlos.

Nimm einmal an, der Empfänger würde bei falscher CRC eine 
Neu-Übertragung anfordern. Dann wäre (unter noch anderen 
Voraussetzungen) die Fehlerrate beliebig klein, wenn Du beliebig lange 
wartest.

Ich kenne das frustrierende Gefühl, wenn man meint eine Frage sei doch 
ganz einfach und auf der Suche nach der Antwort "nur" mit Grundlagen 
bombardiert wird. Das empfehle ich Dir, als Zeichen dafür zu nehmen, das 
die Frage doch nicht so einfach ist, wie Du es annimmst.
Kommunikationsverfahren, Protokolle, Fehlerkorrektur usw. sind Sachen 
mit denen sich Studenten und Entwickler über Jahre beschäftigen.

Hier mein Beitrag zur Grundlagen-Nerv-Attacke:

Bitte gehe von der Überlegung aus, das Dir CRC nur sagt, das eine 
Übertragung mit einer gewissen Wahrscheinlichkeit korrekt war. Diese 
Wahrscheinlichkeit hängt aber von drei Faktoren ab:
1. mit welchen Wahrscheinlichkeiten die Bits gestört werden und mit 
welcher Wahrscheinlichkeit die Bits in genau der Weise gestört werden, 
das eine andere Bitfolge mit der selben CRC entsteht.
2. Welche Länge die Daten haben
3. Welches Polynom für die CRC verwendet wird.

Wenn Du also sehr starke Störungen hast, ist ein CRC gewisser Länge 
"weniger wert" als wenn Du wenig Störungen hast. Oder, wenn Du ein 
längeres CRC nimmst dann wird es "mehr wert". Analog gilt, je kürzer die 
Daten, desto mehr ist der CRC wert. Uswusf.
Mit "ist wert" meine ich hier: Den Wert der Aussage das die empfangene 
CRC mit der beim Empfänger berechneten übereinstimmt.

An Der Fehlerrate verändert das CRC also erstmal nichts und deswegen 
findest Du so keine Aussage dazu.
Es kommt darauf an, was Du damit anfängst und dann wirst Du auch bei 
Angabe von Roh-Fehlerrate, CRC-Polynom und Protokoll eine End-Fehlerrate 
finden.

von Klugscheisser (Gast)


Lesenswert?

Also, da ist mir doch noch ein hübscher Vergleich eingefallen. Ich mag 
Autovergleiche (aber das muss Dir ja nicht auch so gehen).

Nimm bitte an, ich sage folgendes (und überlege Dir, was Du antworten 
würdest)


Ahem. Also, äh, ich habe mich jetzt entschieden immer genau nach den 
Regeln Auto zu fahren, strengstens, genau wie es in der StVO steht. Ich 
möchte mit einer Sicherheit von 1 Unfall zu 10000 Fahrten an meinem Ziel 
ankommen. Ist das mit der genauen Beachtung der Regeln zu schaffen? Es 
könnte ja sein, das ein Igel mit 'nem Luftgewehr auf meine Reifen 
schiesst.

Hat jemand Links wo die erreichbare Unfallhäufigkeit genannt wird?
Ich habe überall nachgesehen und finde nur so Infos übers Reifen 
wechseln, Kopstützenhöhe, Geisterfahrer und ADAC-Mitgliedschaften aber 
keine genauen Angaben zur Unfallhäufigkeit bei strenger Beachtung aller 
Regeln.

von 900ss (900ss)


Lesenswert?

@Klugscheisser: Sicher hast du recht, die Grundlagen sind wichtig. Aber 
da du nicht weißt auf welchem Level Harry "bastelt" und auch sein 
Vorwissen nicht kennst, könnte es etwas viel verlangt sein, dieses schon 
sehr vertiefte Grundwissen zu haben, was du ansprichst.

@Harry
Also zur Fehlerhäufigkeit würde ich sagen: Ausprobieren. Und mit CRC 
wirst du, wie der Klugscheisser schon schrieb, direkt keine 
Fehlerkorrektur hinbekommen, sie sagt die nur, die Daten sind richtig 
oder falsch und du kannst wiederholen. Eine automatische Fehlerkorrektur 
in einem gewissen Rahmen(!) ist auch möglich. Sie dir diesen Artikel an:
RFM12 Protokoll Stack

Dort wird ein Protokollstack beschrieben, der Hammingcode verwendet um 
Singlebitfehler zu korrigiren direkt nachdem Empfang.


900ss

von Platsch (Gast)


Lesenswert?

Du kannst die Sache ganz allgemein halten. Ein Generatorpolynom mit 16 
Bits liefert dir in 2^15 fehlerbehafteten Datenpaketen ein richtiges 
CRC-Ergebnis mit 50 prozentiger Wahrscheinligkeit. Den Rest kannst du 
selbst umrechnen.

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.