基于VxWorks的双端口网卡智能双冗余驱动

发布者:DreamBig123最新更新时间:2013-10-26 来源: 21ic关键字:PC104  VxWorks  双端口以太网卡 手机看文章 扫描二维码
随时随地手机看文章
随着网络技术的成熟,具有价格低廉、连接方便等优点的以太网已成为各种控制系统接口互连的主要媒介。它作为一种通用网络数据通信系统,在全球计算机网络领域已经得到了广泛的应用。随着现代舰船信息化程度的不断提高,以太网技术也开始应用于现代舰船信息系统中,不但要求信息传输速度快,抗干扰能力强,还要求网络具有高稳定性和高可靠性,在网络局部故障或受损时,全系统不至于瘫痪失效。

冗余设计作为一种提高系统可靠性的有效方法,已经得到了广泛的应用。对于网络系统中的单个节点,常常需要对网卡进行双冗余备份,即每个节点都采用两个网络接口,中间用两个集线器或交换机互连,当正常通信的网卡或线路出现故障时该节点能自动地切换到备份网卡进行通信。

目前大多数操作系统(如Windows、Unix、Linux等)都支持多网卡,但均非冗余设计,每块网卡都有独立的物理地址和IP地址,以独立的形式供应用系统使用。要实现真正的智能双冗余网络系统,必须自行设计专用的网络驱动程序,以透明的形式提交高层应用系统使用,使系统感觉不到双网卡的存在。本文使用盛博公司PC104结构SCM/DETH型10M双端口以太网卡,设计实现了基于VxWorks的智能双冗余网络驱动。

1 VxWorks系统网络驱动原理

1.1 VxWorks系统简介

VxWorks操作系统是美国风河公司(Wind River System)推出的一款运行在目标机上的高性能、可裁减的嵌入式强实时操作系统。操作系统包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分,只占用了很小的存储空间,并可高度裁减,保证了系统能以较高的效率运行。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。

VxWorks主要有以下特点:
(1)具有高度可剪裁的操作系统微内核Wind;
(2)具有比较优秀的网络处理能力,适用于多种物理介质的TCP/IP协议族支持;
(3)具有极其丰富的BSP,支持多处理器系统,最多可以支持20个CPU;
(4)具有友好的开发调试环境,便于操作、配置和应用程序的开发调试;
(5)具有较好的兼容性,支持POSIX1003.1b;
(6)支持多种开发和运行环境。支持C语言、C++语言以及JAVA虚拟机。

1.2 VxWorks系统网络驱动原理

VxWorks中支持两种类型的网络设备驱动程序——BSD4.3网络驱动程序和可裁减的增强型网络堆栈SENS(Scalable Enhanced Networks Stack)。BSD4.3标准提供了网络设备驱动程序与IP协议的紧密结合,而SENS协议栈提供了可替换的网络设备驱动程序,即增强型网络驱动程序END(Enhanced Networks Driver)。

SENS模型包含三个部分:协议驱动程序、多元接口层(MUX)和END型网络驱动。它独立于硬件设备接口,将网络设备驱动程序细化,使开发者可以专注于驱动程序(END驱动)本身的开发。本文设计实现的智能双冗余驱动即是一个符合SENS模型标准的END型网络驱动。在END型网络驱动中主要实现网卡设备的装载,网络芯片的初始化,网络报文接收及发送等功能。在系统启动后,操作系统通过网卡加载函数调用到END型网络驱动,在加载过程中完成网络芯片的初始化、内存池的分配、网卡设备控制结构的填写等操作,最后通过指针传递的方式将网卡设备控制结构和13个网卡操纵函数提交给MUX层,供上层系统操作网卡工作时使用。

2 智能双冗余驱动程序实现

2.1 智能双冗余驱动实现原理

智能双冗余驱动的实现原理如图1所示,虚线框内为智能双冗余驱动。在VxWorks系统启动时,首先要遍历配置文件confignet.h中的网卡设备表endDevTbl[ ],设备表中包含双端口网卡上两个网卡的地址及中断等配置参数;然后,系统会调用sysDethEnd.c中的sysDethEndLoad(…)函数,将两个网卡的配置参数以函数入口参数的形式传递给智能双冗余驱动的装载函数dethEndLoad(…);装载函数为每个网卡设备创建一个控制结构,对入口配置参数进行解析,并为每个网卡设备分配一块内存空间,用系统的配置要求初始化两个网卡,同时填写好网卡设备的控制结构;最后,智能双冗余驱动将主通道网卡设备的控制结构指针提交给MUX层,并发起网络故障诊断定时器任务和网络故障诊断任务。

