Was ist die bevorzugte Methode zum Deklarieren eines Interrupt-Handlers in mspgcc?
Nur zur Klarstellung, denn dies ist ein frühes Google-Ergebnis.
%Vor%Aktueller GCC-Stand (ich glaube, das ist es, worüber arvindpdmn kommentierte), verursacht einen Fehler, wenn man obige Syntax verwendet.
%Vor% Ein Problem wurde nach einem Bericht darüber in der TI E2E-Community
Wenn Sie sich den Code ansehen, wird der Fehler anscheinend ausgelöst, weil das einzige Attribut, das Argumente haben kann, das Attribut interrupt
ist.
Tatsächlich funktioniert die Kompilierung gut, wenn die führenden und die folgenden Unterstriche weggelassen werden.
Hier ist die richtige Syntax!
%Vor%Und tatsächlich ist dieses Attribut im offiziellen GNU GCC dokumentiert Dokumentation . Rückblickend ist es eher unklar, woher die Unterstriche kamen. Also, das einzige Problem hier ist, dass die Fehlermeldung so wenig informativ ist.
Beachten Sie, dass diese Information für MSPGCC v4.6.3 gilt, das vor dem Ti / Redhat / SOMNIUM-Port von MSPGCC liegt, der jetzt mit Code Composer Studio vertrieben wird.
Danke an Peter Bigot von der Mspgcc-Benutzer-Mailingliste für diese Antwort.
Es gibt zwei Möglichkeiten:
A . Verwenden Sie die Syntax des Code-Composer-Studio-Stils (hat den zusätzlichen Vorteil, dass Sie zu CCS portierbar sind):
%Vor%(Beachten Sie, dass dies irgendwo um Version 20120406 von Mspgcc eingeführt wurde).
B . Verwenden Sie die native gcc-Syntax:
%Vor%C . Benennen Sie die Funktion korrekt, damit sie in die Vektortabelle aufgenommen wird (nützlich für ASM-Funktionen).
Das Attribut interrupt bewirkt, dass die Funktion den Namen __isr_X
hat, wobei X der Wortoffset des Interrupts aus dem Start der Vektortabelle ist (gleich dem Wert des Parameters des Interrupt-Attributs dividiert durch 2).
Diese __isr_X
-Symbole werden verwendet, um die Vektortabelle in crt0ivtbl.o zu initialisieren.