Interrupt-Fehler bei Minimal-Programm??

Gast #3672654
Lesenswert?

Hallo,

ich suche bereits länger nach einem Interrupt-Fehler bzw. -Warnung 
(wobei ich jede Warnung ernst nehme). Leider hat mich jetzt die 
Reduktion des Programms auf ein Minimum auch nur Zeit gekostet und keine 
Erkenntnisse gebracht. Ich verstehe das Ganze nicht. Das Programm ist 
mittlerweile sehr kurz:
1
#include <inttypes.h>
2
#include <avr/interrupt.h>
3
#include <avr/io.h>
4
#include <stdlib.h>
5

6
ISR(USART_RX_vect) {
7
  UDR0;
8
}
9

10
int main() {
11
  while (1);
12
}

avr-gcc 4.8.1 (offizielle Version von Atmel) sagt jede Mal:
1
In function '__vector_18':
2
test.c:6:1: warning: '_vector_18' appears to be a misspelled signal handler [ena
3
bled by default]
4
 ISR(USART_RX_vect) {
5
 ^

Sind eventuell die Header-Dateien kaputt? Ich habe nichts Auffälliges 
gefunden. Das AVR-Studio habe ich jetzt schon mehrfach runtergeladen und 
neu installiert. Ich kann aber nicht ausschließen, dass mein Windows 
etwas hat. Will es aber ungerne neu installieren, weil ich schon 
genügend Zeit verloren habe. :(
Gast #3672724
Lesenswert?

-mmcu=atmega328p

Hmmmmmmm. Inwiefern passt das nicht zusammen? Auch wenn ich in der ISR 
was anderes tue, um eine Dummyaktivität zu kreieren, jammert der 
Compiler. Und ich nehme jede Warnung ernst. Eine Warnung ist für mich 
nie "nur" eine Warnung!
Gast #3672812
Lesenswert?

Thommy schrieb:
> Eine Warnung ist für mich
> nie "nur" eine Warnung!

Ok, dann: Diese Warnung benötigt eine Besondere Übersetzung.

Der Compiler Sagt zwar:
> warning: '_vector_18' appears to be a misspelled signal handler
meint aber eigentlich:
> Achtung! Ich bin eine alte, vom Distributor schlecht gepatchte Version! Bitte 
aktualisier mich!

:)
Gast #3672869
Lesenswert?

Thommy schrieb:
> Hmmmm. Wo bekomme ich denn dann eine aktuellere Version?

Für Windows? Keine Ahnung.

Aber: Schau dir vielleicht mal die GCC-Quelltext-Schnippsel an, die für 
diese Warnung verantwortlich sind:

Aus einem anderen Grund (führendes Sonderzeichen abschneiden) wurde der 
Char-Pointer auf den Funktionsnamen um eins inkrementiert 
weiterverarbeitet. d.H. der erste Buchstabe wurde weggeschnitten. Aus 
"__vector_18" wurde dabei also "_vector_18".

Weiter hinten/an anderer Stelle erfolgt dann die Prüfung auf gültige 
IRQ-Vektoren-Namen. Dabei wird eben auf "__vector" geprüft.
=> es gibt die von dir gesehene Warnung.

diese ist, wenn du dir das im GCC-Source gesehen hast, ein rein 
kosmetisches Problem => ignorieren.
Gast #3672893
Lesenswert?

Das beruhigt mich eigentlich nicht. Mein Chef verlangt z.B. sogar 
-Werror
Und so ein alter und schwer wiegender Bug sollte doch längt gefixt sein? 
Er verursacht ja eine Menge Zeitverlust durch Irreführung, nicht nur bei 
mir. Zumal es auch 4.9.0 gibt, oder? Ich würde auch selbst kompilieren, 
weiß aber nicht wie. Hat jemand eine Ahnung, wie man den avr-gcc unter 
Windows kompiliert?
Gast #3672906
Lesenswert?

Thommy schrieb:
> Und so ein alter und schwer wiegender Bug sollte doch längt gefixt sein?

Ist er ja auch. Hat halt etwas länger gedauert.
So Juli 2013 ist der Bug in die 4.8er Schiene aufgenommen worden.
Dez. 2013 ist er entdeckt&gemeldet worden.
März 2014 ist dann die gefixte Version released worden...

Und "Schwerwiegend" sind für die GCC-Entwickler garkeine AVR-Bugs.
Gast #3673987
Lesenswert?

Ja, ich spare mir eben das extra Linken aus Faulheit und mache alles in 
einem Schritt. Warum auch nicht, ging früher auch. Und -flto brauche ich 
wegen der Codegröße zwingend.

Und natürlich würde ich viel lieber die 4.8.3 oder 4.9.0 installieren, 
habe aber keine Quelle für ein Binary. Ich verstehe nicht so ganz, warum 
gcc die AVR-Geschichte überhaupt einbaut, wenn anscheinend kein 
Interesse an Support oder Testern besteht. Ich bin ja kein Einzelfall, 
wie eine Google-Suche gezeigt hat. Wären Binarys zum Testen verfügbar, 
gäbe es sicher eine Menge Rückmeldungen mehr... aber anscheinend ist das 
ja nicht erwünscht!? Vorsicht Kunde? Es könnten noch mehr Fehler 
entdeckt werden?
#3674011
Lesenswert?

Thommy schrieb:
> Ich verstehe nicht so ganz, warum
> gcc die AVR-Geschichte überhaupt einbaut, wenn anscheinend kein
> Interesse an Support oder Testern besteht.

Du bellst den falschen Baum an, und das gleich zweifach (nicht, daß das 
irgend eine Baum groß stören würde, aber trotzdem)

Du benutzt nicht "den" gcc, sondern das, was Atmel daraus gemacht hat. 
Ein Original 4.8.1 hat den Fehler nicht, wie weiter oben ja schon steht. 
Also beschwer dich bei Atmel.

Und Johann ist mit Sicherheit auch nicht das Ziel deines Unmuts.

Ansonsten ist die Sache einfach: gcc ist Open source. Du darfst da jeden 
Fehler, der dir auffällt, gerne selber beheben. Von alleine beheben die 
sich leider nicht.

Oliver

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren