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
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.
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.
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
> 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.
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.