
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式linux網(wǎng)絡(luò)驅(qū)動(dòng)程序開發(fā)設(shè)計(jì)隨著人們對(duì)開放源代碼軟件熱烈的日益增高,作為一個(gè)功能強(qiáng)大而穩(wěn)定的開源操作系統(tǒng),越來越受到成千上萬的計(jì)算機(jī)專家和興趣者的青睞。在領(lǐng)域,通過對(duì)linux舉行小型化裁剪后,使其能夠固化在容量惟獨(dú)幾十兆字節(jié)的存儲(chǔ)器芯片或中,成為應(yīng)用于特定場(chǎng)合的嵌入式linux系統(tǒng)。linux強(qiáng)大的網(wǎng)絡(luò)支持功能實(shí)現(xiàn)了對(duì)包括tcp/ip在內(nèi)的多種協(xié)議的支持,滿足了面對(duì)21世紀(jì)的嵌入式系統(tǒng)應(yīng)用聯(lián)網(wǎng)的需求。因此,在嵌入式系統(tǒng)開發(fā)調(diào)試時(shí),網(wǎng)絡(luò)接口幾乎成為不行或缺的模塊。1 嵌入式linux網(wǎng)絡(luò)驅(qū)動(dòng)程序介紹linux網(wǎng)絡(luò)驅(qū)動(dòng)程序作為linux網(wǎng)絡(luò)子系統(tǒng)的一部分,位于tcp/ip網(wǎng)絡(luò)體系結(jié)構(gòu)的網(wǎng)
2、絡(luò)接口層,主要實(shí)現(xiàn)上層協(xié)議棧與網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)交換。linux的網(wǎng)絡(luò)系統(tǒng)主要是基于bsd unix的套接字(socket)機(jī)制,網(wǎng)絡(luò)設(shè)備與字符設(shè)備和塊設(shè)備不同,沒有對(duì)應(yīng)地映射到文件系統(tǒng)中的設(shè)備節(jié)點(diǎn)。通常,linux驅(qū)動(dòng)程序有兩種加載方式:一種是靜態(tài)地編譯進(jìn)內(nèi)核,內(nèi)核啟動(dòng)時(shí)自動(dòng)加載;另一種是編寫為內(nèi)核模塊,用法insmod指令將模塊動(dòng)態(tài)加載到正在運(yùn)行的內(nèi)核,不需要時(shí)可用rmmod指令將模塊卸載。linux 2.6內(nèi)核引入了kbuild機(jī)制,將外部?jī)?nèi)核模塊的編譯同內(nèi)核源碼樹的編譯統(tǒng)一起來,大大簡(jiǎn)化了特定的參數(shù)和宏的設(shè)置。這樣將編寫好的驅(qū)動(dòng)模塊加入內(nèi)核源碼樹,只需要修改相應(yīng)名目的kconfig文件,把
3、新的驅(qū)動(dòng)加入內(nèi)核的配置菜單,然后需要修改相應(yīng)子名目中與模塊編譯相關(guān)的kbuild makefile,即可使新的驅(qū)動(dòng)在內(nèi)核源碼樹中被編譯。在嵌入式系統(tǒng)驅(qū)動(dòng)開發(fā)時(shí),經(jīng)常將驅(qū)動(dòng)程序編寫為內(nèi)核模塊,便利開發(fā)調(diào)試。調(diào)試完畢后,就可以將驅(qū)動(dòng)模塊編譯進(jìn)內(nèi)核,并重新編譯出支持特定物理設(shè)備的linux內(nèi)核。2 嵌入式linux網(wǎng)絡(luò)驅(qū)動(dòng)程序的體系結(jié)構(gòu)和實(shí)現(xiàn)原理2.1 linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)的體系結(jié)構(gòu)1所示,linux網(wǎng)絡(luò)驅(qū)動(dòng)程序的體系結(jié)構(gòu)可劃分為4個(gè)層次。linux內(nèi)核源代碼中提供了網(wǎng)絡(luò)設(shè)備接口及以上層次的代碼,因此移植特定網(wǎng)絡(luò)硬件的驅(qū)動(dòng)程序的主要工作就是完成設(shè)備驅(qū)動(dòng)功能層的相應(yīng)代碼,按照底層詳細(xì)的硬件特性,定義
4、網(wǎng)絡(luò)設(shè)備接口struct net_device類型的結(jié)構(gòu)體變量,并實(shí)現(xiàn)其中相應(yīng)的操作函數(shù)及中斷處理程序。linux中全部的網(wǎng)絡(luò)設(shè)備都抽象為一個(gè)統(tǒng)一的接口,即網(wǎng)絡(luò)設(shè)備接口,通過struct net_device類型的結(jié)構(gòu)體變量表示網(wǎng)絡(luò)設(shè)備在內(nèi)核中的運(yùn)行狀況,這里既包括回環(huán)(loopback)設(shè)備,也包括硬件網(wǎng)絡(luò)設(shè)備接口。內(nèi)核通過以dev_base為頭指針的設(shè)備鏈表來管理全部的網(wǎng)絡(luò)設(shè)備。2.2 net_device 數(shù)據(jù)結(jié)構(gòu)struct net_device結(jié)構(gòu)體是囫圇網(wǎng)絡(luò)驅(qū)動(dòng)結(jié)構(gòu)的核心,其中定義了無數(shù)供網(wǎng)絡(luò)協(xié)議接口層調(diào)用設(shè)備的標(biāo)準(zhǔn)辦法,該結(jié)構(gòu)在2.6內(nèi)核源碼樹文件中定義,下面只列出其中主要的成員
5、。2.2.1全局信息及底層硬件信息name:網(wǎng)絡(luò)設(shè)備名稱,默認(rèn)是以太網(wǎng);*next:指向全局鏈表下一個(gè)設(shè)備的指針,驅(qū)動(dòng)程序中不修改;mem_,rmem_:發(fā)送和接收緩沖區(qū)的起始,結(jié)束位置;base_addr,irq:網(wǎng)絡(luò)設(shè)備的i/o基地址,中斷號(hào),ifconfig指令可顯示和修改;hard_header_len:硬件頭的長度,以太網(wǎng)中值為14;mtu:最大傳輸單元,以太網(wǎng)中值為1500b;dev_addrmax_addr_len:硬件(mac)地址長度及設(shè)備硬件地址,以太網(wǎng)地址長度是48bit,ether_setup會(huì)對(duì)其舉行正確的設(shè)置;2.2.2 主要的操作辦法int (*init)(str
6、uct net_device *dev); 設(shè)備初始化和向系統(tǒng)注冊(cè)的函數(shù),僅調(diào)用一次;int (*open)(struct net_device *dev);設(shè)備打開接口函數(shù),當(dāng)用ifconfig激活網(wǎng)絡(luò)設(shè)備時(shí)被調(diào)用,注冊(cè)所用的系統(tǒng)資源(i/o端口,irq,dma等)同時(shí)激活硬件并增強(qiáng)用法計(jì)數(shù);int (*stop)(struct net_device *dev);執(zhí)行open辦法的反操作;*hard_start_xmit;初始化數(shù)據(jù)包傳輸?shù)暮瘮?shù);*hard_header;該函數(shù)(在hard_start_xmit前被調(diào)用)按照從前檢索到的源和目標(biāo)硬件地址建立硬件頭。 eth_header是以太網(wǎng)類型接口的默認(rèn)函數(shù);2.3網(wǎng)絡(luò)驅(qū)動(dòng)程序的編寫及實(shí)現(xiàn)原理linux網(wǎng)絡(luò)系統(tǒng)各個(gè)層次之間的數(shù)據(jù)傳送都是通過套接字緩沖區(qū)sk_buff完成的,sk_buff數(shù)據(jù)結(jié)構(gòu)是各層協(xié)議數(shù)據(jù)處理的對(duì)象。sk_buff是驅(qū)動(dòng)程序與網(wǎng)絡(luò)之間交換數(shù)據(jù)的媒介,驅(qū)動(dòng)程序向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)時(shí),必需從其中獵取數(shù)據(jù)源和數(shù)據(jù)長度;驅(qū)動(dòng)程序從網(wǎng)絡(luò)上接收到數(shù)據(jù)后也要將數(shù)據(jù)保存到sk_buff中才干
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 促進(jìn)家庭與幼兒園合作的策略計(jì)劃
- 財(cái)務(wù)風(fēng)險(xiǎn)識(shí)別與應(yīng)對(duì)策略計(jì)劃
- 《納米材料與技術(shù)》課程教學(xué)大綱
- 《復(fù)合材料(理論)》課程教學(xué)大綱
- 企業(yè)庫存管理的先進(jìn)技術(shù)與方法探討
- 提升美術(shù)教育質(zhì)量的策略計(jì)劃
- 光伏電站并網(wǎng)運(yùn)行技術(shù)及風(fēng)險(xiǎn)控制
- 兒童畫作中的故事性與想象力培養(yǎng)
- 企業(yè)信息化管理軟件的現(xiàn)狀與未來
- 2024年高考數(shù)學(xué)專項(xiàng)復(fù)習(xí):排列組合與二項(xiàng)式定理(解析版)
- 花城版三年級(jí)上冊(cè)音樂教學(xué)計(jì)劃
- GB/T 31821-2015電梯主要部件報(bào)廢技術(shù)條件
- GB/T 17574.11-2006半導(dǎo)體器件集成電路第2-11部分:數(shù)字集成電路單電源集成電路電可擦可編程只讀存儲(chǔ)器空白詳細(xì)規(guī)范
- 快手磁力聚星知識(shí)考試題庫及答案
- 學(xué)校衛(wèi)生監(jiān)督協(xié)管巡查記錄
- 《勾股定理在實(shí)際生活中的應(yīng)用》教學(xué)反思
- 游泳池給水排水安裝工程識(shí)圖
- 配位鍵和配位化合物課件
- 政 審 表打印模板
- 成人心肺復(fù)蘇(雙人)課件
- 蘇教版數(shù)學(xué)二年級(jí)下冊(cè)《認(rèn)識(shí)時(shí)分》教案(無錫公開課)
評(píng)論
0/150
提交評(píng)論