www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 CRC-Check des ROM's


Autor: Tomi Tomsen (Firma: xxx) (kaptainchaos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,
ich versuche zurzeit einen CR-Check des ROM’s in meinem MSP430 zu 
implementieren, leider bringen mich die im Netz und hier im Forum 
gefundenen Infos nicht weiter. Das Projekt lässt sich ohne Fehler 
kompilieren und eine Checksumme wird erstellt, welche ich im .map-file 
finde.
Folgendes Einstellungen wurden getätigt:
Im Linker habe ich IAR mitgeteilt das es eine Checksumme erstellen soll, 
mit folgenden Parametern:

Size: 2bytes;  CRC16 (0x11021); Complement As is; Bit order MSB first; 
Alignment: 2

Zusätzlich habe ich nach einem Beispiel in der .xcl-Datei folgendes 
eingefügt:

//-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=2100-FFBD
-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT=2100-FFBD
-Z(CONST)CHECKSUM#2100-FFBD*

Im der Main werden dann beim Systemstart folgende Unterprogramme 
aufgerufen:
sum = fast_crc16(sum,(unsigned char *)0x2100, 0xFFBB-0x2100+1);
sum = fast_crc16(sum,(unsigned char *)0xFFBC, 2);
Die Werte über welchen Bereich die Checksumme erstellt wurde (0x2100 & 
0XFFBB) und die Position der Checksumme habe ich nach dem Kompilieren 
aus der .map-Datei.
Zur Berechnung der Checksumme verwende ich folgenden Code:

unsigned short 
fast_crc16(unsigned short sum, unsigned char *p, unsigned short len)
  {   
   while (len--)
   sum = crc16_table[(sum >> 8) ^ *p++] ^ (sum << 8);
   return sum; 
  }

Hinter crc16_table befindet sich eine Tabelle, mit dem vielfachen von 
0x1021 zur Berechnung des Polynoms.
Bei dem verwendeten MSP430 handelt es sich um den MSP430F2410.
Wie schon geschrieben scheint es so als würde die Checksumme korrekt 
hinterlegt werden, leider stimmt die errechnete Checksumme nicht mit der 
gespeicherten überein.
Vielleicht hat ja jemand einen Tipp oder findet einen Fehler in meiner 
Überlegung.

Schon einmal vielen Dank für die Hilfe :-)

Autor: Erich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem MSP430 kenne ich mich konkret nicht aus.
Hoffe aber trotzdem was beitragen zu können.

Es gibt unterschiedliche Varianten von CRC16, siehe
http://de.wikipedia.org/wiki/Zyklische_Redundanzpr...
(zusätzliche Hinweise am Textende unten).

Weiter ist (natürlich) zu beachten, daß der Speicherort (mit Inhalt 
0xFFFF) der Soll-CRC nicht in die vom Linker gemachte CRC-Erstellung 
eingehen darf.

Wichtig ist bei Angabe der "oberen" Adresse auch immer, ob deren Inhalt 
noch eingeht oder eben nicht mehr mit eingeht. Ob also die Anzahl <Ende> 
- <Start> ist, oder <Ende> - <Start> + 1 .

Auch gibt es unabhängige Tools, die eine CRC aus einem .hex File (u.a.) 
erstellen können. Dort müssen dann ebenso als Parameter der/(die) 
Adressbereich(e), die Zieladresse der zu erstellenden CRC, sowie deren 
Typ definiert werden.
Ein solches Tool ist z.B.  SRecord   http://srecord.sourceforge.net/
In der zugehörigen Dokumentation  srecord-1.56.pdf  sind auf Seite 51+52 
auch etliche Hinweise zu Varianten des CRC16 beschrieben.

Erich

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.