1. 程式人生 > >在vxworks上移植netperf工具

在vxworks上移植netperf工具

最近需要測一下vxworks上的網路效能,在網上搜了一下,發現iperf支援vxworks,但是並沒有找到對應的原始碼,加了一個vxworks的QQ群,裡面有人提到自己就是用netperf在vxworks上測試網路效能的,因此決定將netperf移植到vxworks上。

手頭上僅有vxworks映象,且不支援wdb任務,因此沒有辦法在tornado上直接除錯,只能利用tornado生成相關可執行程式,ftp下載到板子上,然後用ld命令載入。整體思路理清之後,現在需要利用tornado生成可執行程式。

在網上搜索一番之後,找到網頁:

http://www.netperf.org/netperf/training/netperf-talk/0217.html

正文如下:

Re: Porting Netperf to VxWorks

Tom Pavel ([email protected])
Wed, 04 Aug 1999 00:06:28 -0700 >>>>> On Tue, 3 Aug 1999, "Bubeck, Leslie" <[email protected]> writes:

> Does anyone know if Netperf has been ported to VxWorks?? I have just been
> tasked with this and I'd hate to reinvent the wheel if it has already been
> done.


I did some work on porting version 2.1pl3 to VxWorks Tornado on
PowerPC. Unfortunately, netperf had moved on from pl3, Rick was busy
working on v3, and I got busy on other projects, so these patches
never got integrated into production netperf.

I think my diffs would serve you well as a starting point. It
probably shouldn't be much work to move them forward to the latest 2.1
pl. You can get them from the mailing list archives or from

ftp://ftp.slac.stanford.edu/users/pavel/netperf-vxw.diffs

Caveats are that I concentrated on the TCP_STREAM test, and there are
some unsolved problems with the UDP tests. [One of them is that
VxWorks does not allow IOs to be interrupted by signals (even though
they define a SA_INTERRUPT), so one needs to make the IO loop always
do select() and then recv().] Also, being new to VxWorks, I tended to
solve my problems with the optional POSIX features (that are not
always included into VxWorks kernels). For wider applicability, one
might want to use native VxWorks timers, etc.

Ok. Hope this info is helpful to you. Feel free to contact me if I
can answer questions.

Tom Pavel

Stanford Linear Accelerator Center
[email protected] http://www.slac.stanford.edu/~pavel/

日期是1999年8月,也夠歷史悠久了。。。這位前輩做過vxworks上的netperf(tcp可正常執行udp不保證),並且給出了相關的資料

開啟下面的地址:

發現這位前輩的工作是基於netperf-2.1pl3上的,頁面上的資訊是移植時修改的檔案與行數資訊,並不是完整原始碼。

在netperf下載頁

http://www.netperf.org/svn/netperf2/tags/

並沒有找到netperf-2.1pl3,最相近的版本是netperf-2.1pl2,因此在netperf-2.1pl2的基礎上來移植。

參考前輩提供的移植資訊,一行行進行修改(用過diff命令的話可以很容易理解要修改的地方),完成了原始碼的修改。

ps:原始碼修改主要是針對win32或vxworks用到的標頭檔案、函式、結構體的不同,出現頻率比較高的語句有#ifdef VXWORKS  #else #endif等。

因為本人只需要在vxworks下工作,因此在每個有#ifdef VXWORKS的程式中,我都在最上面添了一句話:

#ifndef VXWORKS

#define VXWORKS

#endif

所以其實我完全可以把#ifdef WIN32 部分的內容給刪掉的。。。留著吧。

下面需要考慮編譯的問題。

先在tornado上新建一個程式,寫最簡單的helloworld,然後編譯(參考了其他的資料,不贅述),接著刪除helloworld程式,把原始碼複製到這個project資料夾下。

在該project裡新增原始碼裡的.c 和.h檔案,然後利用tornado的build功能,生成Makefile檔案,也生成了對應的.o檔案,此時還缺少netperf.out  netserver.out兩檔案

比較前輩的Makefile和tornado上的Makefile,發現關鍵句在於:

NETSERVER_OBJS = netserver.o nettest_bsd.o nettest_dlpi.o nettest_unix.o netlib.o netsh.o nettest_fore.o nettest_hippi.o nettest_xti.o nettest_ipv6.o
NETPERF_OBJS = netperf.o netsh.o netlib.o nettest_bsd.o nettest_dlpi.o nettest_unix.o nettest_fore.o nettest_hippi.o nettest_xti.o nettest_ipv6.o

all: netperf.out netserver.out
netperf.out:$(NETPERF_OBJS)
$(LD) -o [email protected] -r $(NETPERF_OBJS) $(PRJ_LIBS) 
netserver.out:$(NETSERVER_OBJS) 
$(LD) -o [email protected] -r $(NETSERVER_OBJS) $(PRJ_LIBS)
如上是生成可執行檔案的關鍵點,其中 LD=ldpentium            PRJ_LIBS=                   //空

開啟cmd命令,進入到project所在檔案,執行:

ldpentium -o netperf.out  -r netperf.o netsh.o netlib.o nettest_bsd.o nettest_dlpi.o nettest_unix.o nettest_fore.o nettest_hippi.o nettest_xti.o nettest_ipv6.o
ldpentium -o netserver.out -r netserver.o netsh.o netlib.o nettest_bsd.o nettest_dlpi.o nettest_unix.o nettest_fore.o nettest_hippi.o nettest_xti.o nettest_ipv6.o

即生成了netserver.out和netperf.out兩個可執行檔案。    

以上如果出現問題,請嚴格比對下是不是修改的時候有疏漏。

將兩檔案ftp到vxworks上,ld 載入,執行時語句類似於:

netperf "-t TCP_RR -H 192.168.2.73"

netserver "-p 12865"

如果有報錯:

debug file: S_dosFsLib_FILE_NOT_FOUND

請將對應的netserver.c 或者netiperf.c檔案中的debug資訊註釋掉。

相關推薦

vxworks移植netperf工具

最近需要測一下vxworks上的網路效能,在網上搜了一下,發現iperf支援vxworks,但是並沒有找到對應的原始碼,加了一個vxworks的QQ群,裡面有人提到自己就是用netperf在vxworks上測試網路效能的,因此決定將netperf移植到vxworks上。 手

嵌入式Linux移植unzip工具

16px 文件 bsp ont div 嵌入 for .gz .tar.gz   由於busybox編譯出來的unzip不支持有密碼的壓縮包解壓,因此基於unzip60源碼包,交叉編譯一個嵌入式Linux上的unzip工具。 1.下載地址是: http://sourcefo

Linux系統傳下載工具rz/sz

linux系統上傳下載工具rz/szLinux系統上傳下載工具rz/szlinux系統中上傳與下載的工具有很多,比如:filezilla.exe等。為了使用linux系統方便,rz / sz命令很方便的幫我們實現了這個功能,但是很多Linux系統初始並沒有這兩個命令。下面對此命令進行說明:下載軟件lrzszl

高可用的Spring FTP傳下載工具類(已解決傳過程常見問題)

關於 package 輸入 .net rop inpu pasv for factory 前言 最近在項目中需要和ftp服務器進行交互,在網上找了一下關於ftp上傳下載的工具類,大致有兩種。   第一種是單例模式的類。   第二種是另外定義一個Service,直接通過

【轉】stm32CubeMx移植自己的printf()和scanf()函數

smi config 用戶 type 連接器 標準庫 can 修改 esp 要想printf()和scanf() 函數工作,我們需要把printf()和scanf() 重新定向到串口中。重定向是指用戶可以自己重寫C 的庫函數,當連接器檢查到用戶編寫了與C 庫函數相同名字的函

centos 安裝傳下載工具

centos 安裝上傳下載工具#安裝下載上傳工具yum install -y lrzsz#上傳=rz,下載=sz centos 安裝上傳下載工具

VxWorks驅動移植至SylixOS總結

lang str 設備 整合 不同 使用場景 文檔 enable ble 本文檔描述了將VxWorks中的驅動源碼快速移植至SylixOS中的方法,使用時需要結合SylixOS中的VxWorks兼容層實現。 1. 驅動註冊與初始化 1.1 VxWorks中驅動註冊與初始化

檔案傳的工具

package com.itheima.utils; import java.util.UUID; /**  * 檔案上傳的工具類  * @author Administrator  */ public class UploadUtils {  &

palo資料庫小批量http傳資料工具

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.URI; import java.ut

檔案傳下載工具類(java)

import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.InputStream

hikey970學習-012 hikey970移植影象去雨深度神經網路演算法

摘要:本文在hikey970嵌入式裝置上執行影象去雨深度神經網路演算法,驗證hikey970執行神經網路模型的效能與效果。 一、影象去雨簡介     影象去雨處理指的是對於一張雨中的圖片,去除畫面中的雨滴,得到還原後的圖片,與圖片去霧、超解析度等同屬CV領域中影

FtpUtil 傳下載工具

package cn.common.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io

2018年10月親測-免費科學、網工具分享-適用Windows、IOS、Android等系統

工具簡介 最近想到外面上網看看新聞推特和其他,就在尋找合適的、免費的上網工具,經過幾個軟體的試用,最終鎖定Baacloud,在這裡分享給大家。首先強調下面需要注意的三點: Baacloud軟體提供限量的免費流量(每個月約7G左右),所以只能供自己看新聞及短視

傳程式碼工具 GIT 知識點總結

一.git的簡介: ----> Linux同一個開發 —>Linus開發 1.分散式的控制器 二. 版本作用  協同修改 多人並行不悖的修改伺服器端的同一個檔案。  資料備份 不僅儲存目錄和檔案的當前狀態,還能夠儲存每一個提交過的歷史狀態。 

檔案傳(工具類)

一、 import java.io.File; import java.io.IOException; import javax.servlet.http.HttpServletRequest; i

qt5.5.1在Cortex-a8移植記錄

使用Qt5.5.1原始碼包進行編譯:下載地址 http://download.qt.io/official_releases/qt/ tslib1.4編譯 1.解壓並進入Tslib目錄 2.gedit tests/ts_calibrate.c    230行在o

購買開發板後在iTOP4412開發板移植SDIO介面WIFI方法

       近期需要把WiFi無線網路功能移植到在iTOP4412 開發平臺,查閱了相關資料,經過一段時間的研究、除錯,終於成功,將WiFi功能移植到了開發板上面,這裡筆者記錄移植過程及注意事項,方便以後工作需要。     iTOP4412開發板的WiFi模組與板卡之間

Linux批量遠端命令和傳下載工具

mooon_ssh:批量遠端命令工具,在多臺機器上執行指定命令 mooon_upload:批量遠端上傳工具,上傳單個或多個檔案到單臺或多臺機器 mooon_download:批量遠端下載工具,從指定機器下載一個或多個檔案 mooon-tools-glibc2.17.ta

Linux安裝自動工具webmin

yum -y install epel-release yum -y install perl perl-Net-SSLeay openssl perl-IO-Tty perl-Encode-Detect  perl-Digest-MD5  wget http://prdownl

再議Linux傳下載工具curl的使用

在目前的CentOS最小化安裝發行版中,系統預設的下載/上傳工具為:curl。curl支援包括HTTP、HTTPS、ftp等眾多協議,還支援POST、cookies、認證、從指定偏移處下載部分檔案、使用者代理字串、限速、檔案大小、進度條等特徵。我們先來大概看一下curl工具的各選項的大概含義。 -a/–a