mikrocontroller.net

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


Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jonas Hilt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo muss ich die Option -Os einfügen???

Gruß Jonas

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: BAB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jonas Hilt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super! ;-) genau so habe ich mir das vorgestellt..

Gruß Jonas

Autor: MdeWendt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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


Martin

Autor: Jonas Hilt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier ist's ;-)))

Gruß Jonas

Autor: Jonas Hilt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jonas Hilt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...hat sich erledigt, musste auch in der project-Makefile eingetragen 
werden.

Gruß J.

Autor: BAB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sascha Weitkunat (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: BAB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nicht unter "size:" eintragen sondern unter "%ok:"

Autor: sammy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Malte Marwedel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Faustformel:

Bin = Hex / 2,8


Peter

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.