網(wǎng)卡底層驅(qū)動(dòng)程序的編寫_第1頁
網(wǎng)卡底層驅(qū)動(dòng)程序的編寫_第2頁
網(wǎng)卡底層驅(qū)動(dòng)程序的編寫_第3頁
網(wǎng)卡底層驅(qū)動(dòng)程序的編寫_第4頁
網(wǎng)卡底層驅(qū)動(dòng)程序的編寫_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第第頁網(wǎng)卡底層驅(qū)動(dòng)程序的編寫

網(wǎng)卡底層驅(qū)動(dòng)程序的編寫

實(shí)踐與經(jīng)驗(yàn)

網(wǎng)卡底層驅(qū)動(dòng)程序的編寫

劉海波

!柳瑞禹,鄭桂林

(武漢大學(xué)電氣工程學(xué)院,武漢#$%%’)

網(wǎng)卡底層驅(qū)動(dòng)程序的編寫

實(shí)踐與經(jīng)驗(yàn)

功能通常都是用1234器件來實(shí)現(xiàn)的。不同的以太網(wǎng)卡所用的器件有所不同。

在本文中所采用的網(wǎng)卡上的1234器件是

下幾個(gè)基本部分:

!硬件初始化!發(fā)送初始化

!接收和發(fā)送的中斷服務(wù)程序

(硬件初始化.)

硬件的初始化為網(wǎng)絡(luò)控制器在當(dāng)前的系統(tǒng)中正確運(yùn)行提供了配置參數(shù)。這其中包括主機(jī)將適當(dāng)?shù)闹导虞d到配置寄存器和地址寄存器中,并使網(wǎng)絡(luò)控制器在網(wǎng)絡(luò)上正常工作,以下一些參數(shù)是在網(wǎng)絡(luò)控制器能夠工作前所必須初始化的:

