国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

無線局域網NDIS小端口驅動實現

發布時間:2010-8-31 10:20    發布者:techshare
關鍵詞: NDIS , 端口 , 驅動 , 無線局域網
1 引言   

無線局域網經過幾年的發展,在技術上已經日漸成熟。尤其是IEEE推出802.11-1999和802.11b以來,應用也日漸廣泛。無線局域網硬件實現的兩大主要部分是基帶處理器和MAC控制器,軟件部分包括驅動網卡本身工作的嵌入式軟件和網絡設備驅動程序。在本文中,首先介紹了小端口驅動程序的基本要點,然后給出了基于Driver Studio開發PCMCIA接口編程I/O(Programmed IO)方式工作的無線局域網網卡NDIS(網絡驅動程序接口標準),并討論了小端口驅動程序實現過程中的若干關鍵技術的細節。   

2 小端口驅動程序   

在典型的網絡中,如以太網LLC子層及其上層協議均由軟件實現,MAC及其以下層協議由硬件實現。微軟Windows操作系統下的網絡設備驅動程序遵守NDIS規范,它在分層的網絡驅動程序框架中規定了一個標準接口,從而使抽象低層次的硬件提供了高層次網絡上的網絡管理。因此,該規范極大簡化了設備特定網絡驅動程序的開發。   

NDIS還用于網絡驅動器的狀態信息和參數的維護,包括函數的指針、句柄、鏈接的參數塊和其他的一些系統變量。NDIS規范下的網絡驅動程序分為三類:小端口驅動程序、中間驅動程序和協議驅動程序。普通網卡的驅動程序都是小端口驅動程序,它有兩種基本功能:管理一個網絡接口卡(NIC),包括通過NIC收、發數據;與高級驅動程序接口(如中間驅動程序和傳輸協議驅動程序)。一個小端口NIC驅動程序通過NDIS庫和它的NIC與高層驅動程序相互通訊。NDIS庫 導出一個完全的函數集合(NdisXXX函數),來裝入小端口需要調用的操作系統函數。然后,小端口必須導出一套MiniportX xx函數的實體指針,可供NDIS自己使用或代替高層驅動程序訪問小端口。   

關于網絡設備驅動程序和Windows驅動程序模型,感興趣的讀者可以參考文獻。   

3 無線網卡驅動程序框架   

標準的驅動程序都是C語言寫的,Nu Mega公司卻通過引入C++和封裝基本的函數庫簡化了驅動程序的設計。   

使用DriverStudio編寫網絡驅動程序,首先需要使用NetworkDriver Wizard生成驅動程序的框架。該框架生成兩個驅動程序的基本類:一個是 wlan_drvDriver,它是KndisMiniDriver的繼承類;另一個驅動程序必須且只有一個KndisMiniDriver的繼承類。wlan_drvDriver的定義如下   

class wlan_drvDriver : protected
KNdisMiniDriver
{
protected:
// must implement the entry point
NTSTATUS DriverEntry(IN PVOID RegistryPath);
};
NTSTATUS wlan_drvDriver:riverEntry(IN PVOID)
{
TRACE("wlan_drvDriver:riverEntry Com piled at " __TIME__ " on " __DATE__ "\n");
KNDIS_MINIPORT_CHARACTERISTICS Chars;
return Chars.Register(*this);
}   

wlan_drvDriver的唯一工作是定義DriverEntry。操作系統通過該函數得知驅動程序的入口。DriverEntry例化NetworkDriver Wizard生成的另外一個類wlan_drvAdapter,并將本驅動程序注冊。   

wlan_drvDriver類不用開發者干預。開發者需要關心的是另外一個類wlan_drvAdapter,它是KndisMiniAdapter的子類。  

4 驅動程序的初始化
  

wlan_drvAdapter類的實現是整個驅動程序的主體部分,包括初始化驅動程序、發送數據、接收數據、中斷處理、網卡復位等。   

驅動程序在被裝入操作系統后的第一步工作是進行初始化。該工作由wlan_drv Adapter::Initialize函數完成。該函數完成的工作如下:   

(1)選擇媒體類型。對于無線局域網為 NDISMedium802_3,而不是NdisMedium-WirelessWan。聲明為 NdisMediumWirelessWan將支持各種無線媒體類型,NdisMedium802_3原本為以太網設計,這里無線局域網似乎應該聲明為NdisMediumWirelessWan媒體類型,但事實并不是這樣。通過查詢OID_GEN_PHYSICAL_MEDIUM,協議驅動程序
可以得知物理媒體為NdisPhysical-MediumWirelessLan類型。   

(2)從注冊表讀取網卡地址。   

(3)注冊適配器的類型,如指定設備為 NdisInterfacePcMcia,代表網卡為PCMCIA標準的PC Card。這里需要強調的是PCMCIA接口的配置存儲器和功能寄存器都是由主機自行維護的,雖然驅動程序也可以讀寫配置存儲器和功能寄存器,但這樣做會導致系統工作的不一致,除非特別需要,驅動程序無需讀寫配置存儲器和功能寄存器。   

(4)選擇并注冊IO端口。   

(5)選擇并注冊中斷。   

(6)設定網卡所支持的包種類,如廣播中的多播等。   

(7)設定網卡的MAC屬性,如網卡是否支持環回等。   

(8)初始化網卡硬件使其進入工作狀態。該工作由wlan_drvAdapter::CardInit()完成。主要是設置相應的寄存器,讀取永久網卡地址等。  

(9)初始化自定義變量。  

5 發送數據   

當需要發送數據包時,NDIS調用MiniportSend 函數,對應本設計中wlan_drvAdapter::Send函數。如果當前沒有數據包正在被發送,則調用 CopyDataDown(Packet)將數據發送給NIC,否則將數據插入發送隊列。當中斷產生后,發現代表網卡準備好接收下一個包,此時將數據包出列。   

CopyDataDown(Packet)函數與具體的網卡實現有關。   

6 接收數據   

由于本設計中的網卡是程控I/O的網卡,速度較慢。每次產生中斷時,如果發現NIC上緩存了一個數據包需要接收,則通過NdisMEthIndicateReceive 通知給NDIS,對應于m_Lookahead.In di cate函數。如果是DMA設備,可以一次將整個數據包通知給上層,對于PIO方式的NIC,DDK建議只通知部分數據,然后讓NDIS調用MiniportTransferData來讀取余下的數據。當然NDIS也許對該數據不感興趣,就不會讀剩下的數據。  

7 中斷處理   

與中斷處理有關的函數包括中斷服務程序 wlan_drvAdapter::Isr和延遲過程調用函數wlan_drvAdapter::HandleInterrupt。

中斷服務程序Isr工作在DIRL,會搶斷工作在更低中斷優先級的線程,所以應該盡快退出。該程序的主要任務是判斷中斷當前是否是本網卡產生的,如果沒有應該將*InterruptRecognized 設定為FALSE,并退出程序。如果是,則將中斷處理程序HandleInterrupt插入DPC列隊,以在Passive Level上進一步處理中斷。   

中斷處理程序是真正處理中斷的函數,它完成所有數據處理工作,它需要處理包括與統計信息有關的接收數據、發送數據等所有中斷。   

8 結論   

網絡設備驅動程序是無線局域網網絡接口卡實現的關鍵部分,它與傳統的以太網卡稍有不同,但網卡與主機之間數據通信的基本格式與以太線網卡是相同的。本文首先介紹了小端口驅動程序的特點,然后給出了基于DriverStudio開發PCMCIA接口程控I/O方式工作的無線局域網網卡的NDIS小端口驅動程序,其主體部分中包括驅動程序框架、驅動程序的初始化、發送和接收數據和中斷處理在內的關鍵技術細節。本文所設計的網卡已經在原型網卡中運行,基本滿足了設計要求。
本文地址:http://www.qingdxww.cn/thread-24738-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 基于CEC1712實現的處理器SPI FLASH固件安全彈性方案培訓教程
  • 5分鐘詳解定時器/計數器E和波形擴展!
  • PIC18-Q71系列MCU概述
  • 無線充電基礎知識及應用培訓教程2
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线一区观看 | 99热在线只有精品 | 亚洲一区在线观看视频 | 国产香蕉75在线播放 | 国产精品va在线观看一 | 欧美天堂在线观看 | 国产日韩精品一区二区三区 | 午夜免费观看福利片一区二区三区 | 亚洲系列中文字幕一区二区 | 亚洲spank男男实践网站 | 日韩小视频在线播放 | 四虎永久在线精品免费观看地址 | 日本私人网站在线观看 | 在线观看a视频 | 看黄网站在线播放 | 日韩一级在线 | 久草中文在线视频 | 精品卡1卡2卡三卡免费视频 | 国产热 | 羞羞视频入口 | 91香蕉国产线在线观看免费 | 香蕉伊思人在线精品 | 国产成人亚洲精品91专区手机 | 国产色视频网站免费观看 | 一级特黄特黄的大片免费 | 日韩精品片 | 色综合久久久高清综合久久久 | 韩国一级成a人片在线观看 韩国一级a毛片 | 成人黄色激情 | 日本一区二区在线不卡 | 日日摸人人看97人人澡 | 九九热精品视频在线观看 | 久久久亚洲精品蜜桃臀 | 六月婷婷在线观看 | 星武神诀在线观看全集免费播放 | 在线成人免费观看国产精品 | 久久青青热 | 日韩国产欧美在线观看一区二区 | 亚洲毛片在线看 | 四虎国产成人免费观看 | 黄毛片一级毛片 |