网络故障诊断定时器任务配合网络故障诊断任务执行,使用看门狗定时器Watchdog timer完成1ms定时,每定时1次释放1次二进制信号量sem_netDiagnose;网络故障诊断任务循环等待接收信号量sem_netDiagnose,取到信号量后立即判断主通道网卡设备的端口状态(连接/非连接),当端口处于连接状态时,任务循环等待下次信号量,当端口处于非连接状态时,网络故障诊断任务交换主通道与备用通道的控制结构内容,备用通道网卡设备变为主通道网卡设备开始工作,但对于上层应用来说,网卡的控制结构并没有改变。

2.2 网卡设备控制结构

在智能双冗余网卡驱动中使用一个控制数据结构控制一块网卡设备,控制结构中包含网卡的中断向量、I/O基址、总线类型、介质类型、物理地址等特性信息。这些信息有的在网卡设备表endDevTbl[ ]中,在系统启动过程中作为驱动装载函数的参数传递到驱动中;有的保存在网卡的PROM中,在网卡驱动程序初始化时,将这些特性参数写入网卡控制结构。[page]

智能双冗余网卡驱动中定义了一个控制单网卡设备的控制结构,如下所示:
typedef struct ne2000_device
{
……
int    unit;       /*网卡单元号*/
int    ilevel;      /*中断优先级*/
int    byteAccess;    /*字节存储模式*/
ULONG   base;       /*基地址*/
int    offset;      /*内存对齐偏移量*/
volatile ULONG  imask;   /*中断屏蔽码*/
UCHAR   enetAddr[6];   /*网卡物理地址*/
……
} DETHEND_DEVICE;

驱动中创建了两个网卡设备控制结构分别控制两块网卡。上层应用通过操作网卡控制结构从而实现对网卡的各种操作。

2.3 网络通信故障诊断方法

要实现网络端口的智能切换,实现网卡间冗余备份的功能,首要前提就是需要诊断出当前工作的网卡是否网络通信故障。任何一种网络芯片都提供连接状态自动诊断功能,通过在网络芯片的某个寄存器的相应位置0或置1来表示该网卡连接正常还是连接错误。它所检测的依据是网卡是否连通,也就是从本机网络端口到网线另一端的网络端口整个通路是否连通,它能检测出网线断开、网络接口松动及故障等错误。

本文使用的SEM/DETH双端口以太网卡采用两块RTL8019AS网络芯片,该网络芯片的寄存器组采用分页存储方式,共分为4页,都映射到16个I/O地址空间上。其中,第3页CONFIG0寄存器的B2位表示网卡连接状态自动诊断结果,当该位为1时表示连接错误,为0时表示连接正常。智能双冗余驱动的网络故障诊断任务判断网卡连接状态的代码如下:

setting=sysInByte(pDrvCtrl->base); /*读取命令寄存器状态*/
sysOutByte(pDrvCtrl->base,(0xc0|setting));/*选择第3页寄存器组*/
if(sysInByte(pDrvCtrl->base+CONFIG0_REG) & 0x04)/*网络连接错误*/
{ …… }

2.4 单物理地址实现

要使两块网卡实现智能双冗余备份,它们必须有相同的物理地址和IP地址。否则,当由其中一个网卡切换到另一个网卡上时,如果IP地址发生变化,系统将无法正常接收、发送数据;如果IP地址不发生变化而仅仅物理地址发生变化,虽然网卡切换后,系统仍可以正常接收、发送数据,但由于物理地址发生变化,将引起协议栈中ARP绑定表的变化,重新对应ARP绑定表中IP地址与网卡物理地址的关系,则延长了两个网卡之间的切换时间。

系统的IP地址存在于系统的网络协议栈中,在系统启动后与网卡进行绑定。由于本文设计实现的智能双冗余驱动对于应用系统和协议栈来说呈现单网卡的特征,网卡之间的切换只在驱动程序中完成,所以,当发生网卡切换时,系统的IP地址并不发生变化。

对于网卡的物理地址来说,通常每块网卡有一个全世界范围内惟一的物理地址,它保存在网卡的PROM中。网卡初始化时,要从PROM中读出物理地址,把它存放在适当的寄存器和数据结构中,对外来说,寄存器和数据结构中的数值就是这块网卡的物理地址。在智能双冗余驱动程序中,当驱动程序初始化时只读取一块网卡PROM中的物理地址,然后把这个地址写入两块网卡的对应物理地址寄存器和数据结构变量pDrvCtrl中,这样,两块网卡对外就具有统一的物理地址了。因为驱动程序自始至终只有一块网卡处于激活状态,另一块作为备份,因此不会发生同一个网络上两个物理地址相同出现冲突这种现象。

