欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

3天內(nèi)不再提示

基于Linux 2.4和PXA255處理器實現(xiàn)網(wǎng)絡(luò)設(shè)備驅(qū)動的應(yīng)用方案

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

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

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

本文提出了一種基于Linux 2.4操作系統(tǒng)平臺和Intel PXA255處理器的網(wǎng)絡(luò)設(shè)備驅(qū)動設(shè)計方案,分析了其軟硬件實現(xiàn)以及Linux下網(wǎng)絡(luò)設(shè)備驅(qū)動的特性。

1 網(wǎng)卡設(shè)備

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

基于Linux 2.4和PXA255處理器實現(xiàn)網(wǎng)絡(luò)設(shè)備驅(qū)動的應(yīng)用方案

2 Linux驅(qū)動

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

在Linux中,字符設(shè)備和塊設(shè)備都是通過文件系統(tǒng)節(jié)點被訪問,塊驅(qū)動程序除了向內(nèi)核提供與字符驅(qū)動程序相同的接口外,還提供了專門面向塊驅(qū)動設(shè)備的接口。

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

網(wǎng)絡(luò)驅(qū)動程序同時必須支持大量的管理任務(wù),例如設(shè)置地址、修改傳輸參數(shù)以及維護流量和錯誤統(tǒng)計等。網(wǎng)絡(luò)驅(qū)動程序的API反映了這種需求。此外,網(wǎng)絡(luò)驅(qū)動程序與內(nèi)核其余部分之間每次交互處理的是一個網(wǎng)絡(luò)數(shù)據(jù)包,因此,驅(qū)動程序無需關(guān)心協(xié)議問題。

3 實現(xiàn)方案

3.1 硬件連接

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

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

網(wǎng)卡內(nèi)部寄存器使能引腳AEN由CPU片選腳E_CS組合得出,而網(wǎng)卡復(fù)位引腳則通過CPU的一個GPIO口給出。

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

o4YBAGCsa2iAAiLPAAEiQ8IXE-k795.png

3.2 軟件實現(xiàn)

網(wǎng)卡驅(qū)動可看做是連接網(wǎng)絡(luò)層與實際網(wǎng)絡(luò)設(shè)備的一個軟件層。在網(wǎng)卡設(shè)備驅(qū)動中,通過維護一個名為net_device結(jié)構(gòu)的dev指針來實現(xiàn)上層對驅(qū)動程序的訪問。這個結(jié)構(gòu)包括了對管理網(wǎng)絡(luò)設(shè)備所必須完成的操作,包括設(shè)備的打開、關(guān)閉、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、獲得狀態(tài)、設(shè)置網(wǎng)卡地址、處理超時等。

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

3.2.1 設(shè)備初始化

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

這里簡要介紹網(wǎng)絡(luò)設(shè)備驅(qū)動中兩個重要的結(jié)構(gòu)體:Linux內(nèi)核提供的統(tǒng)一網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)net_device,定義了系統(tǒng)統(tǒng)一的訪問接口,此結(jié)構(gòu)體位于網(wǎng)絡(luò)驅(qū)動層的核心地位;net_device_stats結(jié)構(gòu)體用來記錄網(wǎng)絡(luò)驅(qū)動發(fā)送和接收數(shù)據(jù)量的統(tǒng)計信息,例如發(fā)送包的數(shù)目以及丟失包的數(shù)目。當(dāng)應(yīng)用程序需要獲得接口的統(tǒng)計信息時,將調(diào)用該方法。

3.2.2 設(shè)備的注銷

設(shè)備的注銷過程與設(shè)備初始化的過程相反,釋放網(wǎng)卡的地址空間及網(wǎng)卡驅(qū)動使用的其他相關(guān)資源,注銷網(wǎng)絡(luò)設(shè)備的Dev結(jié)構(gòu)。

3.2.3 中斷處理

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

o4YBAGCsa12AYjnQAACm5SwPAa0652.png

3.2.4 對5種中斷狀態(tài)的處理

1) 接收幀

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

2) 發(fā)送幀

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

3) BufEvent

Buffer事件當(dāng)RxMiss置位表示由于數(shù)據(jù)從緩沖區(qū)中搬移到主機速度較慢而丟失了一些接收的幀,讀寄存器獲取丟失的包的數(shù)目。當(dāng)TxUnderrun置位表示在幀結(jié)束前網(wǎng)卡運行已過時。改變網(wǎng)絡(luò)狀態(tài)結(jié)構(gòu)體中對應(yīng)元素的值,接著通知上層可往下發(fā)送包數(shù)據(jù)。

pIYBAGCsa1OAHXiKAAEe7LV2HkA604.png

4) TxCOL

當(dāng)傳輸出現(xiàn)沖突錯誤時,通過讀寄存器值得到當(dāng)前沖突的個數(shù),加到統(tǒng)計結(jié)構(gòu)體中的對應(yīng)元素值上。

5) RxMISS

讀寄存器獲取丟失幀的個數(shù)。

3.2.5 傳輸超時的處理

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

3.2.6 測試結(jié)果

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

4 結(jié)束語

本文提出了一種基于嵌入式Linux的網(wǎng)卡驅(qū)動實現(xiàn)方案,并介紹了Linux下網(wǎng)絡(luò)設(shè)備驅(qū)動的一些特性。此方案已應(yīng)用到基于Intel PXA255處理器的金融信息終端研發(fā)中,使用和測試表明此方案穩(wěn)定可靠,也可為其他嵌人式系統(tǒng)的網(wǎng)絡(luò)設(shè)備開發(fā)提供一定的參考。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19432

    瀏覽量

    231261
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16461

    瀏覽量

    179558
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8706

    瀏覽量

    151972
收藏 人收藏

    評論

    相關(guān)推薦

    實現(xiàn)PXA255處理器與CF卡的接口設(shè)計

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

    如何在Intel XScale PXA255上構(gòu)建嵌入式Linux應(yīng)用平臺

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

    如何利用PXA255處理器的Sitsang開發(fā)平臺實現(xiàn)紅外模塊的設(shè)計?

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

    PXA255上的嵌入式Linux應(yīng)用平臺說明

    PXA255上的嵌入式Linux應(yīng)用平臺說明
    發(fā)表于 03-28 09:52 ?28次下載

    PXA255在CCD圖像采集中的應(yīng)用

    介紹了Intel 公司的PXA255 處理器的特點及內(nèi)部結(jié)構(gòu),并討論了在移動測試領(lǐng)域的具體應(yīng)用,介紹了基于PXA255 的CCD 圖像的采集,壓縮編碼和傳輸?shù)睦碚摲治龊涂尚行苑治?;并把本?yīng)用
    發(fā)表于 07-10 15:09 ?21次下載

    基于PXA255的嵌入式Linux應(yīng)用平臺的構(gòu)建

    基于Intel XScale PXA255 處理器Linux 操作系統(tǒng),在其基礎(chǔ)上構(gòu)建嵌入式Linux應(yīng)用平臺。步驟主要包括加載Bootloader 引導(dǎo)程序、交叉編譯環(huán)境下加載和編
    發(fā)表于 08-29 08:22 ?8次下載

    應(yīng)用處理器PXA255上的嵌入式Linux系統(tǒng)開發(fā)

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

    基于PXA255的GPRS圖像傳輸系統(tǒng)設(shè)計

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

    基于PXA255的嵌入式智能減振系統(tǒng)設(shè)計

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

    PXA255上的嵌入式Linux應(yīng)用平臺

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

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

    Intel Xscale PXA255嵌入式處理器與CF卡的硬件接口設(shè)計 以導(dǎo)航設(shè)備存儲系統(tǒng)應(yīng)用為例,本文討論了Intel Xscale PXA255嵌入式
    發(fā)表于 09-26 17:39 ?948次閱讀
    Intel Xscale <b class='flag-5'>PXA255</b>嵌入式<b class='flag-5'>處理器</b>與CF卡的

    PXA255處理器與CF卡的接口設(shè)計

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

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

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

    PXA255處理器在WinCE系統(tǒng)下的BootLoader的設(shè)計與實現(xiàn)

    PXA255處理器在WinCE系統(tǒng)下的BootLoader的設(shè)計與實現(xiàn)
    發(fā)表于 10-25 10:04 ?4次下載
    <b class='flag-5'>PXA255</b><b class='flag-5'>處理器</b>在WinCE系統(tǒng)下的BootLoader的設(shè)計與<b class='flag-5'>實現(xiàn)</b>

    探究PXA255的VoIP語音傳輸系統(tǒng)

    摘要:文章研究IP語音傳輸系統(tǒng)的總體架構(gòu),實現(xiàn)了一個基于PXA255處理器的嵌入式IP電話終端硬件平臺,為該平臺建立
    的頭像 發(fā)表于 04-23 15:23 ?2152次閱讀
    探究<b class='flag-5'>PXA255</b>的VoIP語音傳輸系統(tǒng)