《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于Nucleus Plus的RLC層定時器的設(shè)計
基于Nucleus Plus的RLC層定時器的設(shè)計
來源:電子技術(shù)應(yīng)用2013年第11期
陳發(fā)堂, 朱 明, 庹 勤, 周元元
重慶郵電大學 重慶市移動通信技術(shù)重點實驗室,重慶 400065
摘要: 為保證通信系統(tǒng)的正常運行,給出了一種LTE系統(tǒng)協(xié)議棧無線鏈路控制(RLC)層定時器的實現(xiàn)方法。結(jié)合Nucleus Plus 操作系統(tǒng)重點介紹了多實例模式下RLC層定時器的實現(xiàn)機制,并改善了操作系統(tǒng)中定時器的重啟功能,實現(xiàn)了對定時器的靈活控制。
中圖分類號: TN929
文獻標識碼: A
文章編號: 0258-7998(2013)11-0122-03
Design of RLC timer based on the Nucleus Plus
Chen Fatang, Zhu Ming, Tuo Qin, Zhou Yuanyuan
Chongqing Key Lab of Mobile Communications,Chongqing University of Posts and Telecommunications,Chongqing 400065,China
Abstract: In order to ensure the normal running of the communication system, a realization method of RLC timer in LTE system protocol stack is given. This paper presents the realization mechanism of the RLC timer of multiple instances pattern, which is based on the Nucleus Plus operating system, and improves the timer restart function in the operating system to achieve flexible control of timer.
Key words : embedded operating system; RLC; timer

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

 LTE(Long Term Evolution)項目是3G的演進,它改進并增強了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)先級,隊列則作為消息的載體提供了傳輸消息的機制。
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)、非確認模式(UM)和確認模式(AM)。為保證無線鏈路的正常運行以及鏈路傳輸?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的時間間隔,該定時器運行期間不能發(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)致資源的浪費。為防止多實例模式中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。這樣既不會浪費資源,也能很清晰明了地表示各實例下的定時器。
    在處理定時器超時函數(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)快速有效地運行。為避免這種情況,先調(diào)用協(xié)議棧一個整體的超時函數(shù)rtos01_09timerExpirationRoutine,該函數(shù)運用switch語句,通過判斷分支,將超時的任務(wù)發(fā)到RLC層的隊列中。例如,如果此時是AM傳輸模式下的重排序定時器超時,根據(jù)信令I(lǐng)D OP_T_rlc_t_am_reordering(為每種定時器分配了一個信令標示)找到相應(yīng)的case語句,并執(zhí)行此語句后的操作,即將處理重排序定時器超時的任務(wù)發(fā)到Nucleus Plus 操作系統(tǒng),為RLC層創(chuàng)建的隊列中,并將任務(wù)放在隊列的最前面,保證該消息能盡快地被處理。發(fā)送的消息要攜帶當前狀態(tài)(所舉例中應(yīng)該是AM傳輸狀態(tài))和RBID(無線承載標示),RBID用以說明是哪一個無線承載下的定時器超時。
    多實例模式下,要進行消息的處理,首先必須知道該消息屬于哪個實例以及該實例所處的狀態(tài),然后執(zhí)行該狀態(tài)下對應(yīng)的這條消息的處理函數(shù),處理結(jié)束后便躍遷到相應(yīng)的狀態(tài)[5]。針對存在多實例模式的情況, RLC層引入了一個多實例管理模塊,它負責將發(fā)到RLC層的任務(wù)轉(zhuǎn)到相應(yīng)的進程實例下,多實例結(jié)構(gòu)如圖1所示。

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