+25-.673!89:;8=::?$@:8A%;B8CD8;(ED;CE:E8CF。

,以太網(wǎng)控制器+25-.673

它+25-.673是高度集成的以太網(wǎng)控制器,

的全雙工功能能使網(wǎng)卡通過雙絞線同時(shí)接收、發(fā)送數(shù)據(jù),它內(nèi)置有.0G37。它有以下的一些主要特點(diǎn):

!遵守%;B8CD8;44、4%%%5-,/H、.-I9J8K、.-I9J8,、.-I9J8+等標(biāo)準(zhǔn)

!與’%,--軟件兼容

以使通道的帶寬加!支持全雙工以太網(wǎng)功能,

!數(shù)據(jù)總線的寬度!物理地址!中斷服務(wù)的類型!接收緩沖區(qū)的大小

!=4=#門檻值

!可能接收的數(shù)據(jù)包類型

應(yīng)該注意的是,數(shù)據(jù)結(jié)構(gòu)寄存器!$(F必須在其他所有寄存器!除了命令寄存器!(F之外F之前初始化,對(duì)初始化的順序也有一定的要求。

(驅(qū)動(dòng)程序的編寫,)

發(fā)送驅(qū)動(dòng)程序一般分為兩個(gè)部分,第一部分

!支持*+)、7*4和I’(的自動(dòng)檢測功能

自動(dòng)改正極性!在.-I9J8+網(wǎng)絡(luò)中,

!5條中斷線

!提供可選擇的.0個(gè)4L#口基地址!內(nèi)置.0G的37

H主機(jī)和控制器之間的數(shù)據(jù)傳遞

主機(jī)和控制器之間通常采用兩種方式進(jìn)行數(shù)

!$COM8CJ8DPF使上層軟件無論何時(shí)傳送一個(gè)數(shù)據(jù)包

到驅(qū)動(dòng)程序時(shí),都能為其初始化一個(gè)傳輸過程。如果驅(qū)動(dòng)程序不能立即發(fā)送這個(gè)數(shù)據(jù)包!也就是說發(fā)送器很忙F,則將該數(shù)據(jù)包送入在緩沖區(qū)內(nèi)的未發(fā)送數(shù)據(jù)包隊(duì)列中,當(dāng)初始化完數(shù)據(jù)包或者將數(shù)據(jù)包送到隊(duì)列中后,$COM8CJ8DP返回。$COM8C38DP是和中斷服務(wù)程序!$COM8C43F一起協(xié)同工作的,當(dāng)發(fā)送完成后,網(wǎng)絡(luò)控制器向主機(jī)發(fā)出中斷請(qǐng)求表示發(fā)送完成,同時(shí)使發(fā)送狀態(tài)寄存器的!+3F相應(yīng)位置位。

由上面的討論可知,發(fā)送驅(qū)動(dòng)程序包括兩部分,$COM8C38DP和$COM8C43,同時(shí),$COM8C43中還包括接收驅(qū)動(dòng)程序。中斷服務(wù)程序!$COM8C43F(如圖H)與由接收、發(fā)送產(chǎn)生的中斷有關(guān)。$COM8C43由兩部分組成,一部分是數(shù)據(jù)包發(fā)送程序,另一部分是數(shù)據(jù)包接收程序。

發(fā)送驅(qū)動(dòng)程序.)

發(fā)送驅(qū)動(dòng)程序由兩部分組成。第一部分是$COQ當(dāng)被上層調(diào)用時(shí),對(duì)發(fā)送進(jìn)行初始M8C38DP!見圖NF,

化。$COM8C38DP通過讀取命令寄存器!(F中的內(nèi)容!+R)位是否為-F來檢查控制器是否為發(fā)送作好了

據(jù)的交換,一種是內(nèi)存共享模式,一種是4L#端口所以主模式。在本文中所采用的是4L#端口模式,要對(duì)這種方式進(jìn)行討論。

如圖,所示為4L#端口方式,這種方式用于在該方式下,控制器的內(nèi)存是通’EM8::的’%,。

過系統(tǒng)的4L#空間中的一個(gè)端口來訪問的,一次只能讀寫一個(gè)字節(jié)或一個(gè)字。以太網(wǎng)控制器通過用戶編程來控制它的內(nèi)存和4L#端之間的數(shù)據(jù)傳遞??刂破鞯膬?nèi)部寄存器和內(nèi)存訪問端口在主機(jī)系統(tǒng)的4L#端口表中,主機(jī)系統(tǒng)通過訪問這些端口

來設(shè)定相應(yīng)的內(nèi)部寄存器以及訪問控制器的內(nèi)存。

現(xiàn)

代計(jì)算機(jī)

!

圖,4L#端口

N網(wǎng)絡(luò)控制器驅(qū)動(dòng)程序的編寫

一個(gè)正確的以太網(wǎng)控制器驅(qū)動(dòng)程序應(yīng)包括以

!

$%’(#)*+

,--./0

總第一一七期!

網(wǎng)卡底層驅(qū)動(dòng)程序的編寫

實(shí)踐與經(jīng)驗(yàn)

準(zhǔn)備。如果控制器已作好準(zhǔn)備,#123415467用控制器的遠(yuǎn)程#!8通道將數(shù)據(jù)包從主機(jī)內(nèi)存發(fā)送到發(fā)送緩沖區(qū)中,然后發(fā)出發(fā)送命令并返回。否則,如果控制器忙的話0*9(位為-:,#123415467將數(shù)據(jù)包送到待發(fā)送數(shù)據(jù)包隊(duì)列,然后返回。

#12341=5%為控制器提出的中斷服務(wù)并且記錄

發(fā)送狀態(tài)寄存器0*5%:中的內(nèi)容,發(fā)送在未發(fā)送數(shù)據(jù)包隊(duì)列中的下一數(shù)據(jù)包。因此,對(duì)于發(fā)送中斷,

#12341=5%執(zhí)行下面幾步:

!恢復(fù)中斷寄存器0=5%:中的(*9位;

通過讀發(fā)送狀態(tài)寄存器0*5%:檢查是否正確

發(fā)送;

發(fā)送#如果還有更多的數(shù)據(jù)包在未發(fā)送隊(duì)列,下一數(shù)據(jù)包,否則到第步;

檢查是否還有未處理$讀取中斷狀態(tài)寄存器,的中斷。

接收驅(qū)動(dòng)程序+)

因?yàn)榻邮镇?qū)動(dòng)程序只能是一個(gè)中斷服務(wù)程序,所以它完全包含在#12341=5%之中。當(dāng)產(chǎn)生接收中斷,一個(gè)或多個(gè)數(shù)據(jù)包由控制器存入緩沖環(huán)中,

#12341=5%將這些數(shù)據(jù)包從緩沖環(huán)中移走然后送入

到主機(jī),直到緩沖環(huán)中空為止。接收數(shù)據(jù)包驅(qū)動(dòng)程序步驟如下:

!恢復(fù)中斷狀態(tài)寄存器中的(9*位;

讀取數(shù)據(jù)包”命令讀出緩沖環(huán)中通過發(fā)出“

的下一個(gè)數(shù)據(jù)包;

#檢查接收緩沖環(huán)是否為空:%?寄存器是

否等于’))%寄存器;

則到第-步,否則讀取中斷狀$若環(huán)不為空,

態(tài)寄存器以處理其他中斷。

網(wǎng)卡底層驅(qū)動(dòng)程序的編寫

實(shí)踐與經(jīng)驗(yàn)

12*345678912*:56;:93%’==:565?

(@:A4?*?5BCDE5F;9@:A4?GH--I,(A5?4)

J7EFD4KF:@5FAFACLCBC8MNC?F8O%FACD?CF9PCP4?FF8Q?8PN8DC478:FFAC?CFP8DQK4DL/+A5EM4MCD5?FD8L:KCEFAC

EFD:KF:DC4?LFAC8MCD4F58?MD5?K5MC8OK4DL/+ACM4MCD4E8M:FECNMA4E5E8?FAC8MCD4F58?MD5?K5MC4?LA4DLP4DC5?5F545R4F58?8O+1S-.TJU/+ACM4MCD5?FD8L:KCEA8PF8PD5FCLD5BCDO8DFACK4DL5?FACC?L/

VC;P8DLE:’CFP8DQK4DL;$D5BCD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論