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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Basti (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
>Vielleicht ist es auch ganz einfach?

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

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


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.