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 使ってたりと移植簡単じゃん?と思うんだけど。
メーカーの皆様、是非ともよろしくお願いします。

2016/11/10

ARTY と Ubuntu と UART (Serial)

ARTY のチュートリアルに従って Microblaze を動かしてみたかったのだけど、Hello world をシリアル経由で見ることが出来ない。Bitstream のダウンロード及び、Microblaze 用にコンパイルした ELF はロード出来てるとのメッセージは出るのだけど。

ちなみに試してる環境は、Vivado 2016.3 を MacBook (macOS Sierra) の VirtualBox で動作させている Ubuntu16.04 で実行してる。

シリアルポートは Ubuntu 上では /dev/ttyUSB1 (たまに /dev/ttyUSB0 も見える) で認識されている。FTDI の USB - Serial 変換として。

ターミナルソフトは minicom を入れてみた。
minicom 自身も初めて使うので、どこが悪いのかさっぱり。
そもそも /dev/ttyUSB1 を minicom で開けばいいのかとか。

仕方ないので Digilent から提供されてる Sample のプロジェクトを使ってみた。I/O のチュートリアル

出来ましたよ。LED が周期的に色は変わるし、ボタン押すと minicom で開いた /dev/ttyUSB1 経由でメッセージも出力されてる!



ということで ARTY のシリアルポートを Ubuntu で使うこと出来るということがわかったのでとりあえず安心。今度は Microblaze から UART (シリアル)叩いてみたいなー。というか Microblaze を動かさないと。


2016/11/08

SDK から Project を作る

とりあえず SDK (xsdk) が起動したのはいいのですが、新しいプロジェクトを作ろうとすると SDK Log に

[Hsi 55-1545] Problem running tcl command

のようなエラーが出る。
ググるとどうやら症状は以下であるというところまでたどり着いた。
https://forums.xilinx.com/t5/Installation-and-Licensing/SDK-2014-4-path-problems/td-p/548958

それまでにパッケージのアップグレードやら、Xilinx のサイトにある .tcl コマンドの差し替えやらなんやらも試してみたりしたのだけど、最後に新規プロジェクトがうまく作れない理由は上記にあるように 32bit ライブラリ(i686) がないからだったようです。

困ったことに 64bit 版 Ubuntu に 32bit ライブラリを入れる方法はあちこちに散見されるのだけど、これといったのが見つからない。と、Xilinx のサイトを漁ったらまさにこれ、というのがありました。
https://japan.xilinx.com/support/answers/66184.html

** DocNav には 32ビットライブラリが必要です。
というくだり。Ubuntu へ導入するライブラリのリストと方法が書かれてます!
この手順に従ってライブラリをインストールすると。。

ようやく新規プロジェクトを作成するところまで漕ぎ着けました!!!

しかーし、Bitstream を Arty に流し込めたのはいいものの、Microblaze にソースをロード出来ない。。で最後の最後でまたハマってます。

やろうとしてるチュートリアルは以下。
https://reference.digilentinc.com/learn/programmable-logic/tutorials/arty-getting-started-with-microblaze/start

あ、なんか走ったっぽいけど、確認出来ない。
続きはまた後〜。

もう一つだけ。
シリアルポートは通常ユーザーではアクセスできないので、シリアルポートにアクセスできるグループに自分が所属しておくと便利。
http://qiita.com/chromabox/items/b3ceaab6efa6edde2bda






Vivado SDK の起動

でハマる。

Ubuntu 16.04 に Vivado 2016.3 をインストールして Arty の microblaze を入れた最初のチュートリアルを試すも bitstream までは生成できても SDK がどうしても起動してくれなくて困る。

とりあえず Java のインストールが必要。

apt-get で、default-jrc, default-idk をインストールする。

そうすると SDK は起動しかけるも、落ちる。
そこに至るまで Java 周りやらなんやら 結構 Ubuntu をいじってしまったので、悩んで Ubuntu から入れ直す。でもダメ。

ようやくたどり着いたのが以下。

https://www.xilinx.com/support/answers/67580.html

GTK のバージョンを抑制する必要があるようです。

ここでようやく SDK が立ち上がったー!と喜んだのもつかの間、今度は Project が作れなくてハマる。

どうすればいいんだ??

2016/11/05

Vivado インストール


Digilent の ARTY (Xilinx Artix-7) 買ってみました。DigiKey で(秋月でも買えますが、こっちの方が若干安かったので)。ということで、早速 Vivado をインストールしてみました。

我が家の PC は MacBook Pro (mid 2015) のみ。残念ながら Vivado は Mac に対応してないので、仮想マシン上の Windows か Linux にインストールするしかありません。また Mac (10.12.1 Sierra) に入れてる VirtualBox (5.0.23) の Windows は Win10 32bit 版。残念ながら Windows 版 Vivado は 32bit には対応してません。このために Win10 64bit 版を買うのも勿体無いので、Ubuntu に入れてみることにしました。

実は ISE を入れるために Ubuntu 14.x を導入してはいたのだけど、Vivado は Ubuntu 16.x 対応と書かれているので、ディスクスペースの都合もあって新たに Ubuntu 16.04 を入れました。

Vivado は Xilinx のhttps://japan.xilinx.com/support/download.html から Linux 用自己解凍型ウェブインストーラーを選びました。.bin ファイルがダウンロードできるのですが、これの実行方法が分からない!と思ったら単なるシェルスクリプトなんですね。

% sudo sh Xilinx_Vivado_SDK_2016.3_1011_1_Lin64.bin

でいいんじゃん。。悩みましたよ。Linux 用のインストーラーかと思ってましたが、全然違いました。

ARTY には Design Edition のライセンスが一年間ついてくるので、Design Edition を選んでインストール。ダウンロードには 2.5h ほどと出てたので、夜通しほっといたら朝には終わってました。

Vivado をインストールする過程で、License Manager から Web browser を開くタイミングがあるのですが、デフォルトでインストールされている Firefox ではうまくひらけなかったです。そこで、あらかじめ Google Chrome を導入しておけば問題なくライセンスの取得ができます。Chrome をインストールするとデフォルトのブラウザにするか?と聞かれるので、忘れずにデフォルトにしておくといいかも。

ところで、Chrome のインストールはハマる。以下を参考にすると良い。
http://robotics4society.com/2016/06/16/ubuntu-chrome/

ライセンスは Certificate Based License で、Virtual マシーンに付けたホスト名と ifconfig で調べた MAC アドレスを指定して Generate しました。

次に Digilent のドライバのインストールですが、インストールされていなかったので、手動で行いました。詳細は以下。

また root でインストールしちゃうと、~/.Xilinx が root で作られてしまって vivado 起動時に怒られてしまうので、~/.Xilinx は、

% sudo chown -R your_account ~/.Xilinx

とでもして自分のアカウントにオーナーを変えておきましょう。

あとは ARTY のボードの登録ですが、Digilent から board files をダウンロードしてきて、所定の場所に展開しておけば OK です。

ただ、Vivado_HLS に ARTY の設定をするには手動で行うしかないようです。
VivadoHls_boards.xml を落としてきて、ARTY の行だけ加えてあげれば良さそうです。
オリジナルのファイルは、

% find /opt/Xilinx/Vivado_HLS -name 'VivadoHls_boards.xml' -print

などで探してみて下さい。このファイルに ARTY のコンフィグを一行だけ挿入します。フォーラムにアップされてるファイルに置き換えてもいいのかもしれませんが、内容が古いと嫌なので、必要な部分のみの導入です。

ARTY を USB に挿して Vivado から Hardware Manager を起動すると認識したのでオッケーです。


とりあえずインストールはこんなところかなー。