Forum: Compiler & IDEs Größe der *.Hex datei verkleinern


von Bernd (Gast)


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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Die Größe der Hex-Datei ist nicht die Größe die das Programm wirklich 
hat! Wieviel Platz das Programm wirklich braucht kannst du dir mit 
avr-size.exe anzeigen lassen.

Mit -Os kann man auf eine möglichst geringe Größe optimieren.

von Jonas Hilt (Gast)


Lesenswert?

wo muss ich die Option -Os einfügen???

Gruß Jonas

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Beim avr-gcc-Aufruf bzw. an die entsprechende Stelle ins makefile. Wenn 
du das Makefile von Volker Oth verwendest sollte das aber sowieso schon 
drin stehen.

von BAB (Gast)


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

von Jonas Hilt (Gast)


Lesenswert?

Super! ;-) genau so habe ich mir das vorgestellt..

Gruß Jonas

von MdeWendt (Gast)


Lesenswert?

Hallo,

bitte poste mal die avr-sizex. Ich kann sie nicht finden. DANKE


Martin

von Jonas Hilt (Gast)


Angehängte Dateien:

Lesenswert?

hier ist's ;-)))

Gruß Jonas

von Jonas Hilt (Gast)


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

von Jonas Hilt (Gast)


Lesenswert?

...hat sich erledigt, musste auch in der project-Makefile eingetragen 
werden.

Gruß J.

von BAB (Gast)


Lesenswert?

mhh..also ich habe es nur in der avr_make und nicht in der projekt make 
datei eingefügt. ich benutze allerdings gcc 3.2

von Sascha Weitkunat (Gast)


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?

von BAB (Gast)


Lesenswert?

nicht unter "size:" eintragen sondern unter "%ok:"

von sammy (Gast)


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?

von Malte Marwedel (Gast)


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.

von Peter D. (peda)


Lesenswert?

Faustformel:

Bin = Hex / 2,8


Peter

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
Noch kein Account? Hier anmelden.