DE0-Nano-SoCデモのコンパイルエラー

FPGA

DE0-Nano-SoCには、Cortex-A9用プログラムのサンプルプロジェクトがいくつか付属しています。これらのサンプルをコンパイルしようとすると、エラーが発生しました。その時の修正方法のメモです。使用したQuartus IIのバージョンは15.0です。

コンパイルエラーの再現

Embedded Command Shellの起動

まず、DE0-Nano-SoCのサンプルをコンパイルするにはアルテラ SoC エンベデッド・デザイン・スイート (SoC EDS) をインストールする必要があります。インストールを行うと、Quartus IIのディレクトリにembeddedが追加されます。例えば、Quartus IIのインストールディレクトリがC:\Alteraの場合は、C:\Altera\15.0\embeddedです。その中に格納されているEmbedded_Command_Shell.batを起動します(Linuxの場合はEmbedded_Command_Shell.sh)。

Embedded Command Shellの起動

Embedded Command Shellの起動

コンパイル

次に、サンプルが格納されているディレクトリに移動します。この例ではC:\tmp\Demonstrations\SoC\hps_gpioです。ディレクトリに移動後、makeを実行します。

makeの実行とエラー表示

makeの実行とエラー表示

“fatal error: socal/socal.h: No such file or directory”というエラーで停止します。
このエラーは、次の様にMakefileを修正すると解決できます。

Makefileの修正とコンパイル

Makefileの修正

Makefileに次の3行を追加します。

ALT_DEVICE_FAMILY = soc_cv_av
CFLAGS += -I${SOCEDS_DEST_ROOT}/ip/altera/hps/altera_hps/hwlib/include/${ALT_DEVICE_FAMILY}
CFLAGS += -D${ALT_DEVICE_FAMILY}

追加場所は、定義済みのCFLAGSの後です。追加を行ったMakefileは次のようになります。

#
TARGET = hps_gpio

#

CROSS_COMPILE = arm-linux-gnueabihf-
CFLAGS = -g -Wall  -I ${SOCEDS_DEST_ROOT}/ip/altera/hps/altera_hps/hwlib/include

ALT_DEVICE_FAMILY = soc_cv_av
CFLAGS += -I${SOCEDS_DEST_ROOT}/ip/altera/hps/altera_hps/hwlib/include/${ALT_DEVICE_FAMILY}
CFLAGS += -D${ALT_DEVICE_FAMILY}

LDFLAGS =  -g -Wall 
CC = $(CROSS_COMPILE)gcc
ARCH= arm

build: $(TARGET)

$(TARGET): main.o 
	$(CC) $(LDFLAGS)   $^ -o $@ 

%.o : %.c
	$(CC) $(CFLAGS) -c $< -o $@

.PHONY: clean
clean:
	rm -f $(TARGET) *.a *.o *~

コンパイル

再度makeを実行すると、コンパイルに成功します。

make再実行

make再実行

タイトルとURLをコピーしました