2021年4月15日木曜日

Raspberyy pi bitrate 測定 iperf3

 

参照:https://udon.little-pear.net/raspberry-pi-zero-network-performance/


iPerf3を用いてRaspberry Pi Zeroのネットワーク性能を計測してみました。計測のホストはWindows上のMsys、Raspberry Pi Zero側にはRasbianがインストールされています

ホスト側の準備

Msys2上で動作するiPerfをインストールします

% pacman -S iperf3

Raspberry Pi Zero側の準備

Raspberry Pi ZeroにもiPerfをインストールします

% ssh pi@raspberrypi.local
% sudo apt install iperf3

TCP計測

Pi Zero側でiperfをサーバモードで起動します。

% iperf3 -s -f K

ホスト側 (Msys2)からクライアントモードで接続して計測を開始します

% iperf3 -c raspberrypi.local -f K -4

自分の環境ではraspberrypi.localでは接続はされますが、その後計測が開始されなかったためIPアドレスで指定しました (エラーメッセージ … iperf3: error - unable to connect stream: Name or service not known)

% iperf3 -c 192.168.0.123 -f K -4

結果は以下のようになりました。値自体は各自のWiFi環境に大きく左右されるかと思います

% iperf3 -c 192.168.0.123 -f K -4
Connecting to host 192.168.0.123, port 5201
[  5] local 192.168.0.117 port 54049 connected to 192.168.0.123 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  3.75 MBytes  3839 KBytes/sec
[  5]   1.00-2.00   sec  3.75 MBytes  3840 KBytes/sec
[  5]   2.00-3.00   sec  4.12 MBytes  4222 KBytes/sec
[  5]   3.00-4.00   sec  3.75 MBytes  3842 KBytes/sec
[  5]   4.00-5.00   sec  3.12 MBytes  3199 KBytes/sec
[  5]   5.00-6.00   sec  2.75 MBytes  2816 KBytes/sec
[  5]   6.00-7.00   sec  2.50 MBytes  2560 KBytes/sec
[  5]   7.00-8.00   sec  4.00 MBytes  4097 KBytes/sec
[  5]   8.00-9.00   sec  2.50 MBytes  2558 KBytes/sec
[  5]   9.00-10.00  sec  3.25 MBytes  3330 KBytes/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  33.5 MBytes  3430 KBytes/sec                  sender
[  5]   0.00-10.04  sec  33.1 MBytes  3376 KBytes/sec                  receiver
 
iperf Done.

UDP計測

UDPの結果は以下の通り

% iperf3 -c 192.168.0.123 -f K -4 -u -b 30M
Connecting to host 192.168.0.123, port 5201
[  5] local 192.168.0.117 port 64677 connected to 192.168.0.123 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec  3.58 MBytes  3661 KBytes/sec  2568
[  5]   1.00-2.00   sec  3.57 MBytes  3660 KBytes/sec  2567
[  5]   2.00-3.00   sec  3.58 MBytes  3661 KBytes/sec  2568
[  5]   3.00-4.00   sec  3.58 MBytes  3667 KBytes/sec  2571
[  5]   4.00-5.00   sec  3.57 MBytes  3660 KBytes/sec  2567
[  5]   5.00-6.00   sec  3.57 MBytes  3660 KBytes/sec  2567
[  5]   6.00-7.00   sec  3.58 MBytes  3665 KBytes/sec  2570
[  5]   7.00-8.00   sec  3.58 MBytes  3662 KBytes/sec  2568
[  5]   8.00-9.00   sec  3.58 MBytes  3664 KBytes/sec  2570
[  5]   9.00-10.00  sec  3.58 MBytes  3660 KBytes/sec  2568
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  35.8 MBytes  3662 KBytes/sec  0.000 ms  0/25684 (0%)  sender
[  5]   0.00-10.07  sec  35.8 MBytes  3636 KBytes/sec  0.427 ms  1/25683 (0.0039%)  receiver
 
iperf Done.

UDPの場合はターゲットビットレートを指定する必要があります。自分の環境では上記の通り、30Mbps程度でロストが発生しだすという感じでした。

2021年4月13日火曜日

samba Raspberry pi

 


Raspberry Piの共有フォルダにWindowsから接続(samba install)

Raspberry PiのPublicフォルダを共有にする

sambaをインストール

pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get install samba

samba設定

pi@raspberrypi:~ $ sudo vi /etc/samba/smb.conf

ファイルの最後に以下を追記

/etc/samba/smb.conf
[raspberrypi]
   comment = Raspberry Pi
   path = /home/pi/Public
   public = yes
   guest ok = yes
   read only = no
   browsable = yes
   force user = pi
   strict sync = yes

samba 再起動

pi@raspberrypi:~ $ sudo service smbd restart

IPアドレス確認

pi@raspberrypi:~ $ ifconfig
(省略)
inet 192.168.1.74  netmask 255.255.255.0  broadcast 192.168.1.255
(省略)

Windowsから接続

IPアドレスでアクセス。

Raspberry Piのデフォルト設定なら

  • User name : pi
  • Password : raspberry

image.png

image.png




Raspberry PIにSambaをインストール

1.Sambaとは

Sambaとは、UNIX系OSとWindows(Windows NT、Windows 2000系)との間で、ネットワーク上のファイルやプリンタの共有などを実現するソフトウェアです。

2.目的

Windows からアクセス可能なファイルサーバーとします。

3.インストール

①コマンド実行

pi@raspberrypi:~$ sudo apt-get install -y samba
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libmicrodns0
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  attr ibverbs-providers libboost-regex1.67.0 libcephfs2 libgfapi0 libgfrpc0 libgfxdr0 libglusterfs0 libibverbs1 librados2 python-dnspython python-gpg
  python-ldb python-samba python-tdb samba-common samba-common-bin samba-dsdb-modules samba-vfs-modules tdb-tools
提案パッケージ:
  bind9 bind9utils ctdb ldb-tools ntp | chrony smbldap-tools ufw winbind heimdal-clients
以下のパッケージが新たにインストールされます:
  attr ibverbs-providers libboost-regex1.67.0 libcephfs2 libgfapi0 libgfrpc0 libgfxdr0 libglusterfs0 libibverbs1 librados2 python-dnspython python-gpg
  python-ldb python-samba python-tdb samba samba-common samba-common-bin samba-dsdb-modules samba-vfs-modules tdb-tools
