www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Butterfly schon voll mit Demoanwendung ?


Autor: jo1984 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich habe ein AVR Butterfly Board und wollte darauf die nach GCC 
portierte Demoanwendung laden. Das ist ein kleines Menü mit "Temperatur 
lesen" und eine RTC.

Ich bekomm einen Fehler beim Download und die Codegröße ist 16454. Also 
mehr als die 16k des ATMega169.

Kann das sein ? 16k ist doch eigentlich recht viel.
Invoking: Print Size
avr-size --format=berkeley -t TEST.elf
   text     data      bss      dec      hex  filename
  16454      338      153    16945     4231  TEST.elf
  16454      338      153    16945     4231  (TOTALS)
Finished building: sizedummy

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo1984 schrieb:
>
> Ich bekomm einen Fehler beim Download und die Codegröße ist 16454. Also
> mehr als die 16k des ATMega169.
>
> Kann das sein ? 16k ist doch eigentlich recht viel.

16k ist sogar eine Menge.

> Ich habe ein AVR Butterfly Board und wollte darauf die nach GCC
> portierte Demoanwendung laden. Das ist ein kleines Menü mit "Temperatur
> lesen" und eine RTC.

Kommt drauf an, was du da so 'portiert' hast.

Aber ich würde jetzt zuallererst mal auf einen nicht eingeschalteten 
Optimizer tippen.

Autor: jo1984 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Kommt drauf an, was du da so 'portiert' hast.
Ich selbst habe nichts portiert. Ich hab das portierte Demoprojekt 
http://www.siwawi.arubi.uni-kl.de/avr_projects/#bf_app übernommen.

>Aber ich würde jetzt zuallererst mal auf einen nicht eingeschalteten
Optimizer tippen.
Das ist möglich (ich such grad, wo ich die Option unter AVR-Eclipse 
einstellen kann).
Aber mit Optimierer hab ich dann anstatt 16k noch 10k-12k. Das wäre mir 
auch schon zu viel für "kann eigentlich noch nicht wirklich was".

Autor: jo1984 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-Os war angewählt.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo1984 schrieb:
>>Kommt drauf an, was du da so 'portiert' hast.
> Ich selbst habe nichts portiert. Ich hab das portierte Demoprojekt
> http://www.siwawi.arubi.uni-kl.de/avr_projects/#bf_app übernommen.
>
>>Aber ich würde jetzt zuallererst mal auf einen nicht eingeschalteten
> Optimizer tippen.
> Das ist möglich (ich such grad, wo ich die Option unter AVR-Eclipse
> einstellen kann).
> Aber mit Optimierer hab ich dann anstatt 16k noch 10k-12k. Das wäre mir
> auch schon zu viel für "kann eigentlich noch nicht wirklich was".


Ähm.
Hast du dir den Code mal etwas genauer angesehen.
Das mag dir jetzt so vorkommen, als ob das alles Pipifax wäre, aber da 
steckt schon einiges drinnen.


Mit AVR-Studio / WinAvr compiliert das mit -Os auf 13174 Bytes 
Flash-Verbrauch

Autor: jo1984 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das mag dir jetzt so vorkommen, als ob das alles Pipifax wäre, aber da
>steckt schon einiges drinnen.
ok

>Mit AVR-Studio / WinAvr compiliert das mit -Os auf 13174 Bytes
>Flash-Verbrauch
hab gesehen, da liegt ein compiliertes HEX File bei. Das dürfte auch so 
um die 13k haben.

Jetzt muss ich nur noch rausfinden, weshalb bei mit 16k rauskommen. Muss 
mir wohl mal ein MAKEFILE zusammenschustern und das direkt von der 
Konsole aus compilieren.

Ich hab Eclipse + AVR-Eclipse + Linux. Und hab das ohne eine Änderung in 
den Defaulteinstellungen compiliert. Wie gesagt, -Os ist angewählt. Ohne 
hat es ca 22k.

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> [...]und das direkt von der Konsole aus compilieren[...]

Ja, anhand der Ausgabe von "make all" kann man nachvollziehen, mit 
welchen Parametern avr-gcc zum Compilieren und Linken aufgerufen wird 
und diese dann in die Einstellungen der IDE übernehmen (habe selbst das 
Eclipse avr plugin nie benutzt).

Auf jeden Fall die Option -lm zu den Linker-Aufrufparametern hinzufügen. 
Linker Option --relax ist in aktueller Fassung der Ports auch aktiviert 
und hat ein paar freie Bytes zustätzlich gebracht. In älteren Versionen 
der Toolchain kann --releax zu Verdruss führen, dann evtl. testweise 
weglassen. Compiler-Optionen neben -Os derzeit:
CFLAGS += -funsigned-char
CFLAGS += -funsigned-bitfields
CFLAGS += -fpack-struct
CFLAGS += -fshort-enums
CFLAGS += -fno-inline-small-functions
CFLAGS += -fno-split-wide-types
CFLAGS += -fno-tree-scev-cprop

"Linker garbage-collection" kann auch aktiviert werden und ist es auch 
im Makefile und in den AVR-Studio Projekteinstellungen (CFLAGS: 
-ffunction-sections, -fdata-sections, LDFLAGS: (-Wl)--gc-sections). Bin 
aber grade nicht sicher, ob überhaupt noch "toter" Code im 
Beispielquelltext enthalten ist. Es gibt allerdings Testroutinen, die 
wohl zur Prüfung in der "Butterfly-Fabrik" genutzt werden aber ansonsten 
nicht genötigt werden. Kann man also weglassen (Quellcode test.c nicht 
compilieren/linken und Aufruf in main()/Test() auskommentieren).

Falls der vorinstallierte Bootloader weiter verwendet werden soll, darf 
TEXT+DATA nicht größer als 14KiB sein, da die übrigen 2KiB vom 
Bootloader beansprucht werden.

Autor: jo1984 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok. habe mich jetzt durchgekämpft und auch die 13142 geschafft. 
Allerdings verstehe ich was mit den Linkeroptionen noch nicht.

mit:
avr-gcc -Wl,-Map,bf_gcc.map -Wl,--relax -Wl,-lm -Wl,--gc-sections -mmcu=atmega169 -o"test4.elf" -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -fno-inline-small-functions -fno-split-wide-types -fno-tree-scev-cprop -ffunction-sections -fdata-sections  ./ADC.o ./BCD.o ./LCD_driver.o ./LCD_functions.o ./RTC.o ./bfeeprom.o ./button.o ./dataflash.o ./main.o ./sound.o ./test.o ./timer0.o ./usart.o ./vcard.o 

komm ich auf  .data: 338 .text  15314

aber erst wenn ich das "-Wl,--relax -Wl,-lm -Wl,--gc-sections" nochmals 
an's Ende stelle, dann erreiche ich die  .data  74 .text 13142

Also das, obwohl "-Wl,--relax -Wl,-lm -Wl,--gc-sections" ja bereits im 
Aufruf drin steckt, aber halt recht weit am Anfang. Ich dachte, die 
Reihenfolge spielt keine Rolle ?!? - bin verwirrt -

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.