許美玲 河北金融學(xué)院
油田井下設(shè)備通信路由控制的優(yōu)化
許美玲 河北金融學(xué)院
Struts框架下的油田井下路由通信系統(tǒng)中提出一種虛擬總線技術(shù),它類似于物理總線,將不同功能和操作方式的井下設(shè)備進(jìn)行分類,并將各類接口按照各自特點(diǎn)封裝。它使井下設(shè)備與路由通信程序相匹配,并提供路由通信程序去訪問硬件的機(jī)制;同時(shí)使框架路由通信系統(tǒng)上層的軟件也能夠通過路由通信程序操作井下設(shè)備完成特定的功能。具體優(yōu)化過程中需要對(duì)配置文件進(jìn)行分析,實(shí)現(xiàn)路由控制管理,對(duì)各種配置信息進(jìn)行優(yōu)化,按照初始化函數(shù)的要求,提升數(shù)據(jù)通信的基本功能。按照三層體系結(jié)構(gòu)進(jìn)行路由信息控制,達(dá)到了路由通信優(yōu)化的目的。
Struts;井下設(shè)備;路由通信;優(yōu)化
井下路由控制系統(tǒng)總體設(shè)計(jì)分為3層。
(1)F層。業(yè)務(wù)邏輯層,被P層調(diào)用,使用P層傳遞來的ActionForm進(jìn)行相應(yīng)的處理。根據(jù)頁(yè)面?zhèn)鬟f過來的值進(jìn)行判斷分析,并發(fā)出對(duì)數(shù)據(jù)庫(kù)操作層的命令,接收從數(shù)據(jù)庫(kù)操作返回來的數(shù)據(jù),然后將數(shù)據(jù)進(jìn)行處理、編輯,傳遞給P層。
(2)P層。主要用來處理Httprequest,根據(jù)瀏覽器提交的數(shù)據(jù),生成ActionForm,處理業(yè)務(wù)邏輯層返回來的數(shù)據(jù)最終顯示給用戶。
(3)D層。數(shù)據(jù)庫(kù)操作層,主要負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)的基本操作,如查詢、添加、修改、刪除等操作。
另外,三層結(jié)構(gòu)均采用JAVA代碼,前端的頁(yè)面文件使用Sturts,同時(shí)配合Struts的標(biāo)簽庫(kù),可以方便地形成頁(yè)面的各種樣式,同時(shí)實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
Struts框架下的油田井下路由通信系統(tǒng)中提出一種虛擬總線技術(shù),它類似于物理總線,將不同功能和操作方式的井下設(shè)備進(jìn)行分類,并將各類接口按照各自特點(diǎn)封裝。它使井下設(shè)備與路由通信程序相匹配,并提供路由通信程序去訪問硬件設(shè)備的機(jī)制;同時(shí)使框架路由通信系統(tǒng)上層的軟件也能夠通過路由通信程序操作井下設(shè)備完成特定的功能。
2.1 路由通信類型優(yōu)化
由于不同的井下設(shè)備所執(zhí)行的任務(wù)是不同的,Struts將井下設(shè)備路由通信程序分為如下幾類:
(1)串行井下設(shè)備路由通信。用于控制串口井下設(shè)備,這些設(shè)備可以被配置作為Struts框架下路由通信系統(tǒng)的控制臺(tái),軟件可以通過Open()、Read()、Write()、Ioctl()等函數(shù)訪問此類設(shè)備。
(2)存儲(chǔ)井下設(shè)備路由通信。用于控制磁盤、硬盤、Flash等井下設(shè)備。
(3)網(wǎng)絡(luò)井下設(shè)備路由通信。用于井下設(shè)備路由通信網(wǎng)絡(luò)。
(4)非易失性RAM路由通信。主要用于NVRAM的路由通信。
(5)定時(shí)器路由通信。主要用于定時(shí)和計(jì)數(shù)。
(6)DMA控制器路由通信。
(7)總線控制器路由通信。對(duì)不同總線的井下設(shè)備提供統(tǒng)一的接口,在Struts上下文中,CPU總線被稱為PLB(Processor Local Bus)。很多井下設(shè)備都是直接連接到這個(gè)總線上的,當(dāng)連接到其他總線類型的井下設(shè)備連接到PLB上時(shí),就需要總線控制器路由通信的支持。
(8)USB路由通信。路由通信USB井下設(shè)備。
(9)中斷控制器路由通信。
(10)多重功能路由通信。某些外圍芯片包括多種邏輯,如多個(gè)時(shí)鐘、多個(gè)DMA、一個(gè)或多個(gè)網(wǎng)口、一個(gè)USB、一個(gè)PCI總線等,此時(shí)需要用這種路由通信來最大化代碼的重用率,同時(shí)降低系統(tǒng)內(nèi)存的占用。
(11)遠(yuǎn)程處理器路由通信。用于控制子CPU系統(tǒng)。
(12)控制臺(tái)路由通信。通過控制或檢查鍵盤、鼠標(biāo)和顯示器等井下設(shè)備以圖形化的方式顯示系統(tǒng)信息。
(13)資源路由通信。當(dāng)外設(shè)有可使用的資源時(shí),這些資源可以分享給系統(tǒng),供其他需要此資源的外設(shè)使用。此時(shí),其他外設(shè)將通過資源路由通信程序查詢到可使用資源。
(14)其他路由通信。不包括在上述幾類路由通信程序中的路由通信,如A/D,D/A等井下設(shè)備的路由通信程序。
2.2 路由通信生命周期優(yōu)化
從系統(tǒng)上電啟動(dòng)開始,基于Struts的井下設(shè)備路由通信程序初始化流程如下:
(1)前期系統(tǒng)啟動(dòng)加載階段。此時(shí)系統(tǒng)的工作基于處理器的特定架構(gòu),CPU會(huì)跳轉(zhuǎn)到上電后的第一條地址開始執(zhí)行指令。此時(shí)的指令只是初始化內(nèi)存控制器和CPU,然后開始執(zhí)行Struts的初始化。
(2)SysHwInit()、PLB和發(fā)現(xiàn)硬件階段。此時(shí)將執(zhí)行SysHwInit()函數(shù),這個(gè)函數(shù)由BSP提供,它將完成早期的CPU初始化工作,然后調(diào)用Hard WareInter FaceInit()函數(shù)。第一個(gè)被激活的路由通信是PLB(處理器本地總線)。它是一種路由通信控制總線,通過BSP提供的表來探測(cè)直接連接在其總線上面的井下設(shè)備。
(3)路由通信注冊(cè)階段。在調(diào)用Hard WareInter Face BusInit()函數(shù)期間,每個(gè)路由通信都會(huì)調(diào)用VxbDevRegister()函數(shù)來告知系統(tǒng)自己可用,并提供給系統(tǒng)相關(guān)的信息。
(4)基于Struts井下設(shè)備路由通信初始化第一階段。在路由通信和井下設(shè)備關(guān)聯(lián)成立之后,Struts立刻檢測(cè)注冊(cè)結(jié)構(gòu)體,這個(gè)結(jié)構(gòu)體在路由通信調(diào)用VxbDevRegister()時(shí)產(chǎn)生,它包含許多井下設(shè)備路由通信的初始化的入口地址。這些入口地址第一個(gè)便是指向DevInstanceInit()函數(shù)。此函數(shù)在路由通信初始化第一階段被調(diào)用,此時(shí)雖然路由通信系統(tǒng)的許多服務(wù)還不可用,對(duì)初始化的井下設(shè)備還有種種的限制,但是井下設(shè)備將被第一次初始化,使井下設(shè)備達(dá)到一個(gè)穩(wěn)定的狀態(tài)(此時(shí)必須關(guān)閉中斷)。
(5)內(nèi)核啟動(dòng)階段。完成了所有井下設(shè)備在Sturts系統(tǒng)注冊(cè)之后,Hard WareInter Face BusInit()函數(shù)和Hard Ware Inter Face Init()函數(shù)返回,SysH-wInit()也將對(duì)非Struts井下設(shè)備路由通信初始化。當(dāng)SysHwInit()函數(shù)完成時(shí),Struts內(nèi)核初始化也完成了。下一階段對(duì)基于Struts井下設(shè)備路由通信的初始化將發(fā)生在SysHwInit2()函數(shù)里。
(6)基于Struts井下設(shè)備路由通信初始化第二階段。在SysHwInit2()函數(shù)里,VxbDevInit()和DevInstanceInit2()函數(shù)將被調(diào)用。此時(shí)內(nèi)核多種服務(wù)已經(jīng)被初始化并且可以被路由通信所用,但是中間件(例如網(wǎng)絡(luò)的MUX)的服務(wù)還不可用。
(7)基于Struts井下設(shè)備路由通信初始化第三階段。在SysHwInit2()函數(shù)執(zhí)行的最后,會(huì)產(chǎn)生一個(gè)任務(wù),這個(gè)任務(wù)將完成基于Struts井下油田設(shè)備路由通信初始化的最后一個(gè)階段。
2.3 路由通信注冊(cè)順序
如果某一井下設(shè)備路由通信程序是獨(dú)立的不依賴于其他設(shè)備,設(shè)該路由通信注冊(cè)的順序無關(guān)緊要。但是在Struts里,路由通信程序的注冊(cè)要遵循一定的順序。
首先是對(duì)中斷的管理。在基于Struts井下設(shè)備路由通信初始化第二階段,某些設(shè)備路由通信程序在調(diào)用DevInstanceInit2()函數(shù)時(shí),VxbIntConnect()函數(shù)將被調(diào)用。中斷控制器必須能夠在基于Struts路由通信初始化第一階段的DevInstanceInit()函數(shù)里提供服務(wù)。
有時(shí)井下設(shè)備被探測(cè)到的順序會(huì)影響總線控制器上設(shè)備的行為。在設(shè)備被探測(cè)和井下設(shè)備路由通信匹配階段,總線控制器用來發(fā)現(xiàn)位于總線上面的設(shè)備。這表明,直到總線控制器路由通信與井下設(shè)備關(guān)聯(lián)之后,總線上的設(shè)備才被發(fā)現(xiàn)。因此,在devInstanceInit()階段,PLB上面的井下設(shè)備將會(huì)關(guān)聯(lián)到設(shè)備路由通信,而其他總線上面的設(shè)備在系統(tǒng)啟動(dòng)的早期是不可用的。
2.4 井下設(shè)備的可視化配置
開發(fā)完成基于Struts架構(gòu)的井下設(shè)備路由通信之后,并不能立刻讓該路由通信井下設(shè)備在Wind River Worke Space 3.0的Struts 6.6開發(fā)的環(huán)境中可視化配置,此時(shí)還需要增加或修改相關(guān)的配置文件,才能讓基于Struts架構(gòu)的路由通信真正實(shí)現(xiàn)可視化配置。
通過對(duì)Strurts架構(gòu)的設(shè)計(jì)與分析,以及對(duì)井下設(shè)備通信的啟動(dòng)服務(wù)過程分析,建立油田服務(wù)通信模型,對(duì)油田通信的各個(gè)組件進(jìn)行路由選擇,對(duì)各個(gè)執(zhí)行的函數(shù)進(jìn)行優(yōu)化控制,提高了路由通信的功能,對(duì)選擇最優(yōu)通信模式具有重要的作用。具體優(yōu)化過程中需要對(duì)配置文件進(jìn)行分析,實(shí)現(xiàn)路由控制管理,對(duì)各種配置信息進(jìn)行優(yōu)化,按照初始化函數(shù)的要求,提升數(shù)據(jù)通信的基本功能。按照三層體系結(jié)構(gòu)進(jìn)行路由信息控制,達(dá)到了路由通信優(yōu)化的目的。
(欄目主持關(guān)梅君)
10.3969/j.issn.1006-6896.2014.2.048