《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Nucleus Plus的RLC層定時(shí)器的設(shè)計(jì)
基于Nucleus Plus的RLC層定時(shí)器的設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2013年第11期
陳發(fā)堂, 朱 明, 庹 勤, 周元元
重慶郵電大學(xué) 重慶市移動(dòng)通信技術(shù)重點(diǎn)實(shí)驗(yàn)室,重慶 400065
摘要: 為保證通信系統(tǒng)的正常運(yùn)行,給出了一種LTE系統(tǒng)協(xié)議棧無線鏈路控制(RLC)層定時(shí)器的實(shí)現(xiàn)方法。結(jié)合Nucleus Plus 操作系統(tǒng)重點(diǎn)介紹了多實(shí)例模式下RLC層定時(shí)器的實(shí)現(xiàn)機(jī)制,并改善了操作系統(tǒng)中定時(shí)器的重啟功能,實(shí)現(xiàn)了對(duì)定時(shí)器的靈活控制。
中圖分類號(hào): TN929
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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é)議,而定時(shí)器是保證通信協(xié)議正常運(yùn)行的基本要素之一。在目前的通信系統(tǒng)中, 通常硬件只提供幾個(gè)定時(shí)器, 大量的定時(shí)器必須由軟件提供,而軟件提供方法只有兩種: 由操作系統(tǒng)提供或由應(yīng)用程序提供[1]。其中,操作系統(tǒng)提供的定時(shí)器具有定時(shí)精度高、實(shí)時(shí)性好等優(yōu)點(diǎn)。

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

  Nucleus Plus 是美國著名RTOS 廠商ATI 公司(Accelerated Technology Inc)在嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)Nucleus 基礎(chǔ)上,為嵌入式應(yīng)用而設(shè)計(jì)的一個(gè)實(shí)時(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)存管理、定時(shí)器和中斷等操作系統(tǒng)最基本服務(wù),將任務(wù)組織起來構(gòu)成完整的系統(tǒng)的則是其中的任務(wù)間通信功能[4]。Nucleus Plus操作系統(tǒng)在系統(tǒng)初始化過程中為LTE系統(tǒng)協(xié)議棧每個(gè)子層創(chuàng)建了一個(gè)對(duì)應(yīng)的任務(wù)和隊(duì)列,且不同的任務(wù)有不同的優(yōu)先級(jí),隊(duì)列則作為消息的載體提供了傳輸消息的機(jī)制。
1.2 RLC層定時(shí)器介紹
    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種定時(shí)器,即重排序定時(shí)器(t-Reordering)、狀態(tài)禁止定時(shí)器(t-StatusProhibit)和輪詢重傳定時(shí)器(t-PollRetransmit)。第一種定時(shí)器在UM和AM模式下都存在,后兩種定時(shí)器只在AM模式下存在。這三種定時(shí)器在RLC層的作用都至關(guān)重要,是不可缺少的。其中,t-Reordering可以保證數(shù)據(jù)按序遞交給高層;t-StatusProhibit控制發(fā)送狀態(tài) PDU的時(shí)間間隔,該定時(shí)器運(yùn)行期間不能發(fā)送狀態(tài) PDU;t-PollRetransmit可以避免過分頻繁地要求對(duì)等層發(fā)送狀態(tài) PDU,以保證其他數(shù)據(jù)的正常接收、發(fā)送以及數(shù)據(jù)傳輸速率。根據(jù)3GPP通信協(xié)議,各模式下的定時(shí)器都有各自的開啟條件、關(guān)閉條件以及溢出處理方式。
