專利名稱:Linux主從設(shè)備通過以太網(wǎng)接口進(jìn)行通信的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及LINUX平臺(tái)下主從設(shè)備之間通過以太網(wǎng)接口進(jìn)行通信的 實(shí)現(xiàn)方法,屬于通信技術(shù)領(lǐng)域。
背景技術(shù):
現(xiàn)有的嵌入式系統(tǒng)一般都由一個(gè)主CPU和許多的外圍器件組成一個(gè) 系統(tǒng),特別是在多媒體系統(tǒng)應(yīng)用領(lǐng)域中,主機(jī)CPU負(fù)責(zé)與媒體相關(guān)的協(xié)議、 人機(jī)交互和設(shè)備控制的處理,外設(shè)(將CPU簡(jiǎn)稱為外設(shè))用來完成音頻、 視頻的壓縮、解壓處理。這就涉及到主從CPU之間的通信,現(xiàn)有的主從 設(shè)備之間進(jìn)行通信一般都通過各種硬件總線(如UART、 12C、 HPI、 SPI 等)進(jìn)行連接。要求主從設(shè)備必須具有相應(yīng)的硬件接口電路,這將會(huì)對(duì)主 從設(shè)備的芯片選型造成一定的限制。由于都屬于低速總線接口,因以傳輸 速率并不高。由于這些設(shè)備總線的信號(hào)衰減原因,之間的線路傳輸長(zhǎng)度都 會(huì)受到限制。
嵌入式設(shè)備一般都配置有以太網(wǎng)接口,通過以太網(wǎng)接口可以實(shí)現(xiàn)高速 率的數(shù)據(jù)傳輸,并完成主從設(shè)備之間的通信。現(xiàn)有的主從設(shè)備通信一般都 是應(yīng)用程序利用SOCKET通過TCP/IP協(xié)議棧進(jìn)行通信,由于TCP/IP協(xié)議 是一種分層協(xié)議,所有的數(shù)據(jù)包從接收到提交到上層應(yīng)用程序需要很多的 處理,所以它會(huì)占用比較多的CPU時(shí)間,并且它的實(shí)時(shí)性、可靠性都不能 得到保證(其處理示意圖見圖1右邊所示)。
嵌入式主從設(shè)備都有各自的代碼在獨(dú)自運(yùn)行,如果要對(duì)整個(gè)系統(tǒng)升 級(jí),需要分別升級(jí)主設(shè)備和從設(shè)備,并且從設(shè)備還需要額外的存儲(chǔ)介質(zhì)。
發(fā)明內(nèi)容
本發(fā)明針對(duì)嵌入式主從設(shè)備間通信的缺陷,提供一種新型的利用以太 網(wǎng)接口在嵌入式主從設(shè)備之間進(jìn)行實(shí)時(shí)、可靠、低開銷通信的方法。 本發(fā)明的目的通過以下技術(shù)方案來實(shí)現(xiàn)
LINUX主從設(shè)備通過以太網(wǎng)接口進(jìn)行通信的方法,特點(diǎn)是首先,主 設(shè)備引導(dǎo)從設(shè)備的啟動(dòng);然后,主設(shè)備發(fā)送控制命令給從設(shè)備;繼而,從 設(shè)備將檢測(cè)到的事件或狀態(tài)發(fā)給主設(shè)備;最后,從設(shè)備完成主設(shè)備下發(fā)的 命令,完成對(duì)應(yīng)的操作。
進(jìn)一步地,上述的LINUX主從設(shè)備通過以太網(wǎng)接口進(jìn)行通信的方法, 其中a)將主從設(shè)備交換的信息分為命令、響應(yīng)、指示、數(shù)據(jù)四類
命令,主設(shè)備指示從設(shè)備完成從設(shè)備提供的功能,如在VOIP應(yīng)用中 從設(shè)備完成語(yǔ)音、視頻壓縮功能;從設(shè)備處理命令后發(fā)送一響應(yīng)消息; 響應(yīng),從設(shè)備接收到主設(shè)備命令并執(zhí)行,發(fā)送消息; 指示,從設(shè)備檢測(cè)到事件或狀態(tài)發(fā)生變化時(shí),通知主設(shè)備; 數(shù)據(jù),從設(shè)備將產(chǎn)生的數(shù)據(jù)發(fā)送給主設(shè)備,或者通過以太網(wǎng)發(fā)送到網(wǎng) 絡(luò)上;
b) 利用LINUX提供的網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)接口,注冊(cè)新的專用協(xié)議簇,當(dāng) 以太網(wǎng)接口驅(qū)動(dòng)接收到該協(xié)議簇的數(shù)據(jù)包后直接提交到socket層進(jìn)行處 理。當(dāng)發(fā)送包時(shí),直接將發(fā)送的數(shù)據(jù)包添加到以太網(wǎng)驅(qū)動(dòng)隊(duì)列上;通過該 專用協(xié)議簇實(shí)現(xiàn)據(jù)數(shù)據(jù)包的重發(fā)、數(shù)據(jù)包排序、數(shù)據(jù)包校驗(yàn)、數(shù)據(jù)包無響 應(yīng)等處理機(jī)制;
c) 從設(shè)備啟動(dòng)過程從設(shè)備在上電后處于boot狀態(tài),等待接收主設(shè) 備的消息,主設(shè)備發(fā)送一包括從設(shè)備的MAC地址、IP地址的廣播包,從 設(shè)備在接收到該廣播包后將包中的MAC地址、IP地址配置為MAC、 IP 地址,并發(fā)送一響應(yīng)消息;主設(shè)備下載從設(shè)備的運(yùn)行代碼,代碼下載完成 后主設(shè)備發(fā)送一程序執(zhí)行命令,從設(shè)備校驗(yàn)主設(shè)備下載的代碼,校驗(yàn)成功,并發(fā)送一程序開始執(zhí)行指示;從設(shè)備運(yùn)行后,主設(shè) 備可靠消息傳輸機(jī)制發(fā)送命令消息指示從設(shè)備的操作,或者從設(shè)備將檢測(cè)
到的事件發(fā)送給主設(shè)備;
d) 可靠的消息傳輸特征定義一種協(xié)議包類型,并配置QOS,保證 數(shù)據(jù)包的優(yōu)先級(jí);主從設(shè)備自動(dòng)地發(fā)送消息包,采用消息應(yīng)答機(jī)制, 一方 發(fā)送消息,另外一方收到消息后發(fā)送ACK;每個(gè)消息有一個(gè)序列號(hào),接收
方根據(jù)該序列號(hào)決定是一個(gè)新消息或重復(fù)消息,如果是一個(gè)重復(fù)消息接收
方重新發(fā)送一ACK消息;消息發(fā)送方設(shè)置一定時(shí)器,當(dāng)在指定的時(shí)間內(nèi) 沒有收到ACK響應(yīng)時(shí),消息發(fā)送方重發(fā)消息;
e) 該實(shí)現(xiàn)方法跳過了防火墻、路由的處理,直接將以太網(wǎng)包掛接到以 太網(wǎng)發(fā)送隊(duì)列,節(jié)省了CPU的開銷,并且提高了數(shù)據(jù)包的優(yōu)先級(jí);該方法 可廣泛用于多媒體系統(tǒng)或網(wǎng)絡(luò)處理系統(tǒng)等多主機(jī)環(huán)境下的主從設(shè)備之間 的通信控制。
本發(fā)明技術(shù)方案突出的實(shí)質(zhì)性特點(diǎn)和顯著的進(jìn)步主要體現(xiàn)在 本發(fā)明利用常用的以太網(wǎng)接口進(jìn)行主從設(shè)備通信;定義了主從設(shè)備通
信方法,將通信內(nèi)容按使用分為命令、響應(yīng)、指示、數(shù)據(jù);本發(fā)明提高了
系統(tǒng)的實(shí)時(shí)性、降低了系統(tǒng)的開銷。
下面結(jié)合附圖對(duì)本發(fā)明技術(shù)方案作進(jìn)一步說明
圖1:應(yīng)用程序直接利用socket通信與標(biāo)準(zhǔn)的linux通過TCP/IP通信 的分層比較示意圖2:命令發(fā)送處理示意圖。
具體實(shí)施例方式
本發(fā)明設(shè)計(jì)一種新型的利用以太網(wǎng)接口在嵌入式主從設(shè)備之間進(jìn)行 實(shí)時(shí)、可靠、低開銷通信的方法,不采用TCP/IP協(xié)議棧,利用LINUXNAPI接口創(chuàng)建一新的協(xié)議簇,并在該協(xié)議簇上實(shí)現(xiàn)socket接口 。
LINUX主從設(shè)備通過以太網(wǎng)接口進(jìn)行通信的方法,首先,主設(shè)備引導(dǎo) 從設(shè)備的啟動(dòng);然后,主設(shè)備發(fā)送控制命令給從設(shè)備;繼而,從設(shè)備將檢 測(cè)到的事件或狀態(tài)發(fā)給主設(shè)備;最后,從設(shè)備完成主設(shè)備下發(fā)的命令,完 成對(duì)應(yīng)的操作。
1) 將主從設(shè)備交換的信息分為命令、響應(yīng)、指示、數(shù)據(jù)四類 命令,主設(shè)備指示從設(shè)備完成從設(shè)備提供的功能,如在VOIP應(yīng)用中
從設(shè)備完成語(yǔ)音、視頻壓縮功能。從設(shè)備處理命令后發(fā)送一響應(yīng)消息; 響應(yīng),從設(shè)備接收到主設(shè)備命令并執(zhí)行,發(fā)送消息; 指示,從設(shè)備檢測(cè)到事件或狀態(tài)發(fā)生變化時(shí),通知主設(shè)備; 數(shù)據(jù),從設(shè)備將產(chǎn)生的數(shù)據(jù)發(fā)送給主設(shè)備,或者通過以太網(wǎng)發(fā)送到網(wǎng)
絡(luò)上;
2) 利用LINUX提供的網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)接口,注冊(cè)新的專用協(xié)議簇,當(dāng) 以太網(wǎng)接口驅(qū)動(dòng)接收到該協(xié)議簇的數(shù)據(jù)包后直接提交到socket層進(jìn)行處 理。當(dāng)發(fā)送包時(shí),直接將發(fā)送的數(shù)據(jù)包添加到以太網(wǎng)驅(qū)動(dòng)隊(duì)列上;通過該 專用協(xié)議簇實(shí)現(xiàn)據(jù)數(shù)據(jù)包的重發(fā)、數(shù)據(jù)包排序、數(shù)據(jù)包校驗(yàn)、數(shù)據(jù)包無響 應(yīng)等處理機(jī)制;
3) 從設(shè)備啟動(dòng)過程從設(shè)備在上電后處于boot狀態(tài),等待接收主設(shè) 備的消息,主設(shè)備發(fā)送一包括從設(shè)備的MAC地址、IP地址的廣播包,從 設(shè)備在接收到該廣播包后將包中的MAC地址、IP地址配置為MAC、 IP 地址,并發(fā)送一響應(yīng)消息;主設(shè)備下載從設(shè)備的運(yùn)行代碼,代碼下載完成 后主設(shè)備發(fā)送一程序執(zhí)行命令,從設(shè)備校驗(yàn)主設(shè)備下載的代碼,校驗(yàn)成功, 即執(zhí)行下載后的代碼,并發(fā)送一程序開始執(zhí)行指示;從設(shè)備運(yùn)行后,主設(shè) 備可靠消息傳輸機(jī)制發(fā)送命令消息指示從設(shè)備的操作,或者從設(shè)備將檢測(cè) 到的事件發(fā)送給主設(shè)備;
4) 可靠的消息傳輸特征定義一種協(xié)議包類型,并配置Q0S,保證數(shù)據(jù)包的優(yōu)先級(jí);主從設(shè)備自動(dòng)地發(fā)送消息包,采用消息應(yīng)答機(jī)制, 一方 發(fā)送消息,另外一方收到消息后發(fā)送ACK;每個(gè)消息有一個(gè)序列號(hào),接收 方根據(jù)該序列號(hào)決定是一個(gè)新消息或重復(fù)消息,如果是一個(gè)重復(fù)消息接收 方重新發(fā)送一 ACK消息;消息發(fā)送方設(shè)置一定時(shí)器,當(dāng)在指定的時(shí)間內(nèi) 沒有收到ACK響應(yīng)時(shí),消息發(fā)送方重發(fā)消息;
5)該實(shí)現(xiàn)方法跳過了防火墻、路由的處理,直接將以太網(wǎng)包掛接到 以太網(wǎng)發(fā)送隊(duì)列,節(jié)省了CPU的開銷,并且提高了數(shù)據(jù)包的優(yōu)先級(jí);該方
法可廣泛用于多媒體系統(tǒng)或網(wǎng)絡(luò)處理系統(tǒng)等多主機(jī)環(huán)境下的主從設(shè)備之 間的通信控制。
具體實(shí)現(xiàn)方法如圖1 (左邊)所示
I應(yīng)用程序,完成對(duì)從設(shè)備的代碼下載、從設(shè)備控制、從設(shè)備的數(shù)據(jù) 處理等功能;
IIBSD socket, LINUX提供的通過網(wǎng)絡(luò)進(jìn)行通信的方法; III專用協(xié)議簇,類似UDP的協(xié)議,負(fù)責(zé)將應(yīng)用程序通過socket調(diào)用 發(fā)送的命令,通過以太網(wǎng)驅(qū)動(dòng)發(fā)送出去;
IVEthemet,負(fù)責(zé)以太網(wǎng)的數(shù)據(jù)包發(fā)送接收。 主設(shè)備命令發(fā)送過程如圖2所示
I應(yīng)用程序產(chǎn)生需要的命令,通過socket接口發(fā)送給專用協(xié)議簇; II專用協(xié)議簇加上協(xié)議簇頭字節(jié)、添加序列號(hào)、通過以太網(wǎng)驅(qū)動(dòng)將數(shù) 據(jù)包發(fā)送出去;
III專用協(xié)議簇啟動(dòng)一定時(shí)器,當(dāng)定時(shí)器到期時(shí),重發(fā)該數(shù)據(jù)包; IV當(dāng)接收到從設(shè)備響應(yīng)時(shí),確認(rèn)該命令成功,將發(fā)送序列號(hào)加l。 綜上所述,實(shí)現(xiàn)專用協(xié)議簇,通過該協(xié)議簇可以對(duì)以太網(wǎng)的包進(jìn)行重 發(fā)、排序、確認(rèn)包是否正確發(fā)送;利用linux的網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng);將主從設(shè) 備交互信息抽象分類,通過命令響應(yīng)機(jī)制確保從設(shè)備命令正確執(zhí)行。
利用常用的以太網(wǎng)接口進(jìn)行主從設(shè)備通信;定義了主從設(shè)備通信方法,將通信內(nèi)容按使用分為命令、響應(yīng)、指示、數(shù)據(jù);提高了系統(tǒng)的實(shí)時(shí) 性、降低了系統(tǒng)的開銷。
需要理解到的是上述說明并非是對(duì)本發(fā)明的限制,在本發(fā)明構(gòu)思范 圍內(nèi),所進(jìn)行的添加、變換、替換等,也應(yīng)屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.LINUX主從設(shè)備通過以太網(wǎng)接口進(jìn)行通信的方法,其特征在于首先,主設(shè)備引導(dǎo)從設(shè)備的啟動(dòng);然后,主設(shè)備發(fā)送控制命令給從設(shè)備;繼而,從設(shè)備將檢測(cè)到的事件或狀態(tài)發(fā)給主設(shè)備;最后,從設(shè)備完成主設(shè)備下發(fā)的命令,完成對(duì)應(yīng)的操作。
2. 根據(jù)權(quán)利要求1所述的LINUX主從設(shè)備通過以太網(wǎng)接口進(jìn)行通信 的方法,其特征在于主從設(shè)備交換的信息分為命令、響應(yīng)、指示、數(shù)據(jù) 四類命令,主設(shè)備指示從設(shè)備完成從設(shè)備提供的功能; 響應(yīng),從設(shè)備接收到主設(shè)備命令并執(zhí)行,發(fā)送消息; 指示,從設(shè)備檢測(cè)到事件或狀態(tài)發(fā)生變化時(shí),通知主設(shè)備; 數(shù)據(jù),從設(shè)備將產(chǎn)生的數(shù)據(jù)發(fā)送給主設(shè)備,或者通過以太網(wǎng)發(fā)送到網(wǎng) 絡(luò)上。
3. 根據(jù)權(quán)利要求1所述的LINUX主從設(shè)備通過以太網(wǎng)接口進(jìn)行通信 的方法,其特征在于利用LINUX提供的網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)接口,注冊(cè)新的 協(xié)議簇,當(dāng)以太網(wǎng)接口驅(qū)動(dòng)接收到該協(xié)議簇的數(shù)據(jù)包后直接提交到socket 層進(jìn)行處理;當(dāng)發(fā)送包時(shí),直接將發(fā)送的數(shù)據(jù)包添加到以太網(wǎng)驅(qū)動(dòng)隊(duì)列上; 通過該協(xié)議簇實(shí)現(xiàn)數(shù)據(jù)包的重發(fā)、數(shù)據(jù)包排序、數(shù)據(jù)包校驗(yàn)、數(shù)據(jù)包無響 應(yīng)的處理機(jī)制。
4. 根據(jù)權(quán)利要求1所述的LINUX主從設(shè)備通過以太網(wǎng)接口進(jìn)行通信 的方法,其特征在于從設(shè)備啟動(dòng)過程是,從設(shè)備在上電后處于boot狀態(tài), 等待接收主設(shè)備的消息,主設(shè)備發(fā)送一包括從設(shè)備的MAC地址、IP地址 的廣播包,從設(shè)備在接收到廣播包后將包中的MAC地址、IP地址配置為 MAC、 IP地址,并發(fā)送一響應(yīng)消息;主設(shè)備下載從設(shè)備的運(yùn)行代碼,代碼 下載完成后主設(shè)備發(fā)送一程序執(zhí)行命令,從設(shè)備校驗(yàn)主設(shè)備下載的代碼,校驗(yàn)成功,即執(zhí)行下載后的代碼,并發(fā)送一程序開始執(zhí)行指示;從設(shè)備運(yùn) 行后,主設(shè)備可靠消息傳輸機(jī)制發(fā)送命令消息指示從設(shè)備的操作,或者從 設(shè)備將檢測(cè)到的事件發(fā)送給主設(shè)備。
5.根據(jù)權(quán)利要求1所述的LINUX主從設(shè)備通過以太網(wǎng)接口進(jìn)行通信的方法,其特征在于可靠的消息傳輸特征,定義一種協(xié)議包類型,并配 置QOS;主從設(shè)備自動(dòng)地發(fā)送消息包,采用消息應(yīng)答機(jī)制, 一方發(fā)送消息, 另外一方收到消息后發(fā)送ACK;每個(gè)消息有一個(gè)序列號(hào),接收方根據(jù)該序列號(hào)決定是一個(gè)新消息或重復(fù)消息,如果是一個(gè)重復(fù)消息接收方重新發(fā)送一 ACK消息;消息發(fā)送方設(shè)置一定時(shí)器,當(dāng)在指定的時(shí)間內(nèi)沒有收到ACK響應(yīng)時(shí),消息發(fā)送方重發(fā)消息。
全文摘要
本發(fā)明提供一種LINUX主從設(shè)備通過以太網(wǎng)接口進(jìn)行通信的方法,首先,主設(shè)備引導(dǎo)從設(shè)備的啟動(dòng);然后,主設(shè)備發(fā)送控制命令給從設(shè)備;繼而,從設(shè)備將檢測(cè)到的事件或狀態(tài)發(fā)給主設(shè)備;最后,從設(shè)備完成主設(shè)備下發(fā)的命令,完成對(duì)應(yīng)的操作。實(shí)現(xiàn)專用協(xié)議簇,通過該協(xié)議簇可以對(duì)以太網(wǎng)的包進(jìn)行重發(fā)、排序、確認(rèn)包是否正確發(fā)送;利用linux的網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng);將主從設(shè)備交互信息抽象分類,通過命令響應(yīng)機(jī)制確保從設(shè)備命令正確執(zhí)行。
文檔編號(hào)H04L1/16GK101605128SQ20091003150
公開日2009年12月16日 申請(qǐng)日期2009年4月22日 優(yōu)先權(quán)日2009年4月22日
發(fā)明者光 何, 劉繼明, 杰 程 申請(qǐng)人:網(wǎng)經(jīng)科技(蘇州)有限公司