Microsemi Libero

From ArchWiki
Jump to navigation Jump to search

[1] より:

Libero® SoC Design Suite は Microsemi の PolarFire, IGLOO2, SmartFusion2, RTG4, SmartFusion, IGLOO, ProASIC3, Fusion ファミリーと包括的で学びやすく採用しやすい開発ツールによって高い生産性を発揮します。

この記事では Arch Linux に Microsemi Libero ツールチェインをインストールする方法を説明します。

インストール

要件

Libero は 45GiB の空き容量を必要とします。

パッケージのインストール

Libero は multilib の32ビットのパッケージに依存しています。pacman を使って multilib のパッケージをインストールするには、先に multilib リポジトリを有効化する必要があります。

次のパッケージをインストールしてください: openmotif zlib lib32-libxft lib32-libpng12 lib32-dbus lib32-sqlite lib32-libpulse

Qt5 の32ビット依存ライブラリ

Liberos の一部の共有ライブラリは32ビットの Qt5 ライブラリ (libQt5XcbQpa.so.5, libQt5Gui.so.5, libQt5DBus.so.5, libQt5Core.so.5) に依存します。残念ながら multilib リポジトリからインストールできないため、手動で追加する必要があります。

Qt 32-bit online installer から Qt の32ビットインストーラをダウンロードして実行してください:

$ chmod u+x qt-unified-linux-x86-2.0.5-2-online.run
$ ./qt-unified-linux-x86-2.0.5-2-online.run

"Qt 5.5" -> "Desktop gcc" をインストールすれば十分です。インストールのパスは /home/user/lib/qt5_32 のように設定してください (user はあなたのユーザー名に置き換えてください)。

ファイルの抽出

インストーラは Java ランタイムを展開しデフォルトでは一時ファイルの保存場所に /tmp を使います。/tmp に十分な空き領域があることを確認してください。デフォルトの 8GB の tmpfs ではインストールするのに十分ではありません。無効化してからシステムを再起動して変更を適用してください:

# systemctl mask tmp.mount
# reboot

https://www.microsemi.com/product-directory/design-resources/1750-libero-soc#downloads から "Libero SoC v12.1 for Linux" インストールファイルをダウンロードしてください (アカウントの作成が必要です)。実行可能属性を付与して実行してください:

$ chmod u+x Libero_SoC_v12.1_lin.bin
$ ./Libero_SoC_v12.1_lin.bin -i console

インストーラが起動したら、質問に答えて、ファイルの展開先を /home/user/programs/microsemi/libero/v12.1//home/user/programs/microsemi/common などに設定してください。グラフィカルインストーラも存在します。上記のコマンドの consolegui に置き換えてください。

サイレントインストール

コマンドラインでインストールのパラメータをスクリプトに指定することもできます。例えばデフォルトのインストールの場合:

$ ./Libero_SoC_v12.1_lin.bin -i silent \
   -DUSER_INSTALL_DIR=/home/user/programs/microsemi/libero/v12.1/ \
   -DUSER_COMMON_DIR=/home/user/programs/microsemi/common \
   -DCHOSEN_FEATURE_LIST=Synplify,ModelSim,ModelsimPro,Identify,Libero \
   -DCHOSEN_INSTALL_FEATURE_LIST=Synplify,ModelSim,ModelsimPro,Identify,Libero \
   -DCHOSEN_INSTALL_SET=Libero

インストール後

インストールが完了したら tmpfs を再度有効化してください:

# systemctl unmask tmp.mount
# reboot

Arch Linux で Libero を実行するには設定が必要です。

Libero は古いバージョンの motif ライブラリをロードしようとします。以下のファイルを修正して case `uname` ブロックの 3 を 4 に変えてください:

/home/user/programs/microsemi/libero/v12.1/Libero/bin/actel_setup_vars
...
case `uname` in
  SunOS)
  	...
  Linux)
    arch=lin

    # X/Motif
    MOTIF_LIB=libXm.so.4
    ...
ヒント: もしくは /lib ディレクトリにシンボリックリンクを作成します:
# ln -s /lib/libXm.so.4 /lib/libXm.so.3
pacman でパッケージをインストールするときに変更が加えられるディレクトリを弄ることになるため、あまり推奨されません。しかしながら Libero を再インストールするときや新しいバージョンをインストールするときに手動で修正が必要なくなるため楽ではあります。

