• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于ARM-Linux的網(wǎng)絡(luò)驅(qū)動程序設(shè)計(jì)

      2012-09-25 02:13:48孟傳良
      通信技術(shù) 2012年6期
      關(guān)鍵詞:網(wǎng)絡(luò)設(shè)備驅(qū)動程序網(wǎng)卡

      常 鋒, 孟傳良

      0 引言

      為了實(shí)現(xiàn) Linux操作系統(tǒng)的諸多網(wǎng)絡(luò)功能,需要設(shè)計(jì)出合適的網(wǎng)絡(luò)驅(qū)動程序。為了更好地設(shè)計(jì)出適合的網(wǎng)絡(luò)驅(qū)動程序,需要對其運(yùn)行機(jī)理有所了解[1]。由于Linux是開放源代碼的,這使得在Linux內(nèi)核中對相關(guān)的網(wǎng)絡(luò)設(shè)備驅(qū)動部分進(jìn)行修改提供了方便,可以對其網(wǎng)絡(luò)驅(qū)動程序部分進(jìn)行分析和改造,使其滿足特殊的應(yīng)用需要。這里就對 Linux內(nèi)核中的網(wǎng)絡(luò)驅(qū)動程序部分進(jìn)行了詳細(xì)的討論,并結(jié)合一個具體的實(shí)例,探討了如何設(shè)計(jì)出適合的網(wǎng)絡(luò)驅(qū)動程序。

      1 網(wǎng)絡(luò)設(shè)備驅(qū)動的運(yùn)行機(jī)理

      Linux中將設(shè)備分為3種類型:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。它們的編寫方法大致相同,其中字符設(shè)備和塊設(shè)備可以像文件一樣被訪問,網(wǎng)絡(luò)設(shè)備的驅(qū)動是 Linux操作系統(tǒng)中一種比較特殊的應(yīng)用,它通常是通過套接字(Socket)這種接口來實(shí)現(xiàn)的[2]。在套接字機(jī)制中,系統(tǒng)和驅(qū)動程序之間通過專門的網(wǎng)絡(luò)接口負(fù)責(zé)數(shù)據(jù)的傳遞。應(yīng)用程序不能直接訪問網(wǎng)絡(luò)驅(qū)動程序,而只能通過網(wǎng)絡(luò)子系統(tǒng)與它進(jìn)行交互,網(wǎng)絡(luò)驅(qū)動程序異步地接收來自外界的數(shù)據(jù)[3]。

      1.1 網(wǎng)絡(luò)設(shè)備驅(qū)動的體系結(jié)構(gòu)

      Linux系統(tǒng)的優(yōu)點(diǎn)之一是它具有豐富而穩(wěn)定的網(wǎng)絡(luò)協(xié)議棧,不同于網(wǎng)絡(luò)理論中一般的OSI模型,Linux系統(tǒng)的網(wǎng)絡(luò)協(xié)議棧一般分為4層。從上到下分別是:網(wǎng)絡(luò)協(xié)議接口層、網(wǎng)絡(luò)設(shè)備接口層、設(shè)備驅(qū)動功能層,以及網(wǎng)絡(luò)設(shè)備和網(wǎng)絡(luò)媒介層[4]。

      在這里,網(wǎng)絡(luò)設(shè)備和網(wǎng)絡(luò)媒介層提供訪問物理設(shè)備的驅(qū)動程序。設(shè)備驅(qū)動功能層的作用是為上層程序提供訪問外部設(shè)備的操作接口,并且實(shí)現(xiàn)設(shè)備的驅(qū)動程序,它通過hard_start_xmit()函數(shù)啟動發(fā)送操作,并通過網(wǎng)絡(luò)設(shè)備上的中斷觸發(fā)接受操作。網(wǎng)絡(luò)設(shè)備接口層向協(xié)議接口層提供統(tǒng)一的用于描述具體網(wǎng)絡(luò)設(shè)備屬性和操作的結(jié)構(gòu)體net_device,該結(jié)構(gòu)體是網(wǎng)絡(luò)設(shè)備驅(qū)動功能層中各函數(shù)的容器。網(wǎng)絡(luò)設(shè)備接口層負(fù)責(zé)對硬件設(shè)備驅(qū)動功能層的宏觀規(guī)劃。網(wǎng)絡(luò)協(xié)議接口層為網(wǎng)絡(luò)層協(xié)議提供了一個統(tǒng)一的數(shù)據(jù)包收發(fā)接口,而無需考慮上層協(xié)議類型,其中dev_queue_xmit()函數(shù)用來發(fā)送數(shù)據(jù),netif_rx()函數(shù)用來接受數(shù)據(jù)。這一層的設(shè)計(jì)可以使得上層協(xié)議無需考慮具體硬件的實(shí)現(xiàn)[5]。

      圖1 Linux網(wǎng)絡(luò)驅(qū)動體系結(jié)構(gòu)

      1.2 網(wǎng)絡(luò)驅(qū)動程序的主要功能

      網(wǎng)絡(luò)驅(qū)動程序完成的主要功能包括系統(tǒng)的初始化、數(shù)據(jù)包的發(fā)送和接收等[6]。系統(tǒng)的初始化是通過定義數(shù)據(jù)結(jié)構(gòu)net_device中的初始化函數(shù)init()實(shí)現(xiàn)的。初始化函數(shù)init()會檢測設(shè)備的硬件信息來確定是否對該設(shè)備分配資源空間,檢測完成后會往數(shù)據(jù)結(jié)構(gòu) net_device中填充該設(shè)備的信息,并將該新設(shè)備添加到新的設(shè)備列表中。

      數(shù)據(jù)包的發(fā)送與接收是網(wǎng)絡(luò)設(shè)備驅(qū)動程序的設(shè)計(jì)中最主要的內(nèi)容,對該部分驅(qū)動程序編寫的好壞會直接影響到驅(qū)動程序的整體質(zhì)量。網(wǎng)絡(luò)設(shè)備的發(fā)送需要用到協(xié)議接口層函數(shù)dev_queue_xmit(),通過它來調(diào)用數(shù)據(jù)結(jié)構(gòu)net_device中的hard_header函數(shù)指針,讀取存放在套接字緩沖區(qū)sk_buff里的數(shù)據(jù),并將數(shù)據(jù)發(fā)送到物理設(shè)備上。數(shù)據(jù)包的接收通常使用的是 netif_rx()函數(shù),當(dāng)?shù)讓佑布O(shè)備驅(qū)動程序收到數(shù)據(jù)包時,硬件會產(chǎn)生一個中斷信號,隨后系統(tǒng)就會通過調(diào)用netif_rx()函數(shù)將套接字緩沖區(qū)sk_buff里的數(shù)據(jù)上傳至網(wǎng)絡(luò)層。然后,套接字緩沖區(qū)sk_buff中的數(shù)據(jù)會被 netif_rx_schedule函數(shù)在上層協(xié)議隊(duì)列里進(jìn)行排隊(duì),以便接下來的處理。

      2 基于ARM的CS8900A驅(qū)動程序設(shè)計(jì)

      2.1 CS8900A網(wǎng)卡的介紹

      實(shí)例中,網(wǎng)絡(luò)控制器選用的是CS8900A局域網(wǎng)處理芯片。CS8900A是一款由CIRRUS LOGIC公司生產(chǎn)的16位以太網(wǎng)控制器,它具有功能強(qiáng)大、功耗較低、性能優(yōu)越等特點(diǎn)。該芯片的突出優(yōu)點(diǎn)是適應(yīng)性強(qiáng)、配置方便。它可對物理接口、數(shù)據(jù)傳輸模式和工作模式等根據(jù)不同的需要進(jìn)行動態(tài)的調(diào)整,亦可通過對其內(nèi)部寄存器的調(diào)整使之滿足不同應(yīng)用環(huán)境的需求。

      該芯片的內(nèi)部功能模塊所使用的訪問控制塊(MAC)的設(shè)計(jì)完全依照以太網(wǎng)IEEE 802.3標(biāo)準(zhǔn),具有通用性好的優(yōu)點(diǎn),可與當(dāng)今主流的嵌入式系統(tǒng)兼容。該芯片在處理發(fā)送和接收以太網(wǎng)數(shù)據(jù)幀時主要完成的工作有:檢測數(shù)據(jù)幀的發(fā)送和接收是否存在沖突,對發(fā)送的數(shù)據(jù)幀生成幀頭信息,對收到的數(shù)據(jù)幀的幀頭信息進(jìn)行檢測。此外,它還可對數(shù)據(jù)幀進(jìn)行CSC校驗(yàn)碼的生成和檢測。當(dāng)對其發(fā)送控制寄存器(TxCMD)進(jìn)行初始化配置后,可以使得訪問控制塊能夠自動檢測數(shù)據(jù)幀是否有沖突否則要求重傳。對于不符合 802.3標(biāo)準(zhǔn)的數(shù)據(jù)幀,比如少于46 Byte的數(shù)據(jù)幀,它可自動填充字段以補(bǔ)足不足部分使之滿足標(biāo)準(zhǔn)需求[7]。另外,CS8900A網(wǎng)卡還支持多種傳輸模式,包括I/O模式(該模式為CS8900A存儲區(qū)的默認(rèn)模式,配置較方便)和 Memory模式以及DMA模式。

      2.2 CS8900A網(wǎng)卡驅(qū)動設(shè)計(jì)分析

      網(wǎng)絡(luò)設(shè)備驅(qū)動程序的設(shè)計(jì)需要完成的主要工作是網(wǎng)絡(luò)設(shè)備的注冊、網(wǎng)絡(luò)設(shè)備的初始化和注銷,以及對發(fā)送和接收的數(shù)據(jù)進(jìn)行處理等,當(dāng)遇到傳輸超時和中斷的情況時還要求其能即時做出處理。由于Linux系統(tǒng)是開源的,可以很方便地查看其內(nèi)核的設(shè)備驅(qū)動源代碼,其中數(shù)據(jù)結(jié)構(gòu)和函數(shù)的模板已由Linux提供。因此,設(shè)計(jì)驅(qū)動程序時,要做的主要工作就是根據(jù)具體的網(wǎng)絡(luò)設(shè)備填充相應(yīng)的操作即可。這里,以CS8900A網(wǎng)卡驅(qū)動程序設(shè)計(jì)的實(shí)例來具體說明網(wǎng)絡(luò)設(shè)備驅(qū)動程序的具體實(shí)現(xiàn)過程。開發(fā)環(huán)境使用了arm-linux-gcc交叉工具鏈,采用Linux2.6.26內(nèi)核以及S3C2410開發(fā)板。

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

      網(wǎng)絡(luò)設(shè)備的初始化是設(shè)計(jì)網(wǎng)絡(luò)驅(qū)動程序的第一步,該過程主要是通過結(jié)構(gòu)體net_device中的init()函數(shù)實(shí)現(xiàn)的。下面就以實(shí)例來說明初始化函數(shù)要完成的主要工作,這里將初始化函數(shù)設(shè)定為__init cs8900_probe():

      首先,通過以太網(wǎng)接口的函數(shù)ether_setup()的設(shè)置,告知系統(tǒng)需要使用的以太網(wǎng)接口,這里選擇默認(rèn)值即可;接下來,需要對 net_device結(jié)構(gòu)體中的大部分的設(shè)備成員進(jìn)行填充;然后,調(diào)用 check_mem_region()函數(shù),用來檢測要使用的 I/O地址空間,并向系統(tǒng)申請地址空間,這里使用的是以base_addr為起始地址的16個連續(xù)的I/O地址空間;接著還需要調(diào)用cs8900_read()函數(shù),用以檢測CS8900A的網(wǎng)卡信息,這里,設(shè)置網(wǎng)卡的INTRQ0為中斷信號的輸出引腳,并將網(wǎng)卡的 MAC地址寫入到CS8900A網(wǎng)卡的IA寄存器之中;最后,通過對初始化函數(shù)的定義在 register_netdev時的調(diào)用完成CS8900A網(wǎng)卡在Linux系統(tǒng)的設(shè)備鏈表中的注冊。

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

      網(wǎng)絡(luò)設(shè)備的打開和關(guān)閉是網(wǎng)絡(luò)驅(qū)動程序設(shè)計(jì)中必不可少的一環(huán)。由于Linux系統(tǒng)會響應(yīng)ifconfig命令,打開或者關(guān)閉一個網(wǎng)絡(luò)接口。這時,ifconfig命令會調(diào)用控制I/O設(shè)備的ioctl函數(shù)獲得設(shè)備信息和向設(shè)備發(fā)送控制參數(shù),該調(diào)用會設(shè)置flag的IFF_UP位對設(shè)備進(jìn)行打開操作,它可通過驅(qū)動程序的open方法來實(shí)現(xiàn)。這里,就以 cs8900_start()函數(shù)為實(shí)例來說明如何打開網(wǎng)絡(luò)設(shè)備,該函數(shù)要完成的主要工作包括如下:

      首先,使用request_irp()函數(shù)申請中斷,選擇中斷類型以及要申請中斷的網(wǎng)絡(luò)設(shè)備;然后,通過cs8900_set()函數(shù)對 CS8900A網(wǎng)卡中的各個寄存器進(jìn)行設(shè)置,并啟動該設(shè)備;最后,利用 netif_start_queue()函數(shù)指定要啟動發(fā)送隊(duì)列的設(shè)備,以便實(shí)現(xiàn)網(wǎng)絡(luò)的數(shù)據(jù)傳輸。

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

      網(wǎng)絡(luò)數(shù)據(jù)包的發(fā)送和接收是驅(qū)動程序設(shè)計(jì)中要實(shí)現(xiàn)的兩個最重要的任務(wù)。發(fā)送數(shù)據(jù)包的一般過程是:首先,當(dāng)網(wǎng)絡(luò)設(shè)備加載到 Linux系統(tǒng)上時,會使用到結(jié)構(gòu)體 net_device中的 open方法,并通過hard_header()函數(shù)的調(diào)用來建立所用到的網(wǎng)絡(luò)設(shè)備的硬件幀頭信息。當(dāng)需要發(fā)送一個數(shù)據(jù)包時,它會調(diào)用hard_start_transmit函數(shù),該函數(shù)將會使用結(jié)構(gòu)體net_device中的hard_start_xmit()函數(shù),這是一個指向緩沖區(qū)sk_buff的指針,用以實(shí)現(xiàn)將緩沖區(qū)里的數(shù)據(jù)取出并發(fā)送到網(wǎng)絡(luò)設(shè)備上去。如果數(shù)據(jù)發(fā)送成功,hard_start_xmit()方法會釋放緩沖區(qū)sk_buff里的數(shù)據(jù),并返回0;如若硬件設(shè)備暫時無法處理,比如硬件忙,則返回為1。這時,如果tbusy的值是非0,則被系統(tǒng)任務(wù)認(rèn)為是硬件忙,需要等到 tbusy為 0時才可發(fā)送數(shù)據(jù)。一般,tbusy的置0任務(wù)是由系統(tǒng)的中斷來完成的。當(dāng)硬件發(fā)送數(shù)據(jù)任務(wù)結(jié)束后,會產(chǎn)生一個中斷,這時可以將tbusy置為0,以便通知系統(tǒng)進(jìn)行下次發(fā)送。這里以cs8900_send_start()發(fā)送函數(shù)為實(shí)例,介紹發(fā)送數(shù)據(jù)時所要完成的主要工作:

      首先,嘗試獲取自旋鎖,隨后中止網(wǎng)絡(luò)設(shè)備的發(fā)送隊(duì)列;然后,告知CS8900A需要發(fā)送數(shù)據(jù),以及數(shù)據(jù)的長度;接下來,通過讀取 PP_BusST寄存器,獲得CS8900A的狀態(tài),這要分三種情況,若寄存器TxBidErr置位,表示數(shù)據(jù)長度不合法,則返回錯誤,若寄存器Rdy4TxNOW沒被置位,表示硬件還沒準(zhǔn)備好,則返回錯誤,若一切正常,則開始發(fā)送數(shù)據(jù)幀;還要調(diào)用 cs8900_frame_write()函數(shù)發(fā)送數(shù)據(jù);最后,記錄數(shù)據(jù)幀的發(fā)送時間,以及釋放緩沖區(qū)。

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

      數(shù)據(jù)包的接收過程一般是,當(dāng)數(shù)據(jù)包到達(dá)網(wǎng)絡(luò)設(shè)備時,會由硬件產(chǎn)生一個中斷,通知驅(qū)動程序進(jìn)行數(shù)據(jù)包的接收。中斷處理程序會向系統(tǒng)申請一段地址作為sk_buff緩沖區(qū),用以存放接收到的數(shù)據(jù)。當(dāng)接收到的數(shù)據(jù)存放到緩沖區(qū)后,還需要對其部分信息進(jìn)行填充,比如指定設(shè)備的結(jié)構(gòu)體、數(shù)據(jù)幀類型以及鏈路層數(shù)據(jù)類型等。最后,通過協(xié)議接口層函數(shù) netif_rx()的調(diào)用,把數(shù)據(jù)包交由上層來處理。這里,以接收函數(shù)cs8900_receive()為實(shí)例,說明網(wǎng)絡(luò)設(shè)備的接收數(shù)據(jù)過程:

      首先,通過讀取硬件寄存器,獲得CS8900A的狀態(tài),以及接收的數(shù)據(jù)長度;然后,狀態(tài)解析,若不是RxOK狀態(tài),還需判斷錯誤類型,分為三種情況:若為Runt或者Extradata狀態(tài),則表示數(shù)據(jù)包長度不合法,若為CRCerror狀態(tài),則表示數(shù)據(jù)包校驗(yàn)錯誤,若一切正常,則開始數(shù)據(jù)的接收;接下來,申請一塊緩沖區(qū),并調(diào)用 cs8900_frame_read()函數(shù)來接收數(shù)據(jù);最后,當(dāng)數(shù)據(jù)接收完成后,調(diào)用netif_rx()函數(shù)通知上層。

      3 CS8900A驅(qū)動程序的編譯于測試

      3.1 將設(shè)備驅(qū)動模塊編譯進(jìn)內(nèi)核

      網(wǎng)絡(luò)驅(qū)動程序設(shè)計(jì)好之后,還需要對這個內(nèi)核模塊進(jìn)行編譯,以自定義的這個內(nèi)核模塊作為Linux系統(tǒng)源碼的一部分編譯出新的系統(tǒng)內(nèi)核。下面就以Linux2.6.26內(nèi)核的開發(fā)環(huán)境為例,介紹如何將CS8900的網(wǎng)卡驅(qū)動模塊編譯進(jìn)Linux系統(tǒng)內(nèi)核。

      首先,在Linux2.6.26內(nèi)核的源碼主目錄(這里為/usr/src/linux2.6.26)中的drivers目錄下創(chuàng)建新的目錄 cs8900;然后,將之前編寫好的 cs8900.c和cs8900.h這兩個文件拷貝到該目錄下;接著,就可以編寫Makefile文件:

      #CS8900的Makefile文件

      obj -$(CONFIG_DRIVER_CS8900) +=cs8900.o

      同樣,Kconfig文件的編寫如下:

      #CS8900的網(wǎng)絡(luò)接口

      menu "網(wǎng)絡(luò)接口支持"

      config DRIVER_CS8900

      tristate "CS8900支持"

      source "drivers/cs8900/Kconfig"

      endmenu

      設(shè)置好之后,當(dāng)使用make menuconfig命令時,可以發(fā)現(xiàn)Device Drivers選項(xiàng)下會出現(xiàn)“網(wǎng)絡(luò)接口支持”選項(xiàng),選擇里面的 “CS8900支持”項(xiàng),可以看到它包括三種狀態(tài):即未選中,表示不編譯;選中(M),表示編譯該模塊;選中(*),表示將該模塊編譯為新系統(tǒng)的一部分。

      接下來,對該Linux2.6.26內(nèi)核進(jìn)行重新編譯,使得該內(nèi)核可以支持CS8900網(wǎng)卡驅(qū)動,然后,將編譯后的Linux內(nèi)核上載到S3C2410的開發(fā)板上,配置好相應(yīng)的網(wǎng)絡(luò)參數(shù),就可以對網(wǎng)卡驅(qū)動程序進(jìn)行測試了。

      3.2 測試結(jié)果

      網(wǎng)絡(luò)設(shè)備驅(qū)動測試主要是從底層硬件測試和上層網(wǎng)絡(luò)測試這兩個方面進(jìn)行。底層硬件測試的方法如下:在內(nèi)存中開辟兩塊區(qū)域M1和M2,并按照網(wǎng)絡(luò)數(shù)據(jù)包的格式設(shè)置初始值,將區(qū)域 M1中的數(shù)據(jù)通過網(wǎng)卡發(fā)送出去,通過回環(huán)的方式,最終由主機(jī)端接收到,存放到區(qū)域M2中;再將區(qū)域M2中的數(shù)據(jù)也通過網(wǎng)卡發(fā)送出去,并且接收回來。經(jīng)過多次的循環(huán),比較最終得到的數(shù)據(jù)包和之前設(shè)置的數(shù)據(jù)包是否是一致的。經(jīng)過測試后可以發(fā)現(xiàn),最底層的數(shù)據(jù)發(fā)送和接收是正確無誤的。

      上層網(wǎng)絡(luò)測試的方法如下:通過網(wǎng)線將目標(biāo)機(jī)和PC主機(jī)連接起來,并在目標(biāo)機(jī)端開啟tftp服務(wù),主機(jī)端則使用FlashFXP軟件,從主機(jī)分別傳送數(shù)個小于100 MB的大小不同的文件到目標(biāo)機(jī),再從目標(biāo)機(jī)將文件傳回主機(jī),這個過程進(jìn)行數(shù)次。最后查看平均的網(wǎng)絡(luò)傳輸速度。測試結(jié)果表明網(wǎng)卡驅(qū)動的工作正常,速度穩(wěn)定在5 Mbit/s左右。

      4 結(jié)語

      該設(shè)計(jì)結(jié)合CS8900A網(wǎng)絡(luò)芯片為例,分析了網(wǎng)絡(luò)設(shè)備驅(qū)動程序運(yùn)行的機(jī)理,詳細(xì)介紹了實(shí)現(xiàn)Linux網(wǎng)絡(luò)設(shè)備驅(qū)動程序的一般步驟和關(guān)鍵過程,重點(diǎn)說明每步中關(guān)鍵步驟設(shè)置和處理。一般 Linux網(wǎng)絡(luò)設(shè)備驅(qū)動程序的設(shè)計(jì)都有一定的模式[8-9],遵循這個模式,可以快速地設(shè)計(jì)出需要的驅(qū)動程序。分析了Linux內(nèi)核中的網(wǎng)絡(luò)驅(qū)動程序的工作機(jī)理,并結(jié)合一個實(shí)例,說明如何具體設(shè)計(jì)網(wǎng)絡(luò)驅(qū)動程序使之滿足應(yīng)用要求。通過對CS8900A網(wǎng)絡(luò)驅(qū)動程序設(shè)計(jì)的研究,對于其他相類似的網(wǎng)絡(luò)驅(qū)動程序的設(shè)計(jì)具有一定的參考價值。

      [1] 宋寶華.Linux設(shè)備驅(qū)動開發(fā)詳解[M].北京:人民郵電出版社,2006.

      [2] 唐六華,唐建明,向紅權(quán).嵌入式Linux下OLED顯示功能模塊實(shí)現(xiàn)[J] .信息安全與通信保密,2009(06): 55-57.

      [3] 韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊[M].北京:人民郵電出版社,2008.

      [4] 李善平,劉文蜂. Linux內(nèi)核2.4版源代碼分析大全[M].北京:機(jī)械工業(yè)出版社,2002.

      [5] 科爾特.LINUX設(shè)備驅(qū)動程序[M].北京:中國電力出版社,2005.

      [6] 朱小可.尚觀科技[M].北京:尚觀科技,2008.

      [7] 沈金河.Web協(xié)議與實(shí)現(xiàn)[M].北京:科學(xué)出版社,2003.

      [8] 陳新, 翁秋華.基于Linux+ARM9的Wi-Fi網(wǎng)絡(luò)圖形化設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),2012,45(03):60-62,65.

      [9] 楊永,萬曉榆,樊自甫..基于 ARM9嵌入式網(wǎng)管系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),2008,41(03):68-70.

      猜你喜歡
      網(wǎng)絡(luò)設(shè)備驅(qū)動程序網(wǎng)卡
      在DDS 中間件上實(shí)現(xiàn)雙冗余網(wǎng)卡切換的方法
      一種基于C# 的網(wǎng)絡(luò)設(shè)備自動化登錄工具的研制
      Server 2016網(wǎng)卡組合模式
      數(shù)據(jù)中心唯“快”不破
      挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專用Dragon網(wǎng)卡
      基于列車監(jiān)測網(wǎng)絡(luò)設(shè)備的射頻功放模塊設(shè)計(jì)
      基于三層交換技術(shù)架構(gòu)數(shù)字化校園網(wǎng)絡(luò)設(shè)備的配置與管理
      驅(qū)動程序更新與推薦
      驅(qū)動程序更新與推薦
      驅(qū)動程序更新與推薦
      修水县| 宝清县| 康马县| 日喀则市| 中超| 石屏县| 清徐县| 四平市| 日照市| 孟州市| 木里| 桂平市| 汽车| 太保市| 景宁| 台江县| 修文县| 思茅市| 长宁县| 韶关市| 彭山县| 襄城县| 阆中市| 龙山县| 桃源县| 宣威市| 永吉县| 涟源市| 汉川市| 济源市| 利津县| 柘荣县| 河北省| 百色市| 武冈市| 西华县| 奉贤区| 仁布县| 甘德县| 七台河市| 江达县|