亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Linux的光纖通道網(wǎng)卡驅(qū)動程序開發(fā)分析

        2012-12-31 00:00:00王正龍
        計算機光盤軟件與應(yīng)用 2012年18期

        摘要:Linux以其自身內(nèi)核強大穩(wěn)定、工作效率高、易于擴展以及豐富的硬件支持等優(yōu)點,現(xiàn)已被廣泛應(yīng)用于嵌入式系統(tǒng)當(dāng)中。驅(qū)動程序?qū)嵸|(zhì)上就是在操作系統(tǒng)當(dāng)中添加一個代碼,其中主要包含與硬件設(shè)備相關(guān)的信息,擁有這些信息后,便可以實現(xiàn)計算機與設(shè)備之間的通信。如果沒有驅(qū)動程序,計算機的硬件設(shè)備便無法進行正常工作。而網(wǎng)卡驅(qū)動程序是驅(qū)動程序中較為重要的一個部分?;诖它c,本文就基于Linux的光纖通道網(wǎng)卡驅(qū)動程序開發(fā)進行淺談。

        關(guān)鍵詞:Linux;光纖通道;網(wǎng)卡驅(qū)動;程序開發(fā)

        中圖分類號:TP311.52 文獻標(biāo)識碼:A 文章編號:1007-9599 (2012) 18-0000-02

        1 基于Linux系統(tǒng)下的網(wǎng)卡驅(qū)動原理

        當(dāng)前,在科學(xué)技術(shù)不斷發(fā)展的推動下,使Linux操作系統(tǒng)獲得了進一步完善,該系統(tǒng)的核心部分現(xiàn)已實現(xiàn)了OSI的網(wǎng)絡(luò)層及更上層部分。其中網(wǎng)絡(luò)層的實現(xiàn)是以數(shù)據(jù)鏈路的高效、可靠運行為基礎(chǔ),它的實現(xiàn)為網(wǎng)卡驅(qū)動程序提供了可靠的接口。

        1.1 網(wǎng)卡驅(qū)動程序

        由上述分析可知,在基于Linux的操作系統(tǒng)當(dāng)中,驅(qū)動程序可以為系統(tǒng)以及物理層提供接口,下面分別對系統(tǒng)的接口和物理層的接口進行介紹。

        (1)系統(tǒng)接口。驅(qū)動程序為系統(tǒng)的接口包括以下一些例程:發(fā)現(xiàn)網(wǎng)卡、檢測網(wǎng)卡參數(shù)、數(shù)據(jù)接收和數(shù)據(jù)發(fā)送等等。當(dāng)驅(qū)動程序啟動后,系統(tǒng)會自行對相關(guān)的例程進行檢測和調(diào)用,借助該過程發(fā)現(xiàn)網(wǎng)卡,如果系統(tǒng)使用的是即插即用型網(wǎng)卡,系統(tǒng)在對例程進行檢測時便可以發(fā)現(xiàn)其中的參數(shù),如果不是即插即用型網(wǎng)卡,那么便需要在驅(qū)動程序運行前,預(yù)先設(shè)置好網(wǎng)卡的具體參數(shù),以供驅(qū)動程序使用。當(dāng)系統(tǒng)核心需要對數(shù)據(jù)進行發(fā)送時,其便會通過調(diào)用由驅(qū)動程序發(fā)送的例程來完成這一操作。這一過程實質(zhì)上就是發(fā)送例程將數(shù)據(jù)寫入空間的過程。(2)物理層接口。該接口屬于中斷處理例程,它的工作原理可概括為網(wǎng)卡在接收或發(fā)送數(shù)據(jù)時,如果發(fā)現(xiàn)數(shù)據(jù)有誤,其會自動生成一個中斷,此時系統(tǒng)的核心會對中斷處理例程進行調(diào)用,并在判斷其產(chǎn)生的原因后完成響應(yīng)處理。

        1.2 工作參數(shù)

        由于網(wǎng)卡的類型各不相同,導(dǎo)致了驅(qū)動程序的具體工作參數(shù)也都不相同,但無論是哪種類型的網(wǎng)卡,都會包括以下幾個部分:如中斷號、共享存儲區(qū)、DMA通道以及I/O端口號等等。其中I/O端口號又被稱之為輸出/輸入地址,常被應(yīng)用在網(wǎng)卡運行端口數(shù)據(jù)輸出/輸入模式的狀態(tài)下,該模式主要是以CPU干預(yù)為前提,其優(yōu)點是所需存儲空間小、對硬件設(shè)備的要求相對較低。當(dāng)系統(tǒng)的CPU利用端口號指定的空間與網(wǎng)卡進行數(shù)據(jù)交換時,中斷號在運行中不允許與其他設(shè)備產(chǎn)生沖突。當(dāng)網(wǎng)卡在使用DMA方式時,并不需要CPU的干預(yù),只需要DMA通道批量傳輸數(shù)據(jù)即可。對于具體網(wǎng)卡而言,若其支撐自動檢測,則只需要人工設(shè)定部分參數(shù);對于使用端口輸入輸出模式的網(wǎng)卡而言,必須設(shè)定中斷號和端口號,在DMA模式下,必須設(shè)定DMA中斷號和通道。

        2 基于Linux的光纖通道網(wǎng)卡驅(qū)動程序開發(fā)

        2.1 網(wǎng)絡(luò)設(shè)備初始化

        利用 中的init函數(shù)可以實現(xiàn)網(wǎng)絡(luò)設(shè)備初始化,當(dāng)系統(tǒng)內(nèi)核對網(wǎng)絡(luò)驅(qū)動模塊進行加載后,便會對初始化過程進行調(diào)用。Init函數(shù)需要完成的工作主要有以下幾個方面:

        (1)對內(nèi)核中通用的設(shè)置函數(shù) 進行調(diào)用。(2)對 這一結(jié)構(gòu)體變量中的其它成員進行填充。(3)對 檢測I/O地址空間進行調(diào)用,并調(diào)用 申請以 為起始地址的16個連續(xù)的I/O地址空間。(4)探測網(wǎng)卡同時對ID信息進行讀取,然后設(shè)置中斷信號輸出引腳。(5)將MAC地址寫入到IA寄存器當(dāng)中。(6)通過 將CS8900A注冊到Linux網(wǎng)絡(luò)設(shè)備鏈表當(dāng)中。

        2.2 打開或關(guān)閉網(wǎng)絡(luò)設(shè)備

        當(dāng)系統(tǒng)接收到來自于ifconfig這一命令時,便會打開或者關(guān)閉一個網(wǎng)絡(luò)接口。Ifconfig命令通過對ioctl進行調(diào)用并將地質(zhì)賦予接口,這一響應(yīng)過程主要是由內(nèi)核來完成,基本與設(shè)備沒有任何關(guān)聯(lián)。隨后,ifconfig命令會對ioctl設(shè)置 的 位進行調(diào)用,并以此來打開設(shè)備,該調(diào)用會使設(shè)備的open方法獲得相應(yīng)地調(diào)用。實際開發(fā)中,可以利用 函數(shù)來打開網(wǎng)絡(luò)設(shè)備,具體需要完成的工作包括以下幾個方面:其一,利用 將網(wǎng)絡(luò)設(shè)備的中斷處理程序注冊至內(nèi)核當(dāng)中;其二,利用 設(shè)置網(wǎng)卡中的配置和控制寄存器;其三,利用內(nèi)核中的 函數(shù)對網(wǎng)絡(luò)接口的數(shù)據(jù)傳輸隊列進行開啟。

        2.3 網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送

        在整個驅(qū)動過程中,網(wǎng)絡(luò)數(shù)據(jù)包的發(fā)送是非常重要的環(huán)節(jié)之一,也是驅(qū)動程序必須完成的任務(wù)。當(dāng)網(wǎng)絡(luò)設(shè)備啟動后, 結(jié)構(gòu)中的open方法便會被調(diào)用,它的主要工作是負(fù)責(zé)設(shè)備的打開以及對 中的 函數(shù)指針進行調(diào)用,以此來完成硬件幀頭信息的建立,然后利用 這一函數(shù)調(diào)用 結(jié)構(gòu)中的 方法將存放在 中的數(shù)據(jù)傳送到網(wǎng)絡(luò)物理設(shè)備當(dāng)中。若該數(shù)據(jù)傳送成功,便會在 中釋放 然后返回0;若是傳送過程中,硬件設(shè)備處于繁忙狀態(tài)而無法對該數(shù)據(jù)進行處理時,便會返回1。當(dāng)網(wǎng)絡(luò)硬件設(shè)備完成數(shù)據(jù)包發(fā)送后,會自行產(chǎn)生中斷,并將 置0,隨后通知系統(tǒng)可繼續(xù)進行數(shù)據(jù)包發(fā)送。在實際開發(fā)中,通過 方法可實現(xiàn)網(wǎng)絡(luò)設(shè)備數(shù)據(jù)發(fā)送函數(shù) ,該函數(shù)能夠?qū)崿F(xiàn)將數(shù)據(jù)發(fā)送至網(wǎng)絡(luò)當(dāng)中,并由網(wǎng)絡(luò)接口層函數(shù)對其進行調(diào)用。在這一過程中, 需要完成以下工作:

        1.在對數(shù)據(jù)進行發(fā)送前,首先將中斷關(guān)閉,然后再對網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)傳輸隊列進行中止處理。2.利用 對CS8900A寄存器中的BusST信息進行反復(fù)讀取,直至其準(zhǔn)備好接收來自于主機的數(shù)據(jù)為止。3.對數(shù)據(jù)幀的發(fā)送時間進行相應(yīng)地記錄,當(dāng)記錄完成后將中斷打開,與此同時再將 緩存釋放出來,最后函數(shù)返回0。

        2.4 網(wǎng)絡(luò)數(shù)據(jù)包的接收和中斷處理

        網(wǎng)絡(luò)設(shè)備的使用功能在于不同步地通過中斷接收來自外部的數(shù)據(jù)包,并且主動將從硬件中獲取的數(shù)據(jù)包壓縮至內(nèi)核。在網(wǎng)絡(luò)接口接收新數(shù)據(jù)包的狀態(tài)下,一旦出現(xiàn)報告錯誤信息、發(fā)送完成數(shù)據(jù)或在連接狀態(tài)時均有可能引發(fā)中斷,一般情況下,中斷處理方式應(yīng)當(dāng)以檢測硬件狀態(tài)寄存器為基礎(chǔ),作出處理行動。在設(shè)備收到數(shù)據(jù)后產(chǎn)生一個中斷,通過硬件來完成對驅(qū)動程序的通知,使其明確數(shù)據(jù)包已到達。在中斷處理程序中驅(qū)動程序申請一塊 緩沖區(qū),而后將被讀出的數(shù)據(jù)放置緩沖區(qū)內(nèi),并對 中的部分信息進行填充,如在 中填入數(shù)據(jù)幀類型;設(shè)置 ,標(biāo)明鏈路層數(shù)據(jù)類型等。最后對協(xié)議的接口層函數(shù)進行調(diào)用,并將接收到的數(shù)據(jù)包傳輸至層協(xié)議當(dāng)中進行中斷處理。

        參考文獻:

        [1]劉春琳,郭紅琳,高珂.Linux系統(tǒng)以太網(wǎng)卡驅(qū)動程序加載與配置[J].山東煤炭科技,2011(3).

        [2]羅燁,涂曉東,丁林.基于PCI-Ezpress接口的光纖通道協(xié)議處理卡驅(qū)動的研究與實現(xiàn)[A].第十四屆全國青年通信學(xué)術(shù)會議論文集[C].2009(7).

        av一区二区三区综合网站| 韩日美无码精品无码| 伊人色综合久久天天人手人停| 91日本在线精品高清观看| 亚洲国产精品天堂久久久| 精品厕所偷拍一区二区视频| 40岁大乳的熟妇在线观看 | 风韵饥渴少妇在线观看| 亚洲色欲久久久综合网| 中文字幕一区二区三区四区久久| 国产免费一区二区三区精品视频| 精品久久香蕉国产线看观看亚洲| 久久免费视频国产| 日韩成人精品一区二区三区 | 国产亚洲精品久久久久久国模美| 台湾佬自拍偷区亚洲综合| 国产成人精品麻豆| 亚洲97成人精品久久久| 高清毛茸茸的中国少妇| 欧洲日本一线二线三线区本庄铃| avtt一区| 内射爆草少妇精品视频| 亚洲精品无码高潮喷水a片软| 亚洲视频在线看| 少妇特殊按摩高潮不断| 精品一区二区av天堂色偷偷| 国产一卡2卡3卡四卡国色天香 | 免费中文熟妇在线影片| 亚洲国产精品av麻豆一区| 东北少妇不戴套对白第一次| 久久中文字幕人妻熟av女蜜柚m| 国产精品不卡无码AV在线播放 | 99久久精品人妻少妇一| 国产免费拔擦拔擦8x高清在线人| 亚洲无毛片| 蜜臀久久久精品国产亚洲av| 九九综合va免费看| 亚洲中文有码字幕青青| 加勒比精品一区二区三区| 性感女教师在线免费观看| 亚洲av无码久久精品蜜桃|