女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

NDIS小端口驅動程序實現的關鍵技術和應用研究

電子設計 ? 來源:半導體技術 ? 作者:魯京,陳曦,周祖成 ? 2021-06-11 15:44 ? 次閱讀

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的定義如下

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小端口驅動程序,其主體部分中包括驅動程序框架、驅動程序的初始化、發送和接收數據和中斷處理在內的關鍵技術細節。本文所設計的網卡已經在原型網卡中運行,基本滿足了設計要求。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5136

    文章

    19519

    瀏覽量

    314533
  • 無線
    +關注

    關注

    31

    文章

    5532

    瀏覽量

    175332
  • 局域網
    +關注

    關注

    5

    文章

    770

    瀏覽量

    46771
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    汽車總線及其關鍵技術研究

    汽車總線及其關鍵技術研究
    發表于 07-10 11:33

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

    在本文中,首先介紹了小端口驅動程序的基本要點,然后給出了基于Driver Studio開發PCMCIA接口編程I/O(Programmed IO)方式工作的無線局域網網卡NDIS(網絡驅動程序
    發表于 05-31 06:59

    LCD顯示的關鍵技術

    可以用硬件電路或軟件程序實現B.只能用濾波電路或雙穩態電路實現C.只能用軟件程序實現D.只能用延時程序
    發表于 09-10 08:39

    視覺導航關鍵技術及應用

    由于視覺導航技術的應用越來越普及 ,因此 ,有必要對視覺導航中的關鍵技術及應用進行研究。文章對其中的圖像處理技術和定位與跟蹤技術進行了詳細
    發表于 09-25 08:09

    CITECT驅動程序結構及其重用性的研究

    本文通過對CITECT驅動程序的工作方式分析,討論了CITECT軟件與其提供的驅動程序之間交換數據和命令的方式,研究了基于二進制代碼的CITECT驅動程序的可重用性。
    發表于 06-15 08:37 ?20次下載

    基于NDIS中間層的包過濾的研究與設計

    在分析介紹Windows 2000/xp 平臺的NDIS 驅動程序的基礎上,提出了一種使用NDIS中間層驅動程序實現包過濾的方法。應用該方法
    發表于 08-22 09:40 ?21次下載

    NDIS驅動程序研究和基于NDIS網絡監測程序實現

    本文介紹了Windows環境下根據網絡設備接口規范(Network Device Interface Specification)NDIS開發網絡驅動程序技術。并分析了開發基于NDIS
    發表于 08-29 08:46 ?11次下載

    基于NDIS中間驅動的包過濾器的設計實現

    分析了網絡驅動程序接口規范(NDIS)的體系結構和標準開發接口。介紹了設計實現局域網數據包過濾器的關鍵技術和包過濾的基本過程。最后完成了實驗驗證,結果表明,基于NDI
    發表于 09-24 16:36 ?9次下載

    虛擬串行端口驅動程序免費下載

    虛擬串行端口驅動程序免費下載
    發表于 10-29 14:31 ?10次下載

    Windows CE設備驅動程序開發

    本文介紹了 Windows CE 體系結構和開發 wince 設備驅動程序的過程,闡述了設備驅動程序模型、設備驅動結構和中斷處理。 Windows CE 操作系統支持4種設備驅動模型:
    發表于 04-18 10:13 ?0次下載

    嵌入式電源管理關鍵技術研究實現

    嵌入式電源管理關鍵技術研究實現
    發表于 06-14 16:27 ?8次下載

    Linux驅動程序缺陷檢測研究

    驅動程序是操作系統的重要組成部分。驅動程序運行于內核態,其可靠性對于操作系統的安全可靠非常關鍵。針對Linux驅動程序研究基于符號執行的
    發表于 11-21 15:26 ?9次下載
    Linux<b class='flag-5'>驅動程序</b>缺陷檢測<b class='flag-5'>研究</b>

    基于符號執行技術實現驅動程序的漏洞檢測

    的思路,提出了一種基于符號執行技術實現驅動程序模擬環境,可以用于分析和檢測Linux設備驅動程序中存在的安全漏洞。該環境通過模擬內核提供給驅動程序
    發表于 12-05 16:06 ?0次下載
    基于符號執行<b class='flag-5'>技術</b><b class='flag-5'>實現</b>的<b class='flag-5'>驅動程序</b>的漏洞檢測

    Linux設備驅動程序的平臺驅動程序和字符驅動程序介紹

    了解Linux設備驅動程序的基礎知識,重點介紹平臺驅動程序和字符驅動程序。 提出了簡單的平臺驅動程序實現和簡單的字符
    的頭像 發表于 11-27 06:32 ?4542次閱讀

    步進電機驅動器的關鍵技術研究

    電子發燒友網站提供《步進電機驅動器的關鍵技術研究.pdf》資料免費下載
    發表于 10-09 16:30 ?0次下載
    步進電機<b class='flag-5'>驅動</b>器的<b class='flag-5'>關鍵技術研究</b>