微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于VxWorks的双端口网卡智能双冗余驱动

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

时间:07-01 来源:3721RD 点击:

随着网络技术的成熟,具有价格低廉、连接方便等优点的以太网已成为各种控制系统接口互连的主要媒介。它作为一种通用网络数据通信系统,在全球计算机网络领域已经得到了广泛的应用。随着现代舰船信息化程度的不断提高,以太网技术也开始应用于现代舰船信息系统中,不但要求信息传输速度快,抗干扰能力强,还要求网络具有高稳定性和高可靠性,在网络局部故障或受损时,全系统不至于瘫痪失效。

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

目前大多数操作系统(如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,取到信号量后立即判断主通道网卡设备的端口状态(连接/非连接),当端口处于连接状态时,任务循环等待下次信号量,当端口处于非连接状态时,网络故障诊断任务交换主通道与备用通道的控制结构内容,备用通道网卡设备变为主通道网卡设备开始工作,但对于上层应用来说,网卡的控制结构并没有改变。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top