AVR-GCC - "appears to be a misspelled signal handler" - WinAVR

Feb 21, 2006 8 Replies

Witam,



Zainstalowa³em nowe WinAVR i mam taki warning:



warning: `_Z10__vector_8v' appears to be a misspelled signal handler


w programie mam takie deklaracje:



#include <inttypes.h>



#include <avr/io.h>



#include <avr/interrupt.h>


SIGNAL(SIG_INTERRUPT7) { }


procesor ATmega128


Ja pozbyæ siê tych warningów. W poprzedniej wersji WinAVR nie by³o ich



Dnia Tue, 21 Feb 2006 14:15:01 +0100, zwus napisał(a):

A w makefile jest definicja procka?

Pozdrawiam Marcin Stanisz

zwus napisał(a):

wygląda to tak, jakbyś kompilował kod za pomocą g++, a nie gcc. jeśli _naprawdę_ musisz obsługę przerwań pisać w C++, ubierz chociaż funkcję w extern "C" { ... }.

w.

jest definicja procka. Ca³o¶c kompiluje siê z nastêpuj±cymi parametrami:

avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=11059200UL -Os -funsigned- char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wa,-adhlns=mier nik.lst -MD -MP -MF .dep/miernik.o.d miernik.cpp -o miernik.o

Dodam jeszcze ¿e u¿ywam C++, bo plik ma rozwiniêcie "cpp"

Pozdrawiam Andrzej

A czemu by nie pisaæ ob³ugi przewania w C++. Jest to wygodne i przyjmne. A prolog i epilog mozna samemu modyfikowaæ wiêc jest tak samo jak w asm.

A co to ma daæ ¿e sam± funckjê skompiluje w C a nie w C++.

Podej¿ewam ¿e zmieni³y siê pliki nag³ówkowe w porówaniu z poprzedni± wersj±.

A tak na marginesie to skompilowany program dzia³a poprawnie.

Pozdrawiam Andrzej

zwus przemówił ludzkim głosem:

aha, a za jakiś czas zaczniesz pytać, czemu konstruktory i destruktory są niepotrzebnie dublowane w kodzie wynikowym :-]

zwus napisał(a):

linker spodziewa się nazwy funkcji postaci __vector_X, a kompilator C++ dodaje do nazw symboli kilka dodatkowych znaków opisujących typu parametrów i zwracanej wartości. więcej na ten temat znajdziesz chociażby na stronie

formatting link
w.

Dziêki za info

To mi wyja¶ni³o sprawê

Pozdrawiam Andrzej

zwus napisał(a):

Już tu padła odpowiedź odnośnie C++, ale na marginesie tylko przypomnę, że makro SIGNAL już odchodzi w przeszłość i będzie usunięte z kolejnej wersji WinAVR (obejrzyj komentarze w pliku avr/interrupt.h), zamiast tego należy stosować ISR. Makro INTERRUPT w ogóle znikło. Doszły też łatwiejsze do skojarzenia synonimy nazw przerwań. I tak zamiast powyższego należałoby napisać:

ISR (INT7_vect)

Odpowiednie nazwy nowych wektorów przerwań znajdziesz w pliku io konkretnego procesora, np. avr/iom128.h (dołączać należy tak jak do tej pory avr/io.h).

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required