2016-07-22 3 views
0

저는 zedboard에서 FPGA의 인터럽트를 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

보세요. 제발 출력 및 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 링커 ' 아암 그럼에도 EABI-GCC -mcpu = 코어 텍스 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, - 시작 그룹, -lxil, -lfreertos, -lgcc, -lc, - 최종 그룹 – user9870

답변

0

1- IDE가 헤더 파일을 찾는 데 도움이 될 수 있습니다. 함수 이름을 마우스 오른쪽 단추로 클릭 한 다음 정의를 클릭하십시오. 일단 헤더 파일 (예 : file.h)이 있으면이를 포함해야합니다.

2 - 귀하의 # include는 헤더 파일 freeRTOS.h이 ... 같은 폴더에 있지만 아마도 그들은 내가 말했다 , 다른 폴더에 있다고 가정하는 freeRTOSConfig.h은 같은 폴더에 있으면 안 구성 파일을 때문에 커널은 task.h, ... (적어도 데모 프로젝트에서) 헤더에 좋은 로컬/글로벌 경로를 사용하는지 확인하십시오.

3 포함 순서가 좋지는 않습니다. 접근 방식은 글로벌에서 로컬로 이동하는 것입니다. 예를 들어 stdio.h은 포함의 맨 위에 있어야합니다.

+0

나는 고토 수비를 클릭 해보려고했지만 나에게 "Cound 아닙니다 인덱스에서 'prvGetInterruptControllerInstance'심볼을 찾으십시오. IDE에서 freeRTOS.h 및 freeRTOSConfig.h에 대한 올바른 파일로 리디렉션합니다 (정의로 이동하면 Ctril + Click in Xilinx SDK). 나는 왜 그런 문제가 발생 했습니까? freertos에 FPGA 인터럽트를 전달하려고합니다. – user9870

+0

아니요, 작동하지 않았지만이 함수를 검색 할 때'port.c에 정의되어 있습니다. ', 이러한 함수는 커널에서 사용하는 개인 함수입니다. 왜 그런 함수를 호출해야하는지 모르겠습니다. 커널 API에서이 함수와 동등해야합니다. 2- 함수를 사용하려면 먼저 선언해야합니다. .h 그리고이 .h를 포함하거나 컴파일러에게이 함수가 다른 것으로 정의 된 것을 알리기 위해 "extern"을 사용하십시오. – fedi

+0

포트에서 검색하려고했습니다.c 전에 그리고 나는 그 파일에서 정의를 찾지 못했습니다 ... 나는 이전 버전으로 롤백해야한다고 생각합니다 ... – user9870

관련 문제