2016-07-22 80 views
0

我正在嘗試將fpga的中斷鏈接到zedboard中的FreeRTOS。當我寫的代碼:FreeRTOS中prvGetInterruptControllerInstance()函數的必需頭文件是什麼?

InterruptController = (XScuGic *)prvGetInterruptControllerInstance(); 

我從賽靈思SDK的錯誤說:

undefined reference to `prvGetInterruptControllerInstance' 

我能知道什麼是必需的包括頭文件使用該功能?我試圖在網上搜索和我有相同的頭文件包括:

/* 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> 

謝謝!

+0

看看comp Ilation輸出並聲明您鏈接到prvGetInterruptControllerInstance的定義 – 4pie0

+0

../src/FreeRTOS_DMA.c:在函數'InitInterrupt'中: ../src/FreeRTOS_DMA.c:156:2:警告:函數的隱式聲明'prvGetInterruptControllerInstance' [-Wimplicit-function-declaration] InterruptController =(XScuGic *)prvGetInterruptControllerInstance(); ^ '成品建築:../src/FreeRTOS_DMA.c' '' – user9870

+0

'建築目標:FreeRTOS_DMA.elf' '調用:ARM V7 GCC接頭' 臂-NONE-EABI-GCC -mcpu = cortex- a9 -mfpu = vfpv3 -mfloat-abi = hard -Wl,-build-id = none -specs = 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, - start-group,-lxil,-lfreertos,-lgcc,-lc, - end-group – user9870

回答

0

1-您的IDE可以幫助您找到頭文件:右鍵單擊函數名稱,然後單擊轉到定義,一旦獲得頭文件,例如file.h,您應該包含它。

2 - 你# include假定頭文件freeRTOS.h ...在同一個文件夾,但可能他們在其他文件夾, 我說,因爲freeRTOSConfig.h是不應該在同一個文件夾中的配置文件內核包含文件task.h,...(至少在演示項目中),所以請確保您使用良好的本地/全局路徑到您的標頭

3-包括的順序不好我猜,最好的方法是從全球走向本地,例如stdio.h應該位於包含的頂部

+0

我確實嘗試點擊goto定義,但它返回我「不是在索引中找到符號'prvGetInterruptControllerInstance'。當我點擊定義(Ctril +在Xilinx SDK中單擊)時,IDE將我重定向到freeRTOS.h和freeRTOSConfig.h的正確文件。我不知道爲什麼......你之前遇到過這樣的問題嗎?我試圖將fpga中斷傳遞給freertos – user9870

+0

不,我沒有使用,但是使用googling這個函數我發現它在'port.c ',這些函數是內核使用的私有函數,我不知道爲什麼要調用這些函數,應該在內核API中等價於這個函數,2 - 如果你想使用一個函數,它應該首先聲明一個.h然後包含這個.h或者可能使用「extern」告訴編譯器這個函數被定義了,否則 – fedi

+0

我試圖在端口中搜索。c之前,我沒有找到該文件中的定義....我認爲我應該回滾到舊版本... – user9870

相關問題