VxWorks操作系統(tǒng)的多路高速串口的通信方法分析_第1頁
VxWorks操作系統(tǒng)的多路高速串口的通信方法分析_第2頁
VxWorks操作系統(tǒng)的多路高速串口的通信方法分析_第3頁
VxWorks操作系統(tǒng)的多路高速串口的通信方法分析_第4頁
VxWorks操作系統(tǒng)的多路高速串口的通信方法分析_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、【W(wǎng)ord版本下載可任意編輯】 VxWorks操作系統(tǒng)的多路高速串口的通信方法分析 隨著科學(xué)技術(shù)的發(fā)展,串口通信具有傳輸距離遠(yuǎn)、傳輸穩(wěn)定、簡單實(shí)用等特點(diǎn),已被廣泛應(yīng)用于工業(yè)控制、數(shù)據(jù)采集、網(wǎng)絡(luò)通信等領(lǐng)域。在這些應(yīng)用領(lǐng)域中,串口通信用于實(shí)時(shí)地從各個(gè)串口接收數(shù)據(jù),而向各個(gè)串口發(fā)送的主要是控制信息,一般不要求嚴(yán)格的實(shí)時(shí)性。因此提高串口設(shè)備接收的實(shí)時(shí)性至關(guān)重要。 可見中斷和輪詢方式都不能滿足不同負(fù)載情況下系統(tǒng)的實(shí)時(shí)性要求。本文借鑒Linux系統(tǒng)中NAPI方法,結(jié)合中斷與輪詢的優(yōu)點(diǎn),提出一種輪詢與中斷結(jié)合的調(diào)度方式。這種調(diào)度機(jī)制在多串口系統(tǒng)中,當(dāng)負(fù)載在不同的串口通道不均衡時(shí),可以提高CPU的利用效率,并

2、能滿足業(yè)務(wù)的時(shí)延要求。另外,根據(jù)到達(dá)數(shù)據(jù)量分析得出了輪詢、中斷切換門限和輪詢周期。 1 算法描述 在同一系統(tǒng)中處理相同業(yè)務(wù)量時(shí),中斷和輪詢處理的時(shí)間相同。因?yàn)檫^程相同,都是把數(shù)據(jù)從外設(shè)緩沖搬移到CPU內(nèi)存中,所不同的是中斷開展上下文切換要占據(jù)系統(tǒng)開銷,而輪詢只是查詢一下存放器狀態(tài)。相比之下,輪詢占用CPU的時(shí)間很短,一般中斷為幾個(gè)s,輪詢?yōu)閹装賜s,根據(jù)不同系統(tǒng)而有差異。相反,在數(shù)據(jù)量比較小的情況下輪詢中存在空轉(zhuǎn)情況,無疑增加了系統(tǒng)開銷。 目前,處理中斷和輪詢互換的方法有定時(shí)中斷法(Clocked Interrupts),即設(shè)置一個(gè)定時(shí)器,定時(shí)器到時(shí),如果有中斷,則響應(yīng)中斷,調(diào)用中斷服務(wù)程序處

3、理數(shù)據(jù)。這種方法在數(shù)據(jù)量大時(shí)類似于輪詢,在負(fù)載小時(shí)中斷由異步事件觸發(fā)降低了開銷。但是這種機(jī)制需要一個(gè)的、頻率很高的系統(tǒng)時(shí)鐘,并且這種方法受固定定時(shí)周期的限制,不是在任何情況下都有效。 在并行系統(tǒng)中還應(yīng)用了一種叫輪詢定時(shí)(Polling Watchdog)的機(jī)制,這種方法主要是為了解決接收處理中的等待時(shí)延問題。基本思想就是在輪詢接收開始時(shí)設(shè)置一個(gè)看門狗定時(shí)器,以滿足業(yè)務(wù)的時(shí)延要求,而且中斷要在接收超時(shí)才產(chǎn)生。此方法的缺陷之處是在負(fù)載小時(shí)解決不了輪詢空轉(zhuǎn)問題。 混合中斷、輪詢方式(HIP)主要應(yīng)用在網(wǎng)絡(luò)接口系統(tǒng)中。工作方式為基于觀測接收的負(fù)載,改變切換門限,自動(dòng)在中斷和輪詢兩種方式中切換。中斷方式

4、沒有考慮到超時(shí)中斷,當(dāng)數(shù)據(jù)到達(dá)間隔很大時(shí),會(huì)降低實(shí)時(shí)性。在比較中斷和輪詢開銷時(shí),定義VI+V(B)為中斷開銷,其中VI為中斷的固有開銷,V(B)為系統(tǒng)接收B字節(jié)數(shù)據(jù)的開銷,VP+V(B)為輪詢開銷,VP為輪詢的固有開銷。但在輪詢和中斷接收中,中斷和輪詢所接收的數(shù)據(jù)可能不相等,中斷開銷和輪詢開銷便失去了比較意義。 以上幾種方法均有缺陷,但在多路串口系統(tǒng)中,還各有不同的特點(diǎn),即在每個(gè)獨(dú)立的通道可能存在不同的負(fù)載情況。如果對(duì)全部的串口通道統(tǒng)一應(yīng)用中斷方式或查詢方式,則顯然不能適應(yīng)各自串口通道的數(shù)據(jù)量,不能滿足系統(tǒng)實(shí)時(shí)性和高效率的綜合要求。根據(jù)這一特點(diǎn),提出了在多路串口系統(tǒng)中,輪詢和中斷相結(jié)合的接收策

5、略,在中斷方式下還靈活應(yīng)用了批中斷技術(shù)。 算法描述: com0=pollingcomN=polling For comID0 up to comMAX If TI or PU=PUMAX Then comID=interrupt DelList(comID) N路串口的初始狀態(tài)為輪詢,檢查輪詢隊(duì)列,如果數(shù)據(jù)到達(dá)間隔時(shí)間TI大于門限或者輪詢空轉(zhuǎn)次數(shù)PU等于空轉(zhuǎn)門限PUMAX,則該端口改為中斷狀態(tài),在輪詢隊(duì)列中刪除該端口。根據(jù)不同的系統(tǒng),間隔時(shí)間門限和空轉(zhuǎn)門限PUMAX的取值不同。 If TI Then comID=polling AddList(comID) 在中斷狀態(tài)下,如果數(shù)據(jù)到達(dá)間隔時(shí)間T

6、I小于門限,則該端口改為輪詢狀態(tài),在輪詢隊(duì)列中增加該端口。 2 門限設(shè)計(jì) 如果事件隨機(jī)發(fā)生而且發(fā)生頻率很低,以致大多數(shù)輪詢都認(rèn)為事件沒有發(fā)生,則中斷就會(huì)是的事件通知機(jī)制;如果事件定期發(fā)生且可以預(yù)測,而大多數(shù)輪詢都發(fā)現(xiàn)事件已發(fā)生,則機(jī)制是輪詢。在這兩者之間存在這樣一種情況,即輪詢行為和反應(yīng)型行為的效果都相同,在它們之間如何選擇都無關(guān)緊要。這種情況即為所尋找的輪詢和中斷的切換門限。 2.1 門限度量標(biāo)準(zhǔn)的選擇 數(shù)據(jù)多少的衡量都是以單位時(shí)間內(nèi)的吞吐量計(jì)算,即數(shù)據(jù)速率。如果以吞吐率的多少作為切換門限的標(biāo)準(zhǔn),則在分組定長情況下,這種計(jì)算方法可以近似表達(dá)出負(fù)載情況,但當(dāng)分組不定長時(shí)就不能表達(dá)實(shí)際負(fù)載了,如

7、圖1所示的四種情況。 圖1(a)和圖1(b)的分組長度不同,但之間的到達(dá)間隔都很小。計(jì)算得出圖1(b)單位時(shí)間的吞吐率明顯要比圖1(a)小,但如果圖1(b)采用中斷方式,就要頻繁地響應(yīng)中斷,效率將大大降低。圖1(d)的分組很長,接收中接收到的數(shù)據(jù)非常多,但之間的到達(dá)間隔很長,如果計(jì)算吞吐率選擇的單位時(shí)間正好為數(shù)據(jù)接收時(shí)間,在這一段時(shí)間內(nèi)吞吐率很大,則誤認(rèn)為數(shù)據(jù)量很大,選擇輪詢方式接收。相比之下,圖1(c)和圖1(d)選用中斷方式更為理想。 根據(jù)以上分析可以發(fā)現(xiàn),用數(shù)據(jù)到達(dá)的時(shí)間間隔可以近似地表示數(shù)據(jù)量的大小。如果數(shù)據(jù)到達(dá)間隔很小,且頻繁到達(dá),則認(rèn)為負(fù)載很大,選擇輪詢方式;如果數(shù)據(jù)到達(dá)間隔很大,

8、則認(rèn)為負(fù)載很小,選擇中斷方式。在輪詢方式中,如果根據(jù)已知的到達(dá)時(shí)間,推算出下一數(shù)據(jù)的到達(dá)時(shí)間,根據(jù)計(jì)算出的結(jié)果來設(shè)定輪詢周期,則輪詢效率更加提升。 2.2 門限的計(jì)算 上述計(jì)算到達(dá)間隔判斷切換時(shí)機(jī)的方式,不能表達(dá)數(shù)據(jù)到達(dá)間隔的變化規(guī)律??蛇x用平均到達(dá)時(shí)間的均方根和均值的比值作為判斷切換的標(biāo)準(zhǔn),這個(gè)比值系數(shù)代表了平均到達(dá)時(shí)間的變化程度。當(dāng)比值小時(shí)說明預(yù)測的值與平均值偏差很小,數(shù)據(jù)到達(dá)的間隔時(shí)間是有規(guī)律的,可以預(yù)測。這種情況顯然要應(yīng)用輪詢方式,把輪詢周期設(shè)為平均到達(dá)間隔時(shí)間。 平均到達(dá)間隔時(shí)間的計(jì)算方法如下式: 式中:D為一個(gè)數(shù)據(jù)到達(dá)的間隔時(shí)間;為平均到達(dá)間隔時(shí)間的加權(quán)系數(shù),控制著D相對(duì)于以往的到

9、達(dá)時(shí)間間隔歷史所占的比重。用這種方法,平均到達(dá)間隔時(shí)間就可以積累到達(dá)間隔時(shí)間了。 平均到達(dá)時(shí)間的方差用下式估計(jì): 式中:為到達(dá)間隔時(shí)間的方差加權(quán)系數(shù),且控制估計(jì)器的記憶性。2開方就得到平均到達(dá)間隔時(shí)間的均方根了。 下式說明了切換到輪詢時(shí)的門限: 式中:為預(yù)測門限,為系統(tǒng)可容忍的輪詢周期,在本系統(tǒng)中為滿足上層的應(yīng)用,為20 ms。說明數(shù)據(jù)到達(dá)間隔規(guī)律;說明平均到達(dá)間隔小于系統(tǒng)所能忍受的間隔。數(shù)據(jù)到達(dá)不頻繁,認(rèn)為滿足以上兩個(gè)條件時(shí)切換到輪詢模式;當(dāng)滿足的條件相反時(shí),切換到中斷方式。 3 實(shí)例分析 在可接收10路空*號(hào)的多串口系統(tǒng)中對(duì)該算法開展實(shí)現(xiàn),系統(tǒng)構(gòu)造如圖2。該系統(tǒng)可將數(shù)據(jù)信息(主要為語音數(shù)據(jù)

10、)接收后轉(zhuǎn)換為以太網(wǎng)數(shù)據(jù)包,通過10MHz以太網(wǎng)口送出。同時(shí),它從以太網(wǎng)口接收來自控制臺(tái)的各類指令,完成相應(yīng)的處理任務(wù)。 信號(hào)經(jīng)過1:10功分器,分給10個(gè)RF接收模塊,完成RF接收,輸出串行信號(hào),每路串口為串行信號(hào)的速率115.2kbps,RF接收模塊每20ms發(fā)一個(gè)數(shù)據(jù)包,一個(gè)數(shù)據(jù)包為30bit。之后串行信號(hào)經(jīng)過3片OX16C954(每片有4路UART)轉(zhuǎn)換成并行總線信號(hào),輸出給MPC860T(CPU)。每片OX16C954設(shè)置有128B的環(huán)形緩沖區(qū),所以經(jīng)過時(shí)間緩沖區(qū)就會(huì)被寫滿。為了保證不丟失數(shù)據(jù),應(yīng)該在8.8ms內(nèi)完成對(duì)10個(gè)終端接收模塊開展接收。OX16C954中斷門限設(shè)為64B,當(dāng)

11、接收緩沖超過64B時(shí),OX16C954產(chǎn)生接收中斷。在OX16C954還設(shè)置有超時(shí)中斷,當(dāng)從接收一個(gè)停止位中心開始計(jì)時(shí),在四個(gè)符號(hào)周期內(nèi)沒有接收新的信息,即就產(chǎn)生超時(shí)中斷。批中斷的應(yīng)用如圖3。多個(gè)串口通過CPLD共享一個(gè)中斷源,在中斷頻繁,多個(gè)串口同時(shí)產(chǎn)生中斷的情況下,實(shí)現(xiàn)了批中斷,節(jié)約了中斷資源,提高了中斷效率。 本系統(tǒng)的設(shè)計(jì)基于VxWorks操作系統(tǒng)。VxWorks操作系統(tǒng)提供對(duì)多種處理器的廣泛支持,具有完善的開發(fā)環(huán)境、開放的軟件接口、優(yōu)異的實(shí)時(shí)性能和全面可靠的網(wǎng)絡(luò)功能及良好的可裁剪性,適用于各種嵌入式環(huán)境的開發(fā)。 程序?qū)崿F(xiàn)過程:系統(tǒng)加電待操作系統(tǒng)啟動(dòng)之后,應(yīng)用程序首先根據(jù)主控和PC機(jī)的I

12、P地址,得到它們的MAC地址,為以后開展UDP數(shù)據(jù)傳送做準(zhǔn)備;初始化MPC860T的Port C口,把PC12、PC15初始化為數(shù)據(jù)輸出口,分別用于點(diǎn)亮運(yùn)行時(shí)的狀態(tài)燈和設(shè)置/去除硬件看門狗;初始化OX16C954,打開10路串口,接收終端模塊的數(shù)據(jù);同時(shí)向終端模塊發(fā)送數(shù)據(jù),初始化UDP協(xié)議棧;,進(jìn)入無限循環(huán)中,從各個(gè)串口收集數(shù)據(jù),解開數(shù)據(jù)包,以UDP的方式,把話音包發(fā)給PC機(jī),把非話音包發(fā)給主控;同時(shí),從網(wǎng)絡(luò)上接收來自主控的UDP數(shù)據(jù),根據(jù)端口號(hào),把數(shù)據(jù)轉(zhuǎn)發(fā)給各個(gè)終端模塊。PC機(jī)不直接向DPM發(fā)送UDP數(shù)據(jù),只有主控向各個(gè)終端發(fā)送數(shù)據(jù),故由DPM至PC機(jī)的數(shù)據(jù)為單向。管理看門狗,每循環(huán),開關(guān)看

13、門狗,處理狀態(tài)燈。整個(gè)程序的流程如圖4所示。 在10路都沒有數(shù)據(jù)的極限情況下測量輪詢開銷VP。在這種極限情況下,應(yīng)用全中斷的方式,10路串口沒有數(shù)據(jù)不會(huì)產(chǎn)生中斷,中斷開銷為0;應(yīng)用全輪詢的方式,CPU每次只查詢外部存放器但不接收數(shù)據(jù),所以每次CPU都是空轉(zhuǎn),測量出來的為輪詢的固定開銷VP=163.84s。在這種情況下,中斷顯然要優(yōu)于輪詢。 3.1 均衡負(fù)載 在多路負(fù)載均衡的情況下,測量中斷吞吐率OI=B1為到達(dá)OX16C954中斷門限后,觸發(fā)的接收中斷所接收的數(shù)據(jù)量(B164B);B2為產(chǎn)生超時(shí)中斷時(shí)所接收的數(shù)據(jù)量(B264B)。輪詢吞吐率OP=B為輪詢接收的數(shù)據(jù)量。如圖5所示,在VxWorks系統(tǒng)中1tick=1/8000(s)。因?yàn)樵O(shè)置了中斷門限,所以中斷在數(shù)據(jù)量低的時(shí)刻有一個(gè)躍變;輪詢的躍變由輪詢的周期設(shè)置,如果改變輪詢周期,躍變點(diǎn)將發(fā)生轉(zhuǎn)移。輪詢的吞吐率隨輸入數(shù)據(jù)量的增加而呈線性增長;在數(shù)據(jù)量低時(shí)中斷要優(yōu)于輪詢,隨著數(shù)據(jù)量的增長輪詢就要優(yōu)于中斷,在兩者相交的時(shí)刻,通過實(shí)驗(yàn)可以找到和PUMAX的值。 3.2 非均衡負(fù)載情況 非均衡負(fù)載情況,即m1路數(shù)據(jù)負(fù)載大、m2路數(shù)據(jù)負(fù)載小的情況(m1+m2=10)下,測量OI、OP和OC(中斷和輪詢相結(jié)合的吞吐率)。如圖6所示,在橫坐標(biāo)為1處,為m1=3,m2=7的情況,由于應(yīng)用了批中斷,中斷的效率

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論