アップグレード: 0 個、新規インストール: 21 個、削除: 0 個、保留: 5 個。
18.2 MB のアーカイブを取得する必要があります。
この操作後に追加で 62.7 MB のディスク容量が消費されます。
取得:1 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf python-dnspython all 1.16.0-1 [90.1 kB]
取得:2 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf python-ldb armhf 2:1.5.1+really1.4.6-3 [33.1 kB]
取得:3 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf python-tdb armhf 1.3.16-2+b1 [16.0 kB]
取得:4 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf python-samba armhf 2:4.9.5+dfsg-5+deb10u1+rpi1 [1,794 kB]
取得:5 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf samba-common all 2:4.9.5+dfsg-5+deb10u1+rpi1 [170 kB]                         
取得:6 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf samba-common-bin armhf 2:4.9.5+dfsg-5+deb10u1+rpi1 [570 kB]                   
取得:7 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf tdb-tools armhf 1.3.16-2+b1 [26.9 kB]                                         
取得:8 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf samba armhf 2:4.9.5+dfsg-5+deb10u1+rpi1 [1,010 kB]                            
取得:9 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf attr armhf 1:2.4.48-4 [39.4 kB]                                               
取得:10 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf libibverbs1 armhf 22.1-1 [43.5 kB]                                           
取得:11 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf ibverbs-providers armhf 22.1-1 [20.2 kB]                                     
取得:12 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf libboost-regex1.67.0 armhf 1.67.0-13+deb10u1 [430 kB]                        
取得:13 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf librados2 armhf 12.2.11+dfsg1-2.1+rpi1 [2,337 kB]                            
取得:14 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf libcephfs2 armhf 12.2.11+dfsg1-2.1+rpi1 [380 kB]                             
取得:15 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf libglusterfs0 armhf 5.5-3 [2,724 kB]                                         
取得:16 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf libgfxdr0 armhf 5.5-3 [2,488 kB]                                             
取得:17 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf libgfrpc0 armhf 5.5-3 [2,506 kB]                                             
取得:18 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf libgfapi0 armhf 5.5-3 [2,524 kB]                                             
取得:19 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf python-gpg armhf 1.12.0-6 [275 kB]                                           
取得:20 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf samba-dsdb-modules armhf 2:4.9.5+dfsg-5+deb10u1+rpi1 [345 kB]                
取得:21 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian buster/main armhf samba-vfs-modules armhf 2:4.9.5+dfsg-5+deb10u1+rpi1 [400 kB]   
18.2 MB を 1分 56秒 で取得しました (157 kB/s)                                                                                                                
パッケージを事前設定しています ...
以前に未選択のパッケージ python-dnspython を選択しています。
(データベースを読み込んでいます ... 現在 153927 個のファイルとディレクトリがインストールされています。)
.../00-python-dnspython_1.16.0-1_all.deb を展開する準備をしています ...
python-dnspython (1.16.0-1) を展開しています...
以前に未選択のパッケージ python-ldb を選択しています。
.../01-python-ldb_2%3a1.5.1+really1.4.6-3_armhf.deb を展開する準備をしています ...
python-ldb (2:1.5.1+really1.4.6-3) を展開しています...
以前に未選択のパッケージ python-tdb を選択しています。
.../02-python-tdb_1.3.16-2+b1_armhf.deb を展開する準備をしています ...
python-tdb (1.3.16-2+b1) を展開しています...
以前に未選択のパッケージ python-samba を選択しています。
.../03-python-samba_2%3a4.9.5+dfsg-5+deb10u1+rpi1_armhf.deb を展開する準備をしています ...
python-samba (2:4.9.5+dfsg-5+deb10u1+rpi1) を展開しています...
以前に未選択のパッケージ samba-common を選択しています。
.../04-samba-common_2%3a4.9.5+dfsg-5+deb10u1+rpi1_all.deb を展開する準備をしています ...
samba-common (2:4.9.5+dfsg-5+deb10u1+rpi1) を展開しています...
以前に未選択のパッケージ samba-common-bin を選択しています。
.../05-samba-common-bin_2%3a4.9.5+dfsg-5+deb10u1+rpi1_armhf.deb を展開する準備をしています ...
samba-common-bin (2:4.9.5+dfsg-5+deb10u1+rpi1) を展開しています...
以前に未選択のパッケージ tdb-tools を選択しています。
.../06-tdb-tools_1.3.16-2+b1_armhf.deb を展開する準備をしています ...
tdb-tools (1.3.16-2+b1) を展開しています...
以前に未選択のパッケージ samba を選択しています。
.../07-samba_2%3a4.9.5+dfsg-5+deb10u1+rpi1_armhf.deb を展開する準備をしています ...
samba (2:4.9.5+dfsg-5+deb10u1+rpi1) を展開しています...
以前に未選択のパッケージ attr を選択しています。
.../08-attr_1%3a2.4.48-4_armhf.deb を展開する準備をしています ...
attr (1:2.4.48-4) を展開しています...
以前に未選択のパッケージ libibverbs1:armhf を選択しています。
.../09-libibverbs1_22.1-1_armhf.deb を展開する準備をしています ...
libibverbs1:armhf (22.1-1) を展開しています...
以前に未選択のパッケージ ibverbs-providers:armhf を選択しています。
.../10-ibverbs-providers_22.1-1_armhf.deb を展開する準備をしています ...
ibverbs-providers:armhf (22.1-1) を展開しています...
以前に未選択のパッケージ libboost-regex1.67.0:armhf を選択しています。
.../11-libboost-regex1.67.0_1.67.0-13+deb10u1_armhf.deb を展開する準備をしています ...
libboost-regex1.67.0:armhf (1.67.0-13+deb10u1) を展開しています...
以前に未選択のパッケージ librados2:armhf を選択しています。
.../12-librados2_12.2.11+dfsg1-2.1+rpi1_armhf.deb を展開する準備をしています ...
librados2:armhf (12.2.11+dfsg1-2.1+rpi1) を展開しています...
以前に未選択のパッケージ libcephfs2:armhf を選択しています。
.../13-libcephfs2_12.2.11+dfsg1-2.1+rpi1_armhf.deb を展開する準備をしています ...
libcephfs2:armhf (12.2.11+dfsg1-2.1+rpi1) を展開しています...
以前に未選択のパッケージ libglusterfs0:armhf を選択しています。
.../14-libglusterfs0_5.5-3_armhf.deb を展開する準備をしています ...
libglusterfs0:armhf (5.5-3) を展開しています...
以前に未選択のパッケージ libgfxdr0:armhf を選択しています。
.../15-libgfxdr0_5.5-3_armhf.deb を展開する準備をしています ...
libgfxdr0:armhf (5.5-3) を展開しています...
以前に未選択のパッケージ libgfrpc0:armhf を選択しています。
.../16-libgfrpc0_5.5-3_armhf.deb を展開する準備をしています ...
libgfrpc0:armhf (5.5-3) を展開しています...
以前に未選択のパッケージ libgfapi0:armhf を選択しています。
.../17-libgfapi0_5.5-3_armhf.deb を展開する準備をしています ...
libgfapi0:armhf (5.5-3) を展開しています...
以前に未選択のパッケージ python-gpg を選択しています。
.../18-python-gpg_1.12.0-6_armhf.deb を展開する準備をしています ...
python-gpg (1.12.0-6) を展開しています...
以前に未選択のパッケージ samba-dsdb-modules:armhf を選択しています。
.../19-samba-dsdb-modules_2%3a4.9.5+dfsg-5+deb10u1+rpi1_armhf.deb を展開する準備をしています ...
samba-dsdb-modules:armhf (2:4.9.5+dfsg-5+deb10u1+rpi1) を展開しています...
以前に未選択のパッケージ samba-vfs-modules:armhf を選択しています。
.../20-samba-vfs-modules_2%3a4.9.5+dfsg-5+deb10u1+rpi1_armhf.deb を展開する準備をしています ...
samba-vfs-modules:armhf (2:4.9.5+dfsg-5+deb10u1+rpi1) を展開しています...
libibverbs1:armhf (22.1-1) を設定しています ...
libboost-regex1.67.0:armhf (1.67.0-13+deb10u1) を設定しています ...
ibverbs-providers:armhf (22.1-1) を設定しています ...
attr (1:2.4.48-4) を設定しています ...
samba-vfs-modules:armhf (2:4.9.5+dfsg-5+deb10u1+rpi1) を設定しています ...
samba-common (2:4.9.5+dfsg-5+deb10u1+rpi1) を設定しています ...
Creating config file /etc/samba/smb.conf with new version
libglusterfs0:armhf (5.5-3) を設定しています ...
python-ldb (2:1.5.1+really1.4.6-3) を設定しています ...
tdb-tools (1.3.16-2+b1) を設定しています ...
update-alternatives: /usr/bin/tdbbackup (tdbbackup) を提供するために自動モードで /usr/bin/tdbbackup.tdbtools を使います
python-tdb (1.3.16-2+b1) を設定しています ...
samba-dsdb-modules:armhf (2:4.9.5+dfsg-5+deb10u1+rpi1) を設定しています ...
python-dnspython (1.16.0-1) を設定しています ...
python-gpg (1.12.0-6) を設定しています ...
libgfxdr0:armhf (5.5-3) を設定しています ...
librados2:armhf (12.2.11+dfsg1-2.1+rpi1) を設定しています ...
python-samba (2:4.9.5+dfsg-5+deb10u1+rpi1) を設定しています ...
libcephfs2:armhf (12.2.11+dfsg1-2.1+rpi1) を設定しています ...
samba-common-bin (2:4.9.5+dfsg-5+deb10u1+rpi1) を設定しています ...
Checking smb.conf with testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

