Zynq を使った開発にあたり,Linux 上で Vivado を動かす必要が生じたため,
せっかくなので Gentoo に入れようと思ったところ,運よく一発で動かすことができなかったので
忘れないようにハマったポイントごとにメモしておく。
インストールが終わらない!
ncurses-5 がないから。
標準で入っているのは 6 なので,5 もインストールする必要がある。
# emerge -av sys-libs/ncurses:5
動きが怪しい…
settings64.sh を呼んで,環境設定を行ってから起動させる必要がある。
ここにあるスクリプトが使える。
launch-vivado.sh
こんな感じのスクリプトを作っておくと楽。
# !/bin/sh
export LC_ALL=C
export SWT_GTK3=0 # Fix annoying error on Xilinx SDK
_SILENT_JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dsun.java2d.xrender=true -Dswing.aatext=true"
unset _JAVA_OPTIONS
alias java='java $_SILENT_JAVA_OPTIONS'
export TARGET_DIR=/opt/Xilinx/Vivado/2016.4
source $TARGET_DIR/settings64.sh
# Launch Vivado
cd /tmp
exec $TARGET_DIR/bin/vivado
SDK のエラー対策
No Elf file associated with target
何もしないと,No Elf file associated with target と怒られてデバッガが動かない。
(https://japan.xilinx.com/support/answers/68503.html) から xmdterm.tcl
を拾ってきて置き換える。
シリアル通信すると落ちる
rxtx を emerge して,Vivado の中のシェアードオブジェクトを置き換えると動く。
# emerge rxtx
# cp /usr/lib/rxtx-2/librxtxSerial.so /opt/Xilinx/SDK/2016.4/eclipse/lnx64.o/plugins/gnu.io.rxtx.linux.x86_64_2.1.7.3_v20071015/os/linux/x86_64/
ボードと通信できない!
ユーザを uucp グループに追加する。
# gpasswd -a uucp $USER
次に,/run/lock
のパーミッションを設定する必要がある。
これは,/usr/lib/tmpfiles.d/gentoo-run.conf
の編集によって行う。
# New OpenRC versions replace /var/lock with a symlink to /run/lock.
# We just create that directory for now, just in case.
# Of course, it's not guaranteed that'll satisfy all relevant packages.
# d /run/lock 0755 root root -
d /run/lock 0775 root uucp -
問題点
rxtx のバージョンの違いについて
使うたびに怒られるが,とりあえず問題なさそうである。