2021年4月6日火曜日

ZYBO Ether port  多分  020

 https://qiita.com/iwatake2222/items/ac489acaca1ab54d7ce8   参照


この記事の内容を3分で見る ( https://youtu.be/n2yYwEIjD2Y の前半)

ZYBO (Zynq) LAN(Ethernet 0)を使う (PetaLinux)  020多分・・

ZYBOでLAN(Ethernet 0)を使い、ネットワーク接続するための方法です。数時間ハマり、ネットの情報も探しまくってようやくできるようになりました。問題はVivadoでのハードウェア設定でした。(デバイスツリー(dtsi)の編集は不要)

環境

  • 開発用PC: Windows 10 64-bit
    • Vivado 2017.4 WebPACKライセンス
    • Xilinx SDK 2017.4 <- 今回は使わない
  • 開発用PC (Linux): Ubuntu 16.04 本家 (日本語版じゃない) (on VirtualBox 5.2.4)
    • PetaLinux 2017.4
  • ターゲットボード: ZYBO (Z7-20)

Vivadoでハードウェアを作る

Vivadoプロジェクトを作ります。ボードにはZ7-20を指定して、IP Integrator上でPSのみを配置します。こちらの記事の前半を参考にしてください。

image.png

PSのPeripheral I/O Pinsの設定

これが重要です

下記はZybo Z7 Board Reference Manual内に記載されているEthernet PHYの信号接続図です。これを見ると、MDIOはMIO52とMIO53に接続されています。

image.png

プロジェクトの初期状態だと、Ethernet 0のMDIOはEMIOに接続されているので、それをMIO52とMIO53に変えます。IP Integrator上でPSブロックをダブルクリックして、Peripheral I/O Pinsタブを開き、以下のようにMDIOを選択します。

image.png

https://forum.digilentinc.com/topic/4975-solved-ethernet-phy-on-zybo-board-using-vivado-20172/
https://forum.digilentinc.com/topic/4964-zybo-z7-20s-embed-linux-could-not-connect-ethernet-is-there-a-bug-in-the-board-file-of-zybo-z7-20/

2017/10/10に中の人っぽい人が、「ボードファイル作っているエンジニアにこの問題を知らせておくよ」って言っているので、おそらくこれはDigilentのボードファイルのバグ。まだ治っていないもよう。

PetaLinuxでLinuxイメージを作る

PetaLinuxツールでLinuxイメージを作ります。Vivadoで作成したhdf(project_1.sdkフォルダ)をUbuntu側にコピーして、以下コマンドを発行します。こちらを参考にしてください。

開発PC(Linux)のターミナル
cd ~/work/peta
petalinux-create --type project --template zynq --name SimplePS
cd SimplePS/
petalinux-config --get-hw-description=../project_1.sdk
petalinux-build
petalinux-package --boot --force --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/design_1_wrapper.bit --u-boot

カーネルコンフィグやデバイスツリー(dtsi)を変更する必要はありません。

確認する

出来上がったBOOT.binとimage.ubをSDカードにコピーして起動します。なお、ZYBOボードのLANポートにはLANケーブルを刺して、家庭内のルータに接続します(DHCP有効)。

起動後、ifconfigで確認すると、ちゃんとネットワークに接続されて、IPアドレスも取得出来ています。

Zyboのターミナル
oot@Eth:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0A:35:00:1E:53
          inet addr:192.168.1.87  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20a:35ff:fe00:1e53%lo/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1076 (1.0 KiB)  TX bytes:1709 (1.6 KiB)
          Interrupt:27 Base address:0xb000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1%1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

同じルータに接続されているWindows PCからpingを打ってみます。ちゃんと通信出来ていることが確認できます。

PCのコマンドプロンプト
C:\Users\tak>ping 192.168.1.87

192.168.1.87 に ping を送信しています 32 バイトのデータ:
192.168.1.87 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.1.87 からの応答: バイト数 =32 時間 =1ms TTL=64

さらに、Googleさんに接続してみます。ちゃんとコンテンツを取得出来ています。

Zyboのターミナル
root@Eth:~# wget http://www.google.co.jp/
Connecting to www.google.co.jp (216.58.196.227:80)

index.html           100% |*******************************| 11289   0:00:00 ETA
root@Eth:~# more index.html
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja"><head><meta content="


0 件のコメント:

コメントを投稿