3 定時器模塊的改善
    協(xié)議中涉及的對定時器的操作有創(chuàng)建、開啟、停止、重啟、重設(shè)和刪除功能。Nucleus Plus 提供的功能函數(shù)只可以實現(xiàn)對定時器的創(chuàng)建、開啟、停止和刪除等基本操作,如果重啟定時器時需改變一個定時器的長度,運用這些功能函數(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)定時器長度未改變和改變了兩種情況。首先定義如下兩個宏定義:
    #define RTOS_RESTART_TIMER(timer)
    osi_start_timer_change
    (timer,0,0)#define RTOS_RESTART_TIMER_CHANGEABLE
(timer,init_time,loop_time)
    osi_start_timer_change(timer,init_time,loop_time)
    當需重啟定時器的長度未改變時, 調(diào)用RTOS_REST-
ART_TIMER(timer);當重啟定時器長度改變時,調(diào)用RTOS_
RESTART_TIMER_CH-ANGEABLE(timer,init_time,loop_
time)。
     定時器重啟的函數(shù)如下:
    T_osi_STATUS osi_start_timer_change(T_osi_HANDLE handle,
u32 init_time,u32 loop_time)
{
      T_osi_STATUS v_status = NU_Control_Timer((VOID*)
        (handle),NU_DISABLE_TIMER);
      return rtos02_01RestartTimerChangeable((VOID *)handle,
        ((init_time)/RTOS_TIEMBASE),((loop_time)/RTOS_
        TIEMBASE));
}
其中,設(shè)計的新的功能函數(shù)如下:
    STATUS rtos02_01RestartTimerChangeable(NU_TIMER *app_
        timer,UNSIGNED init_time, UNSIGNED loop_time)
{
     R1 TM_APP_TCB *timer;
    UNSIGNED time;                 
       time=loop_time;
       timer =  (TM_APP_TCB *) app_timer;
       TCT_System_Protect();  
               /* Determine what type of request is present. */
       if (!timer -> tm_enabled)
       {
              if (init_time>0)              /* Use new timer length */
                time =  init_time;
              else                    /*Use the old timer length*/
                time =  timer -> tm_initial_time;     
              timer -> tm_enabled =  NU_TRUE;
              TMC_Start_Timer(&(timer -> tm_actual_ti-mer),
            time);
}
      TCT_Unprotect();  
        return(NU_SUCCESS);
}

 


    從上述函數(shù)可看出,必須在定時器未運行時,才能對其進行操作。在調(diào)用定時器重啟的函數(shù)時,如果形參init_time>0,則說明定時器的長度需要修改,需重啟定時器時要用新的長度;否則,重啟定時器時還是用原來的定時器長度。當重啟的定時器的長度確定好后,便調(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)正常運行,不可試圖調(diào)整定時器鏈表。在確定沒有運行超時任務(wù)時,則可以從鏈表頭開始搜索,通過比較要加入的定時器的長度和鏈表中每個定時器剩余時間,將該定時器加入鏈表中合適的位置。當定時器超時后,操作系統(tǒng)便根據(jù)章節(jié)2中的超時過程進行處理。
    文中結(jié)合Nucleus Plus操作系統(tǒng)主要給出了項目TD-LTE射頻一致性測試儀表中,協(xié)議棧RLC層多實例模式下定時器的實現(xiàn)機制。操作系統(tǒng)為協(xié)議棧每個層創(chuàng)建了一個對應(yīng)的任務(wù)和隊列,并將隊列作為消息載體實現(xiàn)各任務(wù)間的通信。本文將定時器超時也作為一個消息發(fā)到隊列中,系統(tǒng)處理完超時函數(shù)后會返回斷點繼續(xù)之前未完的操作,避免了數(shù)據(jù)堆積,有利于系統(tǒng)快速正常地運行。同時,通過改善操作系統(tǒng)中定時器的模塊可以更方便地實現(xiàn)對定時器的控制。
參考文獻
[1] 鄒仕祥.通信系統(tǒng)中大量定時器的設(shè)計與分析[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] 宋茂強.通信軟件設(shè)計基礎(chǔ)(第2版)[M].北京:北京郵電大學出版社,2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。