Ultra96の開発環境(Vivado２０１９．１）

#Ultra96の開発ツール（Vivado 2019.1)

FPGAの仕事に関わっていると、時たま同じような質問を聞く場合があります。開発環境の整備もその一つで、どれをダウンロードすればいいのかが、
わからないということをよく聞きます。
実際に使いこなすには、いろいろ勉強をしないといけないのですが、少なくともどのツールがあれば、Ultra96を開発できるのかをご紹介します。

ここでは、FPGAのメーカーである、ザイリンクス社と、Ultra96を提供している、アヴネット社の情報を中心に、記述していきます。
対象ボードは　Ultra96V1、Ultra96V2共通です

##必要な開発環境
Ultra96を開発するためのFPGA開発環境は次のLinux環境が必要です。
- Red Hat Enterprise Workstation/Server 7.4、7.5、7.6 (64 ビット)
- CentOS 7.4、7.5、7.6 (64 ビット)
- Ubuntu Linux 16.04.5、18.04.1 (64 ビット)
※ただし、Ubuntu Linux 18.04.01は、バージョン２０１９．１から対応。
この辺はザイリンクス社のリファレンスガイドがバージョン毎に出ているので、確認してみてください。今回はバージョン２０１９．１をご紹介しています。
[Vivadoリファレンスガイド](https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2019_1/ug973-vivado-release-notes-install-license.pdf)
[SDSoC開発環境リファレンスガイド](https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2019_1/ug1294-sdsoc-rnil.pdf)
[Petalinuxリファレンスガイド](https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2019_1/ug1144-petalinux-tools-reference-guide.pdf)

RedHatは、有償ですが各種サポートが期待できます。
CentOSは、RedHatの無償版として、公開されています。
Ubuntuは、Linuxの中で現在一番人気があります。無償です。

##開発環境用Linuxのインストール
開発環境は、Linuxが必要となりますが、市販パソコンで、Linuxが最初からインストールされている例は少ないと思います。
そのため、WindowsやMacOSのパソコンからLinuxをインストールする必要があります。大きく分けて、次の方法があります。
１：すべてLinuxマシーンにする。　Linuxしか使えなくなります。
２：デュアルブートにする。　　両OSを共存できます。インストールの時に、デュアルブートを選択できます。
３：仮想環境を使う　　　Windowsまたは、MacOS上に、仮想環境のツールをインストールして、その中にLinuxを入れる方法です。Oracl VM VirtualBOXなど有名です。

Linuxのインストールする方法は、検索すればみつかりますので、割愛しますが、お望みの方法を使用してください。

##Linuxの暗黙の文化
Linux自体は、世界で一番使われているOSです。知らず知らずのうちにお世話になっている人も多いです。
特にスマートフォンは、iOS、Andoroidともに、ベースにLinuxが入ってまして、その上に、GUIなど使いやすい環境を載せています。
ただし、開発用にLinuxを使おうとなると、ほぼCUI(コマンドライン）での操作が多くなります。ザイリンクス社のツールも例外ではなくて、Linuxを作るとなるとCUIしか選択筋がありません。Linux上ではターミナルと呼んでいますが、そのターミナルにお世話になることが多くなります。
また、もともと全部ツール等が全部入っているわけではなくて、必要に応じて、ライブラリー等をダウンロードして、インストールすることが多いです。
Linuxの解説をみていると、yumや、apt(apt-get)など使われています。これは、必要なものをダウンロードして使う場合に必要になります。
また、最近ではgit pipと言ったものも流行ってきています。これらも、ダウンロードして使うものです。（コンパイルすることもあります）
開発ツールを使うにも、予めダウンロードするものがいくつかあります。

##Ultra96向け開発ツールの分類は大きく分けて２つ。
ツールとしての分類は、大きく分けると２つに分けることができます。
一つが、ハードウェアからスタンドアローンのソフトウェアまで作成できる、ハードウェア系のツール。
もうひとつが、LinuxなどのOSを組み立てるためのLINUXツールになります。これはUltra96にのせるOSです。
ハードウェア系のツールはザイリンクス社からの一択です。
Linxu系については、ザイリンクス社からの提供の他、サードパーティー製や、オープンソースのものも使用できます。

##ハードウェア系のツール
![Screenshot from 2019-09-21 09-37-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299213/b5585d3e-f233-16e7-0542-4eafa6d8dc1e.png)
ザイリンクス社製のFPGAを作るための開発ツールです。
Ultra96向けには２つの中から選択できます。一つがVivadoというツール、もうひとつがSDSoCというツールです。どちらか片方使用すればいいです。
VivadoとSDSoCの違いは、Vivadoがハードウェア技術者向けツールとして位置づけてるのに対して、ＳＤＳｏＣはVivadoが含まれてる上にC／Ｃ＋＋言語だけで、開発できるツールがついてきます。
Vivadoの場合は、登録後無償で使用できます。（WebPack利用）
SDSOCの場合はラインセンスが必要ですが、Ultra96を購入した方には一緒についてきます。　　
SDSOCの場合は、Vivadoの機能が全て入っています。
Vivadoで、インストールした場合は、SDSOCの機能は入っていません。

インストールする前に、事前にライブラリー等をダウンロードしておきます。私の場合、Ubuntuでやっているので、次のようにしています。

```shell:vivado_install.sh
sudo dpkg --add-architecture i386 
sudo apt update 
sudo apt install apt-utils libc6:i386 libncurses5:i386 libstdc++6:i386 g++-multilib libgtk2.0-0:i386 dpkg-dev:i386 libxtst6:i386 default-jre wget unzip net-tools libtext-csv-perl libcanberra-gtk-module libcanberra-gtk3-module lsb-core -y 
sudo ln -s /usr/bin/make /usr/bin/gmake 
sudo mkdir /tools
sudo chmod 777 /tools
```
###Vivadoの場合
Vivadoで必要なものですが、次のところからダウンロードします。
https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/vivado-design-tools.html

ダウンロードするところは、次のところです（バージョン２０１９．１の場合）
Vivado Design Suite - HLx Edition - 2019.1  Full Product Installation
Updateは不要です。お望みの方をダウンロードしてください。ウェッブインストーラーはインターネットから、ファイルをダウンロードしながらインストールします。
シングルファイルはすべてをダウンロードしてから、インストールします。
Vivado HLx 2019.1: WebPACK および Editions - Linux 用自己解凍型ウェブ インストーラー (BIN - 115.05 MB)
または　
Vivado HLx 2019.1: すべての OS インストーラー シングルファイル ダウンロード(TAR/GZIP - 21.39 GB)

ともに、事前にザイリンクス社に登録、ダウンロードの承認をしたあと、無料でダウンロードできます。
インストールはウェブインストールは次のとおりになります。

```sh:vivado.bin
chmod 755 Xilinx_Vivado_SDK_Web_2019.1_0524_1430_Lin64.bin
./Xilinx_Vivado_SDK_Web_2019.1_0524_1430_Lin64.bin
```

シングルファイルの場合も解凍後、xsetupを実行してください。

順番に行けばインストールできます。途中で、どのツールをインストールするか聞いてきますが、webpackで、十分です。
インストールの最後に、ライセンス登録の案内が出てきますが、WebPackを選択した方は不要ですので、そのままキャンセルしてください。

###SDOSCの場合
ＳＤＳｏＣの場合は次のところからダウンロードします。
https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/sdx-development-environments.html
次のものをダウンロードします。
SDSoC - 2019.1  Full Product Installation
お望みの方をダウンロードしてください。ウェッブインストーラーはインターネットから、ファイルをダウンロードしながらインストールします。
シングルファイルはすべてをダウンロードしてから、インストールします。
Linux 64 用 SDSoC 2019.1 ウェブ インストーラー (BIN - 114.52 MB)
SDx 2019.1 SFD (TAR/GZIP - 25.8 GB)

ウェブインストーラーは、そのまま実行してください。

```sh:sdsoc.bin
chmod 755 Xilinx_SDSoC_2019.1_0524_1430_Lin64.bin
./Xilinx_SDSoC_2019.1_0524_1430_Lin64.bin
```
シングルファイルは、解凍後、./xsetup　で実行できます。

承諾書を承諾したあと、特に指定しなければ、そのままインストールを続けてください。

SDSoCの場合、すべての機能を使おうとするときは、ラインセスが必要となります。
ライセンスはUltra96を購入するとついてきますので、それを使用してください。
インストール後に登録できるようになります。
また、Vivadoの機能に限定すれば、ライセンス無しでも使用できます。

###ボードファイル
Ultra96の場合、予めボードファイルをVivadoに準備しておくと、便利です。
ダウンロードは次のところです。
https://github.com/Avnet/bdf/archive/master.zip

unzip master.zip 等で、解凍後、bdf-master以下のディレクトリーを次のところにコピーします。
/tools/Xilinx/Vivado/2019.1/data/boards/board_files

コマンドだとこんな感じです。(バージョン２０１９．１の場合、適宜変更してください）

```shell:bdf_download.sh
wget https://github.com/Avnet/bdf/archive/master.zip
unzip master.zip
cp -rf bdf-master/* /tools/Xilinx/Vivado/2019.1/data/boards/board_files
```

###ケーブルドライバーのインストール
Vivadoまたは、ＳＤＳｏCをインストール後、USB-JTAG Podを持っている方は、ケーブルドラーバーをインストールしておいたほうが便利です。
次のようにします。

```shell:install_drives
cd /tools/Xilinx/Vivado/2019.1/data/xicom/cable_drivers/lin64/install_script/install_drivers
sudo ./install_drivers
```
##Linuxツール
Ultra96向けLinux開発ツールの場合は選択筋が多く、どれを使っても構いません。逆にたくさんありすぎて困るかもしれません。
その中で、ご紹介するするのは、ザイリンクス社からでているのは、Petalinuxというツールです。
特徴としては、
- 簡単なコマンドだけで、Linuxのビルドができ、イメージができる。
- ザイリンクスの他のツールとの親和性がある。
- 他のLinuxのツールに比べると、設定の自由度が低くなる。
などがあります。
使っている方は、Linuxビルドシステムの勉強時間が取れなかったり、とりあえずやってみようという方が多い感じがします。

###PetaLinux
ザイリンクス社が提供している、Linuxの開発ツールです。ホストはLinuxのみ対応です。
ザイリンクスのFPGAに搭載されている、CPUに対して、Linuxに必要なカーネルなどのビルドシステムを提供しています。
少ないコマンドでビルドできるのが特徴です。
全体として、CUI(コマンドライン、ターミナル）での実行になります。GUIはありません。

まず、準備としては、予め必要な処理を行っておきます。私の場合はUbuntuで構成しました。
途中でなにか聞かれることがあると思いますが、必要に応じて実行してください。

```shell:petalinux_install
sudo dpkg-reconfigure dash
sudo dpkg --add-architecture i386 
sudo apt update 
sudo apt install -y tofrodos iproute2 gawk make net-tools locales cpio libncurses5-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev screen pax gzip xvfb tftpd tftp libtool-bin default-jre  lsb-release zlib1g:i386 git python-dev 
sudo locale-gen en_US.UTF-8 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:en 
export LC_ALL=en_US.UTF-8
sudo mkdir -p /opt/petalinux/
sudo chmod -R 777 /opt/petalinux/ 
sudo mkdir /tftpboot
sudo chmod 666 /tftpboot
```

PetaLinuxは次のところからダウンロードできます。
https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/embedded-design-tools.html
必要なのが次のファイルになります。
PetaLinux - インストレーション ファイル - 2019.1 
PetaLinux 2019.1 インストーラー (TAR/GZIP - 7.14 GB)

ダウンロードしたファイルは、実行可能な属性を与えたうえ、直接実行します。

```shell:petalinux.run
chmod 755 petalinux-v2019.1-final-installer.run
./petalinux-v2019.1-final-installer.run /opt/petalinux
```

承諾書等を確認しながら、インストールが終了します。

###環境変数の設定
Vivadoと、Petalinuxを実行するときには環境変数の設定が必要です。
毎回、設定してもいいのですが、予めターミナルを立ち上がるときに自動設定することもできます。
そのための設定方法は次のとおりになります。

```shell:.bashrc
sudo echo "source /tools/Xilinx/Vivado/2019.1/settings64.sh " >> ~/.bashrc 
sudo echo "source /opt/petalinux/settings.sh " >> ~/.bashrc 
```

開発環境の設定はこれで可能です。

##Petalinux向けBSPの作成
2019年12月15日追記。
本来なら、別記事で紹介しようと思っていたのですが、Vitisというツールが出てきたこと、
また、Avnetから簡単にBSPを作る方法が提供されましたので、ご紹介します。
ソースファイルは
まずは適当なフォルダーを作成して、次の３つのファイルをダウンロードをします。

```sh:download.sh
git clone -b 2019.1 https://github.com/Avnet/hdl.git
git clone -b 2019.1 https://github.com/Avnet/petalinux.git
git clone https://github.com/Avnet/bdf.git
```
ディレクトリーを変更します。

```sh:chdir.sh
cd ./petalinux/scripts
```

その後、次のスクリプトを実行します。

Ultra96V1の場合

```sh:make_ultra96v1_petalinux_full_bsp.sh
source ./make_ultra96v1_petalinux_full_bsp.sh
```
Ultra96V2の場合

```sh:make_ultra96v2_obb_bsp.sh
source ./make_ultra96v2_obb_bsp.sh 
```
自動的にVivadoとPetalinuxが動作しまして、数時間後、BSPファイルが作成されます。