ZYBO/vivadoメモ

2020/6/1 Vivado 2019.2をUbuntu 18.04で動かす

  • 最初、Vivado_labをいうのを間違ってインストールした。WebPackとは全く別物。WebPackも、Vivado Design Suite - HLx Editions - 2019.2 をインストールし、WebPack用ライセンスを取る。

  • 2019.2 Update1というのがあるがこれは単体でupdateできるものではなく、2019.2がインストールされた状態で重ね書きするもの。

  • 2019.2からはSDKがなくなり、VITISにかわった。起動方法は、VivadoのTools→Launch Vitis

  • Ubuntuへのインストールは以下の記事が参考になった:

https://gihyo.jp/admin/serial/01/ubuntu-recipe/0475?page=2

  • USBケーブルドライバをインストールする必要がある。

cd Xilinx/Vivado/2019.2/data/xicom/cable_drivers/lin64/install_script/install_drivers/

./install_drivers

  1. Create Project - blinkyとする

    • RTLプロジェクト

    • Default PartはBoardsの中のZybo

  2. IP INTEGRATORでCreate Block Design - design_1のまま

    • constraintsは設定していない

    • design_1で、BoardのGPIOの4 Buttonsで、右ボタン→Connect Board Component

      • AXI GPIOのGPIOにつなぐ

    • 同様に、4 LEDsをConnect to existining IPのaxi_gpio_0のGPIO2につなぐ

  3. Diagramで、Add IP - ZYNQ7 Processing Systemを選びENTER

    • Run Block Automationで、Apply Board Presetにチェック入ってるのを確認しOK

    • Validate Designで以下のエラー

      • [BD 41-758] The following clock pins are not connected to a valid clock source:

      • /axi_gpio_0/s_axi_aclk

      • /processing_system7_0/M_AXI_GP0_ACLK

    • GPIO peripheralを Zynq block につなぐためにRun Connection Automation

      • なぜだかわからないが、Processor System Reset(rst_ps7_0_100M)とAXI Interconnect(ps7_axi_perip)のブロックが現れない。

    • 以下のwarningが出た:

      • [PSU-1] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 has negative value -0.073 . PS DDR interfaces might fail when entering negative DQS skew values.

      • [PSU-2] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_1 has negative value -0.034 . PS DDR interfaces might fail when entering negative DQS skew values.

      • [PSU-3] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_2 has negative value -0.03 . PS DDR interfaces might fail when entering negative DQS skew values.

      • [PSU-4] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_3 has negative value -0.082 . PS DDR interfaces might fail when entering negative DQS skew values.

  4. bitstreamを生成する前に、最後のステップとしてHDL Wrapperを作る

    • design_1で、右ボタン→Create HDL Wrapper

  5. Flow NavigatorのPROGRAM AND DEBUGで、Generate Bitstream

  6. File →Export→Export Hardware

    • Include bitstreamにチェックを入れてOK

    • successfully completedのフォームでNextステップはないので、Cancel

  7. Tools→Launch Vitis

    • workspaceは~/work/Vivado/workspace

  8. Create New Application Project ー blinkyとした

    • Create a new platform from hardware (XSA)で、Create Platform from XSAとして~/work/Vivado/blinky/design_1_wrapper.xsaを選ぶと、次回からはSelect a platform from repositoryから選べる

    • CPUは、ps7_coretexa9_0、OSはstandalone、LanguageはC

    • Templateは、Empty Application

  9. srcの下に、main.cを作り、以下のように#include "xgpio.h"を入れるのがミソ

//send data over UART

#include "xil_printf.h"

//information about AXI peripherals

#include "xparameters.h"

#include "xgpio.h"

int main()

{

XGpio gpio;

u32 btn, led;


XGpio_Initialize(&gpio, 0);


XGpio_SetDataDirection(&gpio, 2, 0x00000000); // set LED GPIO channel tristates to All Output

XGpio_SetDataDirection(&gpio, 1, 0xFFFFFFFF); // set BTN GPIO channel tristates to All Input


while (1)

{

btn = XGpio_DiscreteRead(&gpio, 1);


if (btn != 0) // turn all LEDs on when any button is pressed

led = 0xFFFFFFFF;

else

led = 0x00000000;


XGpio_DiscreteWrite(&gpio, 2, led);


xil_printf("\rbutton state: %08x", btn);

}

}

Saveすること

10. Buildするとelfができる

11. Xilinx→Program FPGA

12. blinkyプロジェクトで、右ボタン→Run As→Launch on Hardware (Single Application Debug)


2020-5-31 ひさしぶりのZybo

ひさしぶりにZyboに触った。かつて何をやったか全く思い出せない。

Zyboは新製品が出て、Zybo Z7-20 用の以下のチュートリアル

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

の2回目:Hello Worldプロジェクトをやってみたが、USB( USB-JTAG-UART por t)につないだputtyコンソールに何もでない。壊れているのかと不安になる。ちなみに、VGA,HDMIにカラーパターンがでないので壊れたのかも知れない。

結局、DIGILENTの資料で動作確認できた:

Getting Started with Vivado IP Integrator

digilentのdocumentのルートは:https://reference.digilentinc.com/reference/programmable-logic/zybo/start?redirect=1

