Forum: Compiler & IDEs AVR-GCC .data wer kann helfen ?


von medra (Gast)


Lesenswert?

Hi zusammen,

ich arbeite gerade an einer extended-Variante des Webservers von Ulrich
Radig.
Z.Zt. bin ich dabei, ein eigenes Telnet aufzusetzen, was etwas mehr
Komfort bietet.

Leider hab ich folgendes Problem:

Dies ist die Ausgabe des Compilers...

section            size      addr
.text             11656         0
.data               850   8388704
.bss                139   8389554
.noinit               0   8389693
.eeprom               0   8454144
.debug_aranges      260         0
.debug_pubnames    1372         0
.debug_info       10012         0
.debug_abbrev      3162         0
.debug_line        8731         0
.debug_str         1853         0
.debug_ranges        48     11656
Total             38083

Irgendwelche Textinhalte von z.B. printf erhöhen den Wert von .data
Kommt dieser an die 900-Grenze, dann läuft die Software gar nicht bzw.
Instabil.

Verwendet wird ein Mega32.

Wer weiss rat ?
Und wie kann ich rausfinden, wie viel Code und wie viel SRAM ich belegt
hab ? Der Mega32 hat doch 32k Flash und 2k SRAM ?


Greetz,
medra

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Deine "irgendwelchen Textinhalte von printf" werden, obwohl es
String-Konstanten sind, im RAM (also Sektion .data) abgelegt und bei
Programmstart mit konstanten Werten aus dem Flash-ROM initialisiert.

Abhilfe:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmspeicher_.28Flash.29

von Simon Küppers (ohne Login) (Gast)


Lesenswert?

Heißt das bei
printf("Test");

RAM belegt wird ?
Dachte er lädt die String Konstante (in Register) und gibt sie dann
aus?! Oder versteh ich jetzt was falsch?

von medra (Gast)


Lesenswert?

Hmmm ...

aber der Mega32 hat doch 2k RAM ?

von medra (Gast)


Lesenswert?

Wie bekomme ich denn einen Flash-ROM-Inhalt in einem sprintf-string
untergebracht ?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Einen ganzen Flash-PROM-Inhalt in einem sprintf-String? :-)

Ansonsten: ließ das ***-Manual einfach mal.  Referenzen:

http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html

(Errm, du musst das manuell cut&pasten, die Forumsoftware hat
mit den Unterstrichen einen Bug:

http://www.mikrocontroller.net/forum/read-5-241542.html#new )

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.