• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Nucleus Plus的RLC層定時器的設(shè)計*

      2013-08-13 06:09:42陳發(fā)堂周元元
      電子技術(shù)應(yīng)用 2013年11期
      關(guān)鍵詞:鏈表狀態(tài)機(jī)隊列

      陳發(fā)堂,朱 明,庹 勤,周元元

      (重慶郵電大學(xué) 重慶市移動通信技術(shù)重點實驗室,重慶 400065)

      通信系統(tǒng)離不開通信協(xié)議,而定時器是保證通信協(xié)議正常運(yùn)行的基本要素之一。在目前的通信系統(tǒng)中,通常硬件只提供幾個定時器,大量的定時器必須由軟件提供,而軟件提供方法只有兩種:由操作系統(tǒng)提供或由應(yīng)用程序提供[1]。其中,操作系統(tǒng)提供的定時器具有定時精度高、實時性好等優(yōu)點。

      LTE(Long Term Evolution)項目是 3G的演進(jìn),它改進(jìn)并增強(qiáng)了3G的空中接口技術(shù),在20 MHz帶寬上能夠提供下行100 Mb/s、上行 50 Mb/s的峰值速率,同時對數(shù)據(jù)傳輸?shù)目煽啃蕴岢隽烁叩囊骩2]。無線鏈路控制RLC(Radio Link Control)層作為協(xié)議棧層次結(jié)構(gòu)中的L2層之一,主要是提供可靠的數(shù)據(jù)傳輸鏈路。LTE系統(tǒng)是一個對實時性要求較高的系統(tǒng),因此TD-LTE射頻一致性測試儀表的開發(fā)采用Nucleus Plus操作系統(tǒng)。該操作系統(tǒng)具有實時響應(yīng)、搶先式、多任務(wù)等開放特性,在通信設(shè)備、航空航天、醫(yī)療器械、工業(yè)控制系統(tǒng)等實時性要求高的領(lǐng)域得到了廣泛應(yīng)用。

      1 Nucleus Plus和定時器

      1.1 Nucleus Plus簡介

      Nucleus Plus是美國著名RTOS廠商ATI公司(Accelerated Technology Inc)在嵌入式實時多任務(wù)操作系統(tǒng)Nucleus基礎(chǔ)上,為嵌入式應(yīng)用而設(shè)計的一個實時、任務(wù)搶先式、多任務(wù)操作系統(tǒng)內(nèi)核。大約95%的Nucleus Plus內(nèi)核代碼是用ANSIC編寫的,非常便于移植且可以很容易地應(yīng)用到大多數(shù)的處理器中[3]。該內(nèi)核提供任務(wù)間通信、任務(wù)調(diào)度、同步、內(nèi)存管理、定時器和中斷等操作系統(tǒng)最基本服務(wù),將任務(wù)組織起來構(gòu)成完整的系統(tǒng)的則是其中的任務(wù)間通信功能[4]。Nucleus Plus操作系統(tǒng)在系統(tǒng)初始化過程中為LTE系統(tǒng)協(xié)議棧每個子層創(chuàng)建了一個對應(yīng)的任務(wù)和隊列,且不同的任務(wù)有不同的優(yōu)先級,隊列則作為消息的載體提供了傳輸消息的機(jī)制。

      1.2 RLC層定時器介紹

      LTE系統(tǒng)中的RLC層位于協(xié)議棧接入層的媒體介入控制MAC(Media Access Control)層和分組數(shù)據(jù)匯聚協(xié)議PDCP(Packet Data Convergence Protocol)層之間,主要執(zhí)行組裝PDU、重組SDU、重傳PDU等功能。它支持3種數(shù)據(jù)傳輸模式:透明模式(TM)、非確認(rèn)模式(UM)和確認(rèn)模式(AM)。為保證無線鏈路的正常運(yùn)行以及鏈路傳輸?shù)母咚傩?,RLC層作為LTE系統(tǒng)核心通路的重要組成部分,定義了3種定時器,即重排序定時器(t-Reordering)、狀態(tài)禁止定時器(t-StatusProhibit)和輪詢重傳定時器(t-PollRetransmit)。第一種定時器在UM和AM模式下都存在,后兩種定時器只在AM模式下存在。這三種定時器在RLC層的作用都至關(guān)重要,是不可缺少的。其中,t-Reordering可以保證數(shù)據(jù)按序遞交給高層;t-StatusProhibit控制發(fā)送狀態(tài) PDU的時間間隔,該定時器運(yùn)行期間不能發(fā)送狀態(tài) PDU;t-PollRetransmit可以避免過分頻繁地要求對等層發(fā)送狀態(tài) PDU,以保證其他數(shù)據(jù)的正常接收、發(fā)送以及數(shù)據(jù)傳輸速率。根據(jù)3GPP通信協(xié)議,各模式下的定時器都有各自的開啟條件、關(guān)閉條件以及溢出處理方式。

      2 定時器設(shè)計

      在單實例模式下,為方便起見,RLC層的定時器和協(xié)議棧其他層一樣,都是在Nucleus Plus操作系統(tǒng)初始化時創(chuàng)建的。但實際存在SRB和一個或多個DRB共存的情況。為保證同時建立多個承載,LTE系統(tǒng)的RLC層必須支持多實例功能,且每個實例下的RLC實體必須擁有自己獨立的一套參數(shù)。如果某實例下RLC層被配置為UM模式,則其只擁有一個重排序定時器;如果某實例下RLC層被配置為AM模式,則其包含一個重排序定時器、一個狀態(tài)禁止定時器和一個輪詢重傳定時器。在多實例模式下,由于最初并不知道要建立哪些無線承載及數(shù)量,如果在系統(tǒng)初始化時就創(chuàng)建多個實例下的定時器,定會導(dǎo)致資源的浪費(fèi)。為防止多實例模式中RLC層各實例下的定時器出現(xiàn)混亂,在建立RLC實體時創(chuàng)建屬于本實例的定時器,而不是在系統(tǒng)初始化時創(chuàng)建定時器。例如在建立數(shù)據(jù)傳輸模式為AM模式,實例號為v_rlc_rbId的承載時,創(chuàng)建重排序定時器,且表示為s_rlc_amInst[v_rlc_rbId].t_rlc_t_reordering。這樣既不會浪費(fèi)資源,也能很清晰明了地表示各實例下的定時器。

      在處理定時器超時函數(shù)時,由于在MAC層設(shè)置了軟中斷,如果在定時器超時后直接調(diào)用定時器超時函數(shù),超時函數(shù)、數(shù)據(jù)搬移完成后,操作系統(tǒng)可能直接跳轉(zhuǎn)到MAC層執(zhí)行相關(guān)操作,而不會立即返回RLC層斷點處繼續(xù)未完的操作。這樣就會導(dǎo)致RLC層的數(shù)據(jù)堆積,不利于系統(tǒng)快速有效地運(yùn)行。為避免這種情況,先調(diào)用協(xié)議棧一個整體的超時函數(shù)rtos01_09timerExpirationRoutine,該函數(shù)運(yùn)用switch語句,通過判斷分支,將超時的任務(wù)發(fā)到RLC層的隊列中。例如,如果此時是AM傳輸模式下的重排序定時器超時,根據(jù)信令I(lǐng)D OP_T_rlc_t_am_reordering(為每種定時器分配了一個信令標(biāo)示)找到相應(yīng)的case語句,并執(zhí)行此語句后的操作,即將處理重排序定時器超時的任務(wù)發(fā)到Nucleus Plus操作系統(tǒng),為RLC層創(chuàng)建的隊列中,并將任務(wù)放在隊列的最前面,保證該消息能盡快地被處理。發(fā)送的消息要攜帶當(dāng)前狀態(tài)(所舉例中應(yīng)該是AM傳輸狀態(tài))和RBID(無線承載標(biāo)示),RBID用以說明是哪一個無線承載下的定時器超時。

      多實例模式下,要進(jìn)行消息的處理,首先必須知道該消息屬于哪個實例以及該實例所處的狀態(tài),然后執(zhí)行該狀態(tài)下對應(yīng)的這條消息的處理函數(shù),處理結(jié)束后便躍遷到相應(yīng)的狀態(tài)[5]。針對存在多實例模式的情況,RLC層引入了一個多實例管理模塊,它負(fù)責(zé)將發(fā)到RLC層的任務(wù)轉(zhuǎn)到相應(yīng)的進(jìn)程實例下,多實例結(jié)構(gòu)如圖1所示。

      圖1 RLC層多實例模式結(jié)構(gòu)圖

      協(xié)議棧的開發(fā)是基于有限狀態(tài)機(jī)的思想,收到消息后,就會對消息進(jìn)行相應(yīng)的處理。當(dāng)操作系統(tǒng)檢測到RLC層任務(wù)被激活后便跳轉(zhuǎn)至RLC狀態(tài)機(jī),具體過程是:從RLC隊列最前面開始讀取定時器超時的消息,多實例管理模塊會解析出當(dāng)前消息的RBID,將其賦給instanceID,用其作為各實例的區(qū)分,然后通過有效的processID獲得當(dāng)前的進(jìn)程狀態(tài)機(jī)入口函數(shù),有效的instanceID獲得此實例當(dāng)前的狀態(tài)(本例中為AM傳輸狀態(tài))之后,狀態(tài)機(jī)進(jìn)入相應(yīng)的狀態(tài)分支,通過信令I(lǐng)D處理重排序定時器超時的函數(shù)。該消息處理完后,RLC狀態(tài)機(jī)會繼續(xù)從RLC隊列中讀取消息進(jìn)行處理,直至隊列為空。隊列為空時,RLC層任務(wù)會被掛起,并跳出本層狀態(tài)機(jī),控制權(quán)限交還給操作系統(tǒng)。當(dāng)操作系統(tǒng)檢測到其他層任務(wù)被激活后,便會跳轉(zhuǎn)至其他層狀態(tài)機(jī)進(jìn)行消息處理。操作系統(tǒng)處理定時器超時的消息流程如圖2所示。

      3 定時器模塊的改善

      協(xié)議中涉及的對定時器的操作有創(chuàng)建、開啟、停止、重啟、重設(shè)和刪除功能。Nucleus Plus提供的功能函數(shù)只可以實現(xiàn)對定時器的創(chuàng)建、開啟、停止和刪除等基本操作,如果重啟定時器時需改變一個定時器的長度,運(yùn)用這些功能函數(shù)實現(xiàn)的方法為:先關(guān)閉該定時器,再刪除該定時器,最后重新創(chuàng)建一個新長度的定時器,并將啟動的新定時器加入Nucleus Plus系統(tǒng)中啟動定時器鏈表。很明顯,整個實現(xiàn)過程比較繁瑣,而且容易出錯。在LTE系統(tǒng)協(xié)議棧的開發(fā)中,為了方便定時器的使用,設(shè)計了一個新的功能函數(shù)(RTOS02_01RestartTimerChangeable)。即將重啟定時器長度改變和未改變合并在一個函數(shù)中,即在使用時通過該函數(shù)的形參的不同分別實現(xiàn)定時器長度未改變和改變了兩種情況。首先定義如下兩個宏定義:

      圖2 消息處理流程圖

      當(dāng)需重啟定時器的長度未改變時,調(diào)用RTOS_RESTART_TIMER(timer);當(dāng)重啟定時器長度改變時,調(diào)用 RTOS_RESTART_TIMER_CH-ANGEABLE(timer,init_time,loop_time)。

      定時器重啟的函數(shù)如下:

      從上述函數(shù)可看出,必須在定時器未運(yùn)行時,才能對其進(jìn)行操作。在調(diào)用定時器重啟的函數(shù)時,如果形參init_time>0,則說明定時器的長度需要修改,需重啟定時器時要用新的長度;否則,重啟定時器時還是用原來的定時器長度。當(dāng)重啟的定時器的長度確定好后,便調(diào)用函數(shù)TMC_Start_Timer重啟該定時器。該函數(shù)的實現(xiàn)過程如下:整個函數(shù)大體分為兩部分,第一部分是已啟動的定時器鏈表為空的情況,另一部分則是已有定時器啟動的情況。第一種情況只需將已啟動的定時器鏈表的指針指向該定時器的(任務(wù)控制塊)TCB結(jié)構(gòu)體,此時該定時器處于鏈表頭,將根據(jù)定時器的定時長度設(shè)置實際的計數(shù)定時器結(jié)構(gòu),并開啟定時器。第二種情況,首先需確定系統(tǒng)沒有執(zhí)行要重啟定時器的超時任務(wù)。若正在執(zhí)行超時任務(wù),為保證系統(tǒng)正常運(yùn)行,不可試圖調(diào)整定時器鏈表。在確定沒有運(yùn)行超時任務(wù)時,則可以從鏈表頭開始搜索,通過比較要加入的定時器的長度和鏈表中每個定時器剩余時間,將該定時器加入鏈表中合適的位置。當(dāng)定時器超時后,操作系統(tǒng)便根據(jù)章節(jié)2中的超時過程進(jìn)行處理。

      文中結(jié)合Nucleus Plus操作系統(tǒng)主要給出了項目TD-LTE射頻一致性測試儀表中,協(xié)議棧RLC層多實例模式下定時器的實現(xiàn)機(jī)制。操作系統(tǒng)為協(xié)議棧每個層創(chuàng)建了一個對應(yīng)的任務(wù)和隊列,并將隊列作為消息載體實現(xiàn)各任務(wù)間的通信。本文將定時器超時也作為一個消息發(fā)到隊列中,系統(tǒng)處理完超時函數(shù)后會返回斷點繼續(xù)之前未完的操作,避免了數(shù)據(jù)堆積,有利于系統(tǒng)快速正常地運(yùn)行。同時,通過改善操作系統(tǒng)中定時器的模塊可以更方便地實現(xiàn)對定時器的控制。

      [1]鄒仕祥.通信系統(tǒng)中大量定時器的設(shè)計與分析[J].計算機(jī)應(yīng)用,2005,25(11):2715-2719.

      [2]沈嘉.LTE的技術(shù)創(chuàng)新與挑戰(zhàn)[J].電子技術(shù)應(yīng)用,2009,35(6):7-13.

      [3]Wu Liming,Li Dongdong,Wang Guitang.Design of realtime image acquisition system of IC wafer[C].International Conference on Convergence Information Technology,2007.

      [4]0001026-001 Rev.102-2000.Nucleus PLUS Reference Manual[S].2000.

      [5]宋茂強(qiáng).通信軟件設(shè)計基礎(chǔ)(第2版)[M].北京:北京郵電大學(xué)出版社,2008.

      猜你喜歡
      鏈表狀態(tài)機(jī)隊列
      隊列里的小秘密
      基于多隊列切換的SDN擁塞控制*
      軟件(2020年3期)2020-04-20 00:58:44
      基于有限狀態(tài)機(jī)的交會對接飛行任務(wù)規(guī)劃方法
      基于二進(jìn)制鏈表的粗糙集屬性約簡
      跟麥咭學(xué)編程
      在隊列里
      基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗證機(jī)制
      豐田加速駛?cè)胱詣玉{駛隊列
      鏈表方式集中器抄表的設(shè)計
      電測與儀表(2014年1期)2014-04-04 12:00:22
      FPGA設(shè)計中狀態(tài)機(jī)安全性研究
      长治市| 温泉县| 鄂尔多斯市| 阳东县| 汕尾市| 普洱| 始兴县| 张家界市| 阳江市| 新宾| 故城县| 海阳市| 赤城县| 伊宁县| 琼中| 抚远县| 莲花县| 天长市| 固原市| 横峰县| 海盐县| 郎溪县| 苏尼特右旗| 花莲县| 嘉黎县| 通州市| 香港| 岳阳市| 嘉祥县| 庄河市| 无为县| 盐源县| 景德镇市| 建水县| 庆云县| 乐亭县| 忻城县| 抚宁县| 固阳县| 利川市| 清水县|