英创工控主板以多串口和多网口作为特色,已经推出了多种扩展方案,被用户广泛使用在工控领域中。为了满足更多的通讯接口需求,英创公司推出了基于ESM7000或ESM6802主板,具有30路串口+6路网口的整机方案。该方案由主板自带的6路串口和2路网口,加上扩展出24路串口和4路网口构成,其接口资源应该能满足绝大部分的应用需求了。
主板型号 | 板载串口 | 板载网口 | 扩展串口 | 扩展网口 |
ESM6802 | 6路 | 2路 | 24路 | 4路 |
ESM7000 | 6路 | 2路 | 24路 | 4路 |
扩展原理
硬件组成
英创公司设计了两款扩展模块来实现这一扩展方案,它们是24路串口扩展模块ETA524和4路100M以太网口模块ETA8152。用户可利用英创公司成熟的评估套件,对这两个模块同时进行评估。
ETA524模块通过ISA总线扩展来实现24路串口,所扩展的每一路串口最高波特率均可达到115200bps,信号电平均为3.3V TTL。模块外形尺寸为70mm×46mm,与主板一样是插在应用底板上工作。ETA524的这种设计使得用户既能快速方便的对它进行评估,又能很好的融入用户自己的产品设计中。在用户自己做应用底板时,仅需要在应用底板上对每路串口做适当驱动即可,ETA524可以作为一个“器件”背插在用户的应用底板上,以获得最佳的数据传输性能。
ETA524串口扩展模块
其中CN1是ETA524和精简ISA总线连接的接口,定义如下图:
ISA总线接口信号 | CN1 | ISA总线接口信号 | |
PIN# | PIN# | ||
RESET#,复位,低电平有效 | 1 | 2 | ISA_ADV#,地址锁存,低电平有效 |
ISA_SD0,地址数据总线 | 3 | 4 | ISA_SD4,地址数据总线 |
ISA_SD1,地址数据总线 | 5 | 6 | ISA_SD5,地址数据总线 |
ISA_SD2,地址数据总线 | 7 | 8 | ISA_SD6,地址数据总线 |
ISA_SD3,地址数据总线 | 9 | 10 | ISA_SD7,地址数据总线 |
MSL#,模块选择 | 11 | 12 | ISA_WE#,数据写,低电平有效 |
GPIO9,中断IRQ4,上升沿有效 | 13 | 14 | ISA_RD#,数据读,低电平有效 |
GPIO8,中断IRQ3,上升沿有效 | 15 | 16 | ISA_CS#,总线片选,低电平有效 |
GPIO25,中断IRQ2,上升沿有效 | 17 | 18 | +5V,电源输入 |
GPIO24,中断IRQ1,上升沿有效 | 19 | 20 | GND,公共地 |
CN2-CN4分别是扩展出来的串口,定义如下:
接口信号 | CN3 | 接口信号 | |
PIN# | PIN# | ||
COM1_TXD | 1 | 2 | COM1_RXD |
COM2_TXD | 3 | 4 | COM2_RXD |
COM3_TXD | 5 | 6 | COM3_RXD |
COM4_TXD | 7 | 8 | COM4_RXD |
COM5_TXD | 9 | 10 | COM5_RXD |
COM6_TXD | 11 | 12 | COM6_RXD |
GND,公共地 | 13 | 14 | VCC,+5V电源输出 |
COM7_TXD | 15 | 16 | COM7_RXD |
接口信号 | CN2 | 接口信号 | |
PIN# | PIN# | ||
COM8_TXD | 1 | 2 | COM8_RXD |
COM9_TXD | 3 | 4 | COM9_RXD |
COM10_TXD | 5 | 6 | COM10_RXD |
COM11_TXD | 7 | 8 | COM11_RXD |
COM12_TXD | 9 | 10 | COM12_RXD |
COM13_TXD | 11 | 12 | COM13_RXD |
COM14_TXD | 13 | 14 | COM14_RXD |
COM15_TXD | 15 | 16 | COM15_RXD |
COM16_TXD | 17 | 18 | COM16_RXD |
COM17_TXD | 19 | 20 | COM17_RXD |
接口信号 | CN4 | 接口信号 | |
PIN# | PIN# | ||
COM18_TXD | 1 | 2 | COM18_RXD |
COM19_TXD | 3 | 4 | COM19_RXD |
COM20_TXD | 5 | 6 | COM20_RXD |
COM21_TXD | 7 | 8 | COM21_RXD |
COM22_TXD | 9 | 10 | COM22_RXD |
GND,公共地 | 11 | 12 | VCC,+5V电源输出 |
COM23_TXD | 13 | 14 | COM23_RXD |
COM24_TXD | 15 | 16 | COM24_RXD |
引出的串口均为TTL信号,用户可根据需求在外部进行转换。例如转换成RS232或者RS485,英创公司在光盘资料中都提供有电路供用户参考。
网络扩展模块ETA8152集成了4片r8152芯片,可以通过USB扩展出4路网口,单独一路扩展网口的速度均可以达到90Mbit/s以上。如果同时使用,每一路速度可以达到40Mbit/s以上。
ETA8152采用了mini-PCIe模块的标准尺寸,使模块安装极为方便,所有的高速网络信号集中在一个插座上,按常规PCB布线即可连接至底板RJ45网口座。
ETA8152网络扩展模块
ETA8152的管脚定义如下:
ISA总线接口信号 | ISA | ISA总线接口信号 | |
PIN# | PIN# | ||
ETH4_RXP,以太网4差分输入 | 51 | 52 | +3.3V 电源输入 |
ETH4_RXN,以太网4差分输入 | 49 | 50 | 电源地(GND) |
ETH4_TXP,以太网4差分输出 | 47 | 48 | - |
ETH4_TXN,以太网4差分输出 | 45 | 46 | ETH4_LED_ACT_B,数据指示 |
ETH3_RXP,以太网3差分输入 | 43 | 44 | ETH4_LED_LINK_B,连接指示 |
ETH3_RXN,以太网3差分输入 | 41 | 42 | ETH3_LED_ACT_B,数据指示 |
ETH3_TXP,以太网3差分输出 | 39 | 40 | 电源地(GND) |
ETH3_TXN,以太网3差分输出 | 37 | 38 | USB_DP,USB差分信号 |
电源地(GND) | 35 | 36 | USB_DN,USB差分信号 |
ETH2_RXP,以太网2差分输入 | 33 | 34 | 电源地(GND) |
ETH2_RXN,以太网2差分输入 | 31 | 32 | I2C_SDA,I2C配置管脚 |
电源地(GND) | 29 | 30 | I2C_SCL,I2C配置管脚 |
电源地(GND) | 27 | 28 | - |
ETH2_TXP,以太网2差分输出 | 25 | 26 | 电源地(GND) |
ETH2_TXN,以太网2差分输出 | 23 | 24 | - |
电源地(GND) | 21 | 22 | RESET_B#,外部复位信号 |
ETH2_LED_ACT_B,数据指示 | 19 | 20 | - |
ETH2_LED_LINK_B,连接指示 | 17 | 18 | 电源地(GND) |
Mechanical Key | |||
电源地(GND) | 15 | 16 | +5V 电源输入 |
ETH1_RXP,以太网1差分输入 | 13 | 14 | +5V 电源输入 |
ETH1_RXN,以太网1差分输入 | 11 | 12 | +5V 电源输入 |
电源地(GND) | 9 | 10 | - |
ETH1_LED_ACT_B,数据指示 | 7 | 8 | ETH3_LED_LINK_B,连接指示 |
ETH1_TXP,以太网1差分输出 | 5 | 6 | - |
ETH1_TXN,以太网1差分输出 | 3 | 4 | 电源地(GND) |
ETH1_LED_LINK_B,连接指示 | 1 | 2 | +3.3V 电源输入 |
其中I2C总线是用来给扩展网口配置MAC地址的,英创公司在ETA8152模块出厂的时候,会为每一路网口烧写一个唯一的MAC地址。所以硬件上需要将主板的I2C总线信号接入,在加载驱动的时候系统会调用这一路I2C总线,加载完成后就会释放I2C总线资源,不会影响用户程序调用I2C总线。
用户在底板上就只需要连接网络变压器和RJ45接头,我们随便以一路为例,给出原理图(图中的RJ45是带有网络变压器的):
接口电路图
用户使用ESMARC_ISA_EVB可以方便的评估整个方案,连接如下图所示:
评估板连接示意图
软件开发
ETA524和ETA8152模块的驱动英创公司已经调试好并且以内核模块的形式集成在板卡中了,用户只需要调用命令加载驱动就可以生成标准的设备节点来操作,这两个模块的驱动分别为eta524.ko和r8152.ko。驱动加载后,系统就能够识别到扩展模块,并生成相应的设备节点,通过设备节点,用户就能够使用标准的API函数来操作扩展了。在主板的命令行输入modprobe命令就可以加载:
加载ETA528的驱动
从图上可以看到加载驱动后,生成了24个串口设备(ttyS7-ttyS30)。接下来加载ETA8152模块的驱动,方法相同:
加载ETA8152的驱动
可以看到驱动加载后,系统生成了eth2-eth5四个新的网络设备。
不论是串口还是网络,加载驱动生成的设备节点都是Linux标准的设备节点,所以用户在使用的时候操作方法也和标准的设备相同,只需要更改程序中对应的设别节点即可。用户可利用英创公司提供的串口和网络通讯应用程序源代码,快速评估此方案基本性能是否满足其具体的应用需求,帮助用户缩短评估和开发的周期。
性能测试
英创公司针对这套扩展方案进行性能上的测试,使用ESM7000核心板搭建了测试环境。首先使用iperf3工具测试扩展网口的速度,在PC端搭建好服务器后,在板卡中运行iperf3工具连接,服务器测试结果截图如下:
网络带宽测试
图片中端口号5201为核心板自带网口eth0,端口号5202为核心板自带网口eth1,端口号5203-5206分别对应扩展网口1-4。因为测试网络环境为千兆网络环境,所以主板千兆网口eth0的速度会受到其他网口的影响。从测试结果可以看到,在同时使用的情况下,扩展网口的速度是可以达到40Mbit/s以上的。
下面对扩展串口进行测试,测试程序会打开每一路扩展串口,波特率设置为115200bps,每3ms发送9个字节的数据,即每秒发送3000个字节的数据,根据115200波特率的满负荷计算,程序占用了每一路串口26%左右的负载。为了更加贴近实际使用情况,同时将所有扩展网口打开进行通讯,使网络的负载大约也占用20%左右。
在这样的条件下,对串口收发数据进行长时间的测试,当收到数据有错误,程序会打印出来,经过3个小时的测试,所有扩展串口收发均正常,CPU整体负载如下:
系统总负载
可以看到系统总负载大约为56%,测试程序test_multiserial占用CPU为27.2%,截图中top命令打印出的其余项为每一路串口通讯所占用的CPU资源,一共为24项,每一路占用的资源在2.3%-3.9%,是十分低的。需要注意的是ESM7000为双核,所以top指令打印出来的CPU占用率需要除以2才是整个CPU的占用率。
在实际应用中负载通常会更小一些,将负载提升上来是为了测试整套方案的性能,在此时的负载情况下,扩展串口与网口通讯均保持正常和稳定。
成都英创信息技术有限公司 028-8618 0660