999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VxWorks的網卡驅動設計

2010-04-03 00:59:20王景剛鄧如玉楊小平
中國新技術新產品 2010年14期
關鍵詞:設備

王景剛 鄧如玉 楊小平

(1、哈爾濱工程大學自動化學院,黑龍江 哈爾濱150001 2、哈爾濱工程大學自動化學院,黑龍江 哈爾濱150001 3、武昌造船廠,湖北 武漢430060)

引言

VxWorks是一個具有微內核、可裁剪的高性能強實時操作系統,它以其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中。我校研制的綜合導航顯控臺采用VxWorks操作系統,它作為船舶導航系統的核心設備實時為指揮系統、駕控系統等提供各種信息。當需要更改海圖模塊硬盤中一些及時需要修改的數據、程序等信息時,為避免拆卸設備,可以通過網絡傳輸來解決上述問題。本文以Intel82557網卡為例,提出了基于VxWorks的網絡設備驅動程序的開發方法和實現流程。

1 VxWorks的網絡結構

VxWorks提供了與其他TCP/IP網絡系統間"透明"的存取方式、BSD Socket兼用的編程接口,遠程過程調用(RPC),遠程文件存取等。網絡驅動程序和上層網絡協議棧可以有兩種實現形式:BSD方式和MUX方式。在VxWorks中,MUX與END(增強的網絡驅動程序)合稱SENS驅動(可裁剪增強型網絡驅動)。網卡驅動程序的層次結構使網卡驅動程序的實現和移植更加方便。而且VxWorks為編寫網卡增強型驅動程序(SENS)提供了很好的接口和規范。圖1是VxWorks的網絡系統。

2 END驅動概述

2.1 MUX與END

VxWorks網絡協議棧可以分為以下幾層:應用層、傳輸層、IP層、MUX層、數據鏈路層和物理層。如圖2所示。

從圖2看出,與其他TCP/IP協議相比Vx-Works網絡協議棧增加一層MUX層。MUX層是VxWorks為方便在網絡接口硬件上實現多種協議而增加的一層。它主要用于管理底層的多種硬件的設備驅動,向上層不同協議提供統一的接口,降低了上層協議與底層物理硬件的藕合,使得網絡驅動和上層協議彼此保持獨立,既方便在現有硬件基礎上實現新的上層協議,也利于用新的硬件支持原有的上層協議。

MUX與END的交互是通過提供一套可供底層調用接口服務來實現的,實現END驅動必須遵循這套接口關系。如圖3所示。

圖3中右邊框中列出的函數是驅動需要實現的函數,供MUX層調用在必要的時間調用,如當上層使用該網卡發送數據時,MUX會調用該網卡END驅動提供的Send函數,將數據提交給網卡芯片硬件。

2.2 緩沖池數據結構

網絡設備驅動與上層協議進行數據交換需要相應的內存緩沖,并且管理這些緩沖也需要相應的函數。VxWorks提供了netBufLib函數庫用于創建和管理網絡設備用到的內存緩沖池,網絡設備驅動可以直接使用也可以在此基礎上設計自己特定的內存緩沖池。數據以簇的形式保存,數據結構mBlks(內存塊)和clBlks(簇塊)形成的數據鏈結構則用于指定各個簇。

在clBlk之上是mBlk結構。該結構存儲一個到clBlk的連接,也可以存儲一個到另一個mBlk的連接。通過mBlk的連接,可以引用任意數量的數據,如圖4所示。

3 END驅動實現

3.1 END設備驅動程序裝載過程

END設備驅動程序裝載過程實際上是分三個步驟完成的。即指定END設備、裝載END設備和啟動END設備。

3.1.1 指定END設備

網絡設備的驅動程序安裝時通過修改相應的BSP實現。在修改BSP之前,首先看一下BSP中的END設備驅動程序入口表END_TBL_ENTRY的結構。在BSP的configNet.h文件中定義著END_TBL_ENTRY結構的數組endDevTbl[],其數據結構如下所示。

該數組描述了系統中的所有網絡設備的裝載函數入口點及其相關參數。將網絡設備驅動程序的裝載函數rt8185lEndLoad()入口點及相關參數添加到網絡設備表endDevTbl[]中,而后在config.h中加入"#define INCLUDE_FEI_EN D"以使系統準備初始化MUX并通過MUX裝載網絡設備驅動程序。

