Forum: FPGA, VHDL & Co. SDK komische Errors


von Jan S. (spongebob)


Lesenswert?

Moin!
Ich habe mir eine Hardware mit Microblaze prozessor gebaut, auf der ich 
die Software aus der XAPP1026 laufen lassen möchte. Habe also der 
Hardware die dort genutzt wird so gut es geht alles nachgebaut und die 
Software in mein Projekt integriert. Hat auch alles relativ gut 
geklappt. Bis auf ein paar warnungen und Fehler, die ich bis auf einen 
alle beheben konnte.
Jetzt habe ich noch einen Fehler, den ich irgendwie nicht wegbekomme.
Der Compiler sagt mir:
XPAR_INTC_0_TMRCTR_0_VEC_ID’ undeclared (first use in this function)
und das sagt er an drei Stellen, an denen diese "Variable" nicht mal 
steht:

1. XIntc_AckIntr(XPAR_INTC_0_BASEADDR, PLATFORM_TIMER_INTERRUPT_MASK);
2. XIntc_RegisterHandler(XPAR_INTC_0_BASEADDR,
      PLATFORM_TIMER_INTERRUPT_INTR,
      (XInterruptHandler)xadapter_timer_handler,
      0);
3. XIntc_Enable(intcp, PLATFORM_TIMER_INTERRUPT_INTR);

Wenn ich jetzt nach dieser Variable suche, Zeigt er mir natürlich die 
C-Datei in der die Fehler auftauchen und ein file der xparameters.h 
heißt, aber auch in einem ganz anderen Folder liegt. Dort gibts eine 
Zeile:

#define XPAR_INTC_0_TMRCTR_0_VEC_ID    7     /* Interrupt source for 
vector */

Damit müsste doch alles funktionieren. Ich versteh das nicht.

Grüße Jan Scholz

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wie ist
PLATFORM_TIMER_INTERRUPT_INTR
definiert?

von Duke Scarring (Gast)


Lesenswert?

Jan S. schrieb:
> Der Compiler sagt mir:
> XPAR_INTC_0_TMRCTR_0_VEC_ID’ undeclared (first use in this function)
> und das sagt er an drei Stellen, an denen diese "Variable" nicht mal
> steht:
Sieht aus, als wenn Du einen Timer bräuchtest. Hast Du den im EDK mit 
eingebunden?

Duke

von rev (Gast)


Lesenswert?

Wenn man mit dem Microblaze Zeit-basierte Funktionen wie sleep() oder 
Ähnliches benutzen möchte, muss man im EDK den xps_timer einbinden. Der 
Microblaze hat selbst keine timer integriert.

von Jan S. (spongebob)


Lesenswert?

Der ist (in platform_config.h) folgendermaßen definiert:

#define   PLATFORM_TIMER_INTERRUPT_INTR   XPAR_INTC_0_TMRCTR_0_VEC_ID

und XPAR_INTC_0_TMRCTR_0_VEC_ID ist (in einem unterordner des 
bsp-ordners in xparameters.h) folgendermaßen definiert:

#define   XPAR_INTC_0_TMRCTR_0_VEC_ID    7     /* Interrupt source for 
vector */

mir scheint es irgendwie als wenn mein c-project nicht auf das bsp 
zugreifen kann. Aber ich habe es ganz sicher damit asoziiert. Das hab 
ich sogar jetzt eben noch mal nachgesehen.

von Jan S. (spongebob)


Lesenswert?

Also ich habe gerade noch mal wegen dem Timer nachgesehen.
Ich habe in meinem Design einen Timer der "xps_timer_0" heißt 
eingebunden. Der ist auch mit dem Bus "mb_plb" verbunden. Die Adressen 
sind auch alle vorhanden. Ich meine ich habe den sogar schon im BSB mit 
ausgewählt.
Muss man vielleicht sonst noch irgendwas beachten?

von eugler (Gast)


Lesenswert?

Hast Du den Timer auch am Interrupt Controller?

von Christian M. (fpga-fan)


Lesenswert?

Ich hole diese Thread mal wieder aus der Versenkung, weil ich genau auf 
den gleichen Fehler gestoßen bin. Mit meinem beginnenden Halbwissen gebe 
ich nach mehreren Stunden herum probieren auf, deshalb:

eugler schrieb:
> Hast Du den Timer auch am Interrupt Controller?

Wie überprüft man ob der "Timer am Interrupt Controller" ist?

Ich habe im EDK den Timer mit xps_timer_0 an einer Adresse und auch den 
xps_intc_0 an einer anderen Adresse. Müssen die noch irgendwie verbunden 
werden?

Zumindest ist auch bei mir dieses undeklariert:

'XPAR_XPS_INTC_0_XPS_TIMER_0_INTERRUPT_INTR' undeclared (first use in 
this function)  platform.c  /lwip_echo_server_0/src  line 82  C/C++ 
Problem

von Christian M. (fpga-fan)


Lesenswert?

Meint man damit vielleicht, dass xps_timer_0 und xps_intc_0 beide am Bus 
mb_plb hängen?

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.