色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Linux 2.4和PXA255處理器實現網絡設備驅動的應用方案

電子設計 ? 來源:信息化研究 ? 作者:管秋梅,胡仁杰 ? 2021-05-25 11:11 ? 次閱讀

隨著電子信息技術的發展,嵌入式系統應用到了社會生活的各個角落。后PC時代是嵌入式網絡化的時代,將分散在各處的嵌入式設備連接到網絡成為近年來以及未來的發展趨勢,隨時隨地都能通過網絡去控制這些智能設備,在多種嵌入式設備之間進行數據通信,例如信息終端、信息家電等。

用戶可以通過信息終端從網絡服務商提供的服務中搜索并瀏覽有用的信息,實現全面交流和互動,實現新型的信息金融終端的概念,同時,用戶也可享受到網上金融信息、網上購物、視頻會議等其他服務。

本文提出了一種基于Linux 2.4操作系統平臺和Intel PXA255處理器的網絡設備驅動設計方案,分析了其軟硬件實現以及Linux下網絡設備驅動的特性。

1 網卡設備

本方案使用的CS8900A是一款低功耗的網絡控制器,包含一塊片上 RAM、10BASE-T接收和發送濾波器、ISA總線接口,提供了多種性能和配置選項,它獨立的包頁(packet page)體系結構能自適應改變網絡通信模式和可用的系統資源,提高了系統效率。該控制器支持IEEE 802.3的10 Mbit/s模式,全雙工單片以太網解決方案。主要模塊有:一個直接ISA總線接口;一個802.3 MAC引擎,處理以太網幀發送和接收的各個方面;集成4 kB的頁可緩沖存儲器,將發送和接收的幀完全緩沖在網卡中;一個串口EEPROM接口;完全模擬前端10BASE-T(10 Mbit/s)和AUI(粗纜網卡接口)。

基于Linux 2.4和PXA255處理器實現網絡設備驅動的應用方案

2 Linux驅動

Linux驅動分為字符設備、塊設備和網絡設備驅動。字符設備是能夠像字節流一樣被訪問的設備,大多數字符設備只能被順序訪問。塊設備驅動程序提供面向塊的設備的訪問,這種設備以隨機訪問的方式傳輸數據,并且數據總是具有固定大小的塊,這些塊中包含了2的幾次冪字節的數據,硬盤就是典型的塊設備。

在Linux中,字符設備和塊設備都是通過文件系統節點被訪問,塊驅動程序除了向內核提供與字符驅動程序相同的接口外,還提供了專門面向塊驅動設備的接口。

網絡接口在系統中的角色與一個已掛裝的塊設備非常相似。塊設備將自己注冊到blk_dev數組以及其他內核結構中,然后通過自己的request函數在發生請求時“發送”和“接收”數據塊。同樣,網絡接口也必須在特定的數據結構中注冊自己,以便在與外界交換數據包時被調用。但是,塊設備接口與網絡數據包發送接口之間存在不同。普通的文件操作對網絡接口來說沒有任何意義,因此,Unix的“所有東西都是文件”這一思想無法應用于網絡接口。這樣,網絡接口存在于它們自己的名字空間中,同時導出一組不同的操作。同一網絡接口可以由幾百個套接字同時復用。塊沒備驅動只對來自內核的請求做出響應,而網絡驅動程序卻異步地接收來自外界的數據包。

網絡驅動程序同時必須支持大量的管理任務,例如設置地址、修改傳輸參數以及維護流量和錯誤統計等。網絡驅動程序的API反映了這種需求。此外,網絡驅動程序與內核其余部分之間每次交互處理的是一個網絡數據包,因此,驅動程序無需關心協議問題。

3 實現方案

3.1 硬件連接

硬件平臺使用Intel PXA255處理器作為主機,工作頻率400 MHz,網卡的品振為20 MHz,網卡的數據線和地址線通過緩沖后與CPU直接相連。

網卡的讀寫使能引腳IOR/IOW信號主要由CPU采用Flash存儲器的方式給出,與PWE和MOE兩個引腳分別連接,其有效時間由CPU內部的寄存器配置而得。

網卡內部寄存器使能引腳AEN由CPU片選腳E_CS組合得出,而網卡復位引腳則通過CPU的一個GPIO口給出。

從電路中可以看出只使用了4根地址線,因此,對網卡中的寄存器的訪問采用packet page寄存器間接尋址,即通過地址線先對packet page訪問,將欲訪問的寄存器R的偏移地址送到packet page寄存器中,然后通過數據線去讀或者寫此寄存器。

