2016-07-22 67 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

相关问题