2016/12/26

Mac + VirtualBox + CentOS + Vivado/SDK

Xilinx の SDK から MicroBlaze にアクセスできなくて困ってたら、知人に以下のリンクを教えてもらいどうにか Hello world までこぎつけました。ありがとー!Kノキ。

だったはずなのですが。。年明けて '17/1/3 に再度お試しするも、うまくいかず。。一応記事は残しておきます↓

http://samurai375.hatenablog.jp/entry/2016/08/12/125107
このブログの前の記事も参照のこと(該当する記事は 1〜4 の4回に分かれてます)。

この際 Win マシンを買っちゃうかとも思ったけど〜。買わずに済んだと思います。
やれやれ。

とりあえず今まで構築してきた Ubuntu 環境でこのブログのように RXTXcomm.jar と librxtxSerial.so を入れ替えてみたつもりでしたがうまくいかず、あまり深追いするきもなかったので、参考にしたブログと同じ OS にしちゃえと CentOS も新規導入してみました。

では忘れないようメモ程度に軽く手順を書いておきます。


1. CentOSVirtualBox にインストールする
ルートパーティションは Vivado (デフォルトで /opt/Xilinx 以下にインストールされる)を入れることを考えて 80GB ぐらいは確保しておいた方が無難 Vivado 結構大きくて 50G~60G ぐらい使うから。Vivado のライセンスファイル発行にホスト名が必要なので適当なホスト名に変えておく。
ちなみに VirtualBox の設定で CPU x1 のままでインストールしてたら劇遅でした。。x2 にしたらまともになってきた。

2. 足りない library などを入れる
% sudo yum update
% sudo yum install ld-linux.so.2
% sudo yum install libstdc++.so.6
% sudo yum install libz.so.1
えーと、多分これだけで良いと思います。上記ブログより。
多分とは、自分は別なブログ参考にいくつかライブラリ入れた後に足りない分を入れましたので。
に従って足りないライブラリ調査してみた方がいいかも。

3. Vivado をインストール
以前ウェブインストーラーでもインストールしたことはあるのですが(Ubuntu で)、2016.4 リリース直後にウェブインストーラーを試したら遅すぎだったので全てのOSインストーラーを Mac 側に落としてきて共有フォルダに置いたデータからインストールしました。CentOS でダウンロードしても構わないのですが、自分の場合は色々な OS でお試ししてたこともあって Mac 側に落としてました。
共有フォルダにアクセスするには (% sudo gpasswd -a vboxsf が必要ですね)
% cd <共有フォルダ>/Xilinx_Vivado_SDK_2016.4_1215_1
% sudo sh xsetup

Vivado のインストール後でいいです。ホスト名と MAC アドレス(% ifconfig で確認できる)が必要。CentOS だと enp0s3 の ether: 。Vivado 起動後に Help -> Manage License からライセンスファイル Xilinx.lic をロードすれば OK です。ライセンスの種類は Arty には Design Edition が付属してくるのでそれを使っています。期限は一年間のようです。多分そのあとも使えないわけじゃなくて、新しいツールが入手できないだけだと思います。

5. ケーブルドライバをインストール
bitstream をダウンロードするのに必要です。
% cd /opt/Xilinx/Vivado/2016.4/data/xicom/cable_drivers/lin64/install_script/install_drivers
% sudo sh install_digilent.sh
% sudo sh install_drivers

シリアルポート(/dev/ttyUSB*) にユーザー権限でアクセスするために、
% sudo gpasswd -a dialout
で dialout グループに自分を追加。

6. RXTX をインストール
SDK を使うにはこれが必要です。使わないならいらないと思います。
手動でやっちゃったのですが、rxtx-2.2pre2-bins.zip を落としてきて、
RXTXcomm.jar を Java のインストールしてあるディレクトリ
/etc/alternative/lib/ext/jre_1.8.0 以下にコピー。
/opt/Xilinx/SDK/2016.4/eclipse/lnx64.o/plugins/gnu.io.rxtx.linux.x86_64_2.1.7.3_v20071015/os/linux/x86_64 以下の librxtxSerial.so, librxtxParallel.so を入れ替えます。
念のためオリジナルは mv して *.org とでも名前変えて残しておきます。

インストール作業はこれぐらいだったと思います。

あとは任意のディレクトリから Vivado を起動するのですが、
% source /opt/Xilinx/Vivado/2016.4/setting64.sh (sh, bash 系)
と設定をソースしてから vivado を起動することを忘れないように。
% vivado

Digilent の Arty などのボードは FPGA の bitstream, SDK からの MicroBlaze のプログラムのダウンロードとしての JTAG 用のUSBケーブルがシリアル通信用のケーブルと兼用できます(FTDI の FT2232 通して)。CentOS だと /dev/ttyUSB1 がシリアルポート(Virtual COM port VCP)として見えます。Arty で USB UART モジュールをインスタンスして自動配線すると、この UART が /dev/ttyUSB1 経由でアクセスすることができるようになります。
この UART に CentOS でターミナルソフトから /dev/ttyUSB1 をオープンしても良いし、簡単には SDK の SDK Terminal で + ボタンをクリックし、/dev/ttyUSB1 を選択することでも UART にアクセスすることが可能です。ターミナルソフトとしては minicom など。お好きなのを探してみてください。


最後に今回インストールに使ったハードやらソフトやらのバージョンなどについて。

MacBook Pro (Retina 15-inch, Mid 2015) Core i7 2.2GHz, MEM 16GB
macOS Sierra 10.12.2
VirtualBox 5.0.30 (仮想マシンに CPUx2, MEM8GB 割り当て)
CentOS CentOS-7-x86_64-DVD-1611.iso
Vivado Xilinx_Vivado_SDK_2016.4_1215_1
RXTX rxtx-2.2pre2-bins

です。
この環境で MicroBlaze の getting started で bitstream を生成する時間は 20分ぐらいだったかな。。もう一度後で試してみるけど。プログラムのダウンロードから実行までは案外時間かかります。ようやく Hello world 出たと言った感じ。

ところでこの手のツールはそろそろ Mac にも対応して欲しいなぁ。
Linux 版があったり、Eclips 使ってたりと移植簡単じゃん?と思うんだけど。
メーカーの皆様、是非ともよろしくお願いします。