<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>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于μC/OS-II接入網(wǎng)接口的研究與設計

基于μC/OS-II接入網(wǎng)接口的研究與設計

作者: 時(shí)間:2007-10-15 來(lái)源:網(wǎng)絡(luò ) 收藏
摘 要:首先介紹了V5的技術(shù)規范,分析其協(xié)議棧結構;接著(zhù),研究μC/OS-Ⅱ實(shí)時(shí)嵌入系統的一些特點(diǎn);最后提出了以μC/OS-Ⅱ實(shí)時(shí)系統為平臺實(shí)現V5的軟件框架,并通過(guò)圖例具體說(shuō)明各個(gè)模塊的作用。對協(xié)議實(shí)現中有限狀態(tài)機及定時(shí)器等難點(diǎn)問(wèn)題進(jìn)行了具體討論。
關(guān)鍵詞:V5;實(shí)時(shí);多任務(wù)嵌入式系統

引 言

隨著(zhù)(AN)范圍內多種傳輸媒介、多種接入配置和業(yè)務(wù)發(fā)展的需要,ITU制定了V5.1接口的G.964建議和V5.2接口的G.965建議。這些標準的制定使得交換機可以通過(guò)此接口支持多種類(lèi)型的用戶(hù)接入,其開(kāi)放性使得交換機和的技術(shù)和業(yè)務(wù)完全獨立開(kāi)來(lái)。的發(fā)展可以不受交換機的限制,使得接入網(wǎng)市場(chǎng)完全開(kāi)放。根據速率不同,V5接口分為V5.1和V5.2接口。

V5通信接口協(xié)議

V5.1接口由單個(gè)2048kbit/S鏈路構成,用于支持模擬電話(huà)接入以及基于64kbit/S的綜合業(yè)務(wù)數字網(wǎng)(ISDN)基本接入和用于半永久連接的、不加帶外信令信息的其他模擬接入或數字接入。

V5.2接口按需要可以由1~16個(gè)2048kbit/S鏈路構成,除了支持V5.1接口提供的接入類(lèi)型外,還可支持ISDN一次群速率接入。V5.2接口由以下3層組成:第一層,物理層,由1~16個(gè)符合ITU的G.703和G.732建議的2Mbit/S的數據鏈路構成。第二層,數據鏈路層,僅對C通路而言,使用的規程稱(chēng)為L(cháng)APV5,其目的是為了允許靈活地將不同的信息流復用到C通路上去。它又可進(jìn)一步分為兩個(gè)子層,即數據包封裝功能子層(LAPV5-EF)和數據鏈路子層(LAPV5-DL)。LAPV5-DL子層完成對V5.2協(xié)議第三層消息的復用。LAPV5-EF 子層通過(guò)映射完成對LAPV5-DL幀和ISDND通路信息的復用。第三層,協(xié)議層,包括PSTN協(xié)議、公共控制協(xié)議、鏈路控制協(xié)議、BCC協(xié)議和保護協(xié)議。PSTN協(xié)議負責處理與PSTN業(yè)務(wù)相關(guān)的信令;公共控制協(xié)議負責協(xié)調兩端用戶(hù)端口狀態(tài)同步及數據指配;鏈路控制協(xié)議負責協(xié)調和實(shí)現兩端鏈路相關(guān)的控制;BCC協(xié)議負責AN和LE,協(xié)調完成2Mbit/S鏈路上的承載通路分配;保護協(xié)議在鏈路出現故障時(shí)提供通路的切換保護功能。第一層有限狀態(tài)機協(xié)議如圖1所示。

μC/實(shí)時(shí)多任務(wù)嵌入式系統

V5接口實(shí)現中包括5個(gè)核心協(xié)議的處理和管理許多定時(shí)器,所以對操作系統要求很高。筆者選用μC/作為其操作系統,實(shí)現多任務(wù)管理及任務(wù)間通信等。μC/最多支持56個(gè)任務(wù),任務(wù)調度采用優(yōu)先級搶占調度算法,總是執行就緒態(tài)的優(yōu)先級最高的任務(wù),并支持SemaphorE( 信號量)、Mailbox ( 郵箱)MessageQueuE(消息隊列)等多種常用的進(jìn)程間通信機制。由于系統中代碼大多是用C語(yǔ)言寫(xiě)的,有比較好的可移植性。

系統啟動(dòng)
μC/OS中,多任務(wù)內核通過(guò)調用OSInit函數開(kāi)始執行內核相關(guān)的初始化。OSInit函數將完成任務(wù)控塊、事件控制塊、消息隊列和內存管理的初始化等。系統初始化完成后需調用OS-Start函數啟動(dòng)嵌入式內核,開(kāi)始多任務(wù)運行。在啟動(dòng)多任務(wù)內核前需要至少啟動(dòng)一個(gè)任務(wù)。

圖1 協(xié)議??蚣軋D

