LoginSignup
7
8

More than 5 years have passed since last update.

Vivado 2018.2 ハンズオン with ZYBO (Zynq)

Last updated at Posted at 2018-08-04

この記事について

今年(2018年)リリースされたVivado 2018.2を使う流れをざーっと紹介していきます。
基本的にはZYBO (Zynq) 初心者ガイド の内容と同じになります(こちらの記事は2017.4が対象)。今回の2018.2でもほとんど同じ操作でできたので詳細は省いています。

ツールをインストールしてハードウェアを作ってLチカするソフトを作るところまで、一気にやってしまいます。
詳細は書かないので、流れを感じていただければと思います。

環境

  • 開発用PC: Windows 10 64-bit
    • Vivado 2018.2 WebPACKライセンス
    • Xilinx SDK 2018.2
    • SDx IDE 2018.2
  • ターゲットボード: ZYBO (Z7-20)

Vivado 2018.2 のインストールと設定

Windows PCに開発環境をインストールします。
詳細はZYBO (Zynq) 初心者ガイド (1) 開発環境の準備 をご確認ください。

ダウンロード

Vivado, Xilinx SDK(XSDK), SDxをインストールします。
ポイントとして、「Vivado」のインストーラを使うとVivadoとXSDKが、「SDSoC」のインストーラを使うとVivadoとXSDKとSDSoCがインストールできます。SDSoCのライセンスを持っている人は、どうせならSDSoC用のインストーラを使ってSDSoCも入れておいた方がいいと思います。

01.jpg

インストール

下記のような設定でインストールします。UltraScaleを使っている方はそちらのチェックもお忘れなく。
(追記: たとえ使用するデバイスがZYBOだけでも、Devices for Custom Platformsの所には全てのデバイスにチェックを付けてインストールしておいた方がいいです。でないとVivado HLSでバグを引く可能性があります。)
02.jpg

ライセンスの設定

インストールが完了すると下記のようなLicense Managerの画面が出ます。Connect Nowをクリックして、ライセンスファイルを取得します。(ZYBOだとWebPackライセンス + SDSoCが使えます)
03.jpg

Xilinxのページが開かれるので、ZYBOの方は、ZYBO購入時に付属されているバウチャーの番号を入力してRedeem Nowをクリック。
Vivado Design Suite: HL WebPack 2015 and Earlier LicenseとOEM SDSoC-Zynq Development Voucherを選び、Generate Node-Locked Licenseをクリックして、Xilinx.licを入手します。(メールで送られてきます。またはこのページからダウンロードできます)
04.jpg

License Managerに戻って、先ほどダウンロードしたライセンスファイルをコピーします。
05.jpg

ZYBO用ボードファイルのコピー

DigilentのGithub(https://github.com/Digilent/vivado-boards/archive/master.zip )からボードファイルを取得して、C:\Xilinx\Vivado\2018.2\data\boards\board_files にコピーします。
06.jpg

ハードウェアを作る

動作確認用に、いつも通りLチカをするプロジェクトを作ります。GPIOにはPSのGPIOとPLのGPIOの両方を使ってみます。
詳細は下記記事をご参照ください。

プロジェクトを作る

Board PartにZybo Z7-20を設定して、プロジェクトを作ります(project_1とします)。以下のような、PSとAXI_GPIOを配置したブロックデザインを作ります(design_1とします)。AXI_GPIOはLEDに接続します。
07.jpg

ハードウェアを生成する

作成したブロックデザインをGenerate Output Products、Create HDL Wrapperします。その後、Generate Bitstreamし、Export Hardwareしてhdfファイルを生成します。(操作詳細は上記記事をご確認ください)

最後に、Launch SDKをして、ソフトウェアの開発環境(Xilinx SDK)を立ち上げます。

ソフトウェアを作る

PSとPLのGPIOを制御してLチカするソフトを書きます。

プロジェクトを作る

新しいApplication Projectを作ります。OS Platformはstandaloneにします。Target Hardwareは自動で選択されているdesign_1_wrapper_hw_platform_0にします。Templateとして、Hello Worldを選びます。

自動生成されるhelloworld.cを、下記のように書き換えて実行するとLチカが動きます。

helloworld.c
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "sleep.h"
#include "xgpiops.h"
#include "xgpio.h"
int main()
{
    init_platform();

    print("Hello World\n\r");

    /*** Set up for PS GPIO ***/
    XGpioPs instXGpioPs;
    XGpioPs_Config *configXGpioPs;
    configXGpioPs = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
    XGpioPs_CfgInitialize(&instXGpioPs, configXGpioPs,configXGpioPs->BaseAddr);
    /* Set MIO7 as output */
    XGpioPs_SetDirectionPin(&instXGpioPs, 7, 1);
    XGpioPs_SetOutputEnablePin(&instXGpioPs, 7, 1);

    /*** Set up for AXI GPIO ***/
    XGpio instXGpio;
    XGpio_Initialize(&instXGpio, XPAR_AXI_GPIO_0_DEVICE_ID);
    /* Set all of 4 pins(LEDs) as output */
    XGpio_SetDataDirection(&instXGpio, 1, 0);

    while(1) {
        XGpioPs_WritePin(&instXGpioPs, 7, 1);   /* Set MIO7 as High */
        XGpio_DiscreteWrite(&instXGpio, 1, 0x0F);   /* Set all of 4 pins(LEDs) as High */
        sleep(1);
        XGpioPs_WritePin(&instXGpioPs, 7, 0);   /* Set MIO7 as Low */
        XGpio_DiscreteWrite(&instXGpio, 1, 0x00);   /* Set all of 4 pins(LEDs) as Low */
        sleep(1);
    }

    cleanup_platform();
    return 0;
}

おわりに

今のところ、2017.4と2018.2では操作に大きな違いはなさそう。

おまけ

PetaLinuxをWSL Ubuntuにインストールしようとしたけど実行時にエラー

PetaLinuxをWindows Subsystem for LinuxのUbuntuにインストールできないか試してみました。ちなみに、フォーラムではXilinxの人に非サポートだと冷たく言われています。

今回、インストールは成功したけど、プロジェクト作成時にエラーが発生しました。

必要なパッケージのインストール
sudo apt-get install tofrodos gawk xvfb git libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison chrpath socat autoconf libtool texinfo gcc-multilib libsdl1.2-dev libglib2.0-dev screen pax

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt install  zlib1g:i386

sudo apt install diffstat xterm unzip

sudo apt-get install rsync 
sudo apt-get install locales
sudo dpkg-reconfigure locales 
sudo locale-gen en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
sudo apt-get install libgtk2.0-0
sudo apt-get install gcc-multilib
シェルをbashにしておく
chsh -s /bin/bash
# ここでいったんubuntuを再起動
sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh
PetaLinuxのインストール
sudo mkdir -p /opt/pkg/petalinux
sudo chown your-user-name /opt/pkg/
sudo chgrp your-user-name /opt/pkg/
sudo chgrp your-user-name /opt/pkg/petalinux/
sudo chown your-user-name /opt/pkg/petalinux/
bash ./petalinux-v2018.2-final-installer.run  /opt/pkg/petalinux/

ここまでで、PetaLinuxのインストール自体は出来ました。
後は、環境設定をしてプロジェクトを作ろうとしてみます。
先ほど作成したハードウェア(design_1_wrapper.hdf)はホームディレクトリにコピーしておきます。

cd ~/
source /opt/pkg/petalinux/settings.sh
petalinux-create --type project --template zynq --name Sample01
cd Sample01/
petalinux-config --get-hw-description=../

すると以下のようなエラーが発生。

tak@DESKTOP-1BHE6SR:~/work/peta/aaa$ petalinux-config --get-hw-description=../
INFO: Getting hardware description...
INFO: Rename design_1_wrapper.hdf to system.hdf
[INFO] generating Kconfig for project
ERROR: Failed to generate /mnt/c/asd/dev/wsl_ubuntu/work/peta/aaa/build/misc/config/Kconfig.syshw
ERROR: Failed to Kconfig project
ERROR: Failed to generate System hardware Kconfig file.

ホームディレクトリが/mntだけだダメなのかな?とか思い色々やってみたのですが解決せず。

PetaLinux 2017.4→2018.2への移行

しょうがないので、VirtualBox上のUbuntu 16.04にインストールすることにしました。
注意点として、今回新たにgcc-multilibが必要でした。(僕の環境だけかもしれませんが)

古いPetaLinuxを削除
rm -rf /opt/pkg/petalinux/
PetaLinux2018.2をインストール
sudo apt-get install gcc-multilib
sudo mkdir -p /opt/pkg/petalinux
sudo chown your-user-name /opt/pkg/
sudo chgrp your-user-name /opt/pkg/
sudo chgrp your-user-name /opt/pkg/petalinux/
sudo chown your-user-name /opt/pkg/petalinux/
bash ./petalinux-v2018.2-final-installer.run  /opt/pkg/petalinux/

メモ: Vivado HLSで新規プロジェクトを作成できない

2018.2に限ったことではないのですが、Vivado HLSでCreate New Projectするとき、Project Configurationの後、Add/Remove FilesでNextボタンをクリックしても画面が変わらないという問題(バグ?)があります。本当だったらSolution Configuration画面に切り替わるはずなのに、Nextボタンを押してもなにも変わりません。

Vivadoをインストールするときに、Devices for Custom Platformsの所で、全てのデバイス(SoCs、7 Series、UltraScale、UltraScale+にチェックを付けると何故か治りました。

既にインストール済みの場合には、スタートメニュー -> Xilinx Design Tools -> Add Design Tools or Devices 2018.2 から追加できます。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8