Größe der *.Hex datei verkleinern

Gast #5709
Lesenswert?

Hallo,

nachdme ich nun mehrer (2 C-Dateien test.c und lcd.c) in ein hex 
kompiliert habe. ist die größe auf 4 Kb angewachsen. leider zu groß für 
meinen 4433.
Welche Compiler und Linker flags solle ich sinnvollerweise nehmen  wenn 
ich 2 oder mehrer C-dateien habe. Da ich beim test alles in einer datei 
hatte und die *.hex nach dem aufteilen wesentlich größer ist vermute ich 
das man hier mittels den flags was ändern kann.

Hat irgend jemand noch eien Idee ??


Gruß Bernd
Gast #5713
Lesenswert?

im avrfreaks forum schwirrt ein tool rum nennt sich avr-sizex.
das kann man in avr_make file einbinden...dann sieht die ausgabe so aus 
wie unten..find ich ganz nützlich.
wenn du es nicht findest sag bescheid ich lade es dann mal hier hoch.


   text     data      bss      dec      hex  filename
    188        0        2      190       be  rtctest.elf
avr-sizex --mcu at90s8515 rtctest.elf

    Flash     SRAM     EEPROM
    -----     ----     ------
       2%       4%         0%

Errors: none
Gast #5717
Lesenswert?

@BAB:
avrsize funktioniert prima, ich kann es jedoch nicht in das MAKE-File 
einbinden.

Habe es so in avr-make eingefügt wie in der README beschrieben, der 
compiler zeigt dennoch die alte größenangabe an.
Ich benutze avrgcc-3.0.2. Wie hast Du das eingebunden?

Gruß Jonas
Gast #5720
Lesenswert?

Also mir macht das Programm keine Freude...

Ich habe jetzt meine avr_make so umgestrickt:

>size:
>  $(SIZE) $(TRG).elf
>  avr-sizex --mcu $(MCU) $(TRG).elf

Das ist der relevante Teil aus meinen Project-Makefiles:

>include $(AVR)/avrfreaks/avr_make
>
>$(TRG).o : $(TRG).c

Aber er zeigt mir eben nichts an... Was ist denn bitte falsch?
Gast #5722
Lesenswert?

ist das wirkliche Program wirklich soviel kleiner wie das *.hex file?
Mein Programm hat im Hexfile ueber 2KB. Er sagt mir aber das wenn ich
das in meinen AT90S2313 (2KB Speicher) einbrenne, nur 32% belegt sind,
kommt das hin, oder ist da was falsch?
Gast #5723
Lesenswert?

Ja, 32 % kommt ungefähr hin.
Wenn man sich eine .hex Datei ansiehst stellt mann fest, dass jedes
Byte als Hexadezimale Zahl dargestellt ist, also mindestens 2 Zeichen
belegt. Hinzu kommen noch Zeichen für neue Zeilen und am Anfang jeder
Zeile steht meist noch die Speicheradresse.

Eine .bin Datei ist dagegen so kodiert, dass sie dierkt die Zeichen
enthält, die auch später im MCU stehen werden. Somit dürfte diese in
der Größe ziemlich genau dem entsprechen, was an Controller Speicher
belegt wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren