Forum: Mikrocontroller und Digitale Elektronik Avr Studio - Hex Datei plötzlich zu groß


von Thomas (Gast)


Lesenswert?

Hi,

ich habe grade versucht AVR studio auf meinem neuen Rechner zum laufen 
zu bekommen. Nach einigem hin und her scheint es auch soweit zu 
laufen...

Allerdings habe ich das Problem, dass meine compilierte hex datei auf 
einmal fast doppelt so groß wird als wenn ich das selbe GCC Projekt auf 
dem alten PC compiliere. Leider passt das Programm so jetzt nicht mehr 
auf den Controller. Die eep Datei ist auch 6 mal so groß...

Habe schon mit der Optimierungs-Einstellung rumgespielt (-Os usw ) 
allerdings ohne große Auswirkung auf die Dateigröße.

Jemand eine Idee woran es liegen könnte?


Gruß

von c-hater (Gast)


Lesenswert?

Thomas schrieb:

> ich habe grade versucht AVR studio auf meinem neuen Rechner zum laufen
> zu bekommen. Nach einigem hin und her scheint es auch soweit zu
> laufen...
>
> Allerdings habe ich das Problem, dass meine compilierte hex datei auf
> einmal fast doppelt so groß wird als wenn ich das selbe GCC Projekt auf
> dem alten PC compiliere. Leider passt das Programm so jetzt nicht mehr
> auf den Controller. Die eep Datei ist auch 6 mal so groß...
>
> Habe schon mit der Optimierungs-Einstellung rumgespielt (-Os usw )
> allerdings ohne große Auswirkung auf die Dateigröße.
>
> Jemand eine Idee woran es liegen könnte?

Daran, dass du nicht den Hauch einer Andeutung einer Ahnung von dem 
hast, was du da zu tuen versuchst.

Primär ist dir nicht klar, dass die Größe einer *.hex oder *.eep-Datei 
vollkommen irrelevant ist. Das ist Quelltext. Man kann problemlos z.B. 
eine *.hex mit einer Größe von 100MByte produzieren, die sich dann 
trotzdem erfolgreich auf einen ATtiny13 flashen läßt. Auf den Inhalt 
kommt es an, nicht auf die Größe der Repräsentation...

von Thomas (Gast)


Lesenswert?

c-hater schrieb:
> Daran, dass du nicht den Hauch einer Andeutung einer Ahnung von dem
> hast, was du da zu tuen versuchst.

Wenn ich so viel Ahnung hätte wie du scheinbar hast würde ich wohl nicht 
um Hilfe suchen...


c-hater schrieb:
> Daran, dass du nicht den Hauch einer Andeutung einer Ahnung von dem
> hast, was du da zu tuen versuchst.
>
> Primär ist dir nicht klar, dass die Größe einer *.hex oder *.eep-Datei
> vollkommen irrelevant ist. Das ist Quelltext. Man kann problemlos z.B.
> eine *.hex mit einer Größe von 100MByte produzieren, die sich dann
> trotzdem erfolgreich auf einen ATtiny13 flashen läßt. Auf den Inhalt
> kommt es an, nicht auf die Größe der Repräsentation...

Das ist mir schon klar... das Programm lässt sich aber eben nicht mehr 
flashen.


AVR Memory Usage
----------------
Device: atmega48p

Program:    5238 bytes (127.9% Full)
(.text + .data + .bootloader)

Data:        308 bytes (60.2% Full)
(.data + .bss + .noinit)


Build succeeded with 1 Warnings...



Compiliere ich 1:1 die gleichen Dateien auf meinem alten Rechner werden 
bloß 2658 byte verbraucht. Beides mal mit Avr-Studio 4.18 und 
WinAVR-20100110.

von S. R. (svenska)


Lesenswert?

Thomas schrieb:
> Jemand eine Idee woran es liegen könnte?

Du machst irgendwas falsch. :-)

Vergleiche die Map-Dateien, ob in deinem Ergebnis Dinge drin sind, die 
da nicht mehr sein sollten oder ob sich eine bestimmte Funktion 
aufgebläht hat.

Vergleiche die CFLAGS, und zwar alle (hast du LTO aktiviert, getrennte 
Sections pro Funktion, gibst du die Flags auch an den Linker weiter, 
etc.pp.)

Irritierend ist, dass die EEPROM-Daten größer sind. Das sollte nicht 
passieren, denn die hast du normalerweise komplett unter deiner 
Kontrolle.

Und stelle sicher, dass du auch definitiv den richtigen Quelltext 
kompilierst und nicht versehentlich unterschiedliche Programme 
vergleichst.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Thomas schrieb:
> Jemand eine Idee woran es liegen könnte?

Ohne Infos: Nein.

Mach mal -v zu dein Compiler- und Linkerflags hinzu, und schau wie die 
Objekte generiert werden.  -v führt zwar zu viel Ausgabe, aber dann 
siehst du genau, was wie übersetzt wird.

> Die eep Datei ist auch 6 mal so groß...

Dann geht irgendwas gründlich schief. Bei gleichem Projekt sollte die 
gleich bleiben, dann deren Größe hängt i.d.R. nicht von 
(Optimierungs-)Schaltern ab.  Und im Gegensatz zu dem, was 
c-hater-experte sagt, enthält sie keinen "Quelltext".

Mittem im Projekt wechselt man eigentlich auch nicht zu ner anderen 
Toolchain; du könntest auf dem neuen PC also auch ein WinAVR haben.  Es 
ist möglich, mehr als 1 Toolchain auf einem Rechner haben und ui nutzen, 
die dann per absolutem Pfad angesprochen werden oder per Umsetzen von 
PATH. (Wie das in AStudio geht kann ich dir nicht sagen).

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.