Hi!
Versuche schon seit Tagen die CRC32 Prüfsumme von einem STM32F4 auf dem
PC in C++ nach zu vollziehen. Weiss jetzt leider nicht mehr weiter.
Auf dem STM32F4 werden mit der CRC_Block Berechnung ein Array mit 2
32Bit Werten berechnet. Leider schaffe ich es nicht auf das gleiche
Ergebniss in C++ dem PC zu kommen. Habe schon einigen Beispielcode
versucht.
Bei nur einem 32Bit Werte klappt es im übrigen.
Polynom = 0x4C11DB7
CRC initial value = 0XFFFFFFFF
Datenbits = 32
Kann mir jemand dabei helfen?
Viele Grüße
Georg schrieb:> Auch den Code, der auf dem STM läuft?
Das ist leider kein C++-Code, sondern ein Logikgrab, in das man so
leicht keinen Einblick bekommt ;-)
Konnte jetzt aber nach langen probieren auf der Seite
http://zorc.breitbandkatze.de/crc.html die CRC32 Prüfsumme vom STM32F4
nach voll ziehen.
Der Anfangswert ist 0xffffffff. Daraus wird mit dem Datenbyte die
Prüfsumme gebildet. Diese Prüfsumme nehmen ich dann als neuen
Anfangswert für das nächste Datenbyte.
Wie aber geht sie Sache "rückwärts" mit der letzten Prüfsumme?
Deepdiver99 schrieb:> char Buffer[] = {0x33,0x55};
Das kann ja nix werden. Ein Array mit der Größe von zwei Byte, aus dem
vier Byte gelesen werden sollen.
Im Code steht aber zu Glück:
> Size = Size >> 2; // /4
Also wird 2/4 geteilt, ergibt hier 0. (ich hoffe jetzt kommt hier
niemand mit halben Adressen ;) )
Und damit wird hier:
> while(Size--)
nie was ausgeführt, weil Size NULL ist.
Hast Recht:-). Jetzt wo du mir das erklärt hast sehe ich es auch. Na,
dann probiere ich es noch mal mit char Buffer[] =
{0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x55};
Der Inhalt deines Buffers ist falsch.
Du übergibst im Moment 0x33000000 und 0x55000000.
Versuch es mit: char Buffer[] =
{0x33,0x00,0x00,0x00,0x55,0x00,0x00,0x00};