www.mikrocontroller.net

Forum: Compiler & IDEs SRAM und Speicherprobleme


Autor: Michael Schlagmüller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !

Ich verzweifle demnächst...
Zuerst durfe ich feststellen, dass mein Programm (@ATMege323) nicht
mehr richtig funktionert. Ich bin auch recht schnell draufgekommen,
dass der Stack (& dynamisch allokierte Variablen) mir in meine
Variablen reinlaufen. Ein 'avr-nm myprog.elf -n/' sagt mir folgendes
(Auszug):

00003b6c T _etext
0000411e A __data_load_end
00800060 D __data_start
00800612 B __bss_start
00800612 D __data_end
00800612 D _edata
00800612 b TimerIntFunc
00800622 b uartRxData
00800662 b uartTxData
008006a2 b UartRxFunc
008006a4 B Timer0Reg0

...

0080073d B sendResTime
00800755 B lastSendRes
0080076d B minTime
00800779 B startTime
0080077d B eepromMinTime
00800789 B ActPowerState
0080078b B __bss_end
0080078b ? _end
00810000 ? __eeprom_end

Nun ist mir schon klar, dass mein Stack mit in meine Variablen
reinläuft. Aber warum in aller Welt ist denn '__bss_Start' erst bei
612 ?
Ich hab kein Plan....
Weiss jemand von Euch weiter ?

Danke schonmal....
  Snubnose

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dazwischen liegen all Deine Strings.  D. h. jede Benutzung von

foobar("hello world!");

belegt für "hello world!" sowohl Platz im ROM (für die Initiali-
sierung) als auch im RAM.

Du solltest Dir mal die Techniken zur Nutzung von Strings direkt
aus dem ROM ansehen.

Autor: Michael Schlagmueller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yeah, dass ist es
ich hatte so viele Debugausgaben, die ich mir über meine serielle
Schnittstelle rausgegeben habe, dass es mir mein ganzes RAM voll
gemacht hat. Vielen vielen Dank.....

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese Strings werden übrigens vom Compiler mit local labels
versehen, daher tauchen sie allesamt nicht mehr in der linker
symbol table auf.

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.