Forum: Compiler & IDEs MSPGCC: Interruptvetortablle fehlt


von KF26046 (Gast)


Lesenswert?

Hallo,

habe folgendes Problem mit dem MSPGCC und Eclipse.

Aus irgendwelchen Gründen fehlt bei mir plötzlich die 
Interruptvectortabelle,
die ja bei 0xFFxx liegt. Es steht da überall ein Vector zu einer einigen
Adresse drin, die aber nur eine Sprung auf sich selber enthält. Benutze
einen MSP4230F247 als Ziel. Es gibt keine Fehlermeldungen oder Warnungen
die darauf deuten.

bei anderen Projekten mit gleichem Compiler ist alles in Ordnung.

Ich drehe mich seit Tagen im Kreis. Hat jemand eine Idee dazu ?

Frohe Osten.

Gruss


KF26046

von Oliver J. (skriptkiddy)


Lesenswert?

Wie wärs wenn du mal alles Notwendige als Projekt postest, sodass man da 
mal reinschauen kann?

Gruß Oliver

von Rolf M. (rmagnus)


Lesenswert?

Also ich würde ja darauf tippen, daß das Projekt einen Fehler enthält.

von Christian R. (supachris)


Lesenswert?

Ist denn die -mmcu Option bei Compiler und Linker (und ggf. Assembler) 
korrekt angegeben?

von KF26046 (Gast)


Lesenswert?

Dass ich das Project poste willst du nicht wirklich. Das Projekt an sich
ist in Ordnung, es gibt keinen Fehler vom Compiler und -mmcu  ist auch
richtig gesetzt. Ich kann alles mit dem Debugger korrekt laden und
bis auf die Interruopt geht auch alles soweit.

Ich bin zwar kein Experte aber auch kein Anfänger. Hier weiß ich aber
nicht weiter.

Bin für jede Idee dankbar.

Gruss

von Oliver J. (skriptkiddy)


Lesenswert?

KF26046 schrieb:
> Dass ich das Project poste willst du nicht wirklich.
Nicht das ganze aber eines wo das nötigste drinne steht.

Gruß Oliver

von Christian R. (supachris)


Lesenswert?

KF26046 schrieb:
> Es steht da überall ein Vector zu einer einigen
> Adresse drin, die aber nur eine Sprung auf sich selber enthält.

Hm, der mspgcc hat doch diese Fail-Save Geschichte. Ein nicht 
initialisierter Int macht eigentlich nur ein RETI. Ganz sicher, dass die 
signal.h richtig drin ist? Welche Version vom mspgcc verwendest du 
eigentlich? Vielleicht kann man es ja nachvollziehen.

von KF26046 (Gast)


Lesenswert?

@Christina,
das könnte ein Hinweis sein. Es gibt folgende Warnung:

Description  Resource  Path  Location  Type
c:\mspgcc\bin\../lib/gcc/msp430/4.5.3/../../../../msp430/include/signal. 
h  #warning msp430-libc <signal.h> deprecated, using <legacymsp430.h> 
bikescout1    line 43  C/C++ Problem

Ich habe diese aber bisher immer ignoriert, weil das bei allen meinen 
Projekten auftritt und die Interrupts trotzdem einwandfrei 
funktionieren. Allerdings waren das keine  MSP430F247 Targets!

Ich suche da mal weiter.

Danke.

von KF26046 (Gast)


Lesenswert?

Meinte Christian, sri.

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

Ich habs gerade mal getestet. MSPGCC hab ich die 4.6.1 und die Vektoren 
werden erzeugt. Hab einfach das Timer A Demo genommen und die ISR 
Deklaration auf die neue uniarch geändert. Im Listing sind die Vektoren 
drin, und der Timer A Vektor zeigt auf die Timer A ISR.
1
#include  <msp430f247.h>
2
3
int main(void)
4
{
5
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
6
  P1DIR |= 0x01;                            // P1.0 output
7
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
8
  CCR0 = 50000;
9
  TACTL = TASSEL_2 + MC_2;                  // SMCLK, cont. mode
10
11
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
12
13
  return 0;
14
}
15
16
// Timer A0 interrupt service routine
17
__attribute__((interrupt(TIMERA0_VECTOR)))
18
void Timer_A(void)
19
{
20
  P1OUT ^= 0x01;                            // Toggle P1.0
21
  CCR0 += 50000;                            // Add Offset to CCR0
22
}

von KF26046 (Gast)


Lesenswert?

Christian,

habe auf die neueste Version 4.6.3 umgestellt und jetzt scheint es zu 
klappen.

Danke für den Tip, wäre ich nie drauf gekommen.

Schönen Tag noch.

Gruss

von Christian R. (supachris)


Lesenswert?

Hm, echt ulkig. Ich hab auch eine Weile mit dem 4.5 gearbeitet, da hatte 
ich auch keine Probleme.

von KF26046 (Gast)


Lesenswert?

Christian, deine Zweifel sind voll berechtigt!

Die eigentliche Urache ist was ganz anderes. Hab es endliche 
herausgefunden.
Hatte das aktuelle Projekt komprimiert, wodurch der Fehler nicht mehr 
auftrat
nach dem Wechsel auf die neuen Version. Dann kam das Problem aber 
wieder!

Da ich in meinem neuen umfangreichen Projekt, Sources von anderen 
Projekten
mit anderen MSP430 Derivaten benutzt habe, habe ich bei einem einzigen
Source vergessen, das Include-File zu ändern. Beim MSP430F247 ist die
Vectortabelle größer und hat dementsprechend eine andere Basisadresse.
Dummerweise hat nun den Compiler eine Mixtur aus beiden erstellt, was 
dann
zu dem Problem führte, dass die erwarteten Vectoradressen quasi leer
waren.

Es war also meine eigene Dummheit! Soll anderen als Ansporn und 
Denkhilfe dienen! (hat mich eine Woche Freizeit gekostet!!)

Gruss und danke trotzdem.

von Christian R. (supachris)


Lesenswert?

Naja, GCC ist da manchmal etwas schwer zu verstehen. Ich bin da wieder 
größtenteils weg. Wenn es geht, nutze ich CCE in der 16k Version. Auch 
privat. Debugging mit dem GDB über Eclipse ist einfach ein Krampf, da 
geht außer run und stop ja eigentlich gar nix weiter. Kein Vergleich zu 
den umfangreichen CCE Debugging Funktionen.

von KF26046 (Gast)


Lesenswert?

Christian,

Debuggen kann ich Gott sei Dank mit einem Lauterbach Tool. Das Problem
lag wirklich bei MSPGCC, bzw. bei mir.

Gruss

von Christian R. (supachris)


Lesenswert?

Gegen den MSPGCC als Compiler will ich auch gar nichts gesagt haben. Der 
macht eine ausgezeichnete Arbeit. Das Debugging und di Projekterstellung 
und -Verwaltung kommt allerdings aus der Steinzeit. Leider hab ich keine 
Ahnung von Eclipse Plug-In Entwicklung, sonst hätte ich da wohl mal was 
weiter entwickelt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.