99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NDIS小端口驅(qū)動程序?qū)崿F(xiàn)的關(guān)鍵技術(shù)和應(yīng)用研究

電子設(shè)計 ? 來源:半導(dǎo)體技術(shù) ? 作者:魯京,陳曦,周祖成 ? 2021-06-11 15:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 引言

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

2 小端口驅(qū)動程序

在典型的網(wǎng)絡(luò)中,如以太網(wǎng)LLC子層及其上層協(xié)議均由軟件實現(xiàn),MAC及其以下層協(xié)議由硬件實現(xiàn)。微軟Windows操作系統(tǒng)下的網(wǎng)絡(luò)設(shè)備驅(qū)動程序遵守NDIS規(guī)范,它在分層的網(wǎng)絡(luò)驅(qū)動程序框架中規(guī)定了一個標(biāo)準(zhǔn)接口,從而使抽象低層次的硬件提供了高層次網(wǎng)絡(luò)上的網(wǎng)絡(luò)管理。因此,該規(guī)范極大簡化了設(shè)備特定網(wǎng)絡(luò)驅(qū)動程序的開發(fā)。

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

關(guān)于網(wǎng)絡(luò)設(shè)備驅(qū)動程序和Windows驅(qū)動程序模型,感興趣的讀者可以參考文獻。

3 無線網(wǎng)卡驅(qū)動程序框架

標(biāo)準(zhǔn)的驅(qū)動程序都是C語言寫的,Nu Mega公司卻通過引入C++和封裝基本的函數(shù)庫簡化了驅(qū)動程序的設(shè)計。

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

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

wlan_drvDriver類不用開發(fā)者干預(yù)。開發(fā)者需要關(guān)心的是另外一個類wlan_drvAdapter,它是KndisMiniAdapter的子類。

4 驅(qū)動程序的初始化

wlan_drvAdapter類的實現(xiàn)是整個驅(qū)動程序的主體部分,包括初始化驅(qū)動程序、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、中斷處理、網(wǎng)卡復(fù)位等。

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

(1)選擇媒體類型。對于無線局域網(wǎng)為 NDISMedium802_3,而不是NdisMedium-WirelessWan。聲明為 NdisMediumWirelessWan將支持各種無線媒體類型,NdisMedium802_3原本為以太網(wǎng)設(shè)計,這里無線局域網(wǎng)似乎應(yīng)該聲明為NdisMediumWirelessWan媒體類型,但事實并不是這樣。通過查詢OID_GEN_PHYSICAL_MEDIUM,協(xié)議驅(qū)動程序

可以得知物理媒體為NdisPhysical-MediumWirelessLan類型。

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

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

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

(5)選擇并注冊中斷。

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

(7)設(shè)定網(wǎng)卡的MAC屬性,如網(wǎng)卡是否支持環(huán)回等。

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

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

5 發(fā)送數(shù)據(jù)

當(dāng)需要發(fā)送數(shù)據(jù)包時,NDIS調(diào)用MiniportSend 函數(shù),對應(yīng)本設(shè)計中wlan_drvAdapter::Send函數(shù)。如果當(dāng)前沒有數(shù)據(jù)包正在被發(fā)送,則調(diào)用 CopyDataDown(Packet)將數(shù)據(jù)發(fā)送給NIC,否則將數(shù)據(jù)插入發(fā)送隊列。當(dāng)中斷產(chǎn)生后,發(fā)現(xiàn)代表網(wǎng)卡準(zhǔn)備好接收下一個包,此時將數(shù)據(jù)包出列。

CopyDataDown(Packet)函數(shù)與具體的網(wǎng)卡實現(xiàn)有關(guān)。

6 接收數(shù)據(jù)

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

7 中斷處理

與中斷處理有關(guān)的函數(shù)包括中斷服務(wù)程序 wlan_drvAdapter::Isr和延遲過程調(diào)用函數(shù)wlan_drvAdapter::HandleInterrupt。

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

中斷處理程序是真正處理中斷的函數(shù),它完成所有數(shù)據(jù)處理工作,它需要處理包括與統(tǒng)計信息有關(guān)的接收數(shù)據(jù)、發(fā)送數(shù)據(jù)等所有中斷。

8 結(jié)論