Done
libgfrpc0:armhf (5.5-3) を設定しています ...
samba (2:4.9.5+dfsg-5+deb10u1+rpi1) を設定しています ...
グループ sambashare (グループ ID 116) を追加しています...
完了。
Samba is not being run as an AD Domain Controller: Masking samba-ad-dc.service
Please ignore the following error about deb-systemd-helper not finding those services.
(samba-ad-dc.service masked)
Created symlink /etc/systemd/system/multi-user.target.wants/nmbd.service → /lib/systemd/system/nmbd.service.
Failed to preset unit: Unit file /etc/systemd/system/samba-ad-dc.service is masked.
/usr/bin/deb-systemd-helper: error: systemctl preset failed on samba-ad-dc.service: No such file or directory
Created symlink /etc/systemd/system/multi-user.target.wants/smbd.service → /lib/systemd/system/smbd.service.
libgfapi0:armhf (5.5-3) を設定しています ...
systemd (241-7~deb10u3+rpi1) のトリガを処理しています ...
man-db (2.8.5-2) のトリガを処理しています ...
libc-bin (2.28-10+rpi1) のトリガを処理しています ...
pi@raspberrypi:~$

②ユーザの共有フォルダを設定(smb.conf)

pi@raspberrypi:~$ sudo vi /etc/samba/smb.conf