多任務(wù)創(chuàng )建
在μC/OS中,每個(gè)任務(wù)都是無(wú)限循環(huán)的,每個(gè)任務(wù)都處在以下5種狀態(tài)之一:休眠態(tài)、就緒態(tài)、運行態(tài)、掛起態(tài)和中斷態(tài)。μC/OS中通過(guò)調用OSTaskCreatE或OSTaskCreateExt函數創(chuàng )建啟動(dòng)任務(wù)。對于每個(gè)任務(wù)都有惟一的1個(gè)優(yōu)先級標識。

任務(wù)間同步和通信
在μC/OS中,提供了消息隊列、郵箱和信號量等機制用以實(shí)現任務(wù)間同步和通信。郵箱可以用來(lái)通知一個(gè)事件的發(fā)生(發(fā)送一條信息)。在源端的任務(wù)通過(guò)調用OSMBoxPost函數向郵箱寫(xiě),在目的端的任務(wù)通過(guò)調用OSMBoxPend函數從郵箱讀。當郵箱為空時(shí)調用OSMBoxPend函數的任務(wù)將被掛起。信號量是一種約定機制:兩個(gè)或多個(gè)任務(wù)通過(guò)簡(jiǎn)單的信號進(jìn)行合作,一個(gè)任務(wù)可以被迫在某一位置停止,直到它接收到一個(gè)特定的信號。信號量主要實(shí)施3種操作:一個(gè)信號量可以初始化為非負數;等待操作使信號量減1,如果值變成負數,則執行等待的任務(wù)被阻塞;得到CPU使用權的任務(wù)signaL操作使信號量加1,如果值不是正數,則被等待操作阻塞的任務(wù)解除阻塞。

函數的可重入性
可重入函數是指一個(gè)可以同時(shí)被多個(gè)任務(wù)調用而不會(huì )發(fā)生數據沖突的函數。在多任務(wù)環(huán)境下,所有可能被多個(gè)任務(wù)同時(shí)調用的函數都必須保證其具有可重入性,此函數可以通過(guò)使用局部變量來(lái)保證其可重入性。

V5系統設計

V5接口協(xié)議的3層中物理層和數據鏈路層部分功能由硬件實(shí)現。物理層可用PMC公司生產(chǎn)的大規模E1接口芯片PMC4354,它是一種可提供4路E1的接口芯片并綜合了成幀器和LIU,其重要特性包括數據鏈路接入、報警、中斷、環(huán)回和診斷。處理器選用SUMSUNG 公司的KS32C50100,它內置2個(gè)HDLC控制器,2個(gè)定時(shí)器。特別適用在V5接口(封裝功能子層功能和HDLC協(xié)議類(lèi)似),V5協(xié)議的第三層實(shí)現全部基于嵌入式系統編程。

軟件實(shí)現框架
對于V5接口的5個(gè)核心協(xié)議中的每個(gè)協(xié)議都作為一個(gè)任務(wù)來(lái)實(shí)現和管理。任務(wù)間的消息采用郵件的方式。

軟件實(shí)現框架包括3個(gè)模塊,如圖2所示。

OS系統模塊
此模塊由μC/OS-II實(shí)現系統功能,包括多任務(wù)調度、管理內存分配、任務(wù)間通信和定時(shí)器。

協(xié)議實(shí)現模塊
塊主要實(shí)現了V5接口的5個(gè)核心協(xié)議、第1層有限狀態(tài)機協(xié)議和LAPV5協(xié)議。每個(gè)協(xié)議作為一個(gè)單獨的任務(wù)運行。由于V5接口在運作過(guò)程中通話(huà)建立和拆除主要由PSTN協(xié)議和BCC協(xié)議完成,所以這2個(gè)任務(wù)需要有較高的優(yōu)先級。LAPV5任務(wù)將來(lái)自上層需要發(fā)送給LE的消息數據封裝打包并轉發(fā)出去。

圖2 軟件實(shí)現架構

管理模塊
此模塊主要完成AN的管理相關(guān)任務(wù)。其中包括PSTN端口的狀態(tài)管理,V5界面管理,E1鏈路上承載時(shí)隙資源管理和5個(gè)核心協(xié)議C-PATH的管理。狀態(tài)管理完成鏈路和端口的狀態(tài)管理,界面管理用來(lái)獲取V5接口的設定并完成V5接口的啟動(dòng)和保護切換。另外,V5接口通過(guò)界面管理任務(wù)接受來(lái)自控制臺或網(wǎng)管系統的維護命令,隨時(shí)向上層網(wǎng)管報告V5接口目前的狀況。C-PATH管理用來(lái)建立和維護各個(gè)C通路。

接口的具體設計
V5接口協(xié)議中每個(gè)協(xié)議的處理流程按FSM(FinitEStatEMachine)的方式來(lái)完成。FSM 是具有馬爾可夫性的,其目前狀態(tài)僅與前一次的狀態(tài)有關(guān),與其他歷史狀態(tài)無(wú)關(guān)。它由有限的狀態(tài)和相互之間的轉移構成,在任何時(shí)候只能處于給定數目的狀態(tài)中的一個(gè)。當接收到一個(gè)輸入事件時(shí),狀態(tài)機產(chǎn)生一個(gè)輸出,同時(shí)也可能伴隨著(zhù)狀態(tài)的轉移,其特點(diǎn)是根據目前的消息和目前的狀態(tài)決定要做的事和以后的狀態(tài)。

每個(gè)任務(wù)用一個(gè)結構體數組來(lái)維護其各個(gè)實(shí)體的狀態(tài)和其他相關(guān)的信息。

例如PSTN協(xié)議可以用如下類(lèi)似的結構體數組

struct PSTNPORT{
bytE interfaceid;/*保存該PSNT端口實(shí)體所屬的V5接口ID*/
unsigned intle portid;/*保存該PSTN端口實(shí)體所對應的LE端PSTN實(shí)體ID*/
bytE statE;/*該實(shí)體的狀態(tài)*/
TIMER t1;/*保存該實(shí)體的t1,t2,t3,tr,tt定時(shí)器值*/
TIMER t2;
TIMER t3;
TIMER tr;
TIMER tt;
}

每次完成由FSM 產(chǎn)生的動(dòng)作時(shí)更新該數組,保存該實(shí)體相關(guān)的新的信息。V5接口中5個(gè)主要協(xié)議都是以FSM 的方式來(lái)運行的。協(xié)議根據目前的狀態(tài)和收到的激勵消息在FSM 中找到需要做的動(dòng)作并完成響應。

考慮到這種特殊的運作方式,任務(wù)的實(shí)現可以以下列方式來(lái)運行。
OSMboxCreatE( ...);/*在任務(wù)初始化時(shí),為該任務(wù)創(chuàng )建一個(gè)郵箱,用來(lái)接收其他任務(wù)發(fā)送來(lái)的消息。*/
for( ;;)
{ bytE statE,stim ,act;
Check Timer Expired();/*檢查T(mén)IMER是否timEout*/
OSMboxPend();/*從該任務(wù)的郵箱中接受收到的新郵件消息*/
statE= Get Entity ();/*從郵件消息中獲取消息實(shí)體,得到該消息是發(fā)給此協(xié)議的那一個(gè)實(shí)體的,并得到該實(shí)體的狀態(tài)。例如,PSTN協(xié)議,則要獲取此消息是發(fā)給PSTN協(xié)議的那個(gè)端口*/
stim = Get Stim();/*從郵件消息中獲取用于FSM 的激勵消息*/
act= Do FSM(statE,stim);/*根據前面獲取的狀態(tài)和激勵消息,得到需要做的動(dòng)作和下一個(gè)狀態(tài).*/
DoAct(act);/*完成由FSM 指定的工作,并轉移該實(shí)體的狀態(tài).*/
OSMboxPost();/*根據需要發(fā)送消息通知其他協(xié)議任務(wù)*/
}

各個(gè)協(xié)議的FSM 方式運作實(shí)現都可按上面的框架來(lái)完成。

借助于μC/OS-II系統API函數OSMboxPend,可以從郵箱中收取郵件。當郵箱中有新的郵件時(shí),該函數返回指針指向新的郵件。若沒(méi)有新郵件,該函數將掛起當前任務(wù),把CPU時(shí)間讓給其他任務(wù)使用。在DoAct函數的處理中,用系統的API函數OSMboxPost發(fā)送郵件給其他任務(wù)的郵箱。

定時(shí)器的實(shí)現
每個(gè)任務(wù)有一個(gè)timer鏈表保存該任務(wù)使用的所有定時(shí)器。定時(shí)器鏈表具有以下的數據結構

structv5_timer
{
bytE timerid;/*標示每個(gè)TIMER*/
unsigned long period;/*標示定時(shí)器的timeout時(shí)長(cháng)*/
bytE timer typE;/*標示定時(shí)器的類(lèi)型*/
unsignedlong starttimE;/*標示定時(shí)器啟動(dòng)的系統時(shí)間*/
bytE t_flag ;/*保留用的標記*/
}

要設定一個(gè)定時(shí)器只需新添加一個(gè)TIMER到鏈表中。調用系統APIOSTimeGet()獲取目前系統時(shí)間作為定期器的啟動(dòng)時(shí)間填入定時(shí)器結構體的starttimE成員中,給period賦值指定定時(shí)器時(shí)長(cháng)。任務(wù)循環(huán)的開(kāi)始部分在接收郵件消息前,將檢查鏈表,通過(guò)比較每個(gè)TIMER的starttime和目前系統時(shí)間的差值來(lái)判斷定時(shí)器是否到期,如果有定時(shí)器到期則插入一條TIMEOUT消息到本任務(wù)的郵箱。

結束語(yǔ)

V5接口在通信網(wǎng)絡(luò )中有著(zhù)廣泛的應用,筆者探討了在開(kāi)放源碼的μC/OS操作系統上如何實(shí)現V5接口,提出了V5接口的軟件實(shí)現框架和具體設計方案。在商業(yè)應用上可大大降低開(kāi)發(fā)成本,對開(kāi)發(fā)嵌入式操作系統的技術(shù)人員能有所幫助。


關(guān)鍵詞: OS-II 接入網(wǎng) 接口

評論


相關(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>