2016-07-22 11 views
0

私はzpboardでFreeRTOSにFPGAの割り込みをリンクしようとしています。私はコードを書くとき: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 = 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、 - 開始グループ、-lxil、-lfreertos、-lgcc、-lc、 - 終了グループ – user9870

答えて

0

1-あなたのIDEがヘッダファイルを見つけるのを助けるかもしれません:関数名を右クリックし、次に定義を見てください。ヘッダファイルを入手したら、それを含めるべきです。例えば、file.h

2は、あなたの# includeは、ヘッダファイルfreeRTOS.hが...同じフォルダ内にあるが、おそらく、彼らは私が言った 、他のフォルダにあることを前提としているfreeRTOSConfig.hは同じフォルダ内にすべきではないコンフィギュレーション・ファイルであるため、カーネルのインクルードファイルtask.h、...(少なくともデモプロジェクトでは)あなたのヘッダーに良いローカル/グローバルパスを使用するようにしてください

3-インクルードの順番は良くないと思います。アプローチはグローバルからローカルに行くことです、例えばstdio.hが含まれているの先頭にあるべきです

+0

私はgoto definationをクリックしようとしましたが、インデックス内のシンボル 'prvGetInterruptControllerInstance'を見つけます。 IDEはfreeRTOS.hとfreeRTOSConfig.hの正しいファイルにリダイレクトされます。これをクリックすると定義に移動します(Ctril + Click in Xilinx SDK)。私はなぜこのような問題に遭遇するのですか?私はfreerosにfpga割り込みを渡そうとしています – user9870

+0

いいえ、私はうまくいきませんでしたが、この機能をグーグルで探すと、 'port.c '、これらの関数はカーネルによって使用されるプライベート関数ですなぜ私はそのような関数を呼びたいのかわかりませんが、カーネルAPIではこの関数と同等でなければなりません2-関数を使いたい場合は最初に宣言しますa .hを組み込み、この.hをインクルードするか、おそらく "extern"を使用してコンパイラにこの関数が定義されていることを伝えます。 – fedi

+0

ポートで検索しようとしました。私は以前のバージョンにロールバックすべきだと思う... – user9870

関連する問題