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
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.
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.....
Diese Strings werden übrigens vom Compiler mit local labels versehen, daher tauchen sie allesamt nicht mehr in der linker symbol table auf.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.