伍儒彬 梁潇
摘 要:基于网络通信的冗余需求,提出一种三网口以太网通信设计方案。方案采用Cortex-A8内核的AM3352芯片,利用芯片两个以太网控制器及GPMC扩展DM9000A实现3个以太网通信功能端口,为提升GPMC的总线优势,设计一种掉电存储解决方案。软件部分对冗余机制网络通信状态提出两种监控模式,使冗余通信状态得到及时反馈。实验证明,该设计可满足以太网冗余功能的需求。
关键词:Cortex-A8;GPMC;以太网;冗余机制
DOI:10. 11907/rjdk. 182708 开放科学(资源服务)标识码(OSID):
中图分类号:TP393文献标识码:A 文章编号:1672-7800(2019)008-0196-04
Ethernet Redundant Communication Design Based on Cortex-A8
WU Ru-bin, LIANG Xiao
(CNPC Beijing Richfit Information Technology Co.,Ltd, Beijing 100007, China)
Abstract: Based on the redundancy requirements of network communication, this paper proposes a solution of three-network Ethernet communication. The solution adopts the AM3352 chip of the Cortex-A8 core, uses the two Ethernet controllers included in the chip and the GPMC (General-Purpose Memory Controller) to extend the DM9000A to implement three Ethernet communication function ports, which is designed to broaden the bus advantage of GPMC. Two monitoring modes for the communication state of the network in the redundancy mechanism are proposed so that the redundant communication state is timely fed back. Through experiments, the design can meet the requirement of Ethernet redundancy function.
Key Words: Cortex-A8; GPMC; Ethernet; redundancy mechanism
作者簡介:伍儒彬(1982-),男,北京中油瑞飞信息技术有限责任公司工程师,研究方向为嵌入式系统及应用;梁潇(1990-),男,北京中油瑞飞信息技术有限责任公司工程师,研究方向为嵌入式系统及应用。
0 引言
随着“工业4.0”、“物联网”、“边缘计算”等战略及概念的提出,用户针对实际应用中以太网通信可靠性产品与方案提出更高要求。在高速列车通信[1-2]、地铁车辆运行监控系统[3]、电站监控系统[4]、隧道PLC监控系统[5]、船舶运输通信中[6],冗余通信是必备功能。在冗余通信设计中,多数通信冗余设计通过CAN总线实现,其特点是实现方案成熟、成本可控、兼容性好。在冗余系统实现方式上,程敏[7]对工业应用现场的双冗余系统和三冗余系统以GE公司的Mark vie系统为例,对冗余通信进行讨论和对比;当数据处理量增加或功能拓展及设备升级需要兼容现有设备通信时,赵楠等[8]提出一种带有2个以太网口和3个CAN接口的通信设计模块,以实现船舶内部电气设备之间的通信需求;樊刘华等[9]提出通过双通信接口(PCI总线与以太网接口)实现上位机与采集、控制设备进行信息传递;陶涛等[10]提出一种无线(GPRS)通信与以太网通信结合的通信冗余方式,以解决燃气场站测控系统以太网通信故障引起的数据传输中断问题;文献[10]-[11]采用类似方式,针对电力监控系统进行研究;文献[12]主要研究MODBUS下ZIGBEE冗余通信实现方法。
已有研究主要通过将有线(以太网等)与无线(GPRS\ZigBee等)结合或者将高速通信(以太网)与低速通信(CAN等)结合的方式实现冗余通信。针对油田生产过程中关键数据传输量较大、通信链路可靠性高等要求,提出一种三以太网通信端口的冗余通信设计方案,以高速通信方式(以太网)达成方案冗余实现,在保证通信传输可靠的前提下,满足数据传输速率要求。
1 硬件设计
硬件设计采用的处理器为基于Cortex-A8内核的AM3352芯片,为实现3个网络接口的功能,通过GPMC总线扩展一个网络接口功能,具体内容如下。
1.1 AM3352处理器与DM9000A以太网控制器
AM3352是TI(德州仪器)公司采用ARM Cortex-A8内核的一款高性能处理器。其主要特点如下:支持32为精简指令集,支持多种工业以太网通信协议,16位外部存储器接口与通用存储控制器接口(支持8 位或16位),实时时钟管理,丰富的外部接口(包括2个集成PHY的以太网控制器、USB2.0、串口等),具体资源可参阅表1。
表1 AM3352芯片主要特性
[项目\&特性描述\&频率及片内存储\&频率最高可达1GHZ;64KB通用片上存储器,176KB片载启动ROM,64KB专用RAM\&外部存储接口\&支持LPDDR,DDR2,DDR3(L),最高800MHZ数据速率;1GB全部可寻址空间,通用控制器(GPMC)支持8位或16位异步存储器\&RTC(实时时钟)\&实时日期,内部振荡器,独立复位输入\&外设\&两个以太网MAC,最多两个控制器局域网(CAN),最多两个主从 McSPI 串行接口,最多 6 个UART,两个多通道音频串行端口(McASP),8个32位通用计时器,支持LCD控制器,12位逐次逼近寄存器 (SAR)ADC,支持高速捕捉和高分辨率PWM等功能\&其他\&2个可编程实时单元,支持EtherCAT、PROFIBUS、PROFINET、EtherNet/IPTM等通信协议\&封装\&298 引脚 S-PBGA-N298 Via Channel 封装;324 引脚 S-PBGA-N324 封装\&]
DM9000A是DAVICOM公司提供的一款完全遵循IEEE820.3u标准的单芯片快速以太网控制器。其IO端口支持3.3V与5.0V的容限值,数据总线支持8位与16位两种模式(但两种模式的芯片引脚定义不一样),支持对EEPROM的配置,具体特性见表2。
表2 DM9000A芯片主要特性
1.2 硬件整体架构设计
基于前文所述的芯片特点,采用AM3352芯片+DM9000A的以太网通信方案,从硬件上实现具有3个以太网端口的以太网冗余通信方案,其硬件整体架构如图1所示。
图1 硬件整体架构
在整体框架中,電源供给及管理电路为整个硬件提供电源与管理,有两种实现方式,一种是整体模块方案,该方案仅需添加简单的辅助及保护电路即可提供稳定的电压输出,包含隔离与非隔离两种实现方法;另一种采用直流电压转换芯片,将电压由较高的电压转换为适合硬件电路需要的电压,称为分离式方案,方案可提供多路不同电压输出,但电流输出有一定限制,一般来说该方案不包括隔离功能。上述电源功能电路采用何种方案,应根据实际应用场景及产品定位、成本控制等因素决定。一般恶劣工业应用场景要求电压具有隔离保护功能,此时可采用整体模块方案[13-14],而一般场合可采用电压转换芯片进行设计[15]。
AM3352中有专用的动态内存控制接口与数据地址总线,支持动态内存DDR3L,容量可支持到1Gb,设计时需要使用两片及以上内存时,对内存总线布局有特殊要求[16],需要兼容DDR3与DDR3L内存时,需特别注意两者之间在供电电压上不一致。
AM3352支持两个以太网控制器功能接口,电路设计时直接按RMII模式进行,外部电路外接PHY(物理接口收发器)芯片与网络变压器后,相关保护电路即可实现以太网通信功能。而第3个网络功能接口的实现需要通过AM3352中GPMC(General-Purpose Memory Controller)总线实现。与AM3352不同,DM9000A内部自带PHY功能,只需要外加网络变压器及保护功能电路即可实现以太网功能,详情见图2。 图2中DM9000A数据总线SD0-SD15的16根总线与GPMC总线的数据总线互连,芯片片选信号连接至AM3352片选控制信号线,其它控制信号连接到对应的功能IO端口;对外输出的两对差分信号(RX+,RX-;TX+,TX-)连接网络变压器,到此完成GPMC总线与DM9000A的信号部分连接。
整体框架设计图中串口通信功能电路,CAN(Controller Area Network)通信功能电路以及辅助、调试电路需要根据需求进行必要的隔离或非隔离设计[17-19]。
1.3 存储掉电保存设计
冗余通信架构中,往往需要分析过去失效原因,在分析时需要提供失效前系统数据值与命令运行状态,而存储掉电保护功能则针对该需求提供了硬件基础,具体设计如图3所示。通过GPMC总线的AD0-AD15信号是数据总线也可以是地址总线,因此,连接内存数据部分信号直接连接AD0-AD15即可,而地址部分的连接通过三态门D类触发器(SN74LVC374)配合GPMC总线的ALE信号进行控制输出,该逻辑控制的权限交由AM3352实现,硬件部分确保连接正确即可。
静态内存掉电后,其存储的内容将丢失,为使其不丢失,需要确保内存不掉电,TPS3613芯片具有在两种不同供电电源之间切换的功能,切换时间不大于100ms,如图3中,系统正常供电是3V3,发生突然断电后,TPS3613切换到锂电池(VBAT_3V3)供电。另外,该芯片提供静态内存片选信号的过渡管理功能,当系统3V3供电不正常时,静态内存片选信号无效,确保掉电瞬间内存不发生读写操作,达到掉电存储保护功能的目的。
2 软件设计
软件设计采用linux操作系统,设计重点在于扩展DM9000A驱动设计与以太网通信时冗余通信机制设计。
2.1 DM9000A驱动设计
通常DM9000A驱动包含以下内容:
(1)设备注册。主要通过probe函数完成,当probe函数检测到设备后,保存设备的资源信息,根据检测到的设备资源信息申请内存及中断,最后调用注册函数完成DM9000A注册。
(2)设备状态。设备通过状态函数表述在内核中的状态,如从内核中移除、移除后的状态标志位处理、设备复位、初始化完成后的挂起及其相关标志位的处理,需要对应函数进行处理。
(3)DM9000A开启与停止。DM9000A通过GPMC数据地址总线进行数据传输与命令控制,因此需要定义其启动后对应流程,同样地,停止工作也需定义对应流程。
(4)数据传输。网络设备传输的实质是对数据进行传输,需要对数据发送、数据接收进行处理;同时,DM9000A通过中断函数对应的中断调用数据传输,如超时,则调用超时处理函数,对传输包进行必要的检查、校验是不可或缺的功能。
(5)硬件命令操作。主要利用DM9000A命令控制端口进行命令下发,状态读取,不同位模式的处理方式也不尽相同,此处应注意地址偏移量的计算,可对照DM9000A数据手册进行查核。DM9000A片选信号需要根据原理图实际引脚进行设置及操作,若片选信号为置为有效状态,则无法进行有效操作。
2.2 冗余通信机制设计
在多数对冗余机制要求不严格的条件下,可以采用linux内核自带的bonding驱动完成该功能,其主要有7种模式:①模式0:平衡轮询循环策略;②模式1:主—备策略;③模式2:广播策略;④模式3:平衡策略;⑤模式4:动态链接聚合策略;⑥模式5:自适应传输负载均衡策略;⑦模式6:自适应负载均衡。
常用模式是模式0和模式1,其具体操作可参考文献[20]。使用bonding实现通信冗余功能可减少开发工作量,但不利于实时反应网络状态,因此需要增加一种监控机制,及时将网络通信状态反馈给中控端,具体设计流程如下: