在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開(kāi)發(fā)>Linux系統(tǒng)網(wǎng)絡(luò)驅(qū)動(dòng)程序的編寫(xiě)

Linux系統(tǒng)網(wǎng)絡(luò)驅(qū)動(dòng)程序的編寫(xiě)

2017-11-07 | rar | 0.4 MB | 次下載 | 1積分

資料介紹

Linux作為挑戰(zhàn)微軟壟斷的強(qiáng)有力武器,日益受到大家的喜愛(ài)。真希望她能在中國(guó)迅速成長(zhǎng)。把程序文檔貼出來(lái),希望和大家探討Linux技術(shù)和應(yīng)用,促進(jìn)Linux在中國(guó)的普及。
  Linux操作系統(tǒng)網(wǎng)絡(luò)驅(qū)動(dòng)程序編寫(xiě)
  一.Linux系統(tǒng)設(shè)備驅(qū)動(dòng)程序概述
  1.1 Linux設(shè)備驅(qū)動(dòng)程序分類(lèi)
  1.2 編寫(xiě)驅(qū)動(dòng)程序的一些基本概念
  二.Linux系統(tǒng)網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序
  2.1 網(wǎng)絡(luò)驅(qū)動(dòng)程序的結(jié)構(gòu)
  2.2 網(wǎng)絡(luò)驅(qū)動(dòng)程序的基本方法
  2.3 網(wǎng)絡(luò)驅(qū)動(dòng)程序中用到的數(shù)據(jù)結(jié)構(gòu)
  2.4 常用的系統(tǒng)支持
  三。編寫(xiě)Linux網(wǎng)絡(luò)驅(qū)動(dòng)程序中可能遇到的問(wèn)題
  3.1 中斷共享
  3.2 硬件發(fā)送忙時(shí)的處理
  3.3 流量控制(flow control)
  3.4 調(diào)試
  四。進(jìn)一步的閱讀
  五。雜項(xiàng)
  一.Linux系統(tǒng)設(shè)備驅(qū)動(dòng)程序概述
  1.1 Linux設(shè)備驅(qū)動(dòng)程序分類(lèi)
  Linux設(shè)備驅(qū)動(dòng)程序在Linux的內(nèi)核源代碼中占有很大的比例,源代碼的長(zhǎng)度日益增加,主要是驅(qū)動(dòng)程序的增加。在Linux內(nèi)核的不斷升級(jí)過(guò)程中,驅(qū)動(dòng)程序的結(jié)構(gòu)還是相對(duì)穩(wěn)定 。在2.0.xx到2.2.xx的變動(dòng)里,驅(qū)動(dòng)程序的編寫(xiě)做了一些改變,但是從2.0.xx的驅(qū)動(dòng)到2.2.xx的移植只需做少量的工作。
  Linux系統(tǒng)的設(shè)備分為字符設(shè)備(char device),塊設(shè)備(block device)和網(wǎng)絡(luò)設(shè)備(net work device)三種。字符設(shè)備是指存取時(shí)沒(méi)有緩存的設(shè)備。塊設(shè)備的讀寫(xiě)都有緩存來(lái)支 持,并且塊設(shè)備必須能夠隨機(jī)存取(random access),字符設(shè)備則沒(méi)有這個(gè)要求。典型的 字符設(shè)備包括鼠標(biāo),鍵盤(pán),串行口等。塊設(shè)備主要包括硬盤(pán)軟盤(pán)設(shè)備,CD-ROM等。一個(gè) 文件系統(tǒng)要安裝進(jìn)入操作系統(tǒng)必須在塊設(shè)備上。 網(wǎng)絡(luò)設(shè)備在Linux里做專(zhuān)門(mén)的處理。Linux的網(wǎng)絡(luò)系統(tǒng)主要是基于BSD unix的socket機(jī)制。在系統(tǒng)和驅(qū)動(dòng)程序之間定義有專(zhuān)門(mén)的數(shù)據(jù)結(jié)構(gòu)(sk_buff)進(jìn)行數(shù)據(jù)的傳遞。系統(tǒng)里支持對(duì)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的緩存,提供流量控制機(jī)制,提供對(duì)多協(xié)議的支持。
  1.2 編寫(xiě)驅(qū)動(dòng)程序的一些基本概念
  無(wú)論是什么操作系統(tǒng)的驅(qū)動(dòng)程序,都有一些通用的概念。操作系統(tǒng)提供給驅(qū)動(dòng)程序的支持也大致相同。下面簡(jiǎn)單介紹一下網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的一些基本要求。
  1.2.1 發(fā)送和接收
  這是一個(gè)網(wǎng)絡(luò)設(shè)備最基本的功能。一塊網(wǎng)卡所做的無(wú)非就是收發(fā)工作。所以驅(qū)動(dòng)程序里要告訴系統(tǒng)你的發(fā)送函數(shù)在哪里,系統(tǒng)在有數(shù)據(jù)要發(fā)送時(shí)就會(huì)調(diào)用你的發(fā) 送程序。還有驅(qū)動(dòng)程序由于是直接操縱硬件的,所以網(wǎng)絡(luò)硬件有數(shù)據(jù)收到最先能得到這個(gè)數(shù)據(jù)的也就 是驅(qū)動(dòng)程序,它負(fù)責(zé)把這些原始數(shù)據(jù)進(jìn)行必要的處理然后送給系統(tǒng)。這里,操作系統(tǒng)必 須要提供兩個(gè)機(jī)制,一個(gè)是找到驅(qū)動(dòng)程序的發(fā)送函數(shù),一個(gè)是驅(qū)動(dòng)程序把收到的數(shù)據(jù)送 給系統(tǒng)。
  1.2.2 中斷
  中斷在現(xiàn)代計(jì)算機(jī)結(jié)構(gòu)中有重要的地位。操作系統(tǒng)必須提供驅(qū)動(dòng)程序響應(yīng)中斷的能力。 一般是把一個(gè)中斷處理程序注冊(cè)到系統(tǒng)中去。操作系統(tǒng)在硬件中斷發(fā)生后 調(diào)用驅(qū)動(dòng)程序 的處理程序。Linux支持中斷的共享,即多個(gè)設(shè)備共享一個(gè)中斷。
  1.2.3 時(shí)鐘
  在實(shí)現(xiàn)驅(qū)動(dòng)程序時(shí),很多地方會(huì)用到時(shí)鐘。如某些協(xié)議里的超時(shí)處理,沒(méi)有中斷機(jī)制的 硬件的輪詢(xún)等。操作系統(tǒng)應(yīng)為驅(qū)動(dòng)程序提供定時(shí)機(jī)制。一般是在預(yù)定的時(shí) 間過(guò)了以后回 調(diào)注冊(cè)的時(shí)鐘函數(shù)。在網(wǎng)絡(luò)驅(qū)動(dòng)程序中,如果硬件沒(méi)有中斷功能,定時(shí)器可以提供輪詢(xún) (poll)方式對(duì)硬件進(jìn)行存取。或者是實(shí)現(xiàn)某些協(xié)議時(shí)需要的超時(shí)重傳等。
  二.Linux系統(tǒng)網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序
  2.1 網(wǎng)絡(luò)驅(qū)動(dòng)程序的結(jié)構(gòu)
  所有的Linux網(wǎng)絡(luò)驅(qū)動(dòng)程序遵循通用的接口。設(shè)計(jì)時(shí)采用的是面向?qū)ο蟮姆椒āR粋€(gè)設(shè)備 就是一個(gè)對(duì)象(device 結(jié)構(gòu)),它內(nèi)部有自己的數(shù)據(jù)和方法。每一個(gè)設(shè)備的方法被調(diào)用時(shí) 的第一個(gè)參數(shù)都是這個(gè)設(shè)備對(duì)象本身。這樣這個(gè)方法就可以存取自身的數(shù)據(jù)(類(lèi)似面向?qū)?象程序設(shè)計(jì)時(shí)的this引用)。 一個(gè)網(wǎng)絡(luò)設(shè)備最基本的方法有初始化、發(fā)送和接收。
  ------------------- ---------------------
  |deliver packets | |receive packets queue|
  |(dev_queue_xmit()) | |them(netif_rx()) |
  ------------------- ---------------------
  | | /
  / | |
  -------------------------------------------------------
  | methods and variables(initialize,open,close,hard_xmit,|
  | interrupt handler,config,resources,status.。.) |
  -------------------------------------------------------
  | | /
  / | |
  ----------------- ----------------------
  |send to hardware | |receivce from hardware|
  ----------------- ----------------------
  | | /
  / | |
  -----------------------------------------------------
  | hardware media |
  -----------------------------------------------------
  初始化程序完成硬件的初始化、device中變量的初始化和系統(tǒng)資源的申請(qǐng)。發(fā)送程序是 在驅(qū)動(dòng)程序的上層協(xié)議層有數(shù)據(jù)要發(fā)送時(shí)自動(dòng)調(diào)用的。一般驅(qū)動(dòng)程序中不對(duì)發(fā)送數(shù)據(jù)進(jìn) 行緩存,而是直接使用硬件的發(fā)送功能把數(shù)據(jù)發(fā)送出去。接收數(shù)據(jù)一般是通過(guò)硬件中斷 來(lái)通知的。在中斷處理程序里,把硬件幀信息填入一個(gè)skbuff結(jié)構(gòu)中,然后調(diào)用netif_ rx()傳遞給上層處理。
  2.2 網(wǎng)絡(luò)驅(qū)動(dòng)程序的基本方法
  網(wǎng)絡(luò)設(shè)備做為一個(gè)對(duì)象,提供一些方法供系統(tǒng)訪(fǎng)問(wèn)。正是這些有統(tǒng)一接口的方法,掩蔽 了硬件的具體細(xì)節(jié),讓系統(tǒng)對(duì)各種網(wǎng)絡(luò)設(shè)備的訪(fǎng)問(wèn)都采用統(tǒng)一的形式,做到硬件無(wú)關(guān)性 。
  下面解釋最基本的方法。
  2.2.1 初始化(initialize)
  驅(qū)動(dòng)程序必須有一個(gè)初始化方法。在把驅(qū)動(dòng)程序載入系統(tǒng)的時(shí)候會(huì)調(diào)用這個(gè)初始化程序 。它做以下幾方面的工作。檢測(cè)設(shè)備。在初始化程序里你可以根據(jù)硬件的特征檢查硬件 是否存在,然后決定是否啟動(dòng)這個(gè)驅(qū)動(dòng)程序。配置和初始化硬件。在初始化程序里你可 以完成對(duì)硬件資源的配置,比如即插即用的硬件就可以在這個(gè)時(shí)候進(jìn)行配置(Linux內(nèi)核 對(duì)PnP功能沒(méi)有很好的支持,可以在驅(qū)動(dòng)程序里完成這個(gè)功能)。配置或協(xié)商好硬件占用 的資源以后,就可以向系統(tǒng)申請(qǐng)這些資源。有些資源是可以和別的設(shè)備共享的,如中斷 。有些是不能共享的,如IO、DMA。接下來(lái)你要初始化device結(jié)構(gòu)中的變量。最后,你可 以讓硬件正式開(kāi)始工作。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 天天色综合2| 久久亚洲国产视频| 中国人69xxx大全| 永久免费看www色视频| 日本5级床片全免费| 亚洲夜夜操| 49vv婷婷网| 日本三级日产三级国产三级| 18女毛片| 一道精品视频一区二区三区男同| 在线观看视频高清视频| 插插插天天| 婷婷五月色综合香五月| 成 人 免费观看网站| 2022天天操| 色视频在线免费看| 婷婷视频网| 激情九月| 黄色18网站| 2018国产精品| 色免费看| 日日做夜夜爽夜夜爽| 乱说欲小说又粗又长| 快色视频免费观看| 国产免费午夜高清| 四虎影城| 天天插天天插天天插| 成人国产精品一级毛片了| 国内黄色一级片| 欧美极品在线播放| 欧美一级看片免费观看视频在线| 欧日韩视频777888| 亚洲激情| 午夜亚洲| 一品毛片| 亚洲天天做日日做天天欢毛片| 日本一区二区三区欧美在线观看 | 久久永久免费| 爱操综合| 你懂的网站在线| www.色综合|