當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于μC/OS-II接入網(wǎng)接口的研究與設(shè)計(jì)

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

        引 言 

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

        V5通信接口協(xié)議 

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

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

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

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

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

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

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

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

        V5系統(tǒng)設(shè)計(jì) 

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

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

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

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

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

        圖2 軟件實(shí)現(xiàn)架構(gòu) 

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

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

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

        例如PSTN協(xié)議可以用如下類似的結(jié)構(gòu)體數(shù)組 

        struct PSTNPORT{ 
        bytE interfaceid;/*保存該P(yáng)SNT端口實(shí)體所屬的V5接口ID*/ 
        unsigned intle portid;/*保存該P(yáng)STN端口實(shí)體所對(duì)應(yīng)的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ù)組,保存該實(shí)體相關(guān)的新的信息。V5接口中5個(gè)主要協(xié)議都是以FSM 的方式來運(yùn)行的。協(xié)議根據(jù)目前的狀態(tài)和收到的激勵(lì)消息在FSM 中找到需要做的動(dòng)作并完成響應(yīng)。 

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

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

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

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

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

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

        結(jié)束語 

        V5接口在通信網(wǎng)絡(luò)中有著廣泛的應(yīng)用,筆者探討了在開放源碼的μC/OS操作系統(tǒng)上如何實(shí)現(xiàn)V5接口,提出了V5接口的軟件實(shí)現(xiàn)框架和具體設(shè)計(jì)方案。在商業(yè)應(yīng)用上可大大降低開發(fā)成本,對(duì)開發(fā)嵌入式操作系統(tǒng)的技術(shù)人員能有所幫助。
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