英创Linux主板双千兆网口方案

 2020-4-20 10:16:47     作者:黄志超    

  英创公司推出的ESM6802和ESM7100主板分别都带有一路千兆网口和一路百兆网口,同时ESM6802主板可以选择支持PCIe总线的配置(ESM7100默认支持PCIe总线),利用这一路PCIe总线,就可以再扩展出一路千兆网口实现双千兆网口的方案。


  在ESMARC通用评估底板上将PCIe总线以M.2的接口形式引出,M.2接口可以支持SSD实现大容量存储,也可以支持扩展以太网或者wifi,这里主要介绍扩展千兆以太网的方案。市面上有很多M.2接口的千兆以太网模块,常见的像Realtek、Intel等公司都有现成的模块可以使用,本文章采用Realtek公司的RTL8111控制芯片来进行测试和说明。


imx6dl,imx6ull,imx7,Linux主板,双千兆网口.png

RTL8111模块


  ESMARC评估底板上面的M.2接口是采用的M Key类型,而大多数M.2的以太网模块都是B Key或者B&M Key,所以要在评估底板上连接测试的话,需要使用B&M Key的模块。因为M.2接口的定义是标准的,如果客户自行设计底板,可以参考M.2的规范,根据需求设计成别的类型。关于M key和B key的区别可以参考下图:


imx6dl,imx6ull,imx7,Linux主板,双千兆网口.png

M key和B key的区别


  ESM6802主板上的PCIe总线为1.0版本,理论最高传输速度为250 MB/s,ESM7100主板的PCIe总线为2.0标准,理论最高速度为500MB/s。本次测试选择ESM7100主板作为平台与RTL8111连接测试,硬件的连接非常简单,如下图:


imx6dl,imx6ull,imx7,Linux主板,双千兆网口.png

硬件连接示意图


  固定好后即可进行上电,一旦PCIe总线识别到M.2网络设备,系统会自动加载驱动模块,如果没有自动加载,输入命令modprobe r8169即可。进入系统后可以使用lspci命令查看PCIe总线下的设备,这时在终端应该能看到扩展的千兆以太网卡的设备信息。扩展网卡通过驱动会在Linux系统中生成一个标准的网络设备,其所有的设置和操作都和标准的网口完全相同。因为还没有设置网络参数,设备默认是处于down的状态,所以需要使用命令ifconfig –a查看扩展网络对应的网络设备信息:


imx6dl,imx6ull,imx7,Linux主板,双千兆网口.png

网卡信息


  从图中可以看到新的网络设备名称为enp1s0,将ip地址和子网掩码等网络参数配置好之后,设备会自动转换为up的状态。和标准网口一样,可以使用ifconfig命令来配置ip地址等参数,如下图:


imx6dl,imx6ull,imx7,Linux主板,双千兆网口.png

配置IP地址


  配置好网络参数以后,客户可以通过ping命令来测试这个网口,如果能够正常通讯,就说明配置正确,网卡的驱动为客户提供了标准的接口,所以在应用程序中的操作方法和板卡自带网口也是完全相同的,都采用标准的套接字进行编程。


  最后我们来测试一下通过M.2接口扩展的千兆以太网的性能,使用iperf3工具测试网卡的数据如下:


  ESM7100主板自带千兆网口:


imx6dl,imx6ull,imx7,Linux主板,双千兆网口.png

自带网口测试数据


  扩展千兆以太网测试情况:


imx6dl,imx6ull,imx7,Linux主板,双千兆网口.png

扩展网口测试数据


  从测试结果可以看到扩展千兆以太网的带宽为526Mbit/sec左右,比自带的千兆网口带宽要小一些,但是也能够满足大部分工业控制上的需求了。


  如果有感兴趣的客户,可以和英创的工程师联系了解详细情况。