www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik crc im flash und unter Windows


Autor: Steffen Walter (surrounder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich mache für meine Anwendung eine CRC Berechnugn über den kompletten 
Speicherbereich des Flash. Das ist soweit auch kein Problem.

Leider habe ich nun eine Abweichung zwischen der CRC Checksumme die ich 
im Controller berechne und der die ich hier zur Entwicklungszeit 
berechne. Als Datei erzeuge ich ja ein File mit der Endung *.elf und 
über das habe ich nun bisher am PC die Checksumme berechnet.

Wenn ich mir das *.elf aber im Editor anschaue bzw. das im Hexeditor 
anschaue dann steht da ja viel mehr drin und somit kann die Checksumme 
ja gar nie gleich sein.

Muss ich denn speziell Linken um eine Datei zu erzeugen über die ich 
dann unter Windows die Checksumme ausrechnen kann?

Danke für jeden Tip oder Hinweis.

Steffen

PS.: ich arbeite mit gcc 4.4.0

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
avr-objcopy -O binary file.elf file.bin

(AVR angenommen.)  Wenn Deine .elf noch andere sections enthält 
(EEPROM), musst Du ggfs. die Argumente etwas erweitern.

EDIT:  Ich sehe gerade: über den gesamten Speicherbereich des Flash. 
Den erhältst Du so nicht, sondern nur den belegten.  Wie man den 
belegten im Programm rausfindet, dazu gab's erst neulich einen Thread.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe nachgesehen: Das Ende des Programms ist bei gcc &_etext, das 
Ende des belegten Flashs &__data_load_end.  Genauer gesagt: das erste 
freie Byte danach.

Autor: Steffen Walter (surrounder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank für die Antwort. Das stimmt im Linkerskript habe ich am Ende 
die Variable _etext.

Ich bin da momentan noch nicht festgelegt ob ich die CRC über den ganzen 
Flash oder nur über den Bereich meiens Programmcodes berechnen möchte.

Ok, dann muss ich mir mal objcopy anschauen. Das habe ich schon richtig 
verstanden dass das ein extra GNU Tool ist und der GNU Linker selber so 
eine Funktion anstelle eines *.elf files ein Flashfile zu erzeugen nicht 
kann oder?


Steffen

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das habe ich schon richtig
> verstanden dass das ein extra GNU Tool ist und der GNU Linker selber so
> eine Funktion anstelle eines *.elf files ein Flashfile zu erzeugen nicht
> kann oder?

Was alles der Linker erzeugen kann, weiß ich nicht.  Aber ich bezweifle, 
dass er Raw-Code zu erzeugen in der Lage ist.  Die Informationen im 
elf-File sind ja ganz praktisch, er kann auch verschiedene Sections 
enthalten (z.B. fürs EEProm, die Fuses usw.) und es ist ein recht 
universelles Format, aus dem sich die gewünschten Endformate schnell und 
einfach erzeugen lassen.

Ich sehe deshalb wenig Sinn darin, den Linker nochmal durchlaufen zu 
lassen.  Der [avr-]objcopy frisst kaum Zeit.  Der Standard-Makefile 
verwendet auch dieses Tool, um die .hex aus .elf zu erzeugen.

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.