また、Microsemi が同梱しているバージョンの libz は古いため、公式リポジトリに存在する lib32-libpng12 で機能しません。/home/user/programs/microsemi/libero/v12.1/Libero/lib ディレクトリで以下のコマンドを実行して Libero が pacman でインストールされたライブラリを使うようにしてください:

$ mv libz.so.1 libz.so.1.old
$ ln -s /lib/libz.so libz.so.1

FlashPro ユーティリティを使えるようにするため /home/user/programs/microsemi/libero/v12.1/Libero/libfp でも上記のコマンドを実行してください。

vault のパスの定義時にインストーラはダブルクォートを誤って追加します。そのため Libero は作業ディレクトリに "" という名前のフォルダを作成してしまいます。この問題を解決するには install.def ファイルを手動で編集して VAULT_LOCATION が定義されている行からダブルクォートを削除してください:

/home/user/programs/microsemi/libero/v12.1/Libero/data/install.def
...
data VAULT_LOCATION '/home/user/programs/microsemi/common/vault' OVERRIDE
...

もしくは以下のコマンドを実行してクォートを取り除いてください:

$ cd /home/user/programs/microsemi/libero/v12.1/Libero/data
$ sed 's/"//g' install.def > tmp.def
$ cp tmp.def install.def
$ rm tmp.def

Libero の起動

Libero の起動時には環境変数を設定する必要があります:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/lib/qt5_32/5.5/gcc/lib
LM_LICENSE_FILE="port@domain.of.your.license.server"
SNPSLMD_LICENSE_FILE="port@domain.of.synopsys.license.server"

$LD_LIBRARY_PATH には32ビットの Qt のインストールパスを、$LM_LICENSE_FILE にはライセンスデーモンが動作している Libero のライセンスサーバーを設定してください。$SNPSLMD_LICENSE_FILE は Libero で使われる Synopsys ツールで必要になります。複数のライセンスデーモンを起動している場合、別のサーバーに設定してください。

上記の変数を設定したら以下のコマンドで Libero を起動できます:

$ /home/user/programs/microsemi/libero/v12.1/Libero/bin/libero

以下のように起動スクリプトを作成すると良いでしょう:

/home/user/scripts/launch_libero.sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/lib/qt5_32/5.5/gcc/lib
LM_LICENSE_FILE="port@domain.of.your.license.server"
SNPSLMD_LICENSE_FILE="port@domain.of.synopsys.license.server"
/home/user/programs/microsemi/libero/v12.1//Libero/bin/libero

忘れずに実行可能属性を付与してください:

$ chmod u+x /home/user/scripts/launch_libero.sh

アプリケーションメニューエントリ

~/.local/share/applications ディレクトリに libero.desktop ファイルを作成することで freedesktop.org アプリケーションメニューエントリを追加することができます:

~/.local/share/applications/libero.desktop
[Desktop Entry]
Version=1.0
Name=Libero SoC Design Suite v12.1
Comment=Microsemi Design Software for Microsemi FPGAs and SoCs
Exec=/home/user/scripts/launch_libero.sh
Icon=/home/user/programs/microsemi/libero/v12.1/libero.xpm
Terminal=false
Type=Application
Categories=Development

FlashPro プログラマを使う

プログラマ (例: Microsemi FlashPro5) を使うには2つの設定が必要です: デバイスに権限を与えるルールの追加と衝突するカーネルモジュールのアンロードです。

udev ルールの追加

プログラマにアクセスするための適切な権限を追加するために root で udev ルールセットに以下のファイルを追加してください:

/etc/udev/rules.d/70-microsemi.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="1514", ATTR{idProduct}=="2008", MODE="0666", GROUP="microsemi-prog"
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6001", MODE="0666", GROUP="microsemi-prog"

グループ microsemi-prog はただの例です。別のグループに置き換えたり、新しいグループを追加して user ユーザーを属させることができます:

# groupadd microsemi-prog
# usermod -aG microsemi-prog user

一度ログアウトすることで新しいグループが適用されます。newgrp microsemi-prog で新しいグループを適用することもできます。グループを確認するには id または groups を実行してください。

衝突するカーネルモジュールの削除

プログラマを接続すると FTDI シリアルデバイスとして認識され、対応するカーネルドライバーがロードされます。Liberos ソフトウェアはそのカーネルドライバーでは機能しないためアンロードする必要があります:

# rmmod ftdi_sio

ドライバーを永続的にアンロードしたい場合は以下をブラックリストに追加:

/etc/modprobe.d/blacklist-ftdi.conf
blacklist ftdi_sio