2016-07-22 24 views
0

Ich versuche, den Interrupt der FPGA zu FreeRTOS in Zedboard zu verknüpfen. Wenn ich den Code schreiben:Was ist die notwendige Header-Datei für die prvGetInterruptControllerInstance() - Funktion in FreeRTOS?

InterruptController = (XScuGic *)prvGetInterruptControllerInstance(); 

Ich bekomme einen Fehler von Xilinx SDK sagte:

undefined reference to `prvGetInterruptControllerInstance' 

Darf ich wissen, was die notwendig ist, umfassen Headerdatei, die Funktion zu benutzen? Ich habe versucht, online zu suchen, und ich habe die gleiche Header-Datei enthalten:

/* FreeRTOS includes. */ 
#include "FreeRTOS.h" 
#include "FreeRTOSConfig.h" 
#include "task.h" 
#include "queue.h" 
#include "timers.h" 
#include "semphr.h" 

/* Xilinx includes. */ 
#include "xil_printf.h" 
#include "xparameters.h" 
#include <xil_io.h> 
#include "xscugic.h" 
#include <stdio.h> 

Vielen Dank!

+0

Blick auf comp ilation Ausgabe und bestätigen Sie die Verknüpfung mit der Definition von prvGetInterruptControllerInstance – 4pie0

+0

../src/FreeRTOS_DMA.c: In der Funktion 'InitInterrupt': ../src/FreeRTOS_DMA.c:156:2: Warnung: implizite Deklaration der Funktion 'prvGetInterruptControllerInstance' [-Wimplicit-function-declaration] InterruptController = (XScuGic *) prvGetInterruptControllerInstance(); ^ 'Finished Gebäudes: ../src/FreeRTOS_DMA.c' '' – user9870

+0

'Gebäude target: FreeRTOS_DMA.elf' 'aufrufen: ARM v7 gcc Linker' Arm-none-EABI-gcc -mcpu = Cortex a9 -mfpu = vfpv3 -mfloat-abi = schwer -WL, -build-id = keine -spez = Xilinx.spec -Wl, -T -Wl, ../src/lscript.ld -L ../../ FreeRTOS_DMA_bsp/ps7_cortexa9_0/lib -o "FreeRTOS_DMA.elf" ./src/FreeRTOS_DMA.o -Wl, - Startgruppe, -lxil, -lfreretos, -lgcc, -lc, - Endgruppe – user9870

Antwort

0

1- Ihre IDE kann Ihnen helfen, die Header-Datei zu finden: Klicken Sie mit der rechten Maustaste auf den Funktionsnamen und dann auf die Definition, sobald Sie die Header-Datei zB file.h erhalten haben, sollten Sie sie einschließen.

2-Your # include davon ausgehen, dass die Header-Dateien freeRTOS.h ... im selben Ordner sind aber möglicherweise sind sie in anderen Ordnern, ich sagte, dass wegen freeRTOSConfig.h ist eine Konfigurationsdatei, die nicht im selben Ordner wie das sein sollte Kernel Include-Dateien task.h, ..., so stellen Sie sicher, dass Sie den guten lokalen/globalen Pfad zu Ihren Headern verwenden

3- Die Reihenfolge der Include ist nicht gut, ich denke, die beste Ansatz ist es, von global zu lokal zu gehen, stdio.h zum Beispiel sollte an der Spitze der enthalten sein

+0

Ich habe versucht, klicken Sie auf Definition, aber es gibt mir zurück "Cound nicht Finde das Symbol 'prvGetInterruptControllerInstance' im Index. Die IDE leitet mich zu der korrekten Datei für freeRTOS.h und freeRTOSConfig.h um, wenn ich auf go to definiere (Ctril + Click in Xilinx SDK) klicke. Ich bin mir nicht sicher, warum ... stößt du auf ein solches Problem? Ich versuche, den FPGA-Interrupt zu freertos – user9870

+0

Nein, ich habe nicht gearbeitet, aber googlen diese Funktion ich finde, dass es in 'port.c definiert ist ', diese Funktionen sind private Funktionen, die vom Kernel verwendet werden. Ich weiß nicht, warum Sie solche Funktionen aufrufen wollen, es sollte äquivalent zu dieser Funktion in der Kernel API sein, 2- wenn Sie eine Funktion verwenden wollen, sollte sie zuerst deklariert werden a .h und dann diese .h oder möglicherweise verwenden "extern", um den Compiler zu sagen, dass diese Funktion sonst wo – fedi

+0

Ich habe versucht, in Port zu suchen definiert.c vorher und ich fand nicht die Definition in dieser Datei .... Ich denke, ich sollte Rollback auf ältere Version ... – user9870