專利名稱:虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置及數(shù)據(jù)傳送方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳送技術(shù),更具體的說,本發(fā)明涉及一種虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置及數(shù)據(jù)傳送方法。
背景技術(shù):
以太網(wǎng)技術(shù)起源于局域網(wǎng)組網(wǎng)協(xié)議和技術(shù),發(fā)展到今天,97%以上的終端用戶通過以太網(wǎng)接口進(jìn)行數(shù)據(jù)流量的發(fā)送和接收,實(shí)現(xiàn)各種形式的聯(lián)網(wǎng)。由于以太網(wǎng)技術(shù)配置簡單、組網(wǎng)靈活、價格低廉,而且技術(shù)本身已經(jīng)被大多數(shù)人所熟悉和接受,因此以太網(wǎng)組網(wǎng)技術(shù)得到很大發(fā)展,特別是手機(jī)開發(fā)商在手機(jī)研發(fā)時必不可少的需要以太網(wǎng)接口,用其傳送數(shù)據(jù)和調(diào)試手機(jī)功能。但是當(dāng)前大多數(shù)手機(jī)開發(fā)平臺單板都不會集成以太網(wǎng)接口,而是采用通用串行總線(USB,Universal Serial Bus)接口,如何在沒有以太網(wǎng)接口的設(shè)備(例如手機(jī)開發(fā)平臺單板)上實(shí)現(xiàn)虛擬以太網(wǎng)設(shè)備進(jìn)行數(shù)據(jù)傳送是業(yè)界面臨的一個問題。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問題是提供一種虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置及數(shù)據(jù)傳送方法,以實(shí)現(xiàn)虛擬通用串行總線接口為以太網(wǎng)接口進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳送。
為解決上述問題,本發(fā)明的虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置,包括通用串行總線物理接口,用于收發(fā)數(shù)據(jù);
通用串行總線驅(qū)動程序單元,用于控制通用串行總線物理接口按照通用串行總線協(xié)議收發(fā)數(shù)據(jù);虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元,在操作系統(tǒng)虛擬注冊為以太網(wǎng)設(shè)備,傳送數(shù)據(jù)時,調(diào)用所述通用串行總線驅(qū)動程序單元,虛擬通用串行總線物理接口為以太網(wǎng)接口收發(fā)數(shù)據(jù)。
其中,所述虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元包括發(fā)送單元,接收網(wǎng)絡(luò)層傳來的數(shù)據(jù),將該網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元,以將數(shù)據(jù)通過通用串行總線物理接口發(fā)送出去;接收單元,接收通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù),將該通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層;注冊單元,向操作系統(tǒng)虛擬注冊所述發(fā)送單元和所述接收單元為以太網(wǎng)設(shè)備發(fā)送單元和以太網(wǎng)設(shè)備接收單元。
其中,所述發(fā)送單元包括第一接收數(shù)據(jù)單元,接收網(wǎng)絡(luò)層傳來的數(shù)據(jù);第一轉(zhuǎn)發(fā)數(shù)據(jù)單元,調(diào)用通用串行總線驅(qū)動程序單元的發(fā)送接口,將所述第一接收數(shù)據(jù)單元接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元。
其中,所述第一轉(zhuǎn)發(fā)數(shù)據(jù)單元包括第一通用串行總線請求包創(chuàng)建單元,用于創(chuàng)建通用串行總線請求包;第一封裝單元,用于將接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)封裝到所述通用串行總線請求包;通用串行總線請求包發(fā)送單元,用于將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動程序單元;發(fā)送完成確認(rèn)單元,在接收到通用串行總線驅(qū)動程序單元發(fā)送完成通知后釋放網(wǎng)絡(luò)資源。
其中,所述接收單元包括第二接收數(shù)據(jù)單元,接收通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù);第二轉(zhuǎn)發(fā)數(shù)據(jù)單元,將接收的通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
其中,所述第二接收數(shù)據(jù)單元包括第二通用串行總線請求包創(chuàng)建單元,用于創(chuàng)建通用串行總線請求包;通用串行總線請求包發(fā)送單元,用于將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動總線單元;通用串行總線請求包接收單元,用于接收通用串行總線驅(qū)動程序單元發(fā)送來的攜帶數(shù)據(jù)的通用串行總線請求包;接收完成確認(rèn)單元,獲取所述通用串行總線請求包中的數(shù)據(jù),然后將所述數(shù)據(jù)發(fā)送給第二轉(zhuǎn)發(fā)數(shù)據(jù)單元,指示第二通用串行總線請求包創(chuàng)建單元創(chuàng)建下一通用串行總線請求包。
相應(yīng)地,本發(fā)明的一種虛擬以太網(wǎng)設(shè)備發(fā)送數(shù)據(jù)的方法,主要包括a1、接收網(wǎng)絡(luò)層傳來的數(shù)據(jù);a2、調(diào)用通用串行總線驅(qū)動程序單元的發(fā)送接口,將所述接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元發(fā)送。
其中,步驟a2具體包括創(chuàng)建通用串行總線請求包;將接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)封裝到所述通用串行總線請求包;將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動程序單元。
另外,還包括步驟a3在接收到通用串行總線驅(qū)動程序單元發(fā)送數(shù)據(jù)完成通知后釋放網(wǎng)絡(luò)資源。
相應(yīng)地,本發(fā)明的一種虛擬以太網(wǎng)設(shè)備接收數(shù)據(jù)的方法,該方法主要包括b1、接收通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù);b2、將所述通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
其中,步驟b1具體包括b11、創(chuàng)建通用串行總線請求包;b12、將所述通用串行總線請求包轉(zhuǎn)發(fā)給通用串行總線驅(qū)動總線單元;b13、接收通用串行總線驅(qū)動程序單元發(fā)送來的攜帶數(shù)據(jù)的通用串行總線請求包;b14、獲取所述通用串行總線請求包中的數(shù)據(jù),執(zhí)行步驟b2。
相應(yīng)的,本發(fā)明的一種虛擬以太網(wǎng)設(shè)備間數(shù)據(jù)傳送的方法,包括s1、發(fā)送端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元接收網(wǎng)絡(luò)層傳來的數(shù)據(jù);s2、發(fā)送端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元調(diào)用該發(fā)送端的通用串行總線驅(qū)動程序單元的發(fā)送接口,將所述接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元發(fā)送出去;s3、接收端通用串行總線驅(qū)動程序單元接收發(fā)送端傳來的數(shù)據(jù);s4、接收端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元獲取通用串行總線驅(qū)動程序單元接收的數(shù)據(jù);s5、接收端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元將所述通用串行總線驅(qū)動程序單元接收的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
其中,步驟s2虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元發(fā)送數(shù)據(jù)具體包括創(chuàng)建通用串行總線請求包;將接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)封裝到所述通用串行總線請求包;
將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動程序單元。
可選地,步驟s2之后還包括在接收到通用串行總線驅(qū)動程序單元發(fā)送數(shù)據(jù)完成通知后釋放網(wǎng)絡(luò)資源。
其中,步驟s4接收端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元獲取通用串行總線驅(qū)動程序單元接收的數(shù)據(jù)具體包括創(chuàng)建通用串行總線請求包;將所述通用串行總線請求包轉(zhuǎn)發(fā)給通用串行總線驅(qū)動總線單元;接收通用串行總線驅(qū)動程序單元發(fā)送來的攜帶數(shù)據(jù)的通用串行總線請求包;獲取所述通用串行總線請求包中的數(shù)據(jù)。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果本發(fā)明通過虛擬以太網(wǎng)驅(qū)動程序單元在操作系統(tǒng)中注冊一個以太網(wǎng)設(shè)備,用來接收和發(fā)送網(wǎng)絡(luò)層的數(shù)據(jù)包,同時所述虛擬以太網(wǎng)驅(qū)動程序單元還可以調(diào)用通用串行總線驅(qū)動程序單元,以通過通用串行總線接口收發(fā)數(shù)據(jù),實(shí)現(xiàn)了用通用串行總線接口虛擬以太網(wǎng)接口,即以通用串行總線接口取代以太網(wǎng)接口實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)傳送,對上層應(yīng)用來說是透明的,可重用性很高。
圖1是本發(fā)明實(shí)現(xiàn)數(shù)據(jù)傳送的架構(gòu)示意圖;圖2是本發(fā)明虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置的組成示意圖;圖3是本發(fā)明虛擬以太網(wǎng)設(shè)備間數(shù)據(jù)傳送的方法的流程圖;圖4是圖2中所示發(fā)送單元的一種具體實(shí)施例組成框圖;圖5是所述發(fā)送單元發(fā)送數(shù)據(jù)的方法主要實(shí)現(xiàn)流程圖;
圖6是圖2中所示接收單元的一種具體實(shí)施例組成框圖;圖7是所述發(fā)送單元發(fā)送數(shù)據(jù)的方法主要實(shí)現(xiàn)流程圖;圖8是本發(fā)明具體應(yīng)用的手機(jī)開發(fā)平臺單板側(cè)與主機(jī)側(cè)通信的驅(qū)動架構(gòu)示意圖。
具體實(shí)施例方式
通常一些單板由于體積比較小等原因并沒有集成以太網(wǎng)接口,例如手機(jī)開發(fā)平臺單板等等,取而代之的是采用USB接口傳送數(shù)據(jù),本發(fā)明的核心即在于用USB接口虛擬以太網(wǎng)接口,通過USB接口收發(fā)數(shù)據(jù),從而實(shí)現(xiàn)以USB接口取代以太網(wǎng)接口實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)傳送,下面詳細(xì)說明。
參考圖1,該圖是本發(fā)明實(shí)現(xiàn)數(shù)據(jù)傳送的架構(gòu)示意圖,本發(fā)明中虛擬以太網(wǎng)驅(qū)動程序單元位于網(wǎng)絡(luò)層和USB設(shè)備之間,下行(即網(wǎng)絡(luò)層到USB設(shè)備)發(fā)送數(shù)據(jù)時所述虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元接收到網(wǎng)絡(luò)層來的數(shù)據(jù)包,拷貝網(wǎng)絡(luò)數(shù)據(jù)包到自己內(nèi)部的數(shù)據(jù)存儲空間,調(diào)用USB驅(qū)動開放出來的發(fā)送函數(shù)接口,轉(zhuǎn)發(fā)數(shù)據(jù)包給USB設(shè)備。
上行接收數(shù)據(jù)時,USB設(shè)備接收到數(shù)據(jù)包,把數(shù)據(jù)包上傳給虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元,所述虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元再把這個數(shù)據(jù)包交給網(wǎng)絡(luò)層。
參考圖2,該圖是本發(fā)明虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置的組成示意圖,其主要包括通用串行總線驅(qū)動程序單元11,主要用于支持操作系統(tǒng)控制通用串行總線物理接口按照通用串行總線協(xié)議收發(fā)數(shù)據(jù),具體實(shí)現(xiàn)時,所述通用串行總線驅(qū)動程序單元11可按照標(biāo)準(zhǔn)定義的通用串行總線協(xié)議控制從通用串行接口收發(fā)數(shù)據(jù),由于是現(xiàn)有技術(shù),這里不再贅述;
虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元12,主要用于在操作系統(tǒng)虛擬注冊為以太網(wǎng)設(shè)備,傳送數(shù)據(jù)時,調(diào)用所述通用串行總線驅(qū)動程序單元,虛擬通用串行總線物理接口為以太網(wǎng)接口收發(fā)數(shù)據(jù),具體實(shí)現(xiàn)時,本發(fā)明中所述虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元12分別與網(wǎng)絡(luò)層以及通用串行總線驅(qū)動程序單元11交互數(shù)據(jù),將網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元11,或者將通用串行總線驅(qū)動程序單元11傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
參考圖3,該圖是本發(fā)明虛擬以太網(wǎng)設(shè)備間數(shù)據(jù)傳送的方法的流程圖,具體主要包括以下步驟s1、發(fā)送端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元接收網(wǎng)絡(luò)層傳來的數(shù)據(jù);s2、發(fā)送端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元調(diào)用該發(fā)送端的通用串行總線驅(qū)動程序單元的發(fā)送接口,將所述接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元發(fā)送出去;s3、接收端通用串行總線驅(qū)動程序單元接收發(fā)送端傳來的數(shù)據(jù);s4、接收端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元獲取通用串行總線驅(qū)動程序單元接收的數(shù)據(jù);s5、接收端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元將所述通用串行總線驅(qū)動程序單元接收的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
下面詳細(xì)說明虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元,參考圖2,一種所述虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元12的具體實(shí)現(xiàn)主要包括發(fā)送單元121,所述發(fā)送單元121主要用于與網(wǎng)絡(luò)層交互,接收網(wǎng)絡(luò)層傳來的數(shù)據(jù),將該網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元,以將數(shù)據(jù)通過通用串行總線物理接口發(fā)送出去;接收單元122,所述接收單元122主要用于與通用串行總線驅(qū)動程序單元交互,接收通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù),然后將該通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層;注冊單元123,所述注冊單元主要用于向操作系統(tǒng)虛擬注冊所述發(fā)送單元121和所述接收單元122為以太網(wǎng)設(shè)備發(fā)送單元和以太網(wǎng)設(shè)備接收單元。
下面重點(diǎn)說明發(fā)送單元121和接收單元122。
參考圖4,該圖是本發(fā)明中發(fā)送單元121的一種具體實(shí)施例組成框圖,具體的,本實(shí)施例中所述發(fā)送單元121主要包括第一接收數(shù)據(jù)單元1211,主要用于接收網(wǎng)絡(luò)層傳來的數(shù)據(jù);第一轉(zhuǎn)發(fā)數(shù)據(jù)單元1212,主要用于調(diào)用通用串行總線驅(qū)動程序單元的發(fā)送接口,將所述第一接收數(shù)據(jù)單元接收的網(wǎng)絡(luò)層數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元,具體實(shí)現(xiàn)時,所述第一轉(zhuǎn)發(fā)數(shù)據(jù)單元1212主要包括第一通用串行總線請求包創(chuàng)建單元,用于創(chuàng)建通用串行總線請求包;第一封裝單元,用于將接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)封裝到所述通用串行總線請求包;通用串行總線請求包發(fā)送單元,用于將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動程序單元;發(fā)送完成確認(rèn)單元,在接收到通用串行總線驅(qū)動程序單元發(fā)送完成通知后釋放網(wǎng)絡(luò)資源。
參考圖5,該圖是本發(fā)明中作為發(fā)送端的虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元的發(fā)送單元發(fā)送數(shù)據(jù)的方法的主要流程圖,具體主要包括以下步驟步驟s11,接收網(wǎng)絡(luò)層傳來的數(shù)據(jù);步驟s12,調(diào)用通用串行總線驅(qū)動程序單元的發(fā)送接口,將所述接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元發(fā)送,具體實(shí)現(xiàn)時,所述步驟s12主要包括以下子步驟步驟s121,創(chuàng)建通用串行總線請求包;
步驟s122,將接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)封裝到所述通用串行總線請求包;步驟s123,將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動程序單元;步驟s124在接收到通用串行總線驅(qū)動程序單元發(fā)送數(shù)據(jù)完成通知后釋放網(wǎng)絡(luò)資源。
參考圖6,該圖是本發(fā)明中接收單元122的一種具體實(shí)施例組成框圖,具體的,本發(fā)明中所述接收單元122主要包括第二接收數(shù)據(jù)單元1221,主要用于接收通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù),具體實(shí)現(xiàn)時,所述第二接收數(shù)據(jù)單元1221主要包括所述第二接收數(shù)據(jù)單元包括第二通用串行總線請求包創(chuàng)建單元,用于創(chuàng)建通用串行總線請求包;通用串行總線請求包發(fā)送單元,用于將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動總線單元;通用串行總線請求包接收單元,用于接收通用串行總線驅(qū)動程序單元發(fā)送來的攜帶數(shù)據(jù)的通用串行總線請求包;接收完成確認(rèn)單元,獲取所述通用串行總線請求包中的數(shù)據(jù),然后將所述數(shù)據(jù)發(fā)送給第二轉(zhuǎn)發(fā)數(shù)據(jù)單元,指示第二通用串行總線請求包創(chuàng)建單元創(chuàng)建下一通用串行總線請求包,繼續(xù)接收數(shù)據(jù);第二轉(zhuǎn)發(fā)數(shù)據(jù)單元1222,將接收的通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
參考圖7,該圖是本發(fā)明作為接收端的虛擬以太網(wǎng)設(shè)備中接收單元接收數(shù)據(jù)的方法主要流程圖,具體主要包括以下步驟步驟s21,接收通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù),具體實(shí)現(xiàn)時,所述步驟s21主要包括以下子步驟
步驟s211,創(chuàng)建通用串行總線請求包;步驟s212,將所述通用串行總線請求包轉(zhuǎn)發(fā)給通用串行總線驅(qū)動總線單元;步驟s213,接收通用串行總線驅(qū)動程序單元發(fā)送來的攜帶數(shù)據(jù)的通用串行總線請求包;步驟s214,獲取所述通用串行總線請求包中的數(shù)據(jù),將所述數(shù)據(jù)發(fā)送給網(wǎng)絡(luò)層,返回步驟s211;步驟s22,將所述通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
本發(fā)明可以應(yīng)用在各種USB虛擬以太網(wǎng)設(shè)備傳送數(shù)據(jù)的場合,例如手機(jī)開發(fā)平臺單板沒有以太網(wǎng)接口。但是手機(jī)開發(fā)單板中的許多調(diào)試工具(例如VxWorks調(diào)試工具Tornado)需要用以太網(wǎng)接口與手機(jī)開發(fā)平臺單板接通,進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳送。采用本發(fā)明的方法利用手機(jī)開發(fā)平臺單板的USB口替代以太網(wǎng)接口,實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議,使Tornado可以通過USB模擬以太網(wǎng)接口來調(diào)試和下載模塊到手機(jī)開發(fā)平臺單板,實(shí)現(xiàn)網(wǎng)絡(luò)的通訊功能。
參考圖8,該圖是本發(fā)明應(yīng)用的手機(jī)開發(fā)平臺單板側(cè)與主機(jī)側(cè)通信的驅(qū)動架構(gòu)示意圖。
本發(fā)明中主機(jī)側(cè)與手機(jī)開發(fā)平臺單板實(shí)現(xiàn)數(shù)據(jù)傳送在主機(jī)側(cè)和手機(jī)開發(fā)平臺單板側(cè)均包括有虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元以及USB設(shè)備驅(qū)動程序單元,在物理層兩側(cè)的USB接口通過USB電纜連接,按照USB協(xié)議進(jìn)行通信,下面分別進(jìn)行說明。
對于上述采用VxWorks操作系統(tǒng)的手機(jī)開發(fā)平臺單板應(yīng)用中虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元12的注冊單元123具體可采用一個注冊函數(shù),預(yù)先在vxWorks操作系統(tǒng)中板級開發(fā)包的confignet.h中添加一個以太網(wǎng)設(shè)備驅(qū)動程序的入口函數(shù),在所述的入口函數(shù)中調(diào)用注冊函數(shù),這樣系統(tǒng)會在初始化以太網(wǎng)設(shè)備的時候,調(diào)用所述的注冊函數(shù)在系統(tǒng)中注冊一個以太網(wǎng)設(shè)備,用來接收和發(fā)送數(shù)據(jù)包。具體實(shí)現(xiàn)時所述注冊函數(shù)會分配以太網(wǎng)設(shè)備結(jié)構(gòu)用來保存相關(guān)以太網(wǎng)設(shè)備信息,向操作系統(tǒng)注冊以太網(wǎng)設(shè)備,提供當(dāng)前以太網(wǎng)設(shè)備的一系列回調(diào)函數(shù)(主要是具體執(zhí)行發(fā)送單元和接收單元功能的函數(shù),本應(yīng)用中主要包括一個監(jiān)聽輸入函數(shù)和發(fā)送函數(shù))給操作系統(tǒng)調(diào)用。
操作系統(tǒng)初始化以太網(wǎng)設(shè)備完成后,可以啟動以太網(wǎng)設(shè)備。由于所述以太網(wǎng)設(shè)備是虛擬的,沒有實(shí)際的硬件寄存器和中斷,所以不存在“啟動”這個動作。但是沒有中斷就不知道何時可以接收對端以太網(wǎng)設(shè)備發(fā)來的數(shù)據(jù)包,本發(fā)明中通過輪詢函數(shù)來查詢USB驅(qū)動程序單元是否接收到數(shù)據(jù)包。具體實(shí)現(xiàn)方案是可以發(fā)送一個USB請求包給USB驅(qū)動程序單元,USB驅(qū)動程序單元將這個請求包放到USB驅(qū)動維護(hù)的隊(duì)列中,用URB的數(shù)據(jù)空間接收數(shù)據(jù);當(dāng)USB設(shè)備收到數(shù)據(jù)包后,調(diào)用請求包對應(yīng)的完成函數(shù),表示USB驅(qū)動處理完了當(dāng)前的請求包(接收好了一個數(shù)據(jù)包),虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元處理這個收數(shù)據(jù)的請求包,拷貝相關(guān)數(shù)據(jù)到系統(tǒng)提供的網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)存區(qū)域,最后把這個數(shù)據(jù)包上報給操作系統(tǒng)的網(wǎng)絡(luò)層,完成收包流程,同時再發(fā)起下一次查詢操作。
具體實(shí)現(xiàn)接收單元本實(shí)施例可采用一個監(jiān)聽輸入函數(shù)ListenForInput()用來輪詢USB設(shè)備狀態(tài),處理接收到的數(shù)據(jù)包,所述監(jiān)聽輸入函數(shù)主要實(shí)現(xiàn)如下功能第二通用串行總線請求包創(chuàng)建單元功能,即創(chuàng)建USB Request Block(URB);通用串行總線請求包發(fā)送單元功能,即發(fā)送URB包給USB驅(qū)動程序單元;通用串行總線請求包接收單元功能,即接收USB驅(qū)動程序單元傳來的攜帶數(shù)據(jù)的URB包;以及接收完成確認(rèn)單元功能,即在創(chuàng)建URB包時注冊接收完成函數(shù)(ReceiveCompleteFunction)完成接收完成確認(rèn)功能,當(dāng)USB驅(qū)動程序單元收到數(shù)據(jù)后,就會調(diào)用所述的接收完成函數(shù),通過所述接收完成函數(shù)獲取所述通用串行總線請求包中的數(shù)據(jù),轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層,指示創(chuàng)建下一URB包繼續(xù)接收數(shù)據(jù)。
另外,具體實(shí)現(xiàn)發(fā)送單元,本實(shí)施例中可采用一個發(fā)送函數(shù)實(shí)現(xiàn),操作系統(tǒng)會調(diào)用注冊的回調(diào)函數(shù)(即發(fā)送函數(shù))來發(fā)送數(shù)據(jù)給以太網(wǎng)設(shè)備驅(qū)動程序單元,具體實(shí)現(xiàn)時,所述發(fā)送函數(shù)主要實(shí)現(xiàn)如下功能第一通用串行總線請求包創(chuàng)建單元功能,即創(chuàng)建通用串行總線請求包;第一封裝單元功能,即將接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)封裝到所述通用串行總線請求包;通用串行總線請求包發(fā)送單元功能,即將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動程序單元;以及發(fā)送完成確認(rèn)單元功能,即在接收到通用串行總線驅(qū)動程序單元發(fā)送完成通知后釋放網(wǎng)絡(luò)資源,比如釋放網(wǎng)絡(luò)數(shù)據(jù)包占有的空間等。
下面以與所述手機(jī)開發(fā)平臺單板通信的主機(jī)側(cè)擴(kuò)展USB接口為以太網(wǎng)接口的具體應(yīng)用進(jìn)行說明。
主機(jī)側(cè)的操作系統(tǒng)為Windows操作系統(tǒng),在所述Windows操作系統(tǒng)下本發(fā)明虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元12的注冊單元123同樣可采用一個注冊函數(shù),本實(shí)施例中可在Windows操作系統(tǒng)下編寫網(wǎng)卡驅(qū)動程序,具體需要用到網(wǎng)絡(luò)驅(qū)動接口規(guī)范(Network Driver Interface Specification,NDIS)庫的API函數(shù),本發(fā)明在主機(jī)側(cè)Windows操作系統(tǒng)中安裝一個以太網(wǎng)設(shè)備驅(qū)動程序,在驅(qū)動程序的入口函數(shù)中調(diào)用注冊函數(shù),這樣系統(tǒng)會在初始化以太網(wǎng)設(shè)備的時候,調(diào)用所述的注冊函數(shù)在系統(tǒng)中注冊一個以太網(wǎng)設(shè)備,用來接收和發(fā)送數(shù)據(jù)包。同樣的,具體實(shí)現(xiàn)時所述注冊函數(shù)會分配以太網(wǎng)設(shè)備結(jié)構(gòu)用來保存相關(guān)以太網(wǎng)設(shè)備信息,向操作系統(tǒng)注冊以太網(wǎng)設(shè)備,提供當(dāng)前以太網(wǎng)設(shè)備的一系列回調(diào)函數(shù)(主要是具體執(zhí)行發(fā)送單元和接收單元功能的函數(shù),本應(yīng)用中同樣主要包括一個監(jiān)聽輸入函數(shù)和發(fā)送函數(shù),具體可參考前述相關(guān)說明)給操作系統(tǒng)調(diào)用。
操作系統(tǒng)初始化以太網(wǎng)設(shè)備完成后,可以啟動以太網(wǎng)設(shè)備,由于所述以太網(wǎng)設(shè)備是虛擬的,沒有實(shí)際的硬件寄存器和中斷,所以不存在“啟動”這個動作。但是沒有中斷就不知道何時可以接收對端以太網(wǎng)設(shè)備發(fā)來的數(shù)據(jù)包,與手機(jī)開發(fā)平臺單板側(cè)類似,本發(fā)明主機(jī)側(cè)的應(yīng)用中由于沒有硬件中斷和硬件寄存器,實(shí)際的數(shù)據(jù)傳輸是通過USB,所以不需要注冊中斷處理函數(shù);但是要查詢USB設(shè)備對象并且要得到該USB設(shè)備對象的指針(Handle),后續(xù)的收發(fā)數(shù)據(jù)交給USB設(shè)備對象來處理,具體數(shù)據(jù)收發(fā)過程如下發(fā)送數(shù)據(jù)與手機(jī)開發(fā)平臺單板側(cè)vxWorks操作系統(tǒng)下實(shí)現(xiàn)的以太網(wǎng)設(shè)備驅(qū)動程序單元的發(fā)送數(shù)據(jù)類似,本應(yīng)用中實(shí)現(xiàn)的虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元收到網(wǎng)絡(luò)層的數(shù)據(jù)包后,創(chuàng)建一個URB請求包,將所述接收到的網(wǎng)絡(luò)層傳來的數(shù)據(jù)封裝到所述通用串行總線請求包,然后把所述URB請求包發(fā)送給USB驅(qū)動程序單元,完成數(shù)據(jù)包的發(fā)送。
接收數(shù)據(jù)與手機(jī)開發(fā)平臺單板側(cè)vxWorks操作系統(tǒng)下實(shí)現(xiàn)的以太網(wǎng)設(shè)備驅(qū)動程序單元的發(fā)送數(shù)據(jù)類似,本應(yīng)用中實(shí)現(xiàn)的虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元創(chuàng)建URB請求包,輪詢USB設(shè)備是否收到數(shù)據(jù),若收到,則USB設(shè)備把數(shù)據(jù)包拷貝到URB的請求包中,調(diào)用以虛擬太網(wǎng)設(shè)備驅(qū)動程序單元的接收完成函數(shù),通知虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元對收到的數(shù)據(jù)包進(jìn)行處理。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置,其特征在于,包括通用串行總線物理接口,用于收發(fā)數(shù)據(jù);通用串行總線驅(qū)動程序單元,用于控制通用串行總線物理接口按照通用串行總線協(xié)議收發(fā)數(shù)據(jù);虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元,在操作系統(tǒng)虛擬注冊為以太網(wǎng)設(shè)備,用于調(diào)用所述通用串行總線驅(qū)動程序單元,虛擬通用串行總線物理接口為以太網(wǎng)接口收發(fā)數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置,其特征在于,所述虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元包括發(fā)送單元,接收網(wǎng)絡(luò)層傳來的數(shù)據(jù),將該網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元,以將數(shù)據(jù)通過通用串行總線物理接口發(fā)送出去;接收單元,接收通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù),將該通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層;注冊單元,向操作系統(tǒng)虛擬注冊所述發(fā)送單元和所述接收單元為以太網(wǎng)設(shè)備發(fā)送單元和以太網(wǎng)設(shè)備接收單元。
3.根據(jù)權(quán)利要求2所述的虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置,其特征在于,所述發(fā)送單元包括第一接收數(shù)據(jù)單元,接收網(wǎng)絡(luò)層傳來的數(shù)據(jù);第一轉(zhuǎn)發(fā)數(shù)據(jù)單元,調(diào)用通用串行總線驅(qū)動程序單元的發(fā)送接口,將所述第一接收數(shù)據(jù)單元接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元。
4.根據(jù)權(quán)利要求3所述的虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置,其特征在于,所述第一轉(zhuǎn)發(fā)數(shù)據(jù)單元包括第一通用串行總線請求包創(chuàng)建單元,用于創(chuàng)建通用串行總線請求包;第一封裝單元,用于將接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)封裝到所述通用串行總線請求包;通用串行總線請求包發(fā)送單元,用于將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動程序單元;發(fā)送完成確認(rèn)單元,在接收到通用串行總線驅(qū)動程序單元發(fā)送完成通知后釋放網(wǎng)絡(luò)資源。
5.根據(jù)權(quán)利要求2-4任一項(xiàng)所述的虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置,其特征在于,所述接收單元包括第二接收數(shù)據(jù)單元,接收通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù);第二轉(zhuǎn)發(fā)數(shù)據(jù)單元,將接收的通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
6.根據(jù)權(quán)利要求5所述的虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置,其特征在于,所述第二接收數(shù)據(jù)單元包括第二通用串行總線請求包創(chuàng)建單元,用于創(chuàng)建通用串行總線請求包;通用串行總線請求包發(fā)送單元,用于將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動總線單元;通用串行總線請求包接收單元,用于接收通用串行總線驅(qū)動程序單元發(fā)送來的攜帶數(shù)據(jù)的通用串行總線請求包;接收完成確認(rèn)單元,獲取所述通用串行總線請求包中的數(shù)據(jù),然后將所述數(shù)據(jù)發(fā)送給第二轉(zhuǎn)發(fā)數(shù)據(jù)單元,指示第二通用串行總線請求包創(chuàng)建單元創(chuàng)建下一通用串行總線請求包。
7.根據(jù)權(quán)利要求1所述的一種虛擬以太網(wǎng)設(shè)備發(fā)送數(shù)據(jù)的方法,其特征在于,包括a1、接收網(wǎng)絡(luò)層傳來的數(shù)據(jù);a2、調(diào)用通用串行總線驅(qū)動程序單元的發(fā)送接口,將所述接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元發(fā)送。
8.根據(jù)權(quán)利要求7所述的虛擬以太網(wǎng)設(shè)備發(fā)送數(shù)據(jù)的方法,其特征在于,步驟a2具體包括創(chuàng)建通用串行總線請求包;將接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)封裝到所述通用串行總線請求包;將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動程序單元。
9.根據(jù)權(quán)利要求7或8所述的虛擬以太網(wǎng)設(shè)備發(fā)送數(shù)據(jù)的方法,其特征在于,還包括步驟a3在接收到通用串行總線驅(qū)動程序單元發(fā)送數(shù)據(jù)完成通知后釋放網(wǎng)絡(luò)資源。
10.根據(jù)權(quán)利要求1所述的一種虛擬以太網(wǎng)設(shè)備接收數(shù)據(jù)的方法,其特征在于,包括b1、接收通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù);b2、將所述通用串行總線驅(qū)動程序單元傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
11.根據(jù)權(quán)利要求10所述的虛擬以太網(wǎng)設(shè)備接收數(shù)據(jù)的方法,其特征在于,步驟b1具體包括b11、創(chuàng)建通用串行總線請求包;b12、將所述通用串行總線請求包轉(zhuǎn)發(fā)給通用串行總線驅(qū)動總線單元;b13、接收通用串行總線驅(qū)動程序單元發(fā)送來的攜帶數(shù)據(jù)的通用串行總線請求包;b14、獲取所述通用串行總線請求包中的數(shù)據(jù),執(zhí)行步驟b2。
12.根據(jù)權(quán)利要求1所述的一種虛擬以太網(wǎng)設(shè)備間數(shù)據(jù)傳送的方法,其特征在于,包括s1、發(fā)送端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元接收網(wǎng)絡(luò)層傳來的數(shù)據(jù);s2、發(fā)送端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元調(diào)用該發(fā)送端的通用串行總線驅(qū)動程序單元的發(fā)送接口,將所述接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給通用串行總線驅(qū)動程序單元發(fā)送出去;s3、接收端通用串行總線驅(qū)動程序單元接收發(fā)送端傳來的數(shù)據(jù);s4、接收端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元獲取通用串行總線驅(qū)動程序單元接收的數(shù)據(jù);s5、接收端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元將所述通用串行總線驅(qū)動程序單元接收的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
13.根據(jù)權(quán)利要求12所述的虛擬以太網(wǎng)設(shè)備間數(shù)據(jù)傳送的方法,其特征在于,步驟s2虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元發(fā)送數(shù)據(jù)具體包括創(chuàng)建通用串行總線請求包;將接收的網(wǎng)絡(luò)層傳來的數(shù)據(jù)封裝到所述通用串行總線請求包;將所述通用串行總線請求包發(fā)送給通用串行總線驅(qū)動程序單元。
14.根據(jù)權(quán)利要求12所述的虛擬以太網(wǎng)設(shè)備間數(shù)據(jù)傳送的方法,其特征在于,步驟s2之后還包括在接收到通用串行總線驅(qū)動程序單元發(fā)送數(shù)據(jù)完成通知后釋放網(wǎng)絡(luò)資源。
15.根據(jù)權(quán)利要求12、13或14任一項(xiàng)所述的虛擬以太網(wǎng)設(shè)備間數(shù)據(jù)傳送的方法,其特征在于,步驟s4接收端虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元獲取通用串行總線驅(qū)動程序單元接收的數(shù)據(jù)具體包括創(chuàng)建通用串行總線請求包;將所述通用串行總線請求包轉(zhuǎn)發(fā)給通用串行總線驅(qū)動總線單元;接收通用串行總線驅(qū)動程序單元發(fā)送來的攜帶數(shù)據(jù)的通用串行總線請求包;獲取所述通用串行總線請求包中的數(shù)據(jù)。
全文摘要
本發(fā)明公開一種虛擬以太網(wǎng)設(shè)備數(shù)據(jù)傳送裝置,包括通用串行總線驅(qū)動程序單元,用于支持操作系統(tǒng)控制通用串行總線物理接口按照通用串行總線協(xié)議收發(fā)數(shù)據(jù);虛擬以太網(wǎng)設(shè)備驅(qū)動程序單元,向操作系統(tǒng)虛擬注冊為以太網(wǎng)設(shè)備,傳送數(shù)據(jù)時,調(diào)用所述通用串行總線驅(qū)動程序單元,虛擬通用串行總線物理接口為以太網(wǎng)接口收發(fā)數(shù)據(jù)。另外,本發(fā)明還公開一種相應(yīng)的數(shù)據(jù)發(fā)送及接收方法。本發(fā)明可實(shí)現(xiàn)在沒有以太網(wǎng)接口的設(shè)備上,虛擬通用串行總線接口為以太網(wǎng)接口進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳送。
文檔編號H04L12/00GK1859112SQ200610033068
公開日2006年11月8日 申請日期2006年1月19日 優(yōu)先權(quán)日2006年1月19日
發(fā)明者王驍俊 申請人:華為技術(shù)有限公司