※下記の[printers]の次に[pi]ユーザの共有フォルダを設定します。
各設定パラメータについては省略します。

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700

[pi]
   comment = Welcome to pi Server
   path = /
   browseable = yes
   wriable = yes
   guest ok = no
   force create mode = 0666
   force directory mode = 0777
   read only = no
   create mask =0777
   directory mask = 0777

4.Sambaユーザのパスワード設定

pi@raspberrypi:~$ sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:
Added user pi.
pi@raspberrypi:~$

5.Sambaを再起動

pi@raspberrypi:~$ sudo service smbd restart
pi@raspberrypi:~$

6.Sambaへアクセス

①IPアドレス確認

pi@raspberrypi:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.17  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::e1f6:8778:d769:b292  prefixlen 64  scopeid 0x20<link>
        ether dc:a6:32:0c:91:9d  txqueuelen 1000  (イーサネット)
        RX packets 29258  bytes 20306707 (19.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 60087  bytes 68067041 (64.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (ローカルループバック)
        RX packets 33  bytes 1964 (1.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 33  bytes 1964 (1.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

②IPアドレスへアクセス

下記のアドレスを入力します。
\\192.168.1.17
image.png

「pi」ユーザIDとSambaパスワードを一緒に入力します。
image.png

Sambaでルートフォルダ以下が共有されているので、すべてのフォルダが表示されます。
image.png

7 一言

これでRaspberryPIとWindowsPC間にファイルの共有ができるようになりました。
コンソールからファイル編集ではなくWindowsでファイル編集し、保存も可能です。

2021年4月8日木曜日

RTL-SDR for Raspberry pi3

 


RTL-SDR for Raspberry pi3

(https://monoist.atmarkit.co.jp/mn/articles/1507/30/news059_2.html  ここも見るべき)

RaspberryPiでソフトウエアラジオを動かすために必要なソフトを準備します。手順はこちらを参考にしました。


1. 必要なパッケージをインストール

$ sudo apt-get update

$ sudo apt-get install git

$ sudo apt-get install cmake

$ sudo apt-get install libusb-1.0-0.dev

$ sudo apt-get install build-essential

$ sudo apt-get install pkg-config


2. rtl-sdrのソースの取得

つぎに最も重要なソウトウェアラジオ用パッケージであるrtl-sdrを本家からインストールします。

$ git clone git://git.osmocom.org/rtl-sdr.git


3. rtl-sdrをビルド

$ cd rtl-sdr

$ mkdir build

$ cd build

$ cmake ..

$ make

$ sudo make install

$ sudo ldconfig

$ sudo cp rtl-sdr.rules /etc/udev/rules.d/


4./etc/modprobe.d/ディレクトリにrtl-tcp-blacklist.confというファイルを下記の内容で作成


$ sudo nano /etc/modprobe.d/rtl-tcp-blacklist.conf

(file name :: rtlsdr-blacklist.conf と共存は駄目なようだ。)

blacklist dvb_usb_rtl28xxu

blacklist rtl2830

blacklist dvb_usb_v2

blacklist dvb_core

一度念のためリブートしておきます。

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="