PYNQ-Z1: イメージファイルの書き込みから起動まで
microSDカードにイメージファイルを書き込む
公式サイトから、約1706MiBあるPYNQ-Z1用のイメージファイルpynq_z1_v2.6.0.zipをダウンロードした。ダウンロードしたzipファイルを解凍すると、5858MiBのpynq_z1_v2.6.0.imgができる。ちなみに、それぞれのSHA256は、以下の通り。
pynq_z1_v2.6.0.zip: 6A07DBB755E207370D1E700F5927A663B2315F43A8
47061DAAEB76B3226A6D0E
pynq_z1_v2.6.0.img: 702A43F3436535B9EC1376BDBA5A7FF86D921C3401
0BE55B84567DC2CEAC3B2D
ところで、公式サイトでは、PYNQ-Z2が「推奨ボード」になっていた。以前は、PYNQ-Z1だったと思う。販売先のサイトによれば、PYNQ-Z1とPYNQ-Z2の違いは、ほとんどなさそうだ。SoCは、どちらもZYNQ XC7Z020-1CLG400C、メモリもDDR3の512MB、USBも2.0、イーサネットもGigabit、スイッチとボタンも同数。販売店がまとめた比較表によれば、Audioのチップ、Raspberry Piのheaderの有無、ボードのサイズが違う。2021年3月8日現在、秋月電子では、Z1の扱いはあるが、Z2はないようだ。
Class 10の64GBのmicroSDカードを用意した。これは別の機器で使っていたmicroSDカードの再利用品で、無名メーカの品(Amazonを検索してもこのメーカのSDカードはでてこない)。
念のために、SD AssociationのSD Memory Card Formatter を使ってフォーマットした。64GBの場合、ファイルシステムはexFATになり、32GBの場合はFAT32になるらしい。Etcherをインストールして、イメージファイルを書き込んだ。書き込みと検証を合わせて5分くらいだった。これで、microSDカードの準備は完了。
後で気が付いたが、公式サイトに、SDカードへの書き込みの情報があった。
PYNQ-Z1にアクセスする
次は、PYNQ-Z1を設定する。公式ページに従って、JP4/BootジャンパをSDの方に刺す。ACアダプタで給電するので、公式ページにしたがって、JP5/PowerジャンパをREGの方に刺す。micorSDカードやケーブルを刺して、電源をONにした。
電源投入後、すぐに赤色LEDが点灯し、約10秒後にイーサケーブル近くの緑色LEDが点滅を始める。約1分10秒後に、青色LEDが一瞬点灯して消灯しす、1分20秒後には、4つの緑色LED点灯する。
※ その後、まれに、起動に失敗することがあり、5分経っても青色LEDが点灯しないことがあった。
IPアドレスは、DHCPで取得するので、DHCPサーバのログをみて、割り振られたIPアドレスを調べた。。そのIPアドレスにブラウザでアクセスし、パスワードはxilinxでログインする。
公式サイトにしたがって、ホスト名を変更した。こちらの公式サイトとは、スクリプト名が異なる。そのスクリプトがなかったので、古いイメージファイル用かもしれない。
IPアドレスを固定にしたいので、/etc/network/interfaces.d/eth0を以下のように書き換えた。
auto eth0
iface eth0 inet static
address 192.168.NN.NN
netmask 255.255.255.0
gateway 192.168.NN.NN
DNSサーバの設定は、/etc/systemd/resolved.confに、空白で区切ってDNSサーバのIPアドレスを書く。
[Resolve]
DNS=NN.NN.NN.NN MM.MM.MM.MM
時刻がUTCになっていたので、JSTに変更した。
root@pynq:/home/xilinx# date
Tue Mar 9 06:58:30 UTC 2021
root@pynq:/home/xilinx# timedatectl
Local time: Tue 2021-03-09 06:58:37 UTC
Universal time: Tue 2021-03-09 06:58:37 UTC
RTC time: n/a
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: no
systemd-timesyncd.service active: yes
RTC in local TZ: no
root@pynq:/home/xilinx# timedatectl set-timezone Asia/Tokyo
root@pynq:/home/xilinx# timedatectl
Local time: Tue 2021-03-09 15:59:05 JST
Universal time: Tue 2021-03-09 06:59:05 UTC
RTC time: n/a
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
systemd-timesyncd.service active: yes
RTC in local TZ: no
時刻の同期先のNTPサーバは、/etc/systemd/timesyncd.confにIPアドレスを書く。
[Time]
NTP=NN.NN.NN.NN
なお、イメージファイルv2.6はUbuntu 18.04から作られているので、設定の仕方は、Ubuntu 18.04の方法が参考になる。
root@pynq:/home/xilinx# cat /etc/lsb-release
DISTRIB_ID=pynqlinux
DISTRIB_RELEASE=v2.6
DISTRIB_CODENAME=WFH
DISTRIB_DESCRIPTION="PYNQ Linux, based on Ubuntu 18.04"
root@pynq:/home/xilinx# cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 0 (v7l)
BogoMIPS : 650.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0
processor : 1
model name : ARMv7 Processor rev 0 (v7l)
BogoMIPS : 650.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0
Hardware : Xilinx Zynq Platform
Revision : 0003
Serial : 0000000000000000
root@pynq:/home/xilinx# uname -a
Linux pynq 5.4.0-xilinx-v2020.1 #1 SMP PREEMPT Mon Oct 19 19:20:16 UTC 2020 armv7l armv7l armv7l GNU/Linux
root@pynq:/home/xilinx# gcc --version
gcc (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
root@pynq:/home/xilinx# g++ --version
g++ (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
root@pynq:/etc# python --version
Python 2.7.15rc1
root@pynq:/etc# python3 --version
Python 3.6.5