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
>Vielleicht ist es auch ganz einfach?
Ja, ist es: Einmal Hardware-CRC plus einmal Software-CRC.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.