Intel Arria10 SoC : 初期性能評価(環境構築編2)- Ubuntu 18.04 での詰まりどころ
はじめに
前の記事では、ツールチェーン(Quartus Prime Pro / SoC EDS / ModelSim)を選定する理由を整理しました。
しかし実際に Ubuntu 環境で動かしてみると、Windows とは異なる詰まりどころが次々と出てきます。
本記事は、Ubuntu 18.04 上で評価環境を構築する際に実際に遭遇した問題を、解決手順とともに整理したものです。
- 対象は Ubuntu 18.04 LTS です。
- ここでは環境構築の実装段階で起きやすい問題を扱います。
- Yocto や複雑なカスタムカーネルの話題は、本記事では扱いません。
- 位置づけとしては、後続で HPS 側の CPU0 / CPU1 役割分担を試す前の土台づくりです。
先に結論
評価環境を整えるために実施した主要な操作は、次のとおりです。
# 基本的な依存ライブラリのインストール
sudo apt-get update
sudo apt-get install -y build-essential lib32z1 lib32ncurses5 libc6-i386
# USB-Blaster II の udev ルール設定
sudo cp /path/to/Quartus/drivers/usb-blaster/51-usbblaster.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
# ModelSim の 32bit 対応
sudo apt-get install -y libc6:i386 libncurses5:i386 libstdc++6:i386
# Quartus 起動時の追加ライブラリ
sudo apt-get install -y libxrender1 libxrandr2 libxcb1
ただし、実際には「なぜこの手順が必要か」を理解してから進めた方が、トラブル時の切り分けがしやすくなります。
なぜ Ubuntu で詰まりやすいのか
Windows では Quartus をインストールすれば大体動きますが、Ubuntu では以下の理由で手作業が増えます。
- 32bit ライブラリの欠落(Quartus の内部ツールの多くが 32bit)
- udev ルール設定(USB デバイス認識の権限設定)
- 古いバージョンの依存ライブラリが暗黙の前提(X11 周辺など)
- ModelSim の 32bit 依存が強い
これらは「Ubuntu の標準インストールには含まれない」ものばかりです。
Ubuntu 18.04 上の依存関係解決
最初にぶつかる問題
Quartus をインストール後、起動を試みると、次のようなエラーが出ることがあります。
error while loading shared libraries: libxcb.so.1: cannot open shared object file: No such file or directory
または:
/opt/intelFPGA/18.1/quartus/bin/quartus: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
これは「64bit Ubuntu に 32bit ライブラリが入っていない」という典型的な状況です。
解決方法
以下のパッケージをインストールします。
# まず 32bit アーキテクチャを有効化
sudo dpkg --add-architecture i386
# 基本的なビルドツール
sudo apt-get install -y build-essential
# 32bit 互換ライブラリ(重要)
sudo apt-get install -y lib32z1 lib32ncurses5 libc6-i386
# X11 関連ライブラリ
sudo apt-get install -y libxrender1 libxrandr2 libxcb1 libxkbcommon0
sudo apt-get install -y libxrender1:i386 libxrandr2:i386 libxcb1:i386
重要ポイント:lib32ncurses5 は ModelSim が特に必要とします。これがないと ModelSim は起動しません。
動作確認
インストール後、Quartus が起動するか確認します。
/opt/intelFPGA/18.1/quartus/bin/quartus --version
バージョン情報が表示されれば OK です。
USB-Blaster II の認識問題
問題の現れ方
Quartus Programmer で「No hardware has been detected.」と表示される場合、USB-Blaster II がシステムに認識されていません。
Windows では自動的に認識されることが多いですが、Ubuntu では手動設定が必要です。
udev ルール設定
以下を実施します。
# Quartus 付属の udev ルールをコピー
sudo cp /opt/intelFPGA/18.1/quartus/drivers/usb-blaster/51-usbblaster.rules /etc/udev/rules.d/
# udev ルールをリロード
sudo udevadm control --reload-rules
# USB デバイスをリセット
sudo udevadm trigger --subsystem-match=usb
その後、USB-Blaster II を接続し直すか、以下で確認します。
# USB デバイス一覧を確認
lsusb | grep -i altera
# または
lsusb | grep -i blaster
Bus XXX Device YYY: ID 09fb:XXXX Altera のような行が表示されれば認識されています。
権限設定
USB デバイスへのアクセス権限がない場合、以下で設定します。
# 現在のユーザーをグループに追加
sudo usermod -a -G uucp $USER
sudo usermod -a -G dialout $USER
# グループ変更を反映させるため、ログイン/ログアウト
ログイン後、再度接続を試みます。
Quartus 起動時の不足ライブラリ
典型的なエラーメッセージ
Quartus GUI を起動するときに、次のようなエラーが出ることがあります。
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
または、GUI は起動するが、デザインを開こうとするとクラッシュする場合も、ライブラリ不足が原因です。
追加ライブラリの導入
# C++ ランタイムライブラリ
sudo apt-get install -y libstdc++6:i386
# 完全を期すため、他のランタイムも
sudo apt-get install -y libgcc1:i386 libgomp1:i386
# GUI サポートライブラリ(Motif 関連)
sudo apt-get install -y libmotif-common libmotif4
これらをインストールしておくと、Quartus GUI が安定して動くようになります。
ModelSim 周りの追加対応
ModelSim の 32bit 依存
ModelSim は極めて 32bit 依存が強いです。以下のライブラリが特に重要です。
# 32bit libc と基本ライブラリ
sudo apt-get install -y libc6:i386 libncurses5:i386
# C++ 関連
sudo apt-get install -y libstdc++6:i386
# X11(GUI を使う場合)
sudo apt-get install -y libxext6:i386 libxrender1:i386
ModelSim 起動の確認
インストール後、ModelSim が起動するか確認します。
/opt/intelFPGA/18.1/modelsim_ase/bin/vsim -version
バージョン情報が表示されれば OK です。GUI を起動する場合は、X11 フォワーディングの設定も確認してください。
ModelSim ライセンスエラー
ModelSim を起動しても「License file does not exist.」というエラーが出る場合があります。
この場合は、前の記事のライセンス設定を確認してください。
ここでは環境固有の問題ではなく、ライセンス周りの話題なので割愛します。
動作確認チェックリスト
ここまでの設定後、以下を確認してください。
- Quartus がコマンドラインで起動する
- Quartus GUI が起動する
- ModelSim(vsim)がコマンドラインで起動する
-
USB-Blaster II が
lsusbで認識される - Quartus Programmer で「Hardware Setup」に USB-Blaster II が表示される
すべて ✓ であれば、環境構築は成功です。
ここからの詰まりどころ
環境が整った後、実際の評価を進める段階では、さらに異なる問題が出てくることがあります。
- SoC EDS のクロスコンパイラの設定
- ARM バイナリの実行権限設定
- 端末通信(シリアル接続)の設定
- カーネルモジュールのロード
これらは「環境構築」というより「評価実装」の領域なので、本記事では扱いません。
特に、CPU0 側のベアメタル演算と CPU1 側 Linux 運用をどう共存させるかは、次段階の実行基盤側で詰めるテーマです。
まとめ
- Ubuntu 18.04 で Quartus や ModelSim を動かすには、32bit ライブラリと udev 設定が必須です。
- 「ビルドツール → 32bit ライブラリ → USB デバイス設定」の順で進めると、問題を切り分けやすくなります。
- 最初は「インストールが完了→実際に起動してみる→エラーに応じて追加インストール」という段階的な進め方が安全です。
- この段階は、後続で HPS の 2 コアを役割分担させる構成を試すための準備でもあります。
これらの詰まりどころは、実は Arria10 SoC 特有ではなく、FPGA 開発全般で出会うものばかりです。
同じ環境で他のボードを評価する場合も、参考になれば幸いです。