Vitis + Vivado + zynq = 楽しい
目的
※この記事は以前に載せていた記事の再投稿です。内容が少し古くなっていますが後々アップデートする予定です
今回はzynq内のcpu上のソフトウェアでTera Term上に「Hello World」を出力してみます。
流れとしてはVivadoを用いてハードウェアを構成し、Vitisを用いてHello Worldを出力するソフトウェアを作成していきます。
また、私がzynqとvivado,sdkの勉強に使わせていただいた記事が下のリンクとなっています。
ZYBO (Zynq) 初心者ガイド (1) 開発環境の準備(Qiita)
今回はsdkではなくvitisを使用しますがそれ以外は同じなので上の記事を参考にすすめさせていただきます。
開発環境
- Windows10 Home
- Vivado 2019.2
- Vitis IDE
- Tera Term
- ZYBO Z7 (Zynq 7010)
ハードウェアの作成
まず最初にVivadoを用いてハードウェアを作成します。
作成するハードウェアに関しては「目的」項目内に記載された記事と全く同じなので
プロジェクトの作成からブロックデザインまでそちらを参考にPS部だけのハードウェアを作成してください。
※ 全く同じと書きましたが実際上のリンクで扱っているボードはz7-20で、
今回私が使っているボードはz7-10 なのでボードファイルを選ぶ部分ではz7-20ではなく
z7-10を選択してください
一応完成したハードウェアは以下の画像になります。
PS部だけのハードウェアが作れたらそのHDLラッパーを作成するため以下のように
BLOCK DESIGN上のSourcesタブのdesign_1を右クリックして
下画像のようにラッパーを作成してください。
(多分、Generate Output ProductsをしなくてもCreate HDL Wrapperだけで大丈夫です。
ちなみに私は大丈夫でした。)
ラッパー作成が完了したら下の画像のようになります。
次にビットストリームファイルを作成します。
Flow NavigatorのPROGRAM AND DEBUGにある項目のGenerate Bitstreamをクリックします。
途中でポップアップウィンドウが2つくらい出てくるかもしれませんが私はそのままOKで勧めました。
結構時間がかかるのでコーヒーを飲むなり時間を潰していてください。
作成が完了するとwrite_bitstream Completeの文字が画面右上に表示されます。
最後にビットストリームファイルをエクスポートします。
メニューバーからFileを選び、ExportのExport Hardwareを選択します。
そしてInclude bitstreamのチェックボックスにチェックを入れてOKをクリックします。
エクスポートが完了するとプロジェクトフォルダ下にdesign_1_wrapper.xsaというファイルが作成されていると思います。
※ エクスポートしたはずなのに作成できていない場合があります。
しばらく時間をおいてから再度エクスポートすれば作成できるかも……
または一旦、メニューバーのFileのClose Projectでプロジェクトを閉じてから再度プロジェクトを開きなおして、xsaファイルをエクスポートするとうまくいくかも……
(単に私のパソコンのスペックが低く、処理が間に合っていなかっただけかも知れません。)
このファイルは次、Vitisで使うので覚えていてください。
一応、BLOCK DESIGNのDiagramタブを選択します。
そして、ZYNQというブロックをダブルクリックします。
PS PL Configurationを選び、Gereralを選択すると下の画像が表示されると思いますが
UART1 Baud Rateを見てみると115200と表示されていると思います。
この数字も覚えておいてください。
ソフトウェアの作成
下画像のようにLaunch VitisからVitisを起動します。
起動するとまずワークスペースを下のように決めます。
その後、Application Projectを選びます。
プロジェクト名は適当にhello_vitisにしてNextをクリック
プラットフォームの選択ですが Create a new platform from hardware (XSA) タブをクリックし
"+"のボタンをクリックするとエクスプローラーの画面が開きます。
ハードウェアの作成で作った.xsaファイルのdesign_1_wrapper.xsaを選択してください。
下画像のようになります。
design_1_wrapper.xsaを選択したままNextをクリック
下画像のようなDomainのウィンドウが開きますがそのままNextをクリック
templateも今回Hello Worldを出力するので Hello World を選択してFinishをクリック
するとエディターの画面が開きます。
ExplorerのHello_vitisプロジェクトの helloworld.c を開くとデフォルトでコードが生成されているのが分かります。
今回はこのコードをそのまま使います。
Hello_vitisプロジェクトを右クリックし、Build Project をクリックすることでビルドできます。
Hello Worldの出力
いよいよHello Worldを出力します。
まずZynqの緑丸で囲ってあるジャンパがUSBについていることを確認します。
マイクロUSBでパソコンと接続します。(赤丸)
青丸のジャンパがJTAGについていることを確認する。
その状態で電源を入れます。
次にTera Termを起動します。
シリアルの項目を選択しポートをUSB Serial Portを選択しOKをクリック
メニューバーの設定からシリアルポートを選択すると
下画像の画面になります。
スピードの項目をハードウェアの作成の時に確認した115200を設定します。
これでTera Termの設定は完了
そして次にZynqにハードウェアの情報を書き込みます。
メニューバーのXilinxからProgram FPGAを選択すると
下画像のウィンドウが表示されますがそのままProgramをクリック、
Zynqにハードウェアの情報が書き込まれます。
最後にExplorerのhello_vitisプロジェクトを右クリック
Run AsのLaunch on Hardwareをクリックすると
Tera TermにHello Worldが表示されます。
以上で今回の目的は達成しました。
最後に
今回初めてvitisを使用したので間違ってる点や無駄な作業もあるかもしれません。
少しでも役に立てたら幸いです。
また、Vitisに関しての公式URLを下に記載しておきます。