網(wǎng)絡(luò)設(shè)備驅(qū)動程序是無線局域網(wǎng)網(wǎng)絡(luò)接口卡實現(xiàn)的關(guān)鍵部分,它與傳統(tǒng)的以太網(wǎng)卡稍有不同,但網(wǎng)卡與主機之間數(shù)據(jù)通信的基本格式與以太線網(wǎng)卡是相同的。本文首先介紹了小端口驅(qū)動程序的特點,然后給出了基于DriverStudio開發(fā)PCMCIA接口程控I/O方式工作的無線局域網(wǎng)網(wǎng)卡的NDIS小端口驅(qū)動程序,其主體部分中包括驅(qū)動程序框架、驅(qū)動程序的初始化、發(fā)送和接收數(shù)據(jù)和中斷處理在內(nèi)的關(guān)鍵技術(shù)細節(jié)。本文所設(shè)計的網(wǎng)卡已經(jīng)在原型網(wǎng)卡中運行,基本滿足了設(shè)計要求。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5147

    文章

    19613

    瀏覽量

    316457
  • 無線
    +關(guān)注

    關(guān)注

    31

    文章

    5546

    瀏覽量

    175788
  • 局域網(wǎng)
    +關(guān)注

    關(guān)注

    5

    文章

    774

    瀏覽量

    46997
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    汽車總線及其關(guān)鍵技術(shù)研究

    汽車總線及其關(guān)鍵技術(shù)研究
    發(fā)表于 07-10 11:33

    無線局域網(wǎng)NDIS端口驅(qū)動怎么實現(xiàn)?

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

    LCD顯示的關(guān)鍵技術(shù)

    可以用硬件電路或軟件程序實現(xiàn)B.只能用濾波電路或雙穩(wěn)態(tài)電路實現(xiàn)C.只能用軟件程序實現(xiàn)D.只能用延時程序
    發(fā)表于 09-10 08:39

    視覺導(dǎo)航關(guān)鍵技術(shù)及應(yīng)用

    由于視覺導(dǎo)航技術(shù)的應(yīng)用越來越普及 ,因此 ,有必要對視覺導(dǎo)航中的關(guān)鍵技術(shù)及應(yīng)用進行研究。文章對其中的圖像處理技術(shù)和定位與跟蹤技術(shù)進行了詳細
    發(fā)表于 09-25 08:09

    CITECT驅(qū)動程序結(jié)構(gòu)及其重用性的研究

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

    基于NDIS中間層的包過濾的研究與設(shè)計

    在分析介紹Windows 2000/xp 平臺的NDIS 驅(qū)動程序的基礎(chǔ)上,提出了一種使用NDIS中間層驅(qū)動程序實現(xiàn)包過濾的方法。應(yīng)用該方法
    發(fā)表于 08-22 09:40 ?21次下載

    NDIS驅(qū)動程序研究和基于NDIS網(wǎng)絡(luò)監(jiān)測程序實現(xiàn)

    本文介紹了Windows環(huán)境下根據(jù)網(wǎng)絡(luò)設(shè)備接口規(guī)范(Network Device Interface Specification)NDIS開發(fā)網(wǎng)絡(luò)驅(qū)動程序技術(shù)。并分析了開發(fā)基于NDIS
    發(fā)表于 08-29 08:46 ?11次下載

    基于NDIS中間驅(qū)動的包過濾器的設(shè)計實現(xiàn)

    分析了網(wǎng)絡(luò)驅(qū)動程序接口規(guī)范(NDIS)的體系結(jié)構(gòu)和標(biāo)準(zhǔn)開發(fā)接口。介紹了設(shè)計實現(xiàn)局域網(wǎng)數(shù)據(jù)包過濾器的關(guān)鍵技術(shù)和包過濾的基本過程。最后完成了實驗驗證,結(jié)果表明,基于NDI
    發(fā)表于 09-24 16:36 ?9次下載

    虛擬串行端口驅(qū)動程序免費下載

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

    Windows CE設(shè)備驅(qū)動程序開發(fā)

    本文介紹了 Windows CE 體系結(jié)構(gòu)和開發(fā) wince 設(shè)備驅(qū)動程序的過程,闡述了設(shè)備驅(qū)動程序模型、設(shè)備驅(qū)動結(jié)構(gòu)和中斷處理。 Windows CE 操作系統(tǒng)支持4種設(shè)備驅(qū)動模型:
    發(fā)表于 04-18 10:13 ?0次下載

    嵌入式電源管理關(guān)鍵技術(shù)研究實現(xiàn)

    嵌入式電源管理關(guān)鍵技術(shù)研究實現(xiàn)
    發(fā)表于 06-14 16:27 ?8次下載

    Linux驅(qū)動程序缺陷檢測研究

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

    基于符號執(zhí)行技術(shù)實現(xiàn)驅(qū)動程序的漏洞檢測

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

    Linux設(shè)備驅(qū)動程序的平臺驅(qū)動程序和字符驅(qū)動程序介紹

    了解Linux設(shè)備驅(qū)動程序的基礎(chǔ)知識,重點介紹平臺驅(qū)動程序和字符驅(qū)動程序。 提出了簡單的平臺驅(qū)動程序實現(xiàn)和簡單的字符
    的頭像 發(fā)表于 11-27 06:32 ?4603次閱讀

    步進電機驅(qū)動器的關(guān)鍵技術(shù)研究

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