RAPIDIO驱动适配及其速度测试记录.docx

上传人:b****6 文档编号:4537029 上传时间:2022-12-01 格式:DOCX 页数:13 大小:122.19KB
下载 相关 举报
RAPIDIO驱动适配及其速度测试记录.docx_第1页
第1页 / 共13页
RAPIDIO驱动适配及其速度测试记录.docx_第2页
第2页 / 共13页
RAPIDIO驱动适配及其速度测试记录.docx_第3页
第3页 / 共13页
RAPIDIO驱动适配及其速度测试记录.docx_第4页
第4页 / 共13页
RAPIDIO驱动适配及其速度测试记录.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

RAPIDIO驱动适配及其速度测试记录.docx

《RAPIDIO驱动适配及其速度测试记录.docx》由会员分享,可在线阅读,更多相关《RAPIDIO驱动适配及其速度测试记录.docx(13页珍藏版)》请在冰豆网上搜索。

RAPIDIO驱动适配及其速度测试记录.docx

RAPIDIO驱动适配及其速度测试记录

RapidIO在Linux上的适配和测试过程

调试环境:

系统:

Kylin4.0.2,默认内核4.4.58。

硬件:

2台包含RapiIO的测试板卡,一块测试底板。

驱动及测试软件(可在github上面下载开源驱动及测试程序):

kernel-rapidio:

rapidio内核驱动程序,版本为1.2.0。

riosocket:

rapidio网卡驱动程序,可将rapidio设备虚拟化为网卡,版本为:

1.3.0。

RapidIO_RRMAP:

rapidio的文件传输,RDMA等应用程序,版本为:

1.2.1。

说明:

RapidIO测试环境采用两块VPX主板通过SRIOx4互联,一块作为Master,一块作为Slave。

每个步骤表明“同时”表示Master、Slave端都需要执行;“Master”表示秩序Master端执行;“Slave”表示秩序Master端执行

1.kernel-rapidIO

1.1驱动编译安装——同时

直接解压缩编译即可:

$tarxvfkernel-rapidio-1.2.0.tar.gz

$ln-skernel-rapidio-1.2.0kernel-rapidio创建连接为了后面riosocket安装时依赖

$cdkernel-rapidio

$make-j8

$sudomakeinstall

不报错即可。

如果需要看调试信息,编译之前先通过修改Makefile文件打开调试选项:

RAPIDIO_ENABLE_RX_TX_PORTS:

=TRUE

RAPIDIO_DMA_ENGINE:

=TRUE

RAPIDIO_DEBUG:

=TRUE

RAPIDIO_ENUM_BASIC:

=TRUE

RAPIDIO_MPORT_CDEV:

=TRUE

TSI721_PCIE_GEN3_WORKAROUND:

=TRUE

把RAPIDIO_DEBUG的值由FALSE改为TRUE,重新编译、安装即可。

1.2枚举/发现配置

kernel-rapidio安装时,会安装一个rapidio.conf文件到/etc/modprobe.d/目录下,该文件在rapidio驱动加载时调用,用于配置驱动模块的加载参数。

1.rapidio.ko加载后把相关内核模块都加载,则将上面红色字体文本行前的“#”去掉,即取消改行的注释,启用改行指令——Master

optionsrapidiohdid=1,-1

softdeprapidiopost:

idt_gen2idt_gen3idtcpstsi57xtsi568tsi721_mportrio_mport_cdevrio_cmrio-scan

这样,启动枚举/发现过程的方式,需要在命令行下输入下面命令(先不要执行):

$sudosu

#echo-1>/sys/bus/rapidio/scan

2.加载rio-scan驱动时,再将相关内核模块加载进内核,则将上面蓝色字体文本行前的“#”去掉,即取消改行的注释,启用改行指令——Slave

optionsrapidiohdid=-1,2

softdeprio-scanpre:

idt_gen2idt_gen3idtcpstsi57x

这样,启动枚举/发现过程的方式,需要输入如下命令(先不要执行):

$sudomodproberio-scanscan=1

注意:

optionsrapidiohdid=1,2,3,4如果配置1,2,代表有2个rapidio控制器,如果配置1,2,3,4表示有4个rapidio控制器。

