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)。
コンパイル
次に、サンプルが格納されているディレクトリに移動します。この例ではC:\tmp\Demonstrations\SoC\hps_gpioです。ディレクトリに移動後、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を実行すると、コンパイルに成功します。