3 性能测试

3.1 测试方法

针对本文设计、实现的双端口网卡智能双冗余驱动进行性能测试。将智能双冗余驱动编译到VxWorks操作系统中,使用带有SEM/DETH双端口以太网卡的计算机做目标机,使用两根网线把目标机连接到交换机上。目标机应用程序以40次/秒的速率向外发送UDP广播报文。采用普通PC机作为主机系统,运行Windows2000操作系统,使用sniffer Pro工具进行网络监控。

3.2 测试结果及分析

测试结果如图2所示,横坐标代表报文数,纵坐标代表主机接收到的目标机UDP广播报文中两个连续UDP报文之间的间隔时间(单位为秒)。由图2可以看到,由于目标机正常工作状态下是以40次/秒的速率广播发送UDP网络报文的,所以每两个报文之间的时间间隔大部分为25ms左右。在图2中出现了8次主机接收到的广播报文时间间隔为100ms左右的情况,这是由于在目标机端进行了8次网卡切换,在网卡切换过程中出现了报文丢失现象。

由测试结果看,本文设计实现的智能双冗余驱动能够很好地实现双端口网卡冗余备份的功能,在检测到主通道网卡设备连接错误时可以切换到备用通道继续进行网络通信,并且可以在两块网卡之间循环切换;同时,该驱动对上层用户透明,呈现单网卡的特性,完全在驱动中实现网卡间的冗余备份。

本文设计实现了一个基于VxWorks的双端口网卡智能双冗余驱动,在驱动中实现了网络通信故障诊断和网卡间智能切换功能,对上层应用呈现单网卡特性。通过对设计实现的智能双冗余驱动进行性能测试,验证了设计的正确性和有效性,但通过测试结果也可以看到,在网卡切换过程中还存在切换时间较长的问题,有待进一步研究。

关键字:PC104  VxWorks  双端口以太网卡 引用地址:基于VxWorks的双端口网卡智能双冗余驱动

上一篇:嵌入式操作系统μC/OS-Ⅱ面向数控系统的改进
下一篇:基于和欣嵌入式操作系统的构件化网络协议栈

推荐阅读最新更新时间:2024-05-02 22:49

VxWorks系统下的RTL8139驱动程序改进
0 引言 RTL8139是台湾Realtek半导体公司生产的一种快速以太网控制器,提供符合PCI2.2标准的接口,兼容IEEE802.3u 100BASE-T规范,支持IEEE-802.3x全双工流量控制,支持10Mbit.s-1/100Mbit.s-1全双工、半双工自适应,价格便宜,性能稳定,是PC机、电信终端产品中应用最多的以太网控制器之一。RTL8139在各种操作系统下的驱动都能从Realtek公司网页下载,其中包括VxWorks系统下的驱动,而且提供C源代码。但是在嵌入式系统下,针对不同的硬件平台,往往需要修改该驱动程序以提高其稳定性和效率。基于MPC8241 CPU的硬件平台,本文提出RTL8139在VxWorks系统
[工业控制]
基于PC104总线的嵌入式温度控制系统
    1引言   温度在工业控制中是个很重要的参量,一个温控系统可以纯粹是个小型的控制温度的系统 ,也可以是整个大系统中的一个部分,但都需要用相应的硬件装置、机械设备和控制这些设备运行的软件来实现,而影响温度参量控制的主要因素也是来自这3个方面。但在具体设计时,这3个方面是相互约束又相互补充的,尤其是需要对温度瞬间的变化作出相应控制的系统,比如在某个温度区间里需要有什么样的控制精度、温度斜坡时间和温度均匀性等要求, 在机械设备已经限制的情况下,可以通过对硬件电路和软件的设计来弥补。   很多温度控制系统中,一般选用单片机来实现,由于每种单片机一般都有各自的一套开发 工具,需要花费一定时间和精力去学习研究才能掌握,并且相关的硬