Mastoptionsrapidiohdid=1,2slaveoptionsrapidiohdid=-1,-2表示两路都枚举

1.3枚举/发现

两端安装完上述驱动并配置好后,执行:

先在Master端:

$sudosu

#echo-1>/sys/bus/rapidio/scan

然后再Slave端:

$sudomodproberio-scanscan=1

Master先执行,Slave后执行,但两者之间的时间间隔不能过长,最好在1s内完成。

通过上面枚举发现过程后,在两端通过命令可以找到rapidio设备,VPX板子为例:

$ls/sys/bus/rapidio/devices/Master

00:

e:

0001

$ls/sys/bus/rapidio/devices/Slave

01:

e:

0002

就能找到“00:

e:

0001”和“01:

e:

0002”这两个设备

如果枚举/发现失败,必须重启系统再次尝试。

2.riosocket——同时

2.1.编译安装

$tarxvfriosocket-1.3.0.tar.gz

$cdriosocket-1.3.0/riosocket-basic/

$make-j8

$sudomakeinstall

安装时,会安装一个riosocket.conf文件到/etc/modprobe.d/目录,内容为:

#cat/etc/modprobe.d/riosocket.conf

#ConfigureRapidIOSocketmoduleloading

optionsriosocketrio_phys_mem=0x40000000rio_phys_size=0x10000000

是将系统物理内存地址0x40000000(1G)开始的0x10000000(256MB)作为rapidIO设备的DMA使用buffer。

将其改为:

#ConfigureRapidIOSocketmoduleloading

optionsriosocketrio_phys_mem=0x240000000rio_phys_size=0x10000000

连接调试串口,重启,按“ESC”键进入uboot命令行模式。

输入如下命令:

#setenvbootargsconsole=ttyS0,115200earlyprintk=uart8250-32bit,0x28001000root=/dev/sda2initrd=0x95000000,16MrootwaitrwKEYBOARDTYPE=pcKEYTABLE=usmemmap=256m$9G

#setenvscsidevs0

#save

#boot

2.2.使用

系统启动后,先执行rapidio的枚举/发现过程,再加载riosocket.ko驱动:

$sudosu

#echo-1>/sys/bus/rapidio/scan

#modproberiosocket

这样,通过ifconfig,因该就能找到rsock0和rsock1两个网络设备啦。

双击互连测试时,双方配置IP地址,如果采用ifconfig配置,需要反复配多次才能稳定(注意:

)。

假设一端IP为:

192.168.222.113

另一端IP为:

192.168.222.111

通过netperf测试,在192.168.222.113端运行netperf服务器:

$sudonetserver

在客户端运行,类似如下命令

$sudonetperf-H192.168.222.113-l60

-H是serverIP,-l是时间,默认采用的协议是TCM_STREAM。

如果要使用其它协议测试,使用-t选项。

常用的命令行参数:

-Hhost:

指定远端运行netserver的serverIP地址;

-ltestlen:

指定测试的时间长度(秒);

-ttestname:

指定测试类型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR。

3.RapidIO_RRMAP

RRMAP的安装默认基于4个rapid节点网络进行安装,而我们的测试环境是使用2个节点,其它两个节点为none。

server:

192.168.0.113,安装RapidIO_RRMAP的服务器,这里和node1(master)是同一台物理机器

master(node1):

192.168.0.113

node2:

192.168.0.111

node3:

none

node4:

none

3.1安装准备

1.所有节点保证root用户可用,按麒麟操作系统下,使用如下命令配置root密码:

$sudopasswdroot

输入新的UNIX密码:

重新输入新的UNIX密码:

passwd:

已成功更新密码

假设密码默认配置为“123123”(不带引号)

在每个节点上的RapidIO_RRMAP目录运行admin_init_root_key.sh,使得server通过ssh可以用root用户无密码访问所有节点。

$sudo./admin_init_root_key.sh192.168.0.113192.168.0.111nonenone

GenerateSSHkeyforroot

Workingin/home/kylindirectory

====192.168.0.113====

root@192.168.0.113'spassword:

root@192.168.0.113'spassword:

root@192.168.0.113'spassword:

====192.168.0.111====

Theauthenticityofhost'192.168.0.111(192.168.0.111)'can'tbeestablished.

ECDSAkeyfingerprintisSHA256:

hgSUvxTQX2PB5GLJBO8SBjBvwqWZcc+4aGNtKmWPBEM.

Areyousureyouwanttocontinueconnecting(yes/no)?

yes

Warning:

Permanentlyadded'192.168.0.111'(ECDSA)tothelistofknownhosts.

root@192.168.0.111'spassword:

root@192.168.0.111'spassword:

root@192.168.0.111'spassword:

在servers上的每个用户都执行:

./admin_init_root_key.sh192.168.0.113192.168.0.111nonenone

完成后,将Server当前用户(如果为root用户,可以不执行该步骤)home目录下.ssh/id_rsa的权限设置为可读,保证当前用户通过SSH实现root无密码访问

$sudochmod644/home/kylin/.ssh/id_rsa

此时,使用$sshroot@192.168.0.113或$sshroot@192.168.0.111都可以无密码访问所有node。

如果报如下错误:

Permissions0644for‘/home/kylin/.ssh/id_rsa’aretooopen. 

再将权限改为600:

$sudochmod600/home/kylin/.ssh/id_rsa

2.创建必要的用户

在每个节点上运行:

$sudogroupaddwheel

在server的RapidIO_RRMAP目录运行:

$sudo./admin_user_add.sh192.168.0.113192.168.0.111nonenonerapidio123123root

Addinguserrapidiopwd:

123123onnodes:

192.168.0.113

root@192.168.0.113'spassword:

useradd:

用户“rapidio”已存在

root@192.168.0.113'spassword:

root@192.168.0.113'spassword:

192.168.0.111

root@192.168.0.111'spassword:

root@192.168.0.111'spassword:

root@192.168.0.111'spassword:

/home/rapidio

Generatingpublic/privatersakeypair.

Youridentificationhasbeensavedin.ssh/id_rsa.

Yourpublickeyhasbeensavedin.ssh/id_rsa.pub.

Thekeyfingerprintis:

SHA256:

YrILGXeFJMPccAfk7tH4R1xZhgpaGJlh6Y83S2e72OArapidio@Kylin

Thekey'srandomartimageis:

+---[RSA2048]----+

+----[SHA256]-----+

/home/rapidio

Registerasrootonnodes:

192.168.0.113

root@192.168.0.113'spassword:

192.168.0.111

root@192.168.0.111'spassword:

rapidio是用户名,123123是其密码,root是rapidio所在的用户组。

3.创建必要的目录

在server的RapidIO_RRMAP目录运行:

$sudo./admin_init_dir.sh192.168.0.113192.168.0.111nonenoneroot

groupadd:

“root”组已存在

groupadd:

“root”组已存在

4.联外网安装依赖软件screen、doxygen、sysfsutils、git

$sudocp~/sources.list/etc/apt/

将sources.list替换原来的/etc/apt/sources.list

$sudoaptupdate

$sudoaptinstall-yscreendoxygensysfsutils

3.2安装

1.修改RapidIO_RRMAP-1.2.1/install/rsvd_phys_mem.conf

根据系统启动命令行参数的配置memmap=256m$9G,将rsvd_phys_mem.conf做对应修改:

PHYS_MEM0x2400000000x10000000

RDMAD0x2400000000x04000000

RSKTD0x2440000000x04000000

DMATUN0x2480000000x04000000

FXFR0x24C0000000x04000000

在server端RapidIO_RRMAP-1.2.1目录下运行:

$./install.sh192.168.0.113192.168.0.113192.168.0.111nonenonemem50autoroot

...

Generatedocumentation...

GITstatus...

fatal:

Notagitrepository(oranyoftheparentdirectories):

.git

Creatingscripts...

GENERATINGGOODPUTSTARTSCRIPTSWITH

MPORT:

0

MPORT_DIR:

mport0

SOCKET_PFX:

234

IBA_ADDR:

0x200000000

Installationcomplete.

安装完成。

3.3使用

将互连的处理器两边的/etc/modprobe.d/rapidio.conf,按红色字体部分修改,即将从0x240000000开始的0x10000000空间作为预留物理内存,与uboot配置的内核启动命令行参数memmap=256m$9G匹配:

#ConfigureRapidIOsubsystemmodulesloading

...

#Uncommentandeditthelinebelowtochangeparametersofrio_mport_cdevdevice

#driverifyouwantittousereservedmemoryrangeforDMAdatabuffers.

optionsrio_mport_cdevrio_res_mem=0x240000000rio_res_size=0x10000000

同时,如果/etc/modprobe.d/rapidio.conf配置的枚举/发现使用“echo-1>/sys/bus/rapidio/scan”“modproberio-scanscan=1”方式,在两边都执行扫描发现过程后手动加载一下两个模块:

$sudomodproberio_mport_cdev

$sudomodproberio_cm

3.3.1file_transfer

file_transfer是RapidIO_RRMAP下的一个文件传输小程序,在utils目录下。

1.服务器端

启动服务器fxfr_server已经安装在OPT目录下。

$sudosu

#./fxfr_server

----------------------------------------------------------

------

---RTAFileTransferServerCommandLineInterface---

------

----------------------------------------------------------

---Version:

15.01(Aug162018-15:

17:

17)---

----------------------------------------------------------

RapidIOTradeAssociation

Copyright2016

FXServer>status

WinVRapidIOAddrSizeMemorySpacePHYSTVDCRCI

0124c00000040000024c0000001010Y

all_must_diestatus:

0

ServerdestID:

1

Servercm_skt:

5555

ServerAcceptLpOK:

1

Pendingconnreqs:

None

CLISessionsAlive:

1

CLISocket#:

2228

Servermport:

0

红色字体部分客户端须用作参数

2.客户端

$sudosu

创建测试文件:

./create_file.shfxfr_file_send256M

通过rftp启动传输:

./rftp

src_file:

上面船舰的文件名,

dest_file:

服务器端接收时保存的文件名,

destID:

服务器端mport的destid,上面启动服务器时显示为1

cm_skt:

服务器端启动时设置的cm_skt,上面启动服务器时显示为5555

mport:

客户端用于传输文件的mport端口,通过物理互连关系,客服端为mport0与服务器端mport0互连,因此为0

dbg:

Anon-zerodbgvaluedisplayserror/debug/tracemessagesforthefiletransfer,打印log则设为1,否则为0;

kbuf:

Anon-zerokbufvaluewillusekernelmemoryforthetransfers.Rftpuseskernelmemorybydefault。

使用内核空间内存速度更快,因此可以设为1。

因此,最终命令应该为

#./rftpfxfr_file_sendfxfr_file_recv15555011

Localfile:

"fxfr_test"

Remotefile:

"fxfr_recv"

DestID:

1

Socket:

5555

Mport:

0

Debug:

1

KernelBuff:

1

+++SRIOmportconfiguration+++

mport:

hdid=0,id=0,idx=0,flags=0x3,sys_size=small

link:

speed=3.125Gbwidth=4x

DMA:

max_sge=0max_size=67108864alignment=0(HWSG)

Client:

RXfromServer

rapidio_addr=24c000000

rapidio_size=400000

tot_bytes_rx=0

fail_abort=0

filename=

Client:

TXtoServer

rapidio_addr=24c0000004c02000000

bytes_tx_now=200000200000000000

tot_bytes_tx=200000200000000000

end_of_file=00

fail_abort=00

filename=fxfr_recv

Client:

TXtoServer

rapidio_addr=24c200000204c02000000

bytes_tx_now=200000200000000000

tot_bytes_tx=400000400000000000

end_of_file=00

fail_abort=00

filename=fxfr_recv

Client:

RXfromServer

rapidio_addr=24c000000

rapidio_size=400000

tot_bytes_rx=200000

fail_abort=0

filename=fxfr_recv

 

4一些错误信息的处理

4.1link状态与实际状态不一致

使用file_transfer工具时,显示rapidio的link状态不正确

Localfile:

"fxfr_file_send"

Remotef

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1