ZYBOのReferenceマニュアル: https://reference.digilentinc.com/reference/programmable-logic/zybo/reference-manual?_ga=2.221121304.1080043269.1590854798-1353953442.1590675874

ZYBOで動くLinuxはPetalinuxだが、自分が焼いたMicroSDは何だった覚えてない。

USB( USB-JTAG-UART port)につないだputtyコンソールで、フローコントロールをなしにしたらブートメッセージを見ることができるようになった。USBにつないだキーボードやマウスは認識されたようだが、VGA,HDMIに何も映らないのでどうしようもない。

メモ:

  1. 上記のチュートリアルでプログラムするときは、Programming Mode Jumperを、JTAGにする。LinuxをMicroSDから動かすときは、microSDにする

  2. チュートリアルでは、制約ファイルxdcは設定する必要がなかった

Debianのインストール

marseeさんの書いてる通り、MicroSDのBOOTのパーティション(fat32)に作り直したdevicetree.dtbと

uEnv.txt(記述の意味はわからない)をおけば、2ndパーティション(ext4)のroot file systemから起動するようになる。

debianは、armのサイトから以下を落とした。

debian-wheezy-7.5-armhf.com-20140603.tar.xz

最初 debian-7.5-bar-armhf-2014-07-07.tar.xzで頑張ったがネットワークの設定がうまくいかず(ifupでeth0が動くのに、/etc/init.d/network/startだとダメ)give up

ただし、Linux-Digilent-Devで作ったカーネル(uImage)だと、操作の途中(たとえば apt-get update)でカーネルがcrashする

linaro (linaro-utopic-developer-20141212-693.tar.gz)でも同じだった。

linux-xlnx.gitからカーネルを作り直したところ、linaroは、skbuff: skb_over_panic:text:というエラーで止まるが、Debian

だとなんとか動く。ただし、キーボード入力途中でストンと落ちる ので、同じ問題かも しれない。

(usb-fdtiでつなぐコンソールが、marseeさんと同様Debianだとsshd起動まで表示されたあと入力可にならない。linaroは問題ない)

swapは、http://marsee101.blog19.fc2.com/blog-entry-2820.html に書いてる方法でできた。

mkdir /var/cache/swap

dd if=/dev/zero of=/var/cache/swap/swapfile bs=1M count=512

mkswap /var/cache/swap/swapfile

/etc/fstabに以下を記述

/var/cache/swap/swapfile none swap sw 0 0

swapon -a

busyboxからMicroSD 2nd PartitionのDebian(Ubuntu)に切り替える

参照: https://blog.digilentinc.com/index.php/zybo-embedded-linux-hands-on-tutorial/

mount /dev/mmcblk0p2 /mnt

mount –bind /dev/ /mnt/dev

mount –bind /proc /mnt/proc

mount –bind /dev/pts /mnt/dev/pts

mount –bind /sys /mnt/sys

chroot /mnt

I could then take advantage of all the debian vast repositories.

Going back to Digilent’s busybox You do following:

umount /mnt/sys

umount /mnt/proc

umount /mnt/dev/pts

umount /mnt/dev

umount /mnt

exit

busyboxでネットの設定

デフォルトでは、なぜか192.168.1.10

ifconfig eth0 192.168.1 up

route add default gw 192.168.1.1 eth0

Then you have to specify nameserver by creating file

/etc/resolv.conf containing:

nameserver 192.168.1.1

macでusb-FDTIでコンソールに接続する方法

1。MAC OS X FTDI driverをインストール

2。terminalを開く

3。ls /dev/cu.* で シリアル デバイス をしらべる

4。私の場合、screen /dev/cu.usbserial-002012FAB 115200 8N1

により接続できる

u-bootをmakeする時に /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

→ Linux(64bit)で発生しているので、yum install glibc.i686

ramdisk → Zedboardのレファランスデザイン から取ってきたものを添付に置いた

SDカードのマウント → mount /dev/mmcblk0p1 /mnt

SDカード(8G)のフォーマット 参照:http://marsee101.blog19.fc2.com/blog-entry-2818.html

→ 64MByteをFAT32(typeはb), 残りをext4; FATをboot可(aコマンド)にするのを忘れない

mkfs.msdos -n ZYBO_BOOT /dev/sdb1

mkfs.ext4 -L ROOT_FS /dev/sdb2

ZYBOでなく、BASYS3をUbuntu18.04で使おうとしたとき、USBケーブルが認識されない

以下を実行したらprogramできるようになった

cd /opt/Xilinx/Vivado/2018.3/data/xicom/cable_drivers/lin64/install_script/install_drivers/

./install_digilent.sh

以下のように、52-xlinx...がインストールされた

/etc/udev/rules.d:

total used in directory 76 available 61735376

drwxr-xr-x 2 root root 4096 4月 7 19:14 .

drwxr-xr-x 4 root root 4096 3月 23 12:48 ..

-rw-r--r-- 1 root root 3797 4月 7 19:11 52-xilinx-digilent-usb.rules

-rw-r--r-- 1 root root 58549 2月 20 2018 70-snap.core.rules

-rwxr-xr-x 1 root root 294 8月 30 2018 79-udev-epson.rules

マニュアルでセットするには以下のコマンドを実行するみたい

udevadm control --reload-rules