專利名稱:基于虛擬機(jī)kvm的kdwp通訊連接代理實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式移動(dòng)設(shè)備相應(yīng)軟件開發(fā)的調(diào)試技術(shù)領(lǐng)域,特別是涉及對 KVM虛擬機(jī)的遠(yuǎn)程調(diào)試支持的實(shí)現(xiàn)方法。
背景技術(shù):
科技的發(fā)展永遠(yuǎn)都要通過技術(shù)創(chuàng)新來實(shí)現(xiàn),而技術(shù)創(chuàng)新是沒有盡頭的。隨著 中國日漸成為世界最大的移動(dòng)通訊與應(yīng)用市場,移動(dòng)增值應(yīng)用服務(wù)迅速崛起, 這應(yīng)該就是繼互聯(lián)網(wǎng)之后最大的商機(jī)。智能手機(jī)在世界及中國的市場份額不斷 快速增長,各種創(chuàng)新手機(jī)軟件的開發(fā)和應(yīng)用正是推動(dòng)移動(dòng)增值服務(wù)市場不斷發(fā) 展前進(jìn)的動(dòng)力來源,手機(jī)軟件開發(fā)漸入成熟。目前,手機(jī)游戲業(yè)務(wù),手機(jī)增值 業(yè)務(wù),移動(dòng)商務(wù)應(yīng)用等領(lǐng)域正處于迅猛發(fā)展的階段。各大游戲公司,大型娛樂 網(wǎng)站,門戶網(wǎng)站,電子商務(wù),甚至到企業(yè)應(yīng)用,報(bào)刊媒體,電視廣播等機(jī)構(gòu)都 大力推出自己的移動(dòng)業(yè)務(wù)。而即將到來的下一代通訊技術(shù)更是讓移動(dòng)軟件開發(fā) 成為市場上份額最大的產(chǎn)業(yè)之一。
J2ME是目前技術(shù)開發(fā)的主體,其他市場需要的技術(shù)還有SYMBIAN C++, WINDOWS MOBILE /CE C++。由于J2ME的技術(shù)先進(jìn),而且又能跨平臺(tái)運(yùn)行,因此 受到了眾多手機(jī)廠家的支持,甚至成為現(xiàn)在用戶購買手機(jī)的一項(xiàng)比較重要的技 術(shù)指標(biāo)。所以到目前為止,手機(jī)的游戲應(yīng)用平臺(tái)中,以支持J2ME的最多,而且 J2ME軟件開發(fā)商也有越來越多的趨勢,J2ME己成為2002年下半年之后的行動(dòng) 游戲平臺(tái)主流。尤其在進(jìn)入04年之后,基于JSR184的Mobile 3D Graphics API for J2ME的3D游戲開始出現(xiàn),像索愛S700/K700/Z500以及西門子S65等新機(jī) 都開始支持在手機(jī)上運(yùn)行3D JAVA游戲。
phoneME是SUN Open Source Java中的一個(gè)重要項(xiàng)目,包含了 CLDC和CDC 的HotSpot實(shí)現(xiàn)以及多個(gè)JSR。相比起以前能下載到的RI, phoneME是一個(gè)真正 經(jīng)歷過眾多實(shí)際產(chǎn)品驗(yàn)證的,商業(yè)級(jí)的JavaME實(shí)現(xiàn)。運(yùn)行phoneME到當(dāng)代的手 機(jī)上便是自然而然的事。同時(shí),以J2ME平臺(tái)開發(fā)的程序叫做MIDlet,可
以直接從在線下載后離線運(yùn)行,或從PC通過數(shù)據(jù)線、紅外或者藍(lán)牙傳輸?shù)绞謾C(jī) 上。由于J2ME程序都很小,只有幾十K,所以又被稱為K-JAVA。由于K-JAVA (J2ME)是開放平臺(tái),因此任何程序設(shè)計(jì)師甚至程序編寫愛好者都能到Sun網(wǎng) 站下載J2ME開發(fā)工具,為手機(jī)寫JAVA程序。然而Sun網(wǎng)站上的開發(fā)工具或多 或少存在一些問題,如配置復(fù)雜,專用性不足以及平臺(tái)不能得到快速更新;尤 其是對一個(gè)需要推出新的手機(jī)、新的平臺(tái)的企業(yè)來說,就要開發(fā)自己版本的開 發(fā)平臺(tái)。
調(diào)試工具是開發(fā)平臺(tái)中的不可缺少的一部分。每個(gè)開發(fā)人員都應(yīng)該使用調(diào)試 器或調(diào)試工具。調(diào)試器可以讓您單步調(diào)試代碼、凍結(jié)輸出并檢查變量。調(diào)試工 具可以幫助有經(jīng)驗(yàn)的開發(fā)人員更迅速地找到發(fā)生問題的位置。本軟件集就是基 于以上背景和技術(shù)條件下開發(fā)的MIDlet調(diào)試軟件。Debugger是MIDlet開發(fā)平 臺(tái)中的一個(gè)必不可或缺的開發(fā)工具,因此開發(fā)這樣的調(diào)試工具是必要的。本通 訊連接代理就是基于這種背景下實(shí)現(xiàn)的一個(gè)功能組件。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種嵌入式遠(yuǎn)程調(diào)試軟件中基于phoneME虛擬機(jī)的 KDWP通訊連接代理(Connection Agent)實(shí)現(xiàn)方法。 本發(fā)明解決其技術(shù)問題采用的技術(shù)方案如下
1) 主客同化
嵌入式遠(yuǎn)程調(diào)試器各個(gè)組件的啟動(dòng)順序無關(guān)。
2) —致的格式處理多種數(shù)據(jù)包 命令數(shù)據(jù)包和應(yīng)答數(shù)據(jù)包,能夠同時(shí)處理;
3) 假多線程化
由于本通訊連接代理需要運(yùn)行在嵌入式設(shè)備上,因此資源限制明顯。本發(fā)明 用循環(huán)鏈表來模擬多線程的能力,既有很好的響應(yīng)能力,又能夠滿足資源所限;
4) 標(biāo)號(hào)化的信息池處理 簡單地實(shí)現(xiàn)了異步通信能力;
5) 丟包判斷
利用年齡標(biāo)志位判斷數(shù)據(jù)包丟失或者超時(shí)的能力,也能夠解決因資源不足而 忽略某些包的能力;
本發(fā)明具有的有益的效果是
本發(fā)明是一種嵌入式遠(yuǎn)程調(diào)試軟件中基于phoneME虛擬機(jī)的KDWP通訊連接代 理(Connection Agent)實(shí)現(xiàn)方法,其主要功能是對phoneME虛擬機(jī)提供KDWP 通訊協(xié)議的實(shí)現(xiàn),以對虛擬機(jī)軟件實(shí)現(xiàn)遠(yuǎn)程調(diào)試的能力。
(1) 獨(dú)立性。本方法實(shí)現(xiàn)了在嵌入式軟件調(diào)試的KDWP通訊連接代理 (Connection Agent),即通訊格式標(biāo)準(zhǔn)化,與調(diào)試器或者調(diào)試代理只采用標(biāo)準(zhǔn)
化的通訊方式。因此具有架構(gòu)清晰,各組件相對獨(dú)立的優(yōu)點(diǎn),也是實(shí)現(xiàn)遠(yuǎn)程調(diào) 試的基礎(chǔ)。因此,只要遵循KDWP協(xié)議的調(diào)試器或者調(diào)試代理都與本通訊連接代 理兼容。
(2) 異步性。本嵌入式軟件調(diào)試的KDWP通訊連接代理(Connection Agent) 具有假多線程化、異步通信的能力,很好的解決了丟包或者來不及處理上一個(gè) 包等情況下的響應(yīng)問題、資源限制瓶頸的問題,也具備了容錯(cuò)的能力。
圖1是本發(fā)明的實(shí)施過程示意具體實(shí)施例方式
本發(fā)明是一種嵌入式遠(yuǎn)程調(diào)試軟件中基于PhoneME虛擬機(jī)的KDWP通訊連接代 理(Connection Agent)實(shí)現(xiàn)方法,下面結(jié)合圖1說明其具體實(shí)施過程。
1) 主客同化
本連接代理會(huì)先嘗試連接目標(biāo)調(diào)試代理或者調(diào)試器,這表現(xiàn)為客戶端角色; 當(dāng)連接失敗時(shí),本連接代理會(huì)繼續(xù)在指定端口上進(jìn)行偵聽,以等待目標(biāo)調(diào)試代 理或者調(diào)試代理的連接,這表現(xiàn)為服務(wù)端角色。即本連接代理既能以客戶端的 角色進(jìn)行連接,也能以服務(wù)端的角色進(jìn)行連接,叫做主客同化。這樣就達(dá)到各 個(gè)調(diào)試組件啟動(dòng)順序無關(guān),方便使用。
2) 同時(shí)處理命令數(shù)據(jù)包和應(yīng)答數(shù)據(jù)包
KDWP數(shù)據(jù)包有兩種基本的格式,即命令數(shù)據(jù)包(command packets)和應(yīng)答 數(shù)據(jù)包(r印ly packets)。由于命令數(shù)據(jù)包需要被任意的一端所發(fā)送,所以本 通訊連接代理也具備了同時(shí)處理這兩種數(shù)據(jù)包的能力。命令數(shù)據(jù)包是一次交互 的發(fā)起者,應(yīng)答數(shù)據(jù)包是對這個(gè)命令的回應(yīng),基本上是一一對應(yīng)關(guān)系。 數(shù)據(jù)包格式如下
命令數(shù)據(jù)包(Command Packet)
Header
Length (4 bytes)
Id (4 bytes) Flags (1 bytes) Command set (1 bytes) Command (1 bytes) Data (Variable)
應(yīng)答數(shù)據(jù)包(R印lay Packet) Header
Length (4 bytes)
Id (4 bytes)
Flag (1 bytes)
Error code (2 bytes) data (Variable)
所有數(shù)據(jù)包的域采用大頭格式(big-endian format),前三個(gè)域的意義在兩 種數(shù)據(jù)包中是一樣的,兩種數(shù)據(jù)包的大小總是一樣的。因此簡單地實(shí)現(xiàn)了兩種 數(shù)據(jù)包的一致通訊方式。
3) 假多線程化處理
這里的假多線程化,其實(shí)就是單線程來模擬多線程的任務(wù)。當(dāng)接受到命令數(shù) 據(jù)包時(shí),就把該數(shù)據(jù)放到信息池中。信息池是一個(gè)循環(huán)鏈表,加入額外的信息 有標(biāo)志號(hào)和年齡(功能見下)。本通訊連接代理采用詢問的方式對各個(gè)鏈表節(jié)點(diǎn) 進(jìn)行處理,在一般服務(wù)器中一個(gè)節(jié)點(diǎn)的處理一般采用一個(gè)線程。但這里為了節(jié) 省操作系統(tǒng)負(fù)荷,利用各個(gè)任務(wù)都很小的基礎(chǔ)上不采用真正線程的方式。
4) 標(biāo)號(hào)化的信息池處理
當(dāng)接收到調(diào)試代理的命令數(shù)據(jù)包時(shí),就加以唯一標(biāo)志,這樣就實(shí)現(xiàn)了異步通 訊模式,不必要一個(gè)命令數(shù)據(jù)包后必須立即回復(fù)。而是可以同時(shí)接受多個(gè)命令 數(shù)據(jù)包。數(shù)目的大小一般根據(jù)機(jī)器資源的大小和實(shí)際debug過程的需求。
5)丟包判斷
信息池鏈表中的每一個(gè)節(jié)點(diǎn)都有一個(gè)年齡標(biāo)志,當(dāng)超過某一時(shí)間,認(rèn)為該包 已經(jīng)丟失,即取消這一節(jié)點(diǎn)。這個(gè)標(biāo)志位也可作為同時(shí)處理數(shù)據(jù)包能力的限制 位。
具體方法是本通訊連接代理會(huì)以固定周期時(shí)間輪詢該信息池,每次輪詢到 一個(gè)節(jié)點(diǎn),如果標(biāo)志號(hào)不匹配,意即年齡增加l,如果年齡超過一定閥值,就進(jìn) 行簡單丟棄;如果匹配,就進(jìn)行摘鏈并交給虛擬機(jī)KVM正常處理。
權(quán)利要求
1、一種基于虛擬機(jī)KVM的KDWP通訊連接代理實(shí)現(xiàn)方法,其特征在于,包括1)主客同化本KDWP通訊連接代理既以客戶端的角色進(jìn)行連接,同時(shí)又以服務(wù)端的角色進(jìn)行連接,使嵌入式遠(yuǎn)程調(diào)試器各個(gè)組成部分的啟動(dòng)順序無關(guān);2)一致的格式處理多種數(shù)據(jù)包,同時(shí)處理命令數(shù)據(jù)包和應(yīng)答數(shù)據(jù)包;3)假多線程化,用循環(huán)鏈表來模擬多線程;4)標(biāo)號(hào)化的信息池處理,簡單地實(shí)現(xiàn)異步通信;5)丟包判斷,利用年齡標(biāo)志位判斷數(shù)據(jù)包丟失或者超時(shí)。
全文摘要
本發(fā)明涉及嵌入式移動(dòng)設(shè)備相應(yīng)軟件開發(fā)的調(diào)試技術(shù)領(lǐng)域,旨在提供一種基于虛擬機(jī)KVM的KDWP通訊連接代理實(shí)現(xiàn)方法。該方法包括主客同化、一致的格式處理多種數(shù)據(jù)包、假多線程化、標(biāo)號(hào)化的信息池處理、丟包判斷等步驟。本發(fā)明主要功能是對phoneME虛擬機(jī)提供KDWP通訊協(xié)議的實(shí)現(xiàn),以對虛擬機(jī)軟件實(shí)現(xiàn)遠(yuǎn)程調(diào)試的能力。具有獨(dú)立性和異步性的特點(diǎn)。
文檔編號(hào)G06F11/36GK101349988SQ20081012082
公開日2009年1月21日 申請日期2008年9月18日 優(yōu)先權(quán)日2008年9月18日
發(fā)明者馮德貴, 鑫 劉, 俊 吳, 施青松, 歐陽雷, 羅尚虎, 威 胡, 蔣冠軍, 劍 陳, 陳天洲 申請人:浙江大學(xué)