梅 濤,黃堡壘,徐曉光
(中航工業(yè)西安計算技術研究所 基礎軟件室,陜西 西安 710068)
?
嵌入式系統(tǒng)網(wǎng)卡驅動模型設計與實現(xiàn)
梅濤,黃堡壘,徐曉光
(中航工業(yè)西安計算技術研究所 基礎軟件室,陜西 西安710068)
摘要以嵌入式系統(tǒng)下網(wǎng)卡驅動的功能為出發(fā)點,提出了一種嵌入式系統(tǒng)下網(wǎng)卡驅動設計模型,通過在網(wǎng)絡協(xié)議層與網(wǎng)卡驅動之間增加一個網(wǎng)卡驅動功能抽象中間層,有效地隔離上層網(wǎng)絡協(xié)議與底層具體的網(wǎng)卡驅動,使得驅動實現(xiàn)的細節(jié)對上層協(xié)議透明。中間層作為網(wǎng)卡驅動的抽象層,在提供網(wǎng)卡驅動控制服務的同時,可實現(xiàn)網(wǎng)絡層協(xié)議與驅動之間的交互;有效地簡化網(wǎng)卡驅動的設計工作。通過在合適的平臺上進行驗證和測試,實驗結果證明該模型能有效指導嵌入式系統(tǒng)網(wǎng)卡驅動的設計,網(wǎng)卡驅動能正確,可靠地工作,網(wǎng)絡通信功能正常。
關鍵詞嵌入式系統(tǒng);網(wǎng)卡驅動模型;設計與實現(xiàn)
隨著物聯(lián)網(wǎng)[1]、可穿戴設備[2]的發(fā)展,嵌入式設備中支持以太網(wǎng)通信已成為必然趨勢,客觀上要求各嵌入式操作系統(tǒng)支持TCP/IP網(wǎng)絡協(xié)議棧功能。各種嵌入式操作系統(tǒng)的使用,以及眾多硬件平臺的出現(xiàn),嵌入式領域對網(wǎng)絡協(xié)議棧的需求日趨復雜。嵌入式系統(tǒng)開發(fā)人員面臨種類繁多的網(wǎng)絡硬件平臺需進行驅動的適配。本文以嵌入式系統(tǒng)下網(wǎng)卡驅動的功能為出發(fā)點,提出一種網(wǎng)卡驅動開發(fā)模型;選擇相應的硬件和軟件平臺,對網(wǎng)卡驅動開發(fā)模型進行驗證,并對設計的驅動進行的測試,結果證明該模型能夠正確有效地指導嵌入式系統(tǒng)網(wǎng)卡驅動的設計。
1網(wǎng)卡驅動模型
網(wǎng)卡驅動實現(xiàn)鏈路層與網(wǎng)絡層之間的信息傳遞功能。并通過網(wǎng)卡驅動實現(xiàn)對以太網(wǎng)控制器的初始化,實現(xiàn)對網(wǎng)卡設備的控制,進而實現(xiàn)數(shù)據(jù)轉發(fā)的工作。網(wǎng)絡驅動模型定義,如圖1所示。
圖1 嵌入式系統(tǒng)網(wǎng)絡驅動結構
網(wǎng)絡協(xié)議驅動提供基于上層協(xié)議所需的通信、控制接口,能處理上層協(xié)議的數(shù)據(jù)和控制命令,并將數(shù)據(jù)和控制命令發(fā)送給底層的設備驅動。在網(wǎng)絡協(xié)議驅動與網(wǎng)卡設備驅動之間,增加了一個驅動功能抽象中間層,該層提供網(wǎng)卡驅動與協(xié)議驅動之間的交互功能。
1.1網(wǎng)卡設備與驅動功能抽象層
驅動功能抽象層(下文簡稱中間層)是網(wǎng)絡設備控制和通信功能的抽象集合,為網(wǎng)絡協(xié)議和驅動程序提供了一套通用的編程接口;該功能位于鏈路層和網(wǎng)絡層之間。通過該層可屏蔽網(wǎng)絡協(xié)議對底層具體網(wǎng)絡設備的感知,中間層相當于上層協(xié)議與網(wǎng)絡驅動程序之間的管道,通過該層,上層網(wǎng)絡協(xié)議可與不同的網(wǎng)絡設備驅動交互。中間層的加入有效隔離了網(wǎng)絡設備驅動和上層的網(wǎng)絡協(xié)議,中間層屏蔽了底層網(wǎng)絡設備的差異性和上層網(wǎng)絡組件的特殊性,降低了增加網(wǎng)絡設備的和擴展網(wǎng)絡組件的復雜性。
中間層實現(xiàn)對具體網(wǎng)絡驅動的封裝。同時為下層具體的網(wǎng)卡驅動提供交互的入口。中間層提供的功能是通用網(wǎng)卡驅動功能的一個集合,主要實現(xiàn)數(shù)據(jù)和控制命令的交互。該層的目的是為了隔離上層協(xié)議(如TCP/IP協(xié)議)與底層驅動之間的直接相關性,將具體的驅動與上層協(xié)議經(jīng)過隔離,簡化驅動的設計。中間層負責層管理網(wǎng)絡協(xié)議與底層驅動程序之間的通信,使數(shù)據(jù)發(fā)送和接收變得簡單。
1.2驅動和協(xié)議層數(shù)據(jù)管理
網(wǎng)絡設備使用緩沖區(qū)描述符組織所需的數(shù)據(jù)緩沖空間。在設備驅動初始化時,分配接收和發(fā)送緩沖區(qū)。當接收數(shù)據(jù)包時,首先把數(shù)據(jù)存放在設備的接收緩沖區(qū),然后將緩沖區(qū)傳遞給中間層。當發(fā)送數(shù)據(jù)時,首先包發(fā)送緩沖區(qū)的數(shù)據(jù)復制到設備的發(fā)送緩沖區(qū)中,再將緩沖區(qū)放置到發(fā)送隊列中,啟動數(shù)據(jù)發(fā)送過程,數(shù)據(jù)發(fā)送完成后將數(shù)據(jù)緩沖區(qū)歸還給內(nèi)存池。
網(wǎng)絡中通常使用鏈式結構管理網(wǎng)絡數(shù)據(jù)。數(shù)據(jù)鏈上的每個節(jié)點包含一個給定大小的數(shù)據(jù)塊,數(shù)據(jù)塊由一個控制節(jié)點進行索引。數(shù)據(jù)塊的控制節(jié)點形成一個數(shù)據(jù)鏈,一個數(shù)據(jù)鏈表示一個有效的網(wǎng)絡數(shù)據(jù)包[3],通過鏈頭節(jié)點構成網(wǎng)絡中數(shù)據(jù)包的鏈。網(wǎng)卡驅動初始化時,通過控制節(jié)點為數(shù)據(jù)節(jié)點分配空間;在初始化網(wǎng)卡數(shù)據(jù)緩沖時,為數(shù)據(jù)節(jié)點分配的空間,并與網(wǎng)卡驅動使用的緩沖空間進行關聯(lián)。網(wǎng)絡數(shù)據(jù)包的組織形式,如圖2所示。
圖2 網(wǎng)絡數(shù)據(jù)包結構圖
在網(wǎng)絡通信過程中存在多種大小的數(shù)據(jù)塊,不同的數(shù)據(jù)包可能使用不同的數(shù)據(jù)塊。不同大小的數(shù)據(jù)塊使網(wǎng)絡數(shù)據(jù)包的組織更加靈活;但在具體的網(wǎng)絡設備驅動設計中,通常使用統(tǒng)一的數(shù)據(jù)塊大小,從而簡化網(wǎng)卡驅動的開發(fā)。同一個數(shù)據(jù)塊可能會被多個數(shù)據(jù)包引用,當數(shù)據(jù)塊對應的控制節(jié)點中引用計數(shù)[4]為0時,才能釋放對應的數(shù)據(jù)塊空間。
2網(wǎng)卡驅動實現(xiàn)
網(wǎng)卡驅動主要實現(xiàn)以下功能模塊:(1)向系統(tǒng)中注冊網(wǎng)絡設備;(2)網(wǎng)絡設備空間初始化;(3)網(wǎng)絡數(shù)據(jù)收發(fā)處理;(4)網(wǎng)絡設備啟動。
2.1網(wǎng)卡設備注冊
在設備初始化過程中,系統(tǒng)查找 “網(wǎng)絡設備配置表”的全局數(shù)據(jù)結構。該表定義了當前系統(tǒng)中配置的網(wǎng)絡設備的相關信息,包括設備編號,設備驅動入口,設備初始參數(shù)串等信息。
網(wǎng)絡設備配置表結構定義如下:
typedef struct nd_tbl_entry
{
int unit;/* 設備單元號 */
ND_OBJ* (*LoadFunc) (char*,void*);/* 設備驅動入口. */
char* LoadString;/* 設備初始化參數(shù)串. */
void* ndParam;/* 驅動參數(shù)指針 */
BOOL processed;/* 設備初始化標志 */
char ndRes[5];
} ND_TBL_ENTRY;
其中,ND_OBJ表示網(wǎng)卡設備對象數(shù)據(jù)結構,為網(wǎng)卡設備通用結構[5],一個節(jié)點代表網(wǎng)卡設備鏈的一個設備。具體的網(wǎng)卡設備,通過在設備結構定義中引用該結構,實現(xiàn)具體設備驅動與上層協(xié)議的關聯(lián)。不同的網(wǎng)卡設備對應的“網(wǎng)絡設備配置”參數(shù)可能不盡相同。初始化時根據(jù)配置表中的信息,逐個完成具體設備的解析。
網(wǎng)卡設備的注冊,另外一個主要工作完成網(wǎng)卡驅動操作表的注冊。網(wǎng)卡驅動操作表數(shù)據(jù)結構定義如下:
typedef struct net_funcs
{
STATUS (*start) (ND_OBJ*);
STATUS (*stop) (ND_OBJ*);
STATUS (*unload) (ND_OBJ*);
int (*ioctl) (ND_OBJ*,int,caddr_t);
STATUS (*send) (ND_OBJ*,PKT*);
STATUS (*mCastAddrAdd) (ND_OBJ*,char*);
STATUS (*mCastAddrDel) (ND_OBJ*,char*);
STATUS (*mCastAddrGet) (ND_OBJ*,MULTI_TABLE*);
STATUS (*pollSend) (ND_OBJ*,PKT*);
STATUS (*pollRcv) (ND_OBJ*,PKT*);
M_BLK_ID (*formAddress) (PKT*,PKT*,PKT*,BOOL);
STATUS (*packetDataGet) (PKT*,LL_HDR_INFO *);
STATUS (*addrGet) (PKT*,PKT*,PKT*,PKT*,PKT*);
int (*endBind) (void*,void*,void*,long);
} NET_FUNCS;
根據(jù)上述定義,網(wǎng)絡驅動操作表分為如下4類:(1)設備控制服務,包括網(wǎng)卡設備啟動、停止、卸載服務以及IO控制服務;(2)網(wǎng)卡數(shù)據(jù)轉發(fā)服務,包括數(shù)據(jù)發(fā)送服務;以及輪詢方式下數(shù)據(jù)發(fā)送和接收服務;(3)支持多播的服務,包括為網(wǎng)卡增加、刪除多播地址的服務,獲取多播地址的服務;(4)其他支持服務,包括以太網(wǎng)地址操作相關服務,構造以太網(wǎng)地址,獲取以太網(wǎng)數(shù)據(jù)包頭指針,獲取以太網(wǎng)數(shù)據(jù)包的地址等服務。
其中,第(4)類服務,不同的協(xié)議類型對應的服務不盡相同。若基于以太網(wǎng)通信,網(wǎng)絡層協(xié)議提供了缺省的服務,網(wǎng)卡驅動直接使用相關服務即可。根據(jù)使用過程中網(wǎng)卡設備的實際情況,可以靈活的配置網(wǎng)卡的驅動操作表。若網(wǎng)卡使用中斷方式進行通信,則在驅動操作表中無需提供輪詢操作的服務。不使用多播時,亦可不提供多播支持服務等。
當完成設備的加載和設備驅動操作表的注冊工作,網(wǎng)卡設備的注冊過程基本完成。同時,設備注冊過程中還需完成網(wǎng)卡設備MAC[6]層和PHY[7]的初始化工作。由于網(wǎng)卡設備MAC層和PHY的初始化工作主要與網(wǎng)卡硬件直接相關,需參考網(wǎng)卡硬件手冊,在此不再贅述。
2.2網(wǎng)卡設備空間初始化
網(wǎng)卡設備空間初始化工作完成網(wǎng)卡緩沖所需空間的分配和初始化工作。網(wǎng)卡的數(shù)據(jù)傳輸通過DMA完成,DMA操作對象是網(wǎng)卡設備緩沖描述符。描述符用于指定MAC數(shù)據(jù)幀的緩沖地址,每個描述符最多可指定兩個緩沖地址,緩沖大小有嚴格的限制,一個描述符不能容納一幀的數(shù)據(jù)時,需使用多個描述符。描述符的組織結構有如下兩種方式:(1)環(huán)形緩沖組織結構;(2)鏈式緩沖組織結構[8]。環(huán)形緩沖的組織結構,如圖3所示。
圖3 網(wǎng)卡緩沖環(huán)形結構
鏈式緩沖組織結構如圖4所示。
圖4 網(wǎng)卡緩沖鏈式結構
網(wǎng)卡設備空間初始化時,根據(jù)具體使用方式,完成網(wǎng)卡設備緩沖描述符的分配,并為對應的緩沖分配數(shù)據(jù)存儲空間。為簡化網(wǎng)卡驅動設計,通常在網(wǎng)卡驅動中僅使用相同大小的緩沖空間,構建設備緩沖區(qū)。
設備緩沖的分配和初始化完成后需要實現(xiàn)網(wǎng)卡設備緩沖獲取和釋放的機制。在獲取緩沖時,要保證對緩沖空間訪問的互斥性,確保沒有其他任務同時操作當前的緩沖。釋放不再使用的緩沖時,確保沒有其他任務繼續(xù)使用當前緩沖空間。網(wǎng)卡設備空間初始化,還包括網(wǎng)卡驅動數(shù)據(jù)結構所需空間的分配和初始等工作。
2.3網(wǎng)卡數(shù)據(jù)處理
網(wǎng)卡數(shù)據(jù)處理主要完成數(shù)據(jù)接收和發(fā)送工作。
(1)數(shù)據(jù)接收過程。網(wǎng)卡將收到的數(shù)據(jù)存放到接收緩沖中,然后將數(shù)據(jù)轉發(fā)給上層協(xié)議,數(shù)據(jù)接收過程如圖5所示。
圖5 網(wǎng)卡驅動接收數(shù)據(jù)模型
數(shù)據(jù)接收過程,驅動完成如下工作:1)將數(shù)據(jù)存放到設備的接收緩沖,獲取當前空閑的緩沖,存放收到的數(shù)據(jù)幀;2)將數(shù)據(jù)上傳給上層協(xié)議,包括數(shù)據(jù)包結構的調(diào)整,驅動需根據(jù)上層協(xié)議棧定義的格式組織數(shù)據(jù)包。
驅動在數(shù)據(jù)上傳的過程中,弱直接復制數(shù)據(jù)到上層協(xié)議,將伴隨一次數(shù)據(jù)的復制操作,導致網(wǎng)卡接收效率降低。通常直接將網(wǎng)卡設備所需的接收緩沖指向上層協(xié)議使用的數(shù)據(jù)緩沖,通過緩沖地址的傳遞,減少數(shù)據(jù)的復制操作,提高數(shù)據(jù)傳輸效率;
(2)數(shù)據(jù)發(fā)送過程。該過程較簡單,將上層協(xié)議發(fā)送的數(shù)據(jù),復制到網(wǎng)卡的發(fā)送緩沖中,啟動發(fā)送操作,將數(shù)據(jù)發(fā)送出去,更新網(wǎng)卡的設備狀態(tài),然后回收發(fā)送緩沖。發(fā)送過程如圖6所示。
圖6 網(wǎng)卡驅動數(shù)據(jù)發(fā)送模型
在數(shù)據(jù)發(fā)送過程中,也存在一次數(shù)據(jù)復制操作,為提高網(wǎng)卡數(shù)據(jù)發(fā)送效率,直接將網(wǎng)卡的發(fā)送緩沖指向上層協(xié)議的數(shù)據(jù)緩沖,通過緩沖地址的傳遞,減少一次數(shù)據(jù)復制的過程。
數(shù)據(jù)發(fā)送過程中,驅動需保證數(shù)據(jù)操作的互斥性,在操作網(wǎng)卡發(fā)送緩沖時,需要保證當前操作是獨立的,防止數(shù)據(jù)被破壞。在驅動實現(xiàn)中一般通過加鎖的方式,提供數(shù)據(jù)操作的獨立性。獲取網(wǎng)卡的發(fā)送緩沖時,需先獲取對應的互斥鎖,才能進行后續(xù)的操作。在數(shù)據(jù)發(fā)送完成后,需要回收發(fā)送緩沖;
(3)數(shù)據(jù)處理方式。根據(jù)網(wǎng)卡處理數(shù)據(jù)觸發(fā)機制的不同,分為中斷方式和輪詢方式兩種。
中斷方式下,網(wǎng)卡數(shù)據(jù)的收發(fā)均通過中斷觸發(fā)。當發(fā)送數(shù)據(jù)時,將數(shù)據(jù)復制到網(wǎng)卡的發(fā)送緩沖中,啟動發(fā)送,數(shù)據(jù)發(fā)送完成后,產(chǎn)生發(fā)送完成中斷,更新網(wǎng)卡的設備狀態(tài),完成數(shù)據(jù)發(fā)送過程。當有數(shù)據(jù)到達時,觸發(fā)網(wǎng)卡的數(shù)據(jù)接收中斷,中斷處理服務進行數(shù)據(jù)的接收,更新網(wǎng)卡的狀態(tài);然后上傳數(shù)據(jù),完成一次數(shù)據(jù)接收中斷處理。
輪詢方式下,處理器定時去查詢網(wǎng)卡的狀態(tài)寄存器,當有數(shù)據(jù)發(fā)送時,啟動輪詢發(fā)送服務,將數(shù)據(jù)發(fā)送出去,然后更新網(wǎng)卡的狀態(tài),回收發(fā)送緩沖,完成一次發(fā)送過程。如果有數(shù)據(jù)到達,啟動輪詢方式下的數(shù)據(jù)接收,給協(xié)議上傳數(shù)據(jù),完成一次輪詢數(shù)據(jù)接收過程。
相對于輪詢方式,頻繁查詢網(wǎng)卡的狀態(tài),浪費大量的處理器時間;中斷方式網(wǎng)卡的數(shù)據(jù)處理效率較高。在實時性要求較高的環(huán)境下,通常使用中斷方式。當然,如果數(shù)據(jù)量較小,但數(shù)據(jù)達到頻率高,輪詢方式可能更合適。因此,選擇那種數(shù)據(jù)處理方式,需要根據(jù)實際使用情況進行抉擇。
2.4啟動網(wǎng)卡設備
當前述工作均已完成,此時網(wǎng)卡驅動的基本功能便已實現(xiàn),網(wǎng)卡設備也已處于就緒狀態(tài),可以啟動設備開始工作。啟動網(wǎng)卡設備,主要實現(xiàn)網(wǎng)卡狀態(tài)的設置和檢查工作,包括設備緩沖初始化完成的檢查,PHY狀態(tài)的檢查等;中斷方式下,使能網(wǎng)卡的中斷,正確連接網(wǎng)卡的中斷服務程序;然后將網(wǎng)卡置于正常工作模式。
3驗證與測試
為驗證模型的可用性和正確性,選擇了PowerPC 8640[9]單核處理器作為功能驗證的目標硬件平臺,該平臺集成了一款Motorola生產(chǎn)的10/100 M自適應以太網(wǎng)控制器;選擇某型嵌入式實時操作系統(tǒng)作為驅動功能驗證的軟件環(huán)境。實驗中實現(xiàn)了基于中斷方式的驅動操作表;通過在系統(tǒng)中分配一塊IO空間,作為網(wǎng)卡所需的緩沖空間,完成設備空間初始化以及MAC層和PHY層的初始化工作;當網(wǎng)卡初始化工作完成之后,通過設備啟動服務啟動網(wǎng)卡。將驗證平臺作為目標端,與之進行以太網(wǎng)通信測試的是一臺PC機。測試環(huán)境如圖7所示。
圖7 網(wǎng)絡測試環(huán)境
測試過程中主要進行了黑盒測試和壓力測試。黑盒測試主要驗證網(wǎng)卡根據(jù)輸入能獲得正確的輸出;壓力測試主要驗證網(wǎng)卡驅動工作的穩(wěn)定性。黑盒測試通過讀寫網(wǎng)卡相關寄存器的方式進行驗證。驗證時機包括數(shù)據(jù)幀到達,中斷發(fā)生時網(wǎng)卡寄存器狀態(tài)的變化。黑盒測試結果證明網(wǎng)卡能準確響應各種命令請求,網(wǎng)卡工作正常。壓力測試選擇基于UDP/TCP協(xié)議的以太網(wǎng)通信案例。測試過程在PC機端通過網(wǎng)絡抓包工具wireShark[10]進行數(shù)據(jù)捕獲,通過對比抓包獲取的數(shù)據(jù)與發(fā)送數(shù)據(jù)內(nèi)容,以驗證網(wǎng)卡驅動數(shù)據(jù)通信功能是否可靠?;赨DP、TCP協(xié)議的通信測試結果,如圖8和圖9所示。
圖8 基于UDP的通信測試結果
圖9 基于TCP的通信測試結果
基于UDP/TCP的通信測試,實驗結果證明網(wǎng)卡數(shù)據(jù)收發(fā)工作正確,以太網(wǎng)通信過程穩(wěn)定,網(wǎng)卡驅動數(shù)據(jù)處理功能正確可靠,網(wǎng)卡工作正常。
4結束語
本文介紹了一種嵌入式系統(tǒng)中網(wǎng)卡驅動的設計模型。該模型通過在具體的網(wǎng)卡設備驅動與上層網(wǎng)絡協(xié)議之間引入網(wǎng)卡驅動功能抽象層,通過該層能有效隔離上層的網(wǎng)絡協(xié)議與底層具體的網(wǎng)絡設備。網(wǎng)卡驅動功能抽象層作為網(wǎng)卡驅動功能集合,提供了一種上層協(xié)議與底層驅動交互的機制,使得底層設備的變化對上層協(xié)議透明,簡化了嵌入式系統(tǒng)中網(wǎng)卡驅動設計發(fā)的復雜度,為嵌入式系統(tǒng)下網(wǎng)卡驅動的開發(fā)提供了參考。同時,通過選擇實際的驗證測試平臺,驗證該模型的可用性和正確性。根據(jù)實際的驗證測試結果,證明該模型能夠正確有效的指導嵌入式系統(tǒng)下網(wǎng)卡驅動的設計與實現(xiàn)。
參考文獻
[1]Jaydip Sen.Internet of things:application and challenges in technology and standardization[J].Wireless Personal Communication,An International Joumal,2011,58(2):49-69.
[2]Pedro Castillejo.An internet of things approach for managing smart service provided by wearable device[J/OL].(2014-06-15)[2015-07-20]http://dx.doi.org/10.1155/2013/190813,2013.
[3]John Ray.TCP/IP開發(fā)使用手冊[M].北京:機械工業(yè)出版社,1999.
[4]Shahriyar R,Blackburn S M,Yang X,et al.Taking off the gloves with reference counting immix[C].Indianapolis,USA:in Proceedings of the 24th ACM SIGPLAN conference on Object Oriented Programming Systems,Languages and Applications,2013.
[5]曹桂平.VxWorks設備驅動開發(fā)詳解[M].北京:電子工業(yè)出版社,2011.
[6]IEEE-SA.IEEE Standard for ethernet,IEEE 802.3[S].USA:IEEE,2012.
[7]IEEE-SA.Local and metropolitan area network standards,IEEE 802.2[S].USA:IEEE,1998.
[8]樊東東,莫瀾.Linux內(nèi)核源碼剖析—TCP/IP實現(xiàn):上冊[M].北京:機械工業(yè)出版社,2011.
[9]Freescale Inc.MPC8640D microprocessor family user’s manual[M].USA:Freescale Inc,2010.
[10]Free Software Foundation,Inc.Wireshark user’s guide[M].USA:Free Software Foundation,Inc 2004.
Design and Realization of Network Driver Model in Embedded System
MEI Tao,HUANG Baolei,XU Xiaoguang
(Software Research Room,Aeronautical Computing Technique Research Institute,Xi’an 710068,China)
AbstractA model of network driver in embedded system is proposed with emphasis on its function.There is an abstract mid-layer between the network protocols and network drivers,which separates the upper layer network protocols from network drivers effectively,thus making concrete network drivers detail transparent to network protocols.The mid-layer is an abstract layer of network driver,which supports driver function abstraction while supporting command exchange between the network protocols upper layer and drivers.The cost of network driver designing is decreased because of the mid-layer.The validation and testing experiments are carried out.The results show that of network drivers in embedded system designed based on this model work correctly and reliably with normal network communication.
Keywordsembedded system;model of network driver;design and realization
中圖分類號TP316.2
文獻標識碼A
文章編號1007-7820(2016)04-111-05
doi:10.16180/j.cnki.issn1007-7820.2016.04.029
作者簡介:梅濤(1984—),男,碩士,工程師。研究方向:嵌入式實時操作系統(tǒng)和網(wǎng)絡。
基金項目:工信部民用飛機專項科研基金資助項目(MJ-S-2012-05)
收稿日期:2015- 08- 19