在接觸到zynq7020開發板後,需要對網口的速率進行測試。上網查了下資料,發現iperf是個好工具,於是就想著用它來測試。然後就開始查資料、進行各種嘗試。我在嘗試的過程中遇到了各種各樣的問題,比如交叉編譯的時候出錯、移植後無法執行等。由於本人是個小白,對這種問題束手無策······只想能簡簡單單跟著步驟、輸入命令就解決問題,所以放棄了其他部落格裡的修改文件等辦法。幸好最後在兩篇部落格的指導下,終於實現了iperf3的移植,實現了預期的目的,感謝兩位博主!
iperf是乙個基於client/server的網路效能測試工具,可以測試tcp、udp和sctp頻寬質量,能夠提供網路吞吐率資訊,以及震動、丟包率,最大段和最大傳輸單元大小等統計資訊,幫助我們測試網路效能,定位網路瓶頸。其中抖動和丟包率適應於udp測試,而頻寬測試適應於tcp和udp。
iperf的好處是純粹發包和接收,防止硬碟拖後腿,影響測試結果。對於時延,iperf無能無力。但是iperf能夠計算抖動。在iperf測試中需要傳送大量的包,因此計算出來的抖動值,就是連續傳送時延差值的平均值。
# mkdir ~/iperf
# cp iperf-3.0.3.tar.gz ~/iperf
# cd ~/iperf
# tar xzf iperf-3.0.3.tar.gz
# cd iperf-3.0.3
比如在linux主機上面工作的使用者是:alinx,那麼命令中的「~」就代表路徑:/home/alinx/目錄。
# mkdir ../install
# source /opt/xilinx/sdk/2017.4/settings64.sh #設定交叉編譯器的系統環境變數
# ./configure --host=arm-linux-gnueabihf --prefix=/home/alinx/iperf/install
本機使用的交叉編譯器是arm-linux-gnueabihf,讀者可以根據自己具體使用的交叉編譯器進行修改,相應的環境變數也請自行修改
# make
# sudo make install # 安裝完成後,檔案會自動安裝到上面指定的 install 目錄。
使用交叉編譯工具 strip 去除映象的除錯資訊,在不影響使程式使用的情況下,程式大小一般可以減小50%左右。本程式我們僅用到其中2個檔案,bin下的iperf3 和 lib下的libiperf.so.0.0.0。
# cd ../install # 進入安裝目錄
# arm-linux-gnueabihf-strip bin/iperf3 # 去除iperf3映象除錯資訊
# arm-linux-gnueabihf-strip lib/libiperf.so.0.0.0 # 去除共享庫的除錯資訊
# rm lib/libiperf.a lib/libiperf.la # 刪除兩個不用的庫檔案
# tar jcf iperf-3.0.3.tar.bz2 bin lib # 壓縮bin和lib目錄
# mount -t nfs -o nolock 192.168.0.3:/home/alinx/linux_sdk_work /mnt //開發板端掛載nfs服務
# cp /mnt # 進入到nfs目錄
# tar jxf iperf-3.0.3.tar.bz2 bin -c /usr # 解壓映象到/usr/bin
# tar jxf iperf-3.0.3.tar.bz2 lib -c /usr # 解壓庫檔案到/usr/lib
# tar xzf iperf-3-current.tar.gz
# cd iperf-3.4
# ./configure# make
# sudo make install
如果執行 iperf3 命令時提示錯誤:
「iperf3: error while loading shared libraries: libiperf.so.0: cannot open shared object file: no such file or directory」
可以製作乙個軟連線可解決,命令如下:
# sudo ln -s /usr/local/lib/libiperf.so.0.0.0 /usr/lib/libiperf.so.0
預設情況客戶端使用tcp協議
伺服器端:
# iperf3 -s -s:指明是伺服器端
客戶端:
1)測試tcp通訊的最大速率。
# iperf3 -c 《目標位址》
2)使用tcp傳送100兆位元組的資料# iperf3 -c 《目標位址》 -l 100m
服務端:
# iperf3 -s
客戶端:
# iperf3 -c 192.168.1.100 -u -b 《傳輸頻寬》 -t 《測量時間[秒]> -i 《輸出報告時間間隔》
-u:指定是udp報文
-b:指定傳送頻寬
1)以udp方式向192.168.1.100傳送60秒的10m的資料流,每間隔兩秒鐘輸出報告結果
# iperf3 -c 192.168.1.100 -u -b 10m -t 60 -i 2
2)以udp方式向192.168.1.100傳送60秒的10m的雙向資料流# iperf3 -c 192.168.1.100 -u -b 10m -t 60 -i 2 -d
3)以udp方式向192.168.1.100傳送60秒的10m的3路雙向資料流# iperf3 -c 192.168.1.100 -u -b 10m -t 60 -i 2 -p 3
伺服器端:
# iperf3 -s -v
客戶端:
# iperf3 -c 《伺服器的ipv6位址》 -v
伺服器端:
# iperf3 -s -p 2480
客戶端:
# iperf3 -u -c 192.168.0.222 -b 100m -p 2480
Zynq7020核心板燒寫方法
宣告 與本文件環境保持一致,能夠保證燒寫成功,專家們和使用者提出寶貴的修改意見,避免該文件成為網路垃圾。軟體環境 vivado 2017.4 操作 1.先將拷貝的源程式的.sdk資料夾刪除 2.包含bit檔案,開啟sdk順序選擇以下按鈕file export export hardware,勾選in...
zynq7020開發板 Z turn除錯計畫
參加公尺爾zynq7020開發板試用活動。收到公尺爾z turn板子後,焊接了乙個jtag轉接板,以方便除錯pl部分,對於後面的除錯部分,主要分三個部分走 1 除錯fpga部分,實現邏輯控制外圍簡單的裝置,比如點個燈什麼的,用verilog語言實現,後期需要實現外部ad板卡的資料採集,並分析相關邏輯...
zynq7020不使用xSDK的簡單開發
本文主要介紹如何在不使用sdk的情況下進行zynq7020的程式設計。本實驗為點亮一盞led燈,使用mio0引腳。廢話不多說,開始正題。本文使用正點原子啟明星zynq7020開發板進行開發。開發環境為ubuntu。要使用gpio點亮led燈,第一步當然是設定gpio的引腳。將mio0對映到gpio上...