mikrocontroller.net

Forum: Compiler & IDEs Fehler beim compilieren mit gcc 4.2.1 den ich nicht verstehe


Autor: Malte __ (malte) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich weiß ich nicht mehr weiter, ich habe ein relativ fertiges Projekt, 
welches mit dem gcc 3.4.3 auch sehr gut läuft. Nur mit dem gcc 4.2.1 
läuft es nicht. Also habe ich versucht den Fehler immer weiter 
einzugrenzen indem ich das "drumherum" weggelassen habe, bis das Projekt 
herauskam welches im Anhang ist. Mit dem gcc 3.4.1 übersetzt lässt das 
Programm an Pin 2 des PORTD eine LED mit 2 Hz blinken und gibt per RS232 
(9600 Baud) eine Zeichenfolge aus. (Das Programm verwendet einen 
kooperativen Scheduler). Mit dem gcc 4.2.1 scheint das Programm 
teilweise ins Nirvana zu laufen. Ich habe versucht den Ablauf des 
Quellcodes im AVR Studio 3.x zu simulieren, zumindest Stack-Überläufe 
erkenne ich dort keine.

Das Verhalten der LED verändert sich beim gcc 4.2.1 wenn ich in der 
Datei clock.c
void waitms_sched(u08 delay) {
u32 waituntil = get_msecs();
//u08 t[7];
waituntil += delay;
//wordtostr(t, get_msecs(), 5, 0);
//t[5] = '\n';
//t[6] = '\0';
//rs232_print_atomic(t);
rs232_print_atomic("C\n");
while (waituntil > get_msecs()) {
  rs232_print_atomic("D\n");
  sched();
}
}
die auskommentierten Zeilen Einbaue, hingegen wird das Verhalten der LED 
beim gcc 3.4.3 dadurch nicht beeinflusst.

Es wäre wirklich schön, wenn hier jemand eine Idee hätte.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du was komplett compilierfähiges zum Nachgucken?

Autor: Malte __ (malte) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, soweit ich weiß müsste der Anhang komplett kompilierbar sein.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, sorry, das Attachment hatte ich übersehen.

Aber ich fürchte, das wird nicht ohne live debuggen gehen, mit all
den Stackoperationen des Schedulers.  Die auskommentierten Teile
verändern auf jeden Fall das Stackverhalten.  Ich würde es wahrschein-
lich auf einen ATmega88 portieren und via debugWire debuggen, oder
gleich auf einen ATmega16 und JTAG nehmen.

Mir ist auch nicht so ganz klar, warum du den eigentlichen Scheduler
nicht lieber gleich komplett in Assembler gezimmert hast.

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.