在VxWorks網絡驅動程序的編程規范中,為了系統的高移植性、兼容性和可裁剪型等,通常在configNet.h文件中對系統支持的INTEL82557網絡設備定義一些宏,其編寫宏程序如下所示。

3.1.2 裝載及啟動END設備

裝載及啟動END設備的系統函數主要用到以下幾個:

(1).muxDevLoad()

該函數裝載指定設備的驅動程序裝載函數。如果要裝載END設備,系統必須調用muxDevLoad()函數。

(2).muxDevStart()啟動設備函數

(3).muxBind()

muxBind()可以將協議綁定到指定的END設備上。其調用過程是系統調用ipAttach()函數,而該函數調用muxBind()函數,綁定協議堆棧到MUX上的一個指定的網絡接口。當一個網絡接口被關閉時,ipAttach()函數將釋放網絡接口所關聯的TCP/IP堆棧模塊。

裝載及啟動END設備驅動程序的流程如下:

使用指定的END設備驅動程序的BSP引導VxWorks系統時,在引導過程中,系統將執行任務tUsrRoot來完成如下各項:(1)初始化網絡任務的工作隊列;(2)創建tNetTask任務來處理網絡任務工作隊列的條目;(3)調用muxDevLoad()裝載指定的網絡驅動程序;(4)調用muxDevStart()啟動指定的網絡驅動程序。

tUsrRoot任務調用MUX設備裝載函數muxDevLoad()和設備啟動函數muxDevStart(),通過這兩個函數來裝載和啟動設備驅動程序。

muxDevLoad()函數會根據網絡設備表end-DevTbl[]中的定義逐一調用各網絡設備的裝載函數,其中這個函數是muxDevLoad()的一個輸入參數。muxDevStart()函數也會根據endDevTbl[]逐一調用網絡設備所定義的設備開始函數。至此MUX的初始化以及END驅動程序的初始化工作已經完成。但是網絡設備還是不可以使用,因為還需要將協議綁定到指定的END指定的設備上,這一步需要用muxBind()函數實現。

在VxWorks中,系統通過usrRoot()函數調用usrNetInit()函數完成MUX的初始化、裝載網絡設備表endDevTbl[]中描述的所有設備并將IP協議綁定到網絡引導設備上等工作。

網絡設備驅動程序的安裝過程即圖5所示的網絡初始化順序。

3.2 發送數據

在VxWorks網絡系統中,發送數據的流程如圖6。

通過對圖6分析,主要包含以下幾個處理。

(1)用戶調用write()函數,通過套接字訪問網絡。(2)網絡協議拷貝需要發送的數據到網絡緩區中,并調用協議驅動程序的發送程序。(3)協議驅動程序調用muxSend()啟動發送循環。(4)muxSend()通過調用send()回調函數,把緩沖區傳遞給END。(5)數據發送程序把數據拷貝到設備緩沖區中,并把它放置到設備的發送隊列中。(6)當產生發送中斷時,驅動程序的中斷服務程序調度程序丟棄已發送的數據包,徹底清理發送隊列。

3.3 接收數據

在VxWorks網絡系統中,接收數據的流程如圖7。

通過對圖7進行分析,它主要包含以下幾個處理。(1)設備接收到數據包后直接把數據存放到預先分配的簇中。(2)當接收到中斷時,驅動程序的中斷服務程序調度任務級接收程序進行如下操作。①clBlk結構和簇連接;mBlk和clBlk連接;最后構成緩沖區。②通過調用receiveRtn()函數,把緩沖區傳遞給更高級別的協議。(3)muxReceive()調用協議的stackRcvRtn()函數,把成列的緩沖區傳遞給應用。用戶使用read()函數,通過套接字訪問網絡中的成列緩沖區

3.4 驅動程序的中斷處理

中斷處理函數RT8185L INT()處理設備中斷。根據中斷狀態調用相應的中斷處理程序,如接收終端程序、發送中斷程序等。當網絡接口產生中斷時,系統調用中斷服務程序。為了將終端阻塞減到最小,中斷驅動程序只處理那些需要最小時間的工作,把其他耗時的任務排列到網絡任務的工作隊列中。為了排列任務級的包接收處理工作,網絡驅動程序中斷服務程序必須調用netJobAdd()函數。在調用netJobAdd()函數時,應當指定任務級處理數據包的驅動程序入口。然后由netJobAdd()把函數指派到網絡系統任務--tNetTask的工作隊列中。VxWorks通過tNetTask處理任務級的網絡處理。

