PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CRC8 Prüfsummen Berechnung



Frank
04.03.2005, 16:01
Hat mal jemand auf die schnelle eine verständliche Erläuterung parat wie ich für 2 Bytes eine CRC8 Prüfsumme berechnen kann?
Nach welcher Formel wird das standardmäßig berechnet?

Und welche Prüfsumme käme dann bei den Bytes 45 und 80 raus?

Gruß Frank

PicNick
04.03.2005, 16:11
Eine Seite gibt's
http://www.semtech.com/support/crc-8_tutorial_pre.pdf
http://www.dattalo.com/technical/software/pic/crc_8.asm
vielleicht hilft das.
Hier, da und sofort hab ich sonst nix anzubieten, tut mir leid

Frank
04.03.2005, 21:53
Danke, das reicht mir doch schon. Bei Bascom hab ich ja die CRC8-Funktion, also die Anwendung wäre kein Problem. Ich wollte nur sehen wie komplex der Algorithmus ist falls man es in anderen Sprachen umsetzen muss.
Ist ja offenbar recht leicht machbar.

Gruß Frank

PicNick
05.03.2005, 10:41
Oh la la, geht's du fremd ?

Jan_Weber
05.03.2005, 11:01
Ein prima Tool zum Verifizieren von CRC-Implementationen gibt es hier:

http://www.zorc.breitbandkatze.de/crc.html

Online-CRC-Rechner.

Gruß,

Jan

Kjion
05.03.2005, 12:17
Für avr-gcc könnte ich dir auch ein paar CRC Algorithmen schicken. Einige CRC16 Routinen gibt es sogar schon als optimierten Assemblercode in der libc...

MfG Kjion

Frank
06.03.2005, 10:23
Danke für weiteren Tips! Auch der Link zum Testen Verifizieren von CRC-Implementationen ist sehr gut.

@PicNick: Nein nein, ich geht nicht fremd. Bislang hatte ich wirklich noch keine Aufgabe gefunden die nicht in Bascom zu lösen gewesen wäre. Aber falls ich irgendwo CRC-Funktionen nehme wollte ich nur sichersstellen das auch die Fan´s von GCC und anderen Sprachen nachher keine Probleme haben Funktionen von Board´s zu nutzen, die Daten eventuell mit CRC-Wert senden. Die Kompatiblität soll ja nicht sprachabhängig sein.

Kjion
06.03.2005, 11:13
Aber falls ich irgendwo CRC-Funktionen nehme wollte ich nur sichersstellen das auch die Fan´s von GCC und anderen Sprachen nachher keine Probleme haben Funktionen von Board´s zu nutzen, die Daten eventuell mit CRC-Wert senden. Die Kompatiblität soll ja nicht sprachabhängig sein.

Das sollte wohl kein Problem sein. Ich wüßte nichts was man in Bascom machen kann, aber mit dem avr-gcc nicht ;-)
Für andere Sprachen kann man die CRC Algorithmen ja schnell umschreiben.

Hier mal ein kleines Beispiel für eine CRC8 Funktion ( X^8+X^5+X^4+1 ) die zum Beispiel in dem S.N.A.P. Protokoll verwendet wird:

/*
* Berechnet die 8-Bit CRC Checksumme eines Bytes
*/
uint8_t snap_crc8_update(uint8_t crc, uint8_t data)
{
uint8_t i;
uint8_t temp;

for (i = 8; i > 0; i--)
{
temp = ((crc ^ data) & 0x01);
if (temp == 0)
{
crc >>= 1;
}
else
{
crc ^= 0x18;
crc >>= 1;
crc |= 0x80;
}
data >>= 1;
}
return crc;
}

MfG Kjion

PicNick
06.03.2005, 11:47
@frank: Gut, wir wollen es dir glauben
Vergiß nicht, sowohl das Polynom als auch den Startwert festzulegen