2 定時(shí)器設(shè)計(jì)
    在單實(shí)例模式下,為方便起見,RLC層的定時(shí)器和協(xié)議棧其他層一樣,都是在Nucleus Plus操作系統(tǒng)初始化時(shí)創(chuàng)建的。但實(shí)際存在SRB和一個(gè)或多個(gè)DRB共存的情況。為保證同時(shí)建立多個(gè)承載,LTE系統(tǒng)的RLC層必須支持多實(shí)例功能,且每個(gè)實(shí)例下的RLC實(shí)體必須擁有自己獨(dú)立的一套參數(shù)。如果某實(shí)例下RLC層被配置為UM模式,則其只擁有一個(gè)重排序定時(shí)器;如果某實(shí)例下RLC層被配置為AM模式,則其包含一個(gè)重排序定時(shí)器、一個(gè)狀態(tài)禁止定時(shí)器和一個(gè)輪詢重傳定時(shí)器。在多實(shí)例模式下,由于最初并不知道要建立哪些無線承載及數(shù)量,如果在系統(tǒng)初始化時(shí)就創(chuàng)建多個(gè)實(shí)例下的定時(shí)器,定會(huì)導(dǎo)致資源的浪費(fèi)。為防止多實(shí)例模式中RLC層各實(shí)例下的定時(shí)器出現(xiàn)混亂,在建立RLC實(shí)體時(shí)創(chuàng)建屬于本實(shí)例的定時(shí)器,而不是在系統(tǒng)初始化時(shí)創(chuàng)建定時(shí)器。例如在建立數(shù)據(jù)傳輸模式為AM模式,實(shí)例號(hào)為v_rlc_rbId 的承載時(shí),創(chuàng)建重排序定時(shí)器,且表示為s_rlc_amInst[v_rlc_rbId].t_rlc_t_reordering。這樣既不會(huì)浪費(fèi)資源,也能很清晰明了地表示各實(shí)例下的定時(shí)器。
    在處理定時(shí)器超時(shí)函數(shù)時(shí),由于在MAC層設(shè)置了軟中斷,如果在定時(shí)器超時(shí)后直接調(diào)用定時(shí)器超時(shí)函數(shù),超時(shí)函數(shù)、數(shù)據(jù)搬移完成后,操作系統(tǒng)可能直接跳轉(zhuǎn)到MAC層執(zhí)行相關(guān)操作,而不會(huì)立即返回RLC層斷點(diǎn)處繼續(xù)未完的操作。這樣就會(huì)導(dǎo)致RLC層的數(shù)據(jù)堆積,不利于系統(tǒng)快速有效地運(yùn)行。為避免這種情況,先調(diào)用協(xié)議棧一個(gè)整體的超時(shí)函數(shù)rtos01_09timerExpirationRoutine,該函數(shù)運(yùn)用switch語句,通過判斷分支,將超時(shí)的任務(wù)發(fā)到RLC層的隊(duì)列中。例如,如果此時(shí)是AM傳輸模式下的重排序定時(shí)器超時(shí),根據(jù)信令I(lǐng)D OP_T_rlc_t_am_reordering(為每種定時(shí)器分配了一個(gè)信令標(biāo)示)找到相應(yīng)的case語句,并執(zhí)行此語句后的操作,即將處理重排序定時(shí)器超時(shí)的任務(wù)發(fā)到Nucleus Plus 操作系統(tǒng),為RLC層創(chuàng)建的隊(duì)列中,并將任務(wù)放在隊(duì)列的最前面,保證該消息能盡快地被處理。發(fā)送的消息要攜帶當(dāng)前狀態(tài)(所舉例中應(yīng)該是AM傳輸狀態(tài))和RBID(無線承載標(biāo)示),RBID用以說明是哪一個(gè)無線承載下的定時(shí)器超時(shí)。
    多實(shí)例模式下,要進(jìn)行消息的處理,首先必須知道該消息屬于哪個(gè)實(shí)例以及該實(shí)例所處的狀態(tài),然后執(zhí)行該狀態(tài)下對(duì)應(yīng)的這條消息的處理函數(shù),處理結(jié)束后便躍遷到相應(yīng)的狀態(tài)[5]。針對(duì)存在多實(shí)例模式的情況, RLC層引入了一個(gè)多實(shí)例管理模塊,它負(fù)責(zé)將發(fā)到RLC層的任務(wù)轉(zhuǎn)到相應(yīng)的進(jìn)程實(shí)例下,多實(shí)例結(jié)構(gòu)如圖1所示。

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

3 定時(shí)器模塊的改善
    協(xié)議中涉及的對(duì)定時(shí)器的操作有創(chuàng)建、開啟、停止、重啟、重設(shè)和刪除功能。Nucleus Plus 提供的功能函數(shù)只可以實(shí)現(xiàn)對(duì)定時(shí)器的創(chuàng)建、開啟、停止和刪除等基本操作,如果重啟定時(shí)器時(shí)需改變一個(gè)定時(shí)器的長度,運(yùn)用這些功能函數(shù)實(shí)現(xiàn)的方法為:先關(guān)閉該定時(shí)器,再刪除該定時(shí)器, 最后重新創(chuàng)建一個(gè)新長度的定時(shí)器,并將啟動(dòng)的新定時(shí)器加入Nucleus Plus系統(tǒng)中啟動(dòng)定時(shí)器鏈表。很明顯,整個(gè)實(shí)現(xiàn)過程比較繁瑣, 而且容易出錯(cuò)。在LTE系統(tǒng)協(xié)議棧的開發(fā)中,為了方便定時(shí)器的使用,設(shè)計(jì)了一個(gè)新的功能函數(shù)(RTOS02_01RestartTimerChangeable)。即將重啟定時(shí)器長度改變和未改變合并在一個(gè)函數(shù)中,即在使用時(shí)通過該函數(shù)的形參的不同分別實(shí)現(xiàn)定時(shí)器長度未改變和改變了兩種情況。首先定義如下兩個(gè)宏定義:
    #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)
    當(dāng)需重啟定時(shí)器的長度未改變時(shí), 調(diào)用RTOS_REST-