o4YBAGCsa2iAAiLPAAEiQ8IXE-k795.png

3.2 軟件實現

網卡驅動可看做是連接網絡層與實際網絡設備的一個軟件層。在網卡設備驅動中,通過維護一個名為net_device結構的dev指針來實現上層對驅動程序的訪問。這個結構包括了對管理網絡設備所必須完成的操作,包括設備的打開、關閉、發送數據、接收數據、獲得狀態、設置網卡地址、處理超時等。

以下主要介紹這些操作的實現,包括設備的初始化和注銷、對中斷事件的處理。

3.2.1 設備初始化

由于需要通過Memory模式訪問網卡設備,因此需要配置存儲器控制寄存器VLIO(Variable Latency)模式。關聯設備的初始化探測函數cirrus_probe,在cirrus_probe函數中主要是填充該設備的Dev結構。網絡接口探測方式不同,所以不能在編澤階段進行Dev結構的設置。這樣從Dev→init返回時,Dev結構中就應該填充正確的值。Dev結構中包含相關的網卡操作函數的指針,為上層調用網卡驅動提供方法。內核提供了ethr_setup函數,可處理以太網的某些缺省設置。在探測函數中還要分配net_device的priv字段,該字段所指向的數據項通常包含接口上的統計信息。用戶可以在任何時刻通過調用ifconfig獲得統計數據,向內核注冊網絡設備驅動程序。

這里簡要介紹網絡設備驅動中兩個重要的結構體:Linux內核提供的統一網絡設備結構net_device,定義了系統統一的訪問接口,此結構體位于網絡驅動層的核心地位;net_device_stats結構體用來記錄網絡驅動發送和接收數據量的統計信息,例如發送包的數目以及丟失包的數目。當應用程序需要獲得接口的統計信息時,將調用該方法。

3.2.2 設備的注銷

設備的注銷過程與設備初始化的過程相反,釋放網卡的地址空間及網卡驅動使用的其他相關資源,注銷網絡設備的Dev結構。

3.2.3 中斷處理

網卡工作有輪循和中斷兩種模式。輪循模式會大量占用CPU資源,影響嵌入式系統性能,因此這里選擇中斷模式。有5種情況會觸發中斷,每種情況對應不同的中斷寄存器,中斷發生會將某一模式寄存器的相應位置位,并且把這種模式寄存器中的內容映射到中斷狀態寄存器。當有中斷事件發生后,進入中斷例程,首先讀取中斷狀態寄存器的內容,然后根據其中的信息判斷是哪種情況觸發的中斷,最后進入相應的分支進行處理。

o4YBAGCsa12AYjnQAACm5SwPAa0652.png

3.2.4 對5種中斷狀態的處理

1) 接收幀

當網卡接收到數據就會觸發一次中斷,在中斷例程中調用接收包的函數cirrus_receive。首先讀取接收的狀態和長度,使用dev_alloc_skb分配一段足夠大小的緩沖區,得到該包的網絡協議ID號,在一個申請好的sK_buff的緩沖區中保留一塊空間,這個空間一般是用做下一層協議的頭空間;接著將網卡接收緩沖區中的數據讀到skb緩沖區中,再使用netif_rx通知上層協定有新的封包傳人。當一個封包傳送完成后,必須將緩沖區釋放。

2) 發送幀

當主機要發送數據時調用hard_start_xmit方法將數據放人外發隊列,而此方法關聯的函數就是cirrus_send_start。內核處理后的每個數據包位于一個套接字緩沖區(struct sK_buff)結構,核心處理的每個包包含在一個套接字緩沖區結構,輸入輸出緩沖區都是sk_buff結構的鏈表,傳遞給hard_start_xmit的套接字緩沖區含有物理包,它具有傳輸層的包頭。接口不需要修改被發送的數據。實際的硬件接口是異步傳輸數據包的,硬件中有緩沖區以保存要外發的數據包,但是此緩沖空間非常有限。在此函數中首先通知上層表明硬件緩沖區已經用完不要再送封包下來,然后向網卡發命令表示要開始發送數據并且指明發送數據的長度,接著讀BusST寄存器判斷當前網卡狀態,如果主機中的發送緩沖區可用,則將SKB中數據發到網卡的緩沖區中,最后釋放SKB。如果網卡將數據發送成功,則會觸發一次中斷,在中斷處理例程中將net_device_stats結構體中的tx_packets(表示發送的包的個數)元素遞增并通知上層可繼續送包下來。

3) BufEvent

Buffer事件當RxMiss置位表示由于數據從緩沖區中搬移到主機速度較慢而丟失了一些接收的幀,讀寄存器獲取丟失的包的數目。當TxUnderrun置位表示在幀結束前網卡運行已過時。改變網絡狀態結構體中對應元素的值,接著通知上層可往下發送包數據。

pIYBAGCsa1OAHXiKAAEe7LV2HkA604.png

4) TxCOL

當傳輸出現沖突錯誤時,通過讀寄存器值得到當前沖突的個數,加到統計結構體中的對應元素值上。

5) RxMISS

讀寄存器獲取丟失幀的個數。

3.2.5 傳輸超時的處理

驅動程序要處理硬件不能正確響應的情況,比如中斷丟失或者接口工作異常等。網絡系統使用大量定時器控制的多個狀態機之間流轉來檢測傳輸超時,因此本驅動程序中無需自己檢測超時間題而只是通過net_device結構的watchdog_timeo字段設置超時劇期為10 ms,對于一般的傳輸超時,此值能滿足要求。當檢測到系統時間超過設備傳輸開始的時間至少1個超時周期,網絡層將調用cirrus_transmit_timeout方法,解決超時所要做的工作,主要是在統計信息中標記該錯誤,同時調用netif_wake_queue重新啟動傳輸隊列。

3.2.6 測試結果

網絡設備驅動測試主要從底層硬件測試和上層網絡測試兩個方面進行。底層硬件測試使用如下方法:在內存中開辟兩塊區域M1、M2,并按照網絡包的格式設置初始值,將M1中的數據通過網卡發送出去,但是以回環方式,最終還是由主機端接收到,存放到M2中,再將M2中的數據通過網卡發送出去,并接收回來。經過多次循環,比較最終的數據包和先前設置的數據包是否一致,經過此項測試表明在最底層數據發送和接收無誤。上層網絡測試使用如下方法:目標機和PC端通過網線相連,目標機端丌啟pure-ftp服務,主機端使用FlashFXP軟件,從主機分別傳送不同大小(從0 MB到20 MB)文件到目標機,再從目標機傳送到主機,執行多次比較傳送文件是否有誤,并計算網絡傳送速度。測試結果表明網卡驅動能較好地實現網絡應用的功能,速度達到2 Mbit/s~5 Mbit/s。

4 結束語

本文提出了一種基于嵌入式Linux的網卡驅動實現方案,并介紹了Linux下網絡設備驅動的一些特性。此方案已應用到基于Intel PXA255處理器的金融信息終端研發中,使用和測試表明此方案穩定可靠,也可為其他嵌人式系統的網絡設備開發提供一定的參考。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19259

    瀏覽量

    229652
  • 控制器
    +關注

    關注

    112

    文章

    16332

    瀏覽量

    177808
  • 接口
    +關注

    關注

    33

    文章

    8575

    瀏覽量

    151015
收藏 人收藏

    評論

    相關推薦

    實現PXA255處理器與CF卡的接口設計

    Intel Xscale PXA255處理器是新一代的嵌入式處理器,基于ARMv5TE體系結構的微處理器,性價比較高、功耗較低,適合于數字移動電話、個人數字助理、
    發表于 04-08 09:36

    如何在Intel XScale PXA255上構建嵌入式Linux應用平臺

    的多媒體手提設備和無線設備越來越受到市場的歡迎,Intel XScale PXA255處理器正是針對這一情況推出的。它采用Intel XScale微結構體系框架,采用ARMV5TE的7
    發表于 07-17 08:11

    如何利用PXA255處理器的Sitsang開發平臺實現紅外模塊的設計?

    本文將詳細講解基于Inte1的PXA255處理器的Sitsang開發平臺紅外模塊的設計,其中包括Linux下的IrDA驅動程序的開發和基于MC68HC908AP64紅外發射
    發表于 04-27 06:03

    PXA255上的嵌入式Linux應用平臺說明

    PXA255上的嵌入式Linux應用平臺說明
    發表于 03-28 09:52 ?28次下載

    PXA255在CCD圖像采集中的應用

    介紹了Intel 公司的PXA255 處理器的特點及內部結構,并討論了在移動測試領域的具體應用,介紹了基于PXA255 的CCD 圖像的采集,壓縮編碼和傳輸的理論分析和可行性分析;并把本應用
    發表于 07-10 15:09 ?21次下載

    基于PXA255的嵌入式Linux應用平臺的構建

    基于Intel XScale PXA255 處理器Linux 操作系統,在其基礎上構建嵌入式Linux應用平臺。步驟主要包括加載Bootloader 引導程序、交叉編譯環境下加載和編
    發表于 08-29 08:22 ?8次下載

    應用處理器PXA255上的嵌入式Linux系統開發

    介紹了Intel公司新近推出的一種嵌入式應用處理器——Plx舵55,研究了PXA255的開發平臺DBPXA255,著重闡述了如何在基于嵌入式應用處理器
    發表于 11-06 15:10 ?9次下載

    基于PXA255的GPRS圖像傳輸系統設計

    提出了一種基于Intel PXA255 嵌入式微處理器和MC55 無線通訊模塊的圖像采集、壓縮與傳輸的設計方案。在PXA255 的平臺上,通過選擇適合的芯片、無線傳輸模塊并利用MPEG
    發表于 12-29 23:55 ?51次下載

    基于PXA255的嵌入式智能減振系統設計

    以一懸臂梁為例,介紹了一個基于Intel PXA255處理器的嵌入式智能減振系統的硬件與軟件的設計與實現,Windows CE操作系統的移植。該系統性能好、功耗低、重量輕,而且可移植性強,
    發表于 07-27 15:11 ?25次下載

    PXA255上的嵌入式Linux應用平臺

    PXA255上的嵌入式Linux應用平臺 PXA255是Intel繼PXA250后的第二代XScale處理器,也是一款高檔的Intel個人
    發表于 06-25 08:15 ?1073次閱讀

    Intel Xscale PXA255嵌入式處理器與CF卡的

    Intel Xscale PXA255嵌入式處理器與CF卡的硬件接口設計 以導航設備存儲系統應用為例,本文討論了Intel Xscale PXA255嵌入式
    發表于 09-26 17:39 ?934次閱讀
    Intel Xscale <b class='flag-5'>PXA255</b>嵌入式<b class='flag-5'>處理器</b>與CF卡的

    PXA255處理器與CF卡的接口設計

    以導航設備存儲系統應用為例,本文討論了Intel Xscale PXA255 嵌入式處理器與 CF卡 的硬件接口設計,并以讀寫CF卡扇區的程序為例,給出了CF卡軟件編寫的技巧。該設計為基于PX
    發表于 06-01 15:27 ?29次下載
    <b class='flag-5'>PXA255</b><b class='flag-5'>處理器</b>與CF卡的接口設計

    基于PXA255的自動聚焦及圖像采集模塊設計

    本文介紹了一種基于Intel公司 PXA255嵌入式處理器的自動聚焦圖像采集系統。
    發表于 09-26 12:02 ?1840次閱讀
    基于<b class='flag-5'>PXA255</b>的自動聚焦及圖像采集模塊設計

    PXA255處理器在WinCE系統下的BootLoader的設計與實現

    PXA255處理器在WinCE系統下的BootLoader的設計與實現
    發表于 10-25 10:04 ?4次下載
    <b class='flag-5'>PXA255</b><b class='flag-5'>處理器</b>在WinCE系統下的BootLoader的設計與<b class='flag-5'>實現</b>

    探究PXA255的VoIP語音傳輸系統

    摘要:文章研究IP語音傳輸系統的總體架構,實現了一個基于PXA255處理器的嵌入式IP電話終端硬件平臺,為該平臺建立
    的頭像 發表于 04-23 15:23 ?2087次閱讀
    探究<b class='flag-5'>PXA255</b>的VoIP語音傳輸系統
    主站蜘蛛池模板: 日本漫画大全无翼乌| 亚洲成人mv| 久久笫一福利免费导航| 97精品国产亚洲AV高清| 色婷婷综合激情中文在线| 毛片内射久久久一区| 精品无码无人网站免费视频 | 欧美性爱-第1页| 蜜桃人妻无码AV天堂三区| 久青草国产在线观看视频| 久久精品热99看| 精品久久日日躁夜夜躁AV| 护士美女照片| 好色女博士| 精品无码国产污污污免费网站2| 黄页免费观看| 久久国产欧美| 久久这里有精品| 麻生希第一部快播| 男人插曲女人身体视频| 欧美男女爱爱| 人人模人人干| 手机看片国产日韩欧美| 午夜免费体验30分| 亚洲黄色录像片| 一边亲着一面膜下奶韩剧免费| 永久免费在线视频| 91黄色大片| 啊…嗯啊好深男男高h文| 动漫成年美女黄漫网站| 国产麻豆AV伦| 久久re热在线视频精69| 美女被男人撕衣舔胸| 青青草干免费线观看| 特级毛片内射WWW无码| 亚洲精品www久久久久久| 制服丝袜第一页| SM脚奴调教丨踩踏贱奴| 国产福利一区二区精品| 果冻传媒在线看免费高清| 久久只有这里有精品4|