Ultra96v2の開発環境をDocker上に構築する1

 先日Ultra96v2を購入しLinuxとXilinxの環境構築に挑戦してみました。ので久しぶりにQiitaで記事を書いてみます。記事は随時更新予定です。予定としては、Ubuntu20.04LTSにDockerをインストールし、その上にXilinxの開発環境を構築していきます。

#購入編
AVNETさんから下記を購入しました。

| No.| Avnet Part No    | 説明                                     |
|:---|-----------------:|:----------------------------------------:|
| 1  | AES-ULTRA96-V2-G | Ultra96V2ボード本体です。                 |
| 2  | AES-ACC-U96-JTAG | JTAG基板です。USBシリアル接続ができます。  |
| 3  |                  | 送料が600円ほどかかります。               |

その他最低限下記が必要です。

+ **ACアダプター**:DC12V 2A以上。
+ **ACアダプターのプラグφ1.7への変換ケーブル**:標準プラグからUltra96V2用のプラグへ変換します。
+ **Micro USB(USB A-MicroB)ケーブル**:Ultra96V2へシリアル接続するのに使います。
+ **SDカード用USBリーダーライター**:Panasonic BN-SDCKP3など。PCからのSDカードアクセスに使用します。
+ **USB 有線イーサ―ネットアダプタ**:BUFFALO LUA3-U2-ATXなど。Ultra96V2のWifiが不安定な時にあると良いです。

私の場合、DC12Vは手持ちのUSB PDから[USB-PD_Adapter](https://www.switch-science.com/catalog/5760/)を使用して12Vを取り出し直接φ1.7のプラグへ接続しました。
![qiita.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119510/59bb5256-b2ff-f4bf-5092-db3ba735c4a1.jpeg)
上図の12V電源ケーブルのXH2ピンコネクタは赤黒の電線付きが[千石電商](https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-0BPH)等で売っていますので利用すると良いです。が、赤が<font color="Red">**プラス**</font>で黒が**マイナス**のシキタリがありますのでコンタクトを細い千枚通し等で外して反対にします。ACアダプターのプラグはセンタープラスです。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119510/2a88d2a9-5d38-7861-0720-973ee6bb10de.png)


その他、[Ultra96 基本講座：Unboxing編](https://www.avnet.com/wps/portal/japan/resources/technical-videos/ultra96-1/?locale=ja-JP)や [はじめてのUltra96 必要なもの](https://qiita.com/basaro_k/items/e5654a0061883afea889
) を参考に揃えてください。

#開封の儀
届いたら内容物を確認し、取り合えずLチカをすると良いです。[Ultra96基本講座：Lチカ編](https://www.avnet.com/wps/portal/japan/resources/technical-videos/ultra96-2/?locale=ja-JP)等が参考になりました。
箱の中にXilinxのライセンス登録書も入っていました。ですが、どこで使うのか分からないので未だ登録していません。

#Ultra96V2 環境構築 先行調査編

Xilinxの高位合成ツールのVitisを使用してC言語から回路を作成して、Ultra96V2で動作させる事を目指します。とりあえず、先行している情報を調べてまとめてみました。

+ ikwzmさん
[Ultra96-V2 向けDebian GNU/Linux (v2019.2版) ブートイメージの提供]
(https://qiita.com/ikwzm/items/92221c5ea6abbd5e991c)

+ basaroさん
[Ultra96用Vitisプラットフォームの作り方（BASE編）](https://qiita.com/basaro_k/items/6841c99c39ff12851847)
[Ultra96V2向けWifi対応Vitisプラットフォーム（OOB版)](https://qiita.com/basaro_k/items/066edec6139bcb9d53e5)

+ Ryuzさん
[Ultra96V2環境構築メモ](https://ryuz.qrunch.io/entries/IzxRVFueeWfembFc)

+ ひでみさん
[ブログ一覧](https://sweetcafe.jp/?list)
[ビバ道2020.1インストール](https://sweetcafe.jp/?*20200605-142650)
[FPGAの内容が薄い本２(同人誌)](https://aquaxis.booth.pm/items/1478849)

+ いっとうさん
[ittouogami/xilinx2020.1_docker](https://github.com/ittouogami/xilinx2020.1_docker)

+ marseeさん
[FPGAの部屋 Vitis](https://marsee101.web.fc2.com/vitis.html)
[PetaLinux 2020.1 のインストール](https://marsee101.blog.fc2.com/blog-category-142.html)
[XRT 2020.1 をインストール](https://marsee101.blog.fc2.com/blog-entry-4906.html)
[Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る1（ハードウェア・コンポーネント編）](https://marsee101.blog.fc2.com/blog-entry-4912.html)
[Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る2（ソフトウェア・コンポーネント編）](https://marsee101.blog.fc2.com/blog-entry-4914.html)
[Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る3（Vitis 2020.1 でアクセラレーション・プラットフォーム作成）](https://marsee101.blog.fc2.com/blog-entry-4915.html)
[Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る4（Vitis 2020.1 でアプリケーション・プロジェクトを作成）]
(https://marsee101.blog.fc2.com/blog-entry-4917.html)
[Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る5（Vitis 2020.1 で作成したアプリを動作されるが動かない！）]
(https://marsee101.blog.fc2.com/blog-entry-4919.html)
[Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る6（Vitis 2020.1 で作成したアプリを動作されるが動かない！ 2）]
(https://marsee101.blog.fc2.com/blog-entry-4937.html)

所感：大変苦労しそうな予感がヒシヒシと伝わってきます。

#Ultra96V2開発機器の説明

+ **開発ホスト**:Ubuntu20.04をインストールした10年モノのパソコンです。参考ですがスペックはCore2Quadマシンに16GBytesメモリと512GBytesSSDと10TBytesHDDを搭載してあります。今では弱々パソコンです。ヘッドレスで使用しています。
+ **Ultra96V2**:今回のターゲットです。
+ **パソコン**:Windows10をインストールしたごく普通のパソコンです。開発ホストへのリモートデスクトップ接続や、Ultra96V2へMobaXtermからシリアル接続＆イーサネット接続する時に使用しています。

  開発ホストのみで環境構築可能です。しかしWindows10からリモートデスクトップやSSH接続で開発ホストやターゲット側にアクセスする方が何かと便利なので分けています。WSL2も検討したのですが、パソコン上のVMWareと共存できないのでアキラメました。

#Ubuntu20.04のインストール
開発ホストにUbuntuをインストールします。RDPのインストールまで、キーボードとマウスとモニターを開発ホストに接続して操作をします。
[Ubuntu Desktop 日本語 Remix Ubuntu20.04](https://www.ubuntulinux.jp/products/JA-Localized/download)を使用しました。
**ファイル名**: ubuntu-ja-20.04-desktop-amd64.iso
インストール後、GUIから初期設定をします。

+ 右上▽設定→日付と時刻→タイムゾーン(O) JST(日本,Tokyo)
+ 右上▽設定→地域と言語→フォーマット(F) 日本
+ 左上アクティビティ→検索でU→ソフトウェアの更新
+ デスクトップ上で右クリック→端末で開く

開いた端末(gnome-terminal)の、左上の+アイコンをクリックするとタブウィンドウが開きます。CTRL-Dで閉じます。
LinuxのVersionは下記でした。

```ubuntu20.04:bash
$uname-a
Linux ubuntu 5.4.0-47-generic #51-Ubuntu SMP Fri Sep 4 19:50:52 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
```

次に画面左上のアクティビティから検索にUを入力して、ソフトウェアの更新を開きます。この更新が終わるのを待ちます。再起動を求められた時は再起動します。

#SSH Serverのインストール

```bash:apt
$sudo apt install -y openssh-server
```

#RDPのインストール
[第621回　Ubuntu 20.04 LTSでxrdpを使用する](https://gihyo.jp/admin/serial/01/ubuntu-recipe/0621)を参照しながらxrdpをインストールします。インストール後に、

+ 右上▽設定→地域と言語→インストールされている言語の管理

から、日本語をシステム全体に適用してください。地域フォーマットも同様に全体に適用してください。
下図赤丸のボタンです。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119510/ff7c484f-904a-140f-dd6c-bdaea254e01a.png)
やらなかった場合には、リモートデスクトップ接続時に日付がせぷてんばぁーになる事があります。

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119510/c0045c95-fe7d-b68c-67ee-e03349a367b0.png)

最後に確認のため、Windows10のパソコンからUbuntuの開発ホストにリモートデスクトップ接続をします。日付、左のサイドバー、マウス右クリックで端末を開ける事を確認してください。その後、GUIからログアウトします。
以降はリモート接続で操作可能です。開発ホストからキーボード、ビデオ、マウスを外してヘッドレス運用へ移行します。

#Dockerのインストール
開発ホストにDockerを入れます。

```bash:docker_install1
sudo apt install -y curl
curl https://get.docker.com > install.sh
```
念のため、install.shの内容を確認します。installには管理者権限が必要です。OKなら

```bash:docker_install2
chmod +x install.sh
./install.sh
sudo usermod -aG docker $USER

```

でインストールします。なお、sudo機能はデフォルトで５分間、sudoで別のコマンドをパスワード無しで実行する事ができます。

#つづく