ART_TIMER(timer);當(dāng)重啟定時(shí)器長度改變時(shí),調(diào)用RTOS_
RESTART_TIMER_CH-ANGEABLE(timer,init_time,loop_
time)。
     定時(shí)器重啟的函數(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è)計(jì)的新的功能函數(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ù)可看出,必須在定時(shí)器未運(yùn)行時(shí),才能對(duì)其進(jìn)行操作。在調(diào)用定時(shí)器重啟的函數(shù)時(shí),如果形參init_time>0,則說明定時(shí)器的長度需要修改,需重啟定時(shí)器時(shí)要用新的長度;否則,重啟定時(shí)器時(shí)還是用原來的定時(shí)器長度。當(dāng)重啟的定時(shí)器的長度確定好后,便調(diào)用函數(shù)TMC_Start_Timer重啟該定時(shí)器。該函數(shù)的實(shí)現(xiàn)過程如下:整個(gè)函數(shù)大體分為兩部分,第一部分是已啟動(dòng)的定時(shí)器鏈表為空的情況,另一部分則是已有定時(shí)器啟動(dòng)的情況。第一種情況只需將已啟動(dòng)的定時(shí)器鏈表的指針指向該定時(shí)器的(任務(wù)控制塊)TCB結(jié)構(gòu)體,此時(shí)該定時(shí)器處于鏈表頭,將根據(jù)定時(shí)器的定時(shí)長度設(shè)置實(shí)際的計(jì)數(shù)定時(shí)器結(jié)構(gòu),并開啟定時(shí)器。第二種情況,首先需確定系統(tǒng)沒有執(zhí)行要重啟定時(shí)器的超時(shí)任務(wù)。若正在執(zhí)行超時(shí)任務(wù),為保證系統(tǒng)正常運(yùn)行,不可試圖調(diào)整定時(shí)器鏈表。在確定沒有運(yùn)行超時(shí)任務(wù)時(shí),則可以從鏈表頭開始搜索,通過比較要加入的定時(shí)器的長度和鏈表中每個(gè)定時(shí)器剩余時(shí)間,將該定時(shí)器加入鏈表中合適的位置。當(dāng)定時(shí)器超時(shí)后,操作系統(tǒng)便根據(jù)章節(jié)2中的超時(shí)過程進(jìn)行處理。
    文中結(jié)合Nucleus Plus操作系統(tǒng)主要給出了項(xiàng)目TD-LTE射頻一致性測試儀表中,協(xié)議棧RLC層多實(shí)例模式下定時(shí)器的實(shí)現(xiàn)機(jī)制。操作系統(tǒng)為協(xié)議棧每個(gè)層創(chuàng)建了一個(gè)對(duì)應(yīng)的任務(wù)和隊(duì)列,并將隊(duì)列作為消息載體實(shí)現(xiàn)各任務(wù)間的通信。本文將定時(shí)器超時(shí)也作為一個(gè)消息發(fā)到隊(duì)列中,系統(tǒng)處理完超時(shí)函數(shù)后會(huì)返回?cái)帱c(diǎn)繼續(xù)之前未完的操作,避免了數(shù)據(jù)堆積,有利于系統(tǒng)快速正常地運(yùn)行。同時(shí),通過改善操作系統(tǒng)中定時(shí)器的模塊可以更方便地實(shí)現(xiàn)對(duì)定時(shí)器的控制。
參考文獻(xiàn)
[1] 鄒仕祥.通信系統(tǒng)中大量定時(shí)器的設(shè)計(jì)與分析[J].計(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è)計(jì)基礎(chǔ)(第2版)[M].北京:北京郵電大學(xué)出版社,2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 精品人妻少妇一区二区三区不卡 | 久久精品中文字幕无码绿巨人| 韩国福利影视一区二区三区| 成全动漫视频在线观看免费播放| 亚洲精品成a人在线观看| 2021国产麻豆剧果冻传媒影视| 暖暖在线视频日本| 国产一区二区三区久久精品| 一二三四视频免费视频 | 杨幂一级做a爰片性色毛片| 国产免费av片在线观看播放| 99久久精品免费精品国产| 极品一线天馒头lj| 伊人色综合久久天天网| 1000部羞羞禁止免费观看视频| 日本道v高清免费| 十七岁日本高清电影免费完整版| 亚洲人成网站看在线播放| 无遮挡韩国成人羞羞漫画网站| 亚洲欧洲日产国码久在线| 黄色免费在线网址| 在线|一区二区三区四区| 久久精品无码专区免费东京热| 精品国产v无码大片在线看| 国产精品视频免费一区二区三区| 久久强奷乱码老熟女| 欧美色图亚洲天堂| 国产亚洲精品第一综合| 最新黄色网址在线观看| 天美麻豆蜜桃91制片厂| 久操免费在线观看| 男生被男生到爽动漫| 国产激情精品一区二区三区| 中文字幕在线观看国产| 校花哭着扒开屁股浣肠漫画| 亚洲精品视频观看| 青青草97国产精品免费观看| 国产精品美女一区二区视频| www.com日本| 欧美专区日韩专区| 厨房切底征服麻麻|