見出し画像

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-Z1PYNQ-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