もくじ
はじめに
Windows® 10 で Cyclone® V SoC FPGA の Preloader をビルドするとビルドエラーになるケースが多くなっています。これは Windows 10 がネイティブで tar コマンドをサポートしたことが影響しているようです。
参考: https://forest.watch.impress.co.jp/docs/news/1097996.html
これにより Embedded_Command_Shell から Preloader をビルドする際に使われる tar コマンドが上記の Windows 10 がネイティブでサポートした tar コマンドになってしまい、Windows と UNIX 系のパスの考え方の違いにより tar コマンドが失敗することが原因です。
[実行時のエラー]
tar zxf /cygdrive/c/intelFPGA/18.1/embedded/host_tools/altera/preloader/uboot-socfpga.tar.gz
tar: Error opening archive: Failed to open '/cygdrive/c/intelFPGA/18.1/embedded/host_tools/altera/preloader/uboot-socfpga.tar.gz'
make: *** [uboot-socfpga/.untar] Error 1
このページでは対策方法についてご紹介します。
プロジェクト毎に対策
Preloader Generator(bsp-editor)にて、Prelaoder 向けのプロジェクトを生成すると Makefile が生成されます。
この Makefile の 93行目を見つけ以下の太字の行を追記します。これにより SoC FPGA エンベデッド開発スイート(SoC EDS)が内包している tar コマンドが使用されるようになります。
ifeq ($(HOSTOS),cygwin)
UNTAR := $(SOCEDS_DEST_ROOT)/host_tools/cygwin/bin/tar zxf
恒久的に対策
上記の対策では毎回の編集が必要となるため、Preloader Generator(bsp-editor)が生成する Makefile の元になるデータ自体を編集します。該当のファイルは以下です。同様に編集します(元ファイルはコピーして保存しておくことを推奨します)。
C:\intelFPGA\18.1\embedded\ip\altera\preloader\src\Makefile.template
ifeq ($(HOSTOS),cygwin)
UNTAR := $(SOCEDS_DEST_ROOT)/host_tools/cygwin/bin/tar zxf
それでもうまくいかない場合
以下のファイルの編集を試してみてください(本編集後は再起動をお願いします)。
C:\intelFPGA\18.1\embedded\host_tools\cygwin\etc\fstab
# /etc/fstab
#
# This file is read once by the first process in a Cygwin process tree.
# To pick up changes, restart all Cygwin processes. For a description
# see https://cygwin.com/cygwin-ug-net/using.html#mount-table
# This is default anyway:
#none /cygdrive cygdrive binary,posix=0,user 0 0
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
参考情報
メーカーからも本問題に対する対策がリリースされています。アプローチは多少違いますがこの方法においてもビルドエラーは回避可能です。
参考: FPGA Knowledge Base - Unable to make preloader in Windows 10
その他、参考情報です。
参考: SoC はじめてガイド - DS-5 によるベアメタル・アプリケーション・デバッグ
参考: SoC はじめてガイド - Preloader Generator の使用方法