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を実行すると、コンパイルに成功します。