Forum: Mikrocontroller und Digitale Elektronik Welcher CRC-Algorithmus?


von Thomas F. (thomas-hn) Benutzerseite


Lesenswert?

Hallo,

um einen Speicherbereich eines 32-Bit Controllers auf korrektes Flashen 
zu prüfen, soll eine CRC (berechnet durch das CRC-HW-Modul des 
Controllers) über einige wenige Megabyte berechnet werden.

Hierzu bietet die CRC-Komponente des Controlelrs folgende Optionen an:
- IEEE 802.3 Ethernet CRC32
- Autosar CRC32P4
- CCITT CRC16
- SAE J1850 CRC8

Da ich auf dem Gebiet der CRCs noch sehr unerfahren bin, meine Fragen an 
euch:
- Welches Verfahren zur Berechnung der CRC ist das am besten geeignete 
für die Prüfsumme über den Flash?
- Was sind die Vor-/Nachteile der einzelnen Verfahren?

Vielen Dank,

Thomas

: Bearbeitet durch User
von Heiner (Gast)


Lesenswert?

Grundsätzlich bei gleicher CPU:

8Bit  CRC: kompakt,schnell, Fehlererkennung nicht so sicher
16Bit CRC: größer, schneller, sicherer als 8 Bit CRC
32Bit CRC: groß, langsam, sicherer als 16 Bit CRC

wie sehr Geschwindigkeit und Sicherheit wiegen, hängt von den 
Bedingungen ab. (Speichergröße, CPU Geschwindigkeit)

lg. Heiner

von Lünter Genz (Gast)


Lesenswert?

Grundsätzlich gilt:
8: Klein, kompakt, einstellig.
16: Zweistellig, größer als 8.
32: Auch zweistellig, ziemlich groß, größer als 16.

von Patrick (Gast)


Lesenswert?

Wenn die Komponente schon als Hardware im Controller steckt, nimm die 
Ethernet-32-Bit. Speicherbedarf ist dann kein Thema, Geschwindigkeit 
auch kaum. Wird zwar minimal langsamer sein als die 8-Bittige, sollte 
aber egal sein, weil du deinen Flash wahrscheinlich nur einmalig beim 
Start prüfen wirst. Dafür ist sie am sichersten und am weitesten 
verbreitet.

von Nop (Gast)


Lesenswert?

CRC-32 muß nicht groß sein, wenn man eine Halbbyte-Lookuptable nimmt. 
Das sind dann nicht 2kB, sondern 64 Byte.

Wenn man sonst nichts hat, nimmt man das Ethernet-Polynom.

von A. S. (Gast)


Lesenswert?

Nop schrieb:
> CRC-32 muß nicht groß sein, wenn man eine Halbbyte-Lookuptable nimmt.
> Das sind dann nicht 2kB, sondern 64 Byte.
>
> Wenn man sonst nichts hat, nimmt man das Ethernet-Polynom.

Hier ist es ja sogar schon in HW.

Ansonsten kann man Speicher und Laufzeit beliebig fein granulieren, wenn 
mann will. Auch eine Bitweise Berechnung geht i.d.R. in wenigen Takten 
pro Bit. Bei FPGAs gibt es kaum etwas effizienteres als bitweise, als 
Logikschaltung ist der Aufwand fast 0.

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.