基于VxWorks的多路高速串口的通信方法設(shè)計
信號經(jīng)過1:10功分器,分給10個RF接收模塊,完成RF接收,輸出串行信號,每路串口為串行信號的最大速率115.2kbps,RF接收模塊每20ms發(fā)一個數(shù)據(jù)包,一個數(shù)據(jù)包最大為30bit。之后串行信號經(jīng)過3片OX16C954(每片有4路UART)轉(zhuǎn)換成并行總線信號,輸出給MPC860T(CPU)。每片OX16C954設(shè)置有128B的環(huán)形緩沖區(qū),所以經(jīng)過時間緩沖區(qū)就會被寫滿。為了保證不丟失數(shù)據(jù),應(yīng)該在8.8ms內(nèi)完成對10個終端接收模塊進(jìn)行一次接收。OX16C954中斷門限設(shè)為64B,當(dāng)接收緩沖超過64B時,OX16C954產(chǎn)生接收中斷。在OX16C954還設(shè)置有超時中斷,當(dāng)從接收最后一個停止位中心開始計時,在四個符號周期內(nèi)沒有接收新的信息,即就產(chǎn)生超時中斷。批中斷的應(yīng)用如圖3。多個串口通過CPLD共享一個中斷源,在中斷頻繁,多個串口同時產(chǎn)生中斷的情況下,實現(xiàn)了批中斷,節(jié)約了中斷資源,提高了中斷效率。
本系統(tǒng)的設(shè)計基于VxWorks操作系統(tǒng)。VxWorks操作系統(tǒng)提供對多種處理器的廣泛支持,具有完善的開發(fā)環(huán)境、開放的軟件接口、優(yōu)異的實時性能和全面可靠的網(wǎng)絡(luò)功能及良好的可裁剪性,適用于各種嵌入式環(huán)境的開發(fā)。
程序?qū)崿F(xiàn)過程:系統(tǒng)加電待操作系統(tǒng)啟動之后,應(yīng)用程序首先根據(jù)主控和PC機(jī)的IP地址,得到它們的MAC地址,為以后進(jìn)行UDP數(shù)據(jù)傳送做準(zhǔn)備;初始化MPC860T的Port C口,把PC12、PC15初始化為數(shù)據(jù)輸出口,分別用于點亮運行時的狀態(tài)燈和設(shè)置/清除硬件看門狗;初始化OX16C954,打開10路串口,接收終端模塊的數(shù)據(jù);同時向終端模塊發(fā)送數(shù)據(jù),初始化UDP協(xié)議棧;最后,進(jìn)入無限循環(huán)中,從各個串口收集數(shù)據(jù),解開數(shù)據(jù)包,以UDP的方式,把話音包發(fā)給PC機(jī),把非話音包發(fā)給主控;同時,從網(wǎng)絡(luò)上接收來自主控的UDP數(shù)據(jù),根據(jù)端口號,把數(shù)據(jù)轉(zhuǎn)發(fā)給各個終端模塊。PC機(jī)不直接向DPM發(fā)送UDP數(shù)據(jù),只有主控向各個終端發(fā)送數(shù)據(jù),故由DPM至PC機(jī)的數(shù)據(jù)為單向。管理看門狗,每循環(huán)一次,開關(guān)一次看門狗,處理一次狀態(tài)燈。整個程序的流程如圖4所示。
在10路都沒有數(shù)據(jù)的極限情況下測量輪詢開銷VP。在這種極限情況下,應(yīng)用全中斷的方式,10路串口沒有數(shù)據(jù)不會產(chǎn)生中斷,中斷開銷為0;應(yīng)用全輪詢的方式,CPU每次只查詢外部寄存器但不接收數(shù)據(jù),所以每次CPU都是空轉(zhuǎn),測量出來的為輪詢的固定開銷VP=163.84μs。在這種情況下,中斷顯然要優(yōu)于輪詢。
3.1 均衡負(fù)載
在多路負(fù)載均衡的情況下,測量中斷吞吐率OI=B1為達(dá)到OX16C954中斷門限后,觸發(fā)的接收中斷所接收的數(shù)據(jù)量(B1≥64B);B2為產(chǎn)生超時中斷時所接收的數(shù)據(jù)量(B2≤64B)。輪詢吞吐率OP=B′為輪詢接收的數(shù)據(jù)量。如圖5所示,在VxWorks系統(tǒng)中1tick=1/8000(s)。因為設(shè)置了中斷門限,所以中斷在數(shù)據(jù)量低的時刻有一個躍變;輪詢的躍變由輪詢的周期設(shè)置,如果改變輪詢周期,躍變點將發(fā)生轉(zhuǎn)移。輪詢的吞吐率隨輸入數(shù)據(jù)量的增加而呈線性增長;在數(shù)據(jù)量低時中斷要優(yōu)于輪詢,隨著數(shù)據(jù)量的增長輪詢就要優(yōu)于中斷,在兩者相交的時刻,通過實驗可以找到γ和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)用了批中斷,中斷的效率要優(yōu)于輪詢,中斷和輪詢相結(jié)合的方法要略優(yōu)于中斷;在橫坐標(biāo)為2處,為m1=5,m2=5的情況,相結(jié)合的方法要略優(yōu)于中斷和輪詢;在橫坐標(biāo)3處為m1=7,m2=3的情況,相結(jié)合的方法近似輪詢,要優(yōu)于中斷。
本文在綜合分析各種串口接收方式不足的基礎(chǔ)上,提出了中斷和輪詢相結(jié)合的方法。實驗結(jié)果表明,在滿足系統(tǒng)實時性要求的前提下,改進(jìn)后的高速多串口系統(tǒng)吞吐率比應(yīng)用單一的中斷或輪詢方式在多路高速串口系統(tǒng)中、各串口負(fù)載不均衡的情況下,得到了明顯的提高。
評論