[嵌入式]
一种PC104温度采集卡的设计
摘要:介绍了一种用于12路通道温度采集的PC104采集卡的设计。重点描述了实现通道校正、采集数据的控制器的设计过程。该控制器提供了一定的数据缓冲能力和多种参数的工作方式,使得PC104采集卡的功能比较强大和全面,并且非常灵活。其设计思路值得以后类似的采集卡借鉴。实际运行结果表明,该采集卡的设计是成功的,并且工作可靠。 关键词:温度采集 AD7711 PC104 控制器 CPLD PC104总线是一种出现已久的栈式总线,基本上属于ISA总线的变型。模块尺寸很小(90mm%26;#215;96mm),多个模块通过针孔结构堆叠而成,形成的系统结构紧凑、抗冲击性能好,加上现在广泛应用的低功耗技术,使PC104总线特别适于用户自行开发特
[传感技术]
VxWorks操作系统下CF卡驱动程序的开发
1 概述 CF卡是一种小型的、携带方便的存储I/O卡。由SanDisk等公司发起成立的CompactFlash协会(CFA)制定的CF卡标准促进了 CF卡的发展,目前CF卡标准为4.0版本。同时支持3.3V和5V电压,容量从最早的2M字节发展到现今的8G字节,耗电量很低,仅为IBM微型硬盘的 5%。CF卡的大容量、较高的抗震性能、很好的兼容性等特点使其在航空航天、医疗设备等领域,以及便携计算机、数码产品、个人通讯设备、监控设备、网络设备等方面被广泛应用。 本文阐述了在VxWorks嵌入式操作系统下,使用Freescale的MPC8245处理器访问CF卡的IDE驱动程序设计,实现了对CF卡 FAT16/FAT32文件格式的访
[嵌入式]
基于嵌入式PC104工控机和C8051F047单片机实现机器人系统的设计
1.引言 高压输电线及杆塔附件长期暴露在野外,因受到持续的机械张力、电气闪络、材料老化的影响而产生断股、磨损、腐蚀等损伤,如不及时修复更换,原本微小的破损和缺陷就可能扩大,最终导致严重事故。因此,电力公司需要定期对线路设备进行巡检,及时发现早期损伤和缺陷并加以评估,根据评估结果安排必要的维护和修复,从而确保供电的安全可靠性。传统的人工巡检方法不仅工作量大而且条件艰苦,特别是对于山区和大江大河等的输电线路巡检存在很大困难,甚至一些巡检项目靠常规方法都难以完成。因此,采用机器人自动巡线成为保障高压输电线安全运行的一种必要手段。 高压输电线路巡线机器人属于特种机器人的研究范畴,主要完成高压供电线缆的无损探伤、悬垂绝缘子绝缘特性检测、
[单片机]
基于嵌入式<font color='red'>PC104</font>工控机和C8051F047单片机实现机器人系统的设计
基于ARM和VxWorks实现自动彩信发送的嵌入式系统
在arm微处理器硬件平台上,应用windriver公司的tornado集成开发环境,实现基于vxworks的自动发送彩信的嵌入式应用系统。该系统使用现有cdma网络,根据设定的参数发送彩信到特定的移动终端用户。 随着嵌入式应用的发展和16/32位risc处理器技术的成熟,以及支持各种高端处理器的嵌入式操作系统的涌现和完善,嵌入式无线设备可以利用cdma网络实现许多新的应用。自动发送彩信的嵌入式系统就是这种新应用之一,在特定的条件下,系统自动发送彩信到指定的移动通信终端;该应用系统是由用户根据要求设定触发条件的自动发送彩信系统,当满足触发条件时,设备会自动控制捕获、压缩图像部件拍摄外部图像,经过模数转换、数字压缩等处理后,经处理器
[单片机]
基于ARM和<font color='red'>VxWorks</font>实现自动彩信发送的嵌入式系统
风河为安波福全栈式解决方案凑上最后一块拼图
日前,在上海车展上,安波福高管携众方案亮相,并喊出了要做“涵盖软件、硬件、系统架构供应商”的口号。在2022年底,安波福宣布完成对风河的收购之后,这家全球唯一同时拥有汽车大脑和神经系统能力的汽车Tier1供应商,增加了许多关于软件方面的内容。 软件定义汽车已经不再是什么新鲜事儿,但是像安波福如此大手笔并购关键软件供应商,在汽车供应链领域尚属首次。 作为风河加盟安波福的第一次公开场合亮相,不仅是被安波福高管们反复提及,而且已经切实将安波福的智能汽车架构SVA™以及风河的软件能力相结合。 风河助力安波福云原生梦 “作为智能边缘软件的全球领导者,风河软件能够提供差异化的操作系统、中间件,和业界首个云原生的系统开发和维护平
[汽车电子]
风河为安波福全栈式解决方案凑上最后一块拼图
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved