<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于VxWorks的多路高速串口的通信方法設計

基于VxWorks的多路高速串口的通信方法設計

作者: 時(shí)間:2010-09-18 來(lái)源:網(wǎng)絡(luò ) 收藏

信號經(jīng)過(guò)1:10功分器,分給10個(gè)RF接收模塊,完成RF接收,輸出串行信號,每路串口為串行信號的最大速率115.2kbps,RF接收模塊每20ms發(fā)一個(gè)數據包,一個(gè)數據包最大為30bit。之后串行信號經(jīng)過(guò)3片OX16C954(每片有4路UART)轉換成并行總線(xiàn)信號,輸出給MPC860T(CPU)。每片OX16C954設置有128B的環(huán)形緩沖區,所以經(jīng)過(guò)時(shí)間緩沖區就會(huì )被寫(xiě)滿(mǎn)。為了保證不丟失數據,應該在8.8ms內完成對10個(gè)終端接收模塊進(jìn)行一次接收。OX16C954門(mén)限設為64B,當接收緩沖超過(guò)64B時(shí),OX16C954產(chǎn)生接收。在OX16C954還設置有超時(shí),當從接收最后一個(gè)停止位中心開(kāi)始計時(shí),在四個(gè)符號周期內沒(méi)有接收新的信息,即就產(chǎn)生超時(shí)中斷。批中斷的應用如圖3。多個(gè)串口通過(guò)CPLD共享一個(gè)中斷源,在中斷頻繁,多個(gè)串口同時(shí)產(chǎn)生中斷的情況下,實(shí)現了批中斷,節約了中斷資源,提高了中斷效率。

本系統的設計基于VxWorks操作系統。VxWorks操作系統提供對多種處理器的廣泛支持,具有完善的開(kāi)發(fā)環(huán)境、開(kāi)放的軟件接口、優(yōu)異的實(shí)時(shí)性能和全面可靠的網(wǎng)絡(luò )功能及良好的可裁剪性,適用于各種嵌入式環(huán)境的開(kāi)發(fā)。

程序實(shí)現過(guò)程:系統加電待操作系統啟動(dòng)之后,應用程序首先根據主控和PC機的IP地址,得到它們的MAC地址,為以后進(jìn)行UDP數據傳送做準備;初始化MPC860T的Port C口,把PC12、PC15初始化為數據輸出口,分別用于點(diǎn)亮運行時(shí)的狀態(tài)燈和設置/清除硬件看門(mén)狗;初始化OX16C954,打開(kāi)10路串口,接收終端模塊的數據;同時(shí)向終端模塊發(fā)送數據,初始化UDP協(xié)議棧;最后,進(jìn)入無(wú)限循環(huán)中,從各個(gè)串口收集數據,解開(kāi)數據包,以UDP的方式,把話(huà)音包發(fā)給PC機,把非話(huà)音包發(fā)給主控;同時(shí),從網(wǎng)絡(luò )上接收來(lái)自主控的UDP數據,根據端口號,把數據轉發(fā)給各個(gè)終端模塊。PC機不直接向DPM發(fā)送UDP數據,只有主控向各個(gè)終端發(fā)送數據,故由DPM至PC機的數據為單向。管理看門(mén)狗,每循環(huán)一次,開(kāi)關(guān)一次看門(mén)狗,處理一次狀態(tài)燈。整個(gè)程序的流程如圖4所示。

在10路都沒(méi)有數據的極限情況下測量開(kāi)銷(xiāo)VP。在這種極限情況下,應用全中斷的方式,10路串口沒(méi)有數據不會(huì )產(chǎn)生中斷,中斷開(kāi)銷(xiāo)為0;應用全的方式,CPU每次只查詢(xún)外部寄存器但不接收數據,所以每次CPU都是空轉,測量出來(lái)的為的固定開(kāi)銷(xiāo)VP=163.84μs。在這種情況下,中斷顯然要優(yōu)于輪詢(xún)。

3.1 均衡負載
在多路負載均衡的情況下,測量中斷吞吐率OI=B1為達到OX16C954中斷門(mén)限后,觸發(fā)的接收中斷所接收的數據量(B1≥64B);B2為產(chǎn)生超時(shí)中斷時(shí)所接收的數據量(B2≤64B)。輪詢(xún)吞吐率OP=B′為輪詢(xún)接收的數據量。如圖5所示,在VxWorks系統中1tick=1/8000(s)。因為設置了中斷門(mén)限,所以中斷在數據量低的時(shí)刻有一個(gè)躍變;輪詢(xún)的躍變由輪詢(xún)的周期設置,如果改變輪詢(xún)周期,躍變點(diǎn)將發(fā)生轉移。輪詢(xún)的吞吐率隨輸入數據量的增加而呈線(xiàn)性增長(cháng);在數據量低時(shí)中斷要優(yōu)于輪詢(xún),隨著(zhù)數據量的增長(cháng)輪詢(xún)就要優(yōu)于中斷,在兩者相交的時(shí)刻,通過(guò)實(shí)驗可以找到γ和PUMAX的值。

3.2 非均衡負載情況

非均衡負載情況,即m1路數據負載大、m2路數據負載小的情況(m1+m2=10)下,測量OI、OP和OC(中斷和輪詢(xún)相結合的吞吐率)。如圖6所示,在橫坐標為1處,為m1=3,m2=7的情況,由于應用了批中斷,中斷的效率要優(yōu)于輪詢(xún),中斷和輪詢(xún)相結合的方法要略?xún)?yōu)于中斷;在橫坐標為2處,為m1=5,m2=5的情況,相結合的方法要略?xún)?yōu)于中斷和輪詢(xún);在橫坐標3處為m1=7,m2=3的情況,相結合的方法近似輪詢(xún),要優(yōu)于中斷。


本文在綜合分析各種串口接收方式不足的基礎上,提出了中斷和輪詢(xún)相結合的方法。實(shí)驗結果表明,在滿(mǎn)足系統實(shí)時(shí)性要求的前提下,改進(jìn)后的系統吞吐率比應用單一的中斷或輪詢(xún)方式在多路高速串口系統中、各串口負載不均衡的情況下,得到了明顯的提高。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 高速多串口 中斷 輪詢(xún)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>