- LiTime Speicher und Akkus         
Ergebnis 1 bis 7 von 7

Thema: Naked-ISR: Fehler im GCC-Tutorial?! Oder spinnt mein gcc...

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.11.2005
    Ort
    Wien
    Alter
    32
    Beiträge
    22

    Naked-ISR: Fehler im GCC-Tutorial?! Oder spinnt mein gcc...

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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:

    Code:
    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"
    	);
    }
    damit funkt das Ganze. Bin ich mit meinem GCC veraltet oder liegt es am Wiki? Wollt nicht gleich reinpfuschen

    Gruß,
    David

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2006
    Ort
    Gratkorn
    Alter
    34
    Beiträge
    207
    Hast du die avr/interrupt.h inkludiert?

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    26.11.2005
    Ort
    Wien
    Alter
    32
    Beiträge
    22
    sicher doch

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.05.2005
    Ort
    Rott am Inn
    Alter
    36
    Beiträge
    373
    Hi,
    dann währ es vielleicht von Vorteil das ganze Programm zu posten.
    mfg franz

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    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.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    26.11.2005
    Ort
    Wien
    Alter
    32
    Beiträge
    22
    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.

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Sorry... ICE = Internal Compiler Error

    Wenn mit Prototyp der Code stimmt, ist das als Workaround ja erträglich.
    Disclaimer: none. Sue me.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus