專利名稱:基于VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程Shell的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程Shell的方法。
技術(shù)背景VxWorks操作系統(tǒng)是一款廣泛應(yīng)用于通訊行業(yè)的著名嵌入式操作系統(tǒng),它提供了一種 Shell工具,利用該工具可以運行系統(tǒng)內(nèi)任何調(diào)試函數(shù),方便定位和解決問題。VxWorks提供的Shell工具的主要缺點是調(diào)試人員只有使用telnet工具遠(yuǎn)程登錄到具 有VxWorks的前臺單板上,才能使用Shell工具。而在實際應(yīng)用環(huán)境,調(diào)試人員往往無法遠(yuǎn) 程登錄到前臺。譬如,在CDMA2000無線接入網(wǎng),操作維護(hù)后臺與BTS側(cè)單板之間不支持直接 的telnet協(xié)議通信,所以調(diào)試人員無法從操作維護(hù)后臺遠(yuǎn)程登錄到BTS側(cè)的具有VxWorks的 前臺單板上。因此VxWorks自帶的Shell工具有很大的局限性,無法普遍使用于實際應(yīng)用環(huán) 境。發(fā)明內(nèi)容為了克服上述缺陷,本發(fā)明的目的在于提供一種不需要遠(yuǎn)程登錄到前臺單板也可以運行 任何調(diào)試函數(shù)的基于VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程Shell的方法。為達(dá)到上述目的,本發(fā)明提供一種基于VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程Shell的方法,包括:(1) 后臺向前臺單板發(fā)送運行調(diào)試函數(shù)請求;(2) 前臺單板中駐留的進(jìn)程接收、分析并執(zhí)行來自后臺的調(diào)試函數(shù)請求,并將調(diào)試函數(shù) 的執(zhí)行結(jié)果經(jīng)由命名管道傳輸,最后由命名管道守護(hù)任務(wù)輸出至后臺;(3) 后臺接收前臺單板返回的結(jié)果并輸出至界面。 其中,所述步驟(1)具體為(11)后臺向前臺的BSC側(cè)單板的遠(yuǎn)程Shell中轉(zhuǎn)進(jìn)程發(fā)送調(diào)試函數(shù)請求; C12)遠(yuǎn)程Shell中轉(zhuǎn)進(jìn)程使用內(nèi)部的通信協(xié)議把后臺的調(diào)試函數(shù)請求轉(zhuǎn)發(fā)至前臺的BTS 側(cè)目標(biāo)單板上的遠(yuǎn)程Shell代理進(jìn)程。 其中,所述的步驟(2)具體為(21) 前臺BTS側(cè)目標(biāo)單板上的遠(yuǎn)程Shell代理進(jìn)程接收、分析并執(zhí)行調(diào)試函數(shù)請求, 并把調(diào)試函數(shù)的執(zhí)行結(jié)果寫入命名管道;(22) 前臺BTS側(cè)目標(biāo)單板上的命名管道守護(hù)任務(wù)從步驟(21)中所述的命名管道中讀
取執(zhí)行結(jié)果并把該結(jié)果輸出至后臺。其中,所述的步驟(12)具體為-(121)前臺BSC側(cè)單板的遠(yuǎn)程Shell中轉(zhuǎn)進(jìn)程接收到后臺發(fā)送的調(diào)試函數(shù)請求后,先從 中提取BTS側(cè)目標(biāo)單板的地址信息,判斷該地址信息是否合法,若合法,則使用內(nèi)部通信協(xié) 議把該調(diào)試函數(shù)請求轉(zhuǎn)發(fā)至目標(biāo)單板的遠(yuǎn)程Shell代理進(jìn)程;否則,進(jìn)入睡眠。其中,所述的步驟(21)具體為(211)前臺BTS側(cè)目標(biāo)單板上的遠(yuǎn)程Shell代理進(jìn)程接收到調(diào)試函數(shù)后,利用VxWorks 提供的syraFindByNarae在系統(tǒng)符號表中査找調(diào)試函數(shù)的入口地址,若找不到,進(jìn)入睡眠,若 找到,則開始運行調(diào)試函數(shù)。其中,所述的后臺運行在PC機(jī)上,并在PC機(jī)上維護(hù)一個函數(shù)數(shù)據(jù)庫,該函數(shù)數(shù)據(jù)庫限 定前臺單板可執(zhí)行的函數(shù)類型、參數(shù)類型。其中,所述的前臺運行在具有VxWorks操作系統(tǒng)的單板上。本發(fā)明克服了必須登錄到單板才能使用Shell工具運行調(diào)試函數(shù)的不足,在VxWorks提 供的symFindByName系統(tǒng)調(diào)用系統(tǒng)符號表,以及BSC與BTS之間的內(nèi)部通信協(xié)議基礎(chǔ)上實現(xiàn), 彌補了 VxWorks自帶的Shell工具的不足,方便定位和解決實際應(yīng)用環(huán)境出現(xiàn)的故障,有助 于提高故障解決速度和降低解決成本。
圖1是遠(yuǎn)程Shell系統(tǒng)架構(gòu)示意圖;圖2是遠(yuǎn)程Shell中轉(zhuǎn)進(jìn)程流程圖;圖3是遠(yuǎn)程Shell代理進(jìn)程流程圖;圖4是管道守護(hù)任務(wù)流程圖。
具體實施方式
本發(fā)明的主要思想前臺單板駐留一個進(jìn)程專門接收、分析并執(zhí)行來自后臺的調(diào)試函數(shù)請求,調(diào)試函數(shù)的執(zhí) 行結(jié)果經(jīng)由命名管道傳輸,并由命名管道守護(hù)任務(wù)負(fù)責(zé)輸出至后臺;后臺負(fù)責(zé)向具體單板發(fā)送運行調(diào)試函數(shù)請求和顯示調(diào)試函數(shù)的執(zhí)行結(jié)果。 本發(fā)明是這樣實現(xiàn)的本系統(tǒng)主要分為前臺模塊和后臺模塊。(如圖1所示)前臺模塊運行在VxWorks上,并由遠(yuǎn)程Shell中轉(zhuǎn)進(jìn)程、遠(yuǎn)程Shell代理進(jìn)程以及命名
管道守護(hù)任務(wù)三個小模塊組成。其中遠(yuǎn)程Shell中轉(zhuǎn)進(jìn)程駐留在BSC側(cè)單板上,負(fù)責(zé)使用內(nèi) 部通信協(xié)議把后臺的調(diào)試函數(shù)請求轉(zhuǎn)發(fā)至BTS側(cè)目標(biāo)單板上的遠(yuǎn)程Shell代理進(jìn)程;遠(yuǎn)程 Shell代理進(jìn)程負(fù)責(zé)接收、分析并執(zhí)行調(diào)試函數(shù)請求,并把調(diào)試函數(shù)執(zhí)行的結(jié)果寫入命名管 道;與遠(yuǎn)程Shell代理進(jìn)程同處一塊單板上的命名管道守護(hù)任務(wù)負(fù)責(zé)從命名管道讀取執(zhí)行結(jié) 果并把它們傳回后臺。后臺模塊運行在PC機(jī)上,并在PC機(jī)上維護(hù)一個函數(shù)數(shù)據(jù)庫,用于限定前臺單板可執(zhí)行 的函數(shù)類型,參數(shù)類型等,以防用戶執(zhí)行非法函數(shù),輸入非法參數(shù),造成前臺單板系統(tǒng)崩潰 的錯誤。后臺將需調(diào)用的函數(shù)名,函數(shù)參數(shù)以及用于判斷中轉(zhuǎn)路徑的參數(shù)發(fā)向遠(yuǎn)程Shell中 轉(zhuǎn)進(jìn)程,然后等待前臺單板返回結(jié)果,結(jié)果為格式化好的字符串,直接輸出到界面。下面結(jié)合附圖對該裝置和實現(xiàn)方法進(jìn)行詳細(xì)描述。如圖1所示系統(tǒng)分為前臺模塊和后臺模塊,前臺模塊運行在具有VxWorks操作系統(tǒng)的 單板上,后臺模塊運行在PC機(jī)上。PC與BSC側(cè)通過網(wǎng)線連接。BSC與BTS通過非網(wǎng)線連接。 前臺模塊負(fù)責(zé)接收、分析、執(zhí)行來自后臺的調(diào)試函數(shù)請求,并把執(zhí)行結(jié)果發(fā)送給后臺;后臺 模塊負(fù)責(zé)發(fā)送調(diào)試函數(shù)請求和結(jié)果顯示。如圖2所示遠(yuǎn)程Shell中轉(zhuǎn)進(jìn)程的功能簡單,在接收到調(diào)試函數(shù)請求后,先從中抽取 BTS側(cè)目標(biāo)單板的地址信息,進(jìn)而判斷地址信息是否合法。如果地址信息合法,則使用內(nèi)部 通信協(xié)議把該調(diào)試函數(shù)請求轉(zhuǎn)發(fā)至目標(biāo)單板上的遠(yuǎn)程Shell代理進(jìn)程,否則不予處理,進(jìn)入 睡眠狀態(tài)。如圖3所示遠(yuǎn)程Shell代理進(jìn)程在接收到調(diào)試函數(shù)請求后,利用VxWorks提供的 symFindByName系統(tǒng)調(diào)用在系統(tǒng)符號表中査找調(diào)試函數(shù)的入口地址,如果找不到該函數(shù)的入 口地址,說明該函數(shù)不存在于本系統(tǒng),那么進(jìn)程進(jìn)入睡眠。如果獲得了該調(diào)試函數(shù)的入口地 址,還得判斷它所帶的參數(shù)個數(shù)是否大于等于O并且小于等于IO。若參數(shù)個數(shù)不合法,那么 進(jìn)程也進(jìn)入睡眠。在把標(biāo)準(zhǔn)輸出重定向至命名管道后,就可以從獲得的函數(shù)入口地址開始運 行該調(diào)試函數(shù)。調(diào)試函數(shù)里所有使用printf輸出的數(shù)據(jù)都會被重定向至命名管道。函數(shù)運行 完畢,先使用printf輸出三個字符"""作為終止符,然后再撤消標(biāo)準(zhǔn)輸出的重定向。之 后,進(jìn)程進(jìn)入睡眠狀態(tài),等待下一個調(diào)試函數(shù)請求的到來。如圖4所示管道守護(hù)任務(wù)先檢測管道內(nèi)是否有數(shù)據(jù)。如果管道內(nèi)沒有數(shù)據(jù),那么管道 守護(hù)任務(wù)將被阻塞睡眠。如果管道內(nèi)存在數(shù)據(jù),那么任務(wù)將把數(shù)據(jù)讀取出來。再判斷讀取到 的數(shù)據(jù)長度總和是否已大于4000字節(jié),如果答案肯定,那么就把數(shù)據(jù)復(fù)制到緩沖區(qū),并使緩沖區(qū)內(nèi)的數(shù)據(jù)長度等于4000字節(jié);否則,除把數(shù)據(jù)復(fù)制到緩沖區(qū)外,統(tǒng)計已讀取到數(shù)據(jù)的長度總和。接著,判斷緩沖區(qū)內(nèi)的數(shù)據(jù)長度是否己到發(fā)送限制長度,如果答案肯定,就直接把數(shù)據(jù)發(fā)送出去。如果緩沖區(qū)內(nèi)的數(shù)據(jù)長度還小于發(fā)送限制長度,再判斷數(shù)據(jù)的最后3個字符 是否與終止符一致,若一致,說明已讀取到了函數(shù)的全部執(zhí)行結(jié)果,因此可以把數(shù)據(jù)發(fā)送回 后臺,否則,就需要繼續(xù)從管道內(nèi)讀取數(shù)據(jù)。本發(fā)明克服了必須登錄到單板才能使用Shell工具運行調(diào)試函數(shù)的不足,在VxWorks提 供的symFindByName系統(tǒng)調(diào)用系統(tǒng)符號表,以及BSC與BTS之間的內(nèi)部通信協(xié)議基礎(chǔ)上實現(xiàn), 彌補了 VxWorks自帶的Shell工具的不足,方便定位和解決實際應(yīng)用環(huán)境出現(xiàn)的故障,有助 于提高故障解決速度和降低解決成本。
權(quán)利要求
1、一種基于VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程Shell的方法,包括(1)后臺向前臺單板發(fā)送運行調(diào)試函數(shù)請求;(2)前臺單板中駐留的進(jìn)程接收、分析并執(zhí)行來自后臺的調(diào)試函數(shù)請求,并將調(diào)試函數(shù)的執(zhí)行結(jié)果經(jīng)由命名管道傳輸,最后由命名管道守護(hù)任務(wù)輸出至后臺;(3)后臺接收前臺單板返回的結(jié)果并輸出至界面。
2、 如權(quán)利要求l所述的基于VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程Shell的方法,其特征在于,所 述步驟(1)具體為(11) 后臺向前臺的BSC側(cè)單板的遠(yuǎn)程Shell中轉(zhuǎn)進(jìn)程發(fā)送調(diào)試函數(shù)請求;(12) 遠(yuǎn)程Shell中轉(zhuǎn)進(jìn)程使用內(nèi)部的通信協(xié)議把后臺的調(diào)試函數(shù)請求轉(zhuǎn)發(fā)至前臺的BTS 側(cè)目標(biāo)單板上的遠(yuǎn)程Shell代理進(jìn)程。
3、 如權(quán)利要求l所述的基于VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程Shell的方法,其特征在于,所 述的步驟(2)具體為(21) 前臺BTS側(cè)目標(biāo)單板上的遠(yuǎn)程Shell代理進(jìn)程接收、分析并執(zhí)行調(diào)試函數(shù)請求, 并把調(diào)試函數(shù)的執(zhí)行結(jié)果寫入命名管道;(22) 前臺BTS側(cè)目標(biāo)單板上的命名管道守護(hù)任務(wù)從步驟(21)中所述的命名管道中讀 取執(zhí)行結(jié)果并把該結(jié)果輸出至后臺。
4、 如權(quán)利要求2所述的基于VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程She11的方法,其特征在于,所 述的步驟(12)具體為-(121)前臺BSC側(cè)單板的遠(yuǎn)程Shell中轉(zhuǎn)進(jìn)程接收到后臺發(fā)送的調(diào)試函數(shù)請求后,先從 中提取BTS側(cè)目標(biāo)單板的地址信息,判斷該地址信息是否合法,若合法,則使用內(nèi)部通信協(xié) 議把該調(diào)試函數(shù)請求轉(zhuǎn)發(fā)至目標(biāo)單板的遠(yuǎn)程Shell代理進(jìn)程;否則,進(jìn)入睡眠。
5、 如權(quán)利要求3所述的基于VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程She11的方法,其特征在于,所 述的步驟(21)具體為(211)前臺BTS側(cè)目標(biāo)單板上的遠(yuǎn)程Shell代理進(jìn)程接收到調(diào)試函數(shù)后,在系統(tǒng)符號表 中査找調(diào)試函數(shù)的入口地址,若找不到,進(jìn)入睡眠,若找到,則開始運行調(diào)試函數(shù)。
6、 如權(quán)利要求1或2或3所述的基于VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程Shell的方法,其特征在于,所述的后臺運行在PC機(jī)上,并在PC機(jī)上維護(hù)一個函數(shù)數(shù)據(jù)庫,該函數(shù)數(shù)據(jù)庫限定前 臺單板可執(zhí)行的函數(shù)類型、參數(shù)類型。
7、 如權(quán)利要求1或2或3所述的基于VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程Shell的方法,其特征 在于,所述的前臺運行在具有VxWorks操作系統(tǒng)的單板上。
全文摘要
本發(fā)明公開一種基于VxWorks操作系統(tǒng)實現(xiàn)遠(yuǎn)程Shell的方法,為解決現(xiàn)有技術(shù)中必須遠(yuǎn)程登錄到單板才能使用Shell工具運行調(diào)試函數(shù)的問題而發(fā)明。本發(fā)明后臺PC向前臺BSC單板發(fā)送運行調(diào)試函數(shù)請求;前臺BSC單板中駐留的遠(yuǎn)程Shell中轉(zhuǎn)進(jìn)程將該函數(shù)調(diào)試請求轉(zhuǎn)發(fā)給前臺BTS側(cè)單板的遠(yuǎn)程Shell代理進(jìn)程,該進(jìn)程接收、分析并執(zhí)行接收到的調(diào)試函數(shù)請求,并將調(diào)試函數(shù)的執(zhí)行結(jié)果經(jīng)由命名管道傳輸,最后由命名管道守護(hù)任務(wù)輸出至后臺;后臺接收前臺單板返回的結(jié)果并輸出至界面。本發(fā)明的方法實現(xiàn)了不需要遠(yuǎn)程登錄到單板就可以運行任何調(diào)試函數(shù),方便定位和解決實際應(yīng)用環(huán)境出現(xiàn)的故障。
文檔編號G06F9/44GK101110019SQ200610103408
公開日2008年1月23日 申請日期2006年7月18日 優(yōu)先權(quán)日2006年7月18日
發(fā)明者花 何, 李桂良 申請人:中興通訊股份有限公司