PYNQ-Z1全然触っていませんでした。。。
前にPYNQ-Z1を始めますという記事を書いたんですが、
それ以降全然PYNQを触っていませんでした。(時間がなかったというのはただの言い訳)
そうこうしているうちに転職したりして、手元にWindowsPCがなくなっちゃったりしたので、
心機一転Macで開発していくことを書くことにしました。
ただFPGAプログラミング大全 Xilinx編とか買ったりしてみたんですが、
開発ツールがWindowsかLinuxしかないというね。。。
これは後で何とかするとして、とりあえずPYNQをPYNQらしく使うことから始めようかと。
それではセットアップ。
またセットアップしちゃいます。Macで。
このページは押さえておいた方がいいですね。
PYNQ - Python productivity for Zynq - Home
ここのGetting Startedを読むととりあえずのことはできるようになっています。
イメージをダウンロード。
思った通りイメージが新しくなっていますね。2018/03/16時点で2018/2/21 Releaseでした。
1.2GBあるので、コーヒーでも飲みながら待ちます。
ファイル名はpynq_z1_v2.1.img.zipでした。
イメージをmicroSDカードに書き込む。
ダウンロードしたイメージをunzipして、microSDカードに書き込みます。
前も書きましたがmicroSDはFAT32でフォーマットする必要があります。手順は
- diskutilでmicroSDのフォーマットをする。ディスクユーティリティで見えてないパーティションもあるので要注意。
$ diskutil list # デバイスファイルを確認。external, physicalって書いてあると思う。
/dev/disk3 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.6 GB disk3
1: DOS_FAT_32 UNTITLED 104.9 MB disk3s1
2: Linux 15.5 GB disk3s2
# disk3s2がディスクユーティリティでは見えてなかった。
$ diskutil eraseDisk FAT32 PYNQ MBR /dev/disk3 # PYNQとか付けてもあとで上書きされる。
Started erase on disk3
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk3s1 as MS-DOS (FAT32) with name PYNQ
512 bytes per physical sector
/dev/rdisk3s1: 30518128 sectors in 1907383 FAT32 clusters (8192 bytes/cluster)
bps=512 spc=16 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=2 drv=0x80 bsec=30547966 bspf=14902 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk3
2. ddコマンドでイメージを書き込む。
$ diskutil unmountDisk /dev/disk3
Unmount of all volumes on disk3 was successful
$ sudo dd bs=1m if=pynq_z1_v2.1.img of=/dev/rdisk3 # disk3s1とかしてハマった。。。rについては後述。
Password:
4719+1 records in
4719+1 records out
4948463616 bytes transferred in 461.288801 secs (10727474 bytes/sec)
また時間がかかるのでドーナツでも食べながら待ちます。
ちなみにddする時に/dev/disk3s1を/dev/rdsik3にすると早くなるらしい。知らなかった。
以下はdisk3(rなし)でやった結果。
sudo dd bs=1m if=pynq_z1_v2.1.img of=/dev/disk3
4719+1 records in
4719+1 records out
4948463616 bytes transferred in 653.400986 secs (7573395 bytes/sec)
まぁ確かに早いといえば早い。。か。。。約30%減。
ボードのセットアップ。
ジャンパーピンとかなんとかのセットアップをします。
詳細はGetting Startedを参照。
ただし、この日のためにACアダプタを買ったので、
JP5/PowerはUSBではなくて、REGにしています。
PYNQで使えるACアダプタのコネクタ形状は、外径5.5mm/内径2.1mmみたいです。(これがわからなくて苦労した。)
xilinxのサイトには7V-15Vって書いてったので、12V1Aのものを買ってみました。
ACアダプター 12V 1A スイッチング式 最大出力12W 出力プラグ外径5.5mm(内径2.1mm)PSE取得品
今見たらセールで680円になってる・・・。800円で買ったのに。。。
あとはまずシリアル接続をしてみるので、Ethernetはあとでつなぎます。逆にUSBは繋いでおきます。電源はアダプタだけど。
電源を入れる。
ここまで準備出来たら電源ONです。
起動するとLD13が赤く光ったり、LD12が緑に光ったりします。
その後はLD4と5が光ったり、LD0-3がチカチカしたりして、LD0-3が点灯したら起動OKです。
シリアル接続で見てみる。
macでserial接続する時はscreenコマンドを使います。
Getting StartedのOpening a USB Serial Terminalに色々書いてあります。
$ ls -1 /dev/tty.usbserial*
/dev/tty.usbserial-00001214A
/dev/tty.usbserial-00001214B # こちらを使います。名前は環境により異なります
$ screen /dev/tty.usbserial-00001214B 115200 # ボーレートは115200です。
# 一回enterを押すとプロンプトが返ってきます。
xilinx@pynq:~$
screenコマンドを終了するときは、control + a -> k
のあと、
Really kill this window [y/n]
と聞かれるのでy
で答えます。
あとこの状態でsudo reboot
をすると起動状況が見えます。デフォルトのパスワードはそのままxilinx
です。
前はあったupdate_pynq.sh
がなくなっています。。。
一体どうやってupdateすれば。。。
ネットワークに繋ぐ。
ネットワークに繋がないとJupyter Notebookに繋がらないので、ethernetに繋ぎます。
なぜこれの前にシリアル接続をするかというと、DHCPでどのIPが取ったのかわからないからです。
ethernetを繋いだらifconfig
を実行して、IPアドレスを確認してください。
そうすれば、PYNQにどのIPアドレスが割り振られたかわかると思います。
Jupyter Notebookにアクセスする。
ブラウザでhttp://<さっき調べたIPアドレス>:9090
にアクセスすると、
ログイン画面が表示されます。デフォルトのパスワードは先程同様xilinx
です。
上位階層にWelcome to Pynq.ipynb
なるものがあって、
まずはgetting_startedから始めたら良いのかなと思うので、今度はそれをやっていこうかと思います。