Hast du die avr/interrupt.h inkludiert?
Hi,
also entweder ist mein GCC Version 4.1.1 (beim WinAVR dabei) schon veraltet, oder es gibt einen Fehler im gcc-Artikel auf der Seite.
Und zwar hier: https://www.roboternetz.de/wissen/in...rolog.2FEpilog
von diesem Beispiel-Source (Naked-Interruptroutine) rastet GCC endgültig aus und schreit nur noch:
"../gccasmtest.c:38: internal compiler error: in start_function, at c-decl.c:6014
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://sourceforge.net/tracker/?atid=520074&group_id=68108&func=browse> for instructions."
Nach einer Suche im Handbuch (*RTFM* ) ist mir Folgendes unterlaufen:
damit funkt das Ganze. Bin ich mit meinem GCC veraltet oder liegt es am Wiki? Wollt nicht gleich reinpfuschenCode:void TIMER0_OVF_vect (void) __attribute__ ((naked)); // ... void TIMER0_OVF_vect (void) { asm volatile( // irgendwas halt... nur zum Testen ob das Prob mit Inline-asm zusammenhängt?! "nop" "\n\t" "reti" ); }
Gruß,
David
Hast du die avr/interrupt.h inkludiert?
sicher doch
Hi,
dann währ es vielleicht von Vorteil das ganze Programm zu posten.
mfg franz
Es handelt sich offenbar um einen bekannten Fehler (im Bug-Report tritt er bei main() auf, aber das tut wohl nichts wesentliches zur Sache).
GCC 4.x ist eben noch nicht in trockenen Tüchern... egal wie deine Quelle auch aussieht, GCC sollte niemals nicht auf einen ICE laufen!
Was den Artikel angeht, ist eher der veraltet als GCC 4, weil die Artikel sich auf avr-gcc 3.4.x bezieht.
Evtl. kommt die Verwirrung daher, weil du einen Prototypen für eine ISR schreibst. Versuch stattdessen mal direkt die Implementierung mittels
Code:void __attribute__ ((naked)) TIMER0_OVF_vect (void) { // mach was }
Disclaimer: none. Sue me.
mhm, ging ja eben darum, dass GCC mit dieser direkten Implementierung abstürzt. Bei Deklaration eines Prototypen funktioniert es allerdings.
OT: btw: ich denke mal, unter ICE verstehst du In-Circuit-Emulator (immer diese verdammten Abkürzungen die noch Hunderte von Bedeutungen haben...) - besitze ich 1. nicht, aber trotzdem: wieso nicht mit gcc?
Aber dann muss ich den Bug ja nicht posten, wenn er schon bekannt ist. Danke für die Info.
Sorry... ICE = Internal Compiler Error
Wenn mit Prototyp der Code stimmt, ist das als Workaround ja erträglich.
Disclaimer: none. Sue me.
Lesezeichen