最初、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
Create Project - blinkyとする
RTLプロジェクト
Default PartはBoardsの中のZybo
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につなぐ
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.
bitstreamを生成する前に、最後のステップとしてHDL Wrapperを作る
design_1で、右ボタン→Create HDL Wrapper
Flow NavigatorのPROGRAM AND DEBUGで、Generate Bitstream
File →Export→Export Hardware
Include bitstreamにチェックを入れてOK
successfully completedのフォームでNextステップはないので、Cancel
Tools→Launch Vitis
workspaceは~/work/Vivado/workspace
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
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)
ひさしぶりに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に何も映らないのでどうしようもない。
メモ:
上記のチュートリアルでプログラムするときは、Programming Mode Jumperを、JTAGにする。LinuxをMicroSDから動かすときは、microSDにする
チュートリアルでは、制約ファイル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