tNetTask調用隊列中處理程序如下:(1)包接收程序:把接收到的數據包上傳到網絡緩沖區的堆棧中,通過一個調用上傳給MUX。(2)釋放所有發送幀程序:程序調用netClFree()函數釋放發送緩沖區中所有已經發送的數據幀。

4 結束語

本文分析了RT8185L網卡驅動程序在VxWorks操作系統下的實現。在網卡驅動的設計開發過程中,著重說明網卡驅動在結構、在整個系統中的位置,中斷處理,收發包存儲空間分配等。RT8185L網卡驅動程序應用于我校綜合導航顯控臺,有重要的現實意義。由于主控器內部的差異,其他網卡在初始化、接收數據和發送數據方面會不同,但是在其他方面,可以參考上述驅動程序。

[1]周啟平、張揚,VxWorks下設備驅動程序及BSP開發指南.[M]中國電力出版社.2004.

[2]孔祥營、張保山、俞烈彬,VxWorks驅動及分布式編程.

[M]中國電力出版社.2007.

[3]Wind River Systems,Inc.VxWorks Network Protocol

Toolkit Users Guide[K].California:Wind River,1999.

[4]王守林、蘇建華,VxWorks下PCI網卡驅動程序結構與實現.[J]工業控制計算機.2005

[5]景琦,基于VxWorks的設備驅動和網絡通信.[D]西安科技大學.2006.

猜你喜歡
設備
諧響應分析在設備減振中的應用
調試新設備
當代工人(2020年13期)2020-09-27 23:04:20
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發射設備中平衡輸入與不平衡輸入的轉換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點滿滿的可穿戴智能設備
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
HTC斥資千萬美元入股虛擬現實設備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設備篇
如何在設備采購中節省成本
主站蜘蛛池模板: 在线观看国产精品日本不卡网| 亚洲国产日韩欧美在线| 日韩在线网址| 亚洲三级影院| 在线国产91| 精品少妇三级亚洲| 欧洲免费精品视频在线| 一区二区理伦视频| 亚洲无码精品在线播放 | 五月婷婷激情四射| 狠狠亚洲五月天| 伊人久久大线影院首页| 免费观看精品视频999| 97se亚洲| 国产成人精品免费av| 亚洲精品高清视频| 中文字幕亚洲专区第19页| 国产美女一级毛片| 免费毛片全部不收费的| 伊人久热这里只有精品视频99| 久久国产精品麻豆系列| 欧美自慰一级看片免费| 亚洲大尺码专区影院| 91福利在线观看视频| 波多野吉衣一区二区三区av| 免费无遮挡AV| 国产乱子伦精品视频| 日韩精品久久无码中文字幕色欲| 日韩第一页在线| 亚洲欧美在线精品一区二区| 无码精品国产dvd在线观看9久| 天堂在线www网亚洲| 少妇精品网站| 色综合狠狠操| 九九九久久国产精品| 天堂成人在线视频| 五月婷婷综合在线视频| 免费jjzz在在线播放国产| 欧美日韩国产成人高清视频| 国产精品浪潮Av| 国产综合色在线视频播放线视| 国产经典免费播放视频| 久久精品国产免费观看频道| 亚洲欧洲一区二区三区| 亚洲一区二区日韩欧美gif| 国产成人精品一区二区三区| 久久毛片网| 欧美亚洲激情| 欧美成人在线免费| 亚洲无码高清一区| h网址在线观看| 91精品啪在线观看国产| igao国产精品| 九九这里只有精品视频| 亚洲日本在线免费观看| 久久无码av三级| 国产成人高清精品免费软件 | 亚洲永久视频| 九九精品在线观看| 午夜性爽视频男人的天堂| www.亚洲天堂| a级毛片网| www.亚洲色图.com| 欧洲高清无码在线| 亚洲高清在线播放| 欧美无专区| 婷婷成人综合| 精品久久香蕉国产线看观看gif| 亚洲综合第一区| 欧美啪啪网| 久久免费看片| 自慰网址在线观看| 久久永久视频| 国产精品无码一二三视频| 99精品热视频这里只有精品7| 亚洲欧美精品一中文字幕| 亚洲成人免费在线| 精品国产毛片| 就去吻亚洲精品国产欧美| 国产内射一区亚洲| 国产制服丝袜91在线| 国产好痛疼轻点好爽的视频|