RAPIDIO驱动适配及其速度测试记录.docx
- 文档编号:4537029
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:13
- 大小:122.19KB
RAPIDIO驱动适配及其速度测试记录.docx
《RAPIDIO驱动适配及其速度测试记录.docx》由会员分享,可在线阅读,更多相关《RAPIDIO驱动适配及其速度测试记录.docx(13页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RAPIDIO 驱动 及其 速度 测试 记录