Fehlersuche ATmega168

06/02/2014 - 01:14 von Gregor Szaktilla | Report spam
Hallo zusammen!

Ich suche einen Fehler in einem Programm, das ich für den ATmega168
geschrieben habe. Da dessen Verhalten nicht dem Erwarteten entspricht
und meine Möglichkeiten zur Ausgabe von Daten aus dem RAM des µC sehr
begrenzt sind (ich kann noch keine serielle Kommunikation), möchte ich
testen, ob mein Programm mehr RAM benötigt, als der µC hat (1 kB). Evtl.
wàchst der Stack in den Heap oder umgekehrt. Gibt es eine Option des
avr-gcc, die mir ausgibt, wie groß Stack und Heap zu Beginn des
Programms sind?

Falls das interessiert: Ich verwende GNU make 3.8.1 und avr-gcc 4.3.5
unter Debian/GNU Linux 6. Einen Emulator für den ATmega168 gibt es m. W.
n. nicht für Linux.

Gruß

Gregor
 

Lesen sie die antworten

#1 ram
06/02/2014 - 13:40 | Warnen spam
Gregor Szaktilla writes:
avr-gcc, die mir ausgibt, wie groß Stack und Heap zu Beginn des
Programms sind?



Die letzte von diesem Programm ausgegebene Zahl könnte einen
Anhaltspunkt für die ungefàhre Größe des Kellers liefern.
(Falls das System einen Kellerüberlauf erkennt und das
Programm dann abbricht.)

#include <stdio.h>

int main()
{ char const c; static char const * const p = &c;
ptrdiff_t const d = &c - p;
ptrdiff_t const e = d > 0 ? d : -d;
printf( "%tu", e ); main(); }

Die von dem folgenden Programm ausgegebene Zahl könnte einen
Anhaltspunkt für die ungefàhre Größe des Haufens liefern.

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

int main()
{ size_t s = SIZE_MAX; while( !malloc( s ))s *= .99; printf( "%zu", s ); }

Ähnliche fragen