VivadoでLinux用のブートイメージを作成する【ハードウェア作成編】

## どういう記事か

LinuxをZynq Z7-20でブートしてみたかったのでそのときのメモです。

## 参考

https://qiita.com/iwatake2222/items/24a8a94741fdbb80f62a

https://qiita.com/iwatake2222/items/6e6915f7318689818368

##【環境】

- Lenovo Thinkpad
- Windows 10
- Vivado 2017.4　（参考記事に合わせてバージョンを合わせました。）
- Zynq Z7-20

## Vivadoプロジェクトの初期設定

Create new Vivado Project

![スクリーンショット (41).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/7cf7af3d-0784-48d4-d9d6-3bb5acaaab47.png)

Project NameはPS_hardwareで。

![スクリーンショット (42).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/32dc729c-c9cc-536f-43c0-202e1d5b07fe.png)

RTLプロジェクトを選択します。

![スクリーンショット (43).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/fce7ad79-ac01-db0c-724a-ad2677401b4a.png)

Add Sourcesはスキップします。

![スクリーンショット (44).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/4a524bb5-c719-9cde-338d-6025334faaa6.png)

Add Constraintsのところもスキップします。

![スクリーンショット (45).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/18b678de-bdfa-d346-8a93-74bf465fc3a1.png)

ボードのところでZynq Z7-20を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/24c6b2a6-fc20-6273-a09e-5a27d039bd3f.png)

これでプロジェクトの作成設定は終わりです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/1a5c3ec6-48ac-4f95-d30e-93476d839cbf.png)

## PS 部分の作成

新たに開いたプロジェクトはこのようになっているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/5fc22038-17ab-d9d5-1cfc-238bb88b8844.png)

Top Module Nameが `Not defined`となっています。なのでPSのモジュールを作成して搭載します。
左のサイドバーにCreate Block Designという項目があるはずなので、そちらを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/d887f140-c34d-1265-7551-2a4311874c75.png)

とりあえずこちらでブロックデザインを作成します、このままOKを押して大丈夫です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/377340ab-29e8-d000-8ccf-29e9fdce1f94.png)

プロジェクトが作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/5e35a077-8a77-e87b-8eb3-9a0bfb818038.png)

＋ボタンを押しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/d885ecff-69f6-48c8-3992-83c5088a5406.png)

Zynq７と検索して選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/570eb40f-dd33-25e7-a327-d18e2241cbc9.png)

これでZynq７のモジュールが出てきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/c14ddb7b-6849-0352-3015-78fb0bcd058b.png)


これでRun Block Automationを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/8ad576d5-7121-46c7-1e4f-d4d4fd47d200.png)

これでOKを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/1e4be088-4dfe-6312-bfe2-927f1ae6d6e6.png)

最適化されたモジュールに修正されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/66a40e72-b2fc-aca0-cbf3-2e9446bb226a.png)

最後に `FCLK_CLK0` と `M_AXI_GP0_ACLK` をつなげる必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/a80563f1-569f-f5d3-bc19-5f856e67b96e.png)

これで `Validate Design`を押せばエラーなしで処理されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/7ac3f3ef-3208-6dfe-c933-334513040259.png)

警告はたくさん出てきますが。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/74419fd3-5028-84f6-5c6c-3b93f2af96f0.png)

## ハードウェアのgenerateとラッパーの作成

Sourcesタブからデザインを右クリックしてGenerate Output Productsをクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/7900fa8b-4373-3fa1-f897-c49d201ce336.png)

このようにジェネレートされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/dfb3e64d-8f64-7ea1-56c0-476d0e6eab9b.png)

最後にこのようなメッセージが出たらOK。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/66135204-91ec-d363-306b-2cc729b6c72d.png)

Create　HDL　Wrapperをクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/591faf76-9633-0b76-98bc-783db1b3c0fd.png)

とりあえずVivadoに任せる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/1c431f66-20d3-5cb4-dfcc-05f2b1b2ae98.png)

## ビットストリームの作成とエクスポート

左下の `Generate Bitstream` をクリックしてビットストリームを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/87e0c4d4-d4bb-85f8-5a90-999769052b60.png)

ここはスキップする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/ef710900-1272-5afe-e280-aa7919730a1e.png)

ここもデフォルトでOKをクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/8ef87da4-c317-ef6f-bb69-967d7e1e4382.png)

右上がくるくると結構長い時間回ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/ef60a826-f3c5-4f8f-042d-2da28c1e9ad4.png)

こちらはとりあえずキャンセルで大丈夫です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/427e6835-f497-d503-82a3-37d4eda1ef99.png)

これでエクスポートができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/121c21ec-aa45-cb8f-7f48-7a521e788346.png)

Include Bitstreamにチェックをつけます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/21c494cf-622c-b420-76ca-3f14af2e9883.png)

自分のPCに生成されているのを確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/b2fdbf8f-2550-222c-e87b-975cae78c5e4.png)