SRAM und Speicherprobleme

Gast #74958
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
Gast
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.
Gast
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.....
Gast
Diese Strings werden übrigens vom Compiler mit local labels
versehen, daher tauchen sie allesamt nicht mehr in der linker
symbol table auf.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.