Forum: Mikrocontroller und Digitale Elektronik STM32 Hardware CRC - weiter rechnen nach Zwischenrechnung?


von Basti (Gast)


Lesenswert?

Hallo,

ich habe ein RTOS System und verwende die CRC-Einheit in verschiedenen 
Threads und habe diese natürlich mit Mutex geschützt.

Jetzt kommt der Usecase auf, dass eine große in Teile geschnittene 
Nachricht recht langsam durch die CRC muss. Natürlich sollte auch wenn 
zwischen drin ein anderer Thread gerechnet hatte, die CRC der gesamt 
Nachricht identisch zu einer kontinuierlichen Berechnung sein.

Nun dachte ich: Naja, einfach Register der CRC sichern (im Stack des 
Tasks) und diese dann wieder vor der Fortsetzung der Rechnung rein 
spielen. Nun sieht es laut Datenblatt (des F4s) jedoch nicht so aus als 
wenn das so einfach wäre, da ja sofort Berechnung getriggert werden, 
wenn ich etwas in das DR-Register zurück spiele.

Hat schon mal jemand ähnliches probiert? Vielleicht ist es auch ganz 
einfach?

VG

Basti

von dummy (Gast)


Lesenswert?

>Vielleicht ist es auch ganz einfach?

Ja, ist es: Einmal Hardware-CRC plus einmal Software-CRC.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Basti schrieb:
> Hat schon mal jemand ähnliches probiert? Vielleicht ist es auch ganz
> einfach?

 Probiert habe ich es nicht, aber lass doch jeden Thread eine eigene
 (Zwischen)Summe und eigene CRC haben.
 Rein - Wert dazuaddieren - CRC berechnen, neue Summe und neue CRC
 merken - raus.

von Basti (Gast)


Lesenswert?

Ich bekomme die Zwischensumme nur leider nicht mehr in die CRC rein... 
es wird anscheinend gleich als neuer Eingangswert interpretiert...
Wahrscheinlich ist die CRC-Einheit dafür nicht ausgelegt.

von Sebastian K. (sek)


Lesenswert?

Wenn die anderen deiner Threads ebenfalls auf die CRC Einheit zugreifen 
und das DR Register modifizieren, hast du schlechte Karten. Das DR 
Register der F4 Reihe kann nur mit einem Default Wert von 0xFFFFFFFF 
durch einen Reset geladen werden. Einen eigenen Initialwert dort rein zu 
laden ist nicht möglich. Das ist meines Wissen nur bei der F3 und F0 
Reihe möglich.

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.