李小文 肖 壘,2
(重慶市移動通信重點實驗室1,重慶 400065;重慶郵電大學通信與信息工程學院2,重慶 400065)
隨著我國通信市場需求的進一步增加,現(xiàn)階段對通信前沿技術(shù)的研究呈現(xiàn)迅速增長的態(tài)勢,與此同時,公眾對通信軟件服務(wù)質(zhì)量的要求也越來越嚴格。這使得人們對通信軟件的實時性、可靠性要求越來越高,從而催生了通信行業(yè)對新一代無線通信系統(tǒng)的研究與開發(fā)。
在2011年世界移動通信大會上,4 G網(wǎng)絡(luò)的發(fā)展成為各界關(guān)注的焦點,TD產(chǎn)業(yè)聯(lián)盟已將重點放在TDLTE端到端的產(chǎn)業(yè)鏈成果上。由此可以預測,日后通信行業(yè)對TD-LTE產(chǎn)品的測試擁有極大的潛在需求。在對TD-LTE終端綜合測試儀的設(shè)計過程中,采用了Nucleus操作系統(tǒng)。Nucleus PLUS是由美國ATI公司開發(fā)設(shè)計的實時操作系統(tǒng)(real-time operating system,RTOS)嵌入式產(chǎn)品,它是一種實時、搶占、多任務(wù)內(nèi)核,被應(yīng)用于有強實時性要求的應(yīng)用領(lǐng)域。由于RTOS中大約95%的程序由ANSI C編寫,所以非常便于移植,現(xiàn)已被廣泛應(yīng)用于通信、航天航空、自動化控制和國防等領(lǐng)域[1]。TD-LTE終端綜合測試儀目前已經(jīng)進入試驗階段,正式產(chǎn)品已在2011年4月底完成。
Nucleus PLUS操作系統(tǒng)是目前應(yīng)用較為廣泛的操作系統(tǒng)之一,其核心區(qū)代碼不超過20 kB。它采用軟件組件的方法,每個組件可以完成特定的功能。組件通常由使用C或匯編語言編寫的模塊組成,為外部應(yīng)用程序提供清晰的接口。Nucleus PLUS不但提供源程序代碼,且具有性價比高、易學易用、功能模塊豐富等特點[2]。
Nucleus PLUS系統(tǒng)結(jié)構(gòu)如圖1所示。
從圖1可知,Nucleus PLUS開發(fā)平臺提供多種模塊,用戶僅需編寫任務(wù)模塊和中斷服務(wù)程序(interrupt service routines,ISR),然后利用各模塊接口獲取相應(yīng)服務(wù),由Nucleus PLUS操作系統(tǒng)調(diào)度多個用戶任務(wù)并行運行,從而共享系統(tǒng)資源。Nucleus PLUS根據(jù)優(yōu)先級和時間片調(diào)度各任務(wù)分時、分優(yōu)先級地占用系統(tǒng)資源,各任務(wù)間通過郵箱、隊列或管道進行通信,使用信號量、事件組和信號進行同步與互斥。同時,Nucleus PLUS提供分區(qū)內(nèi)存和動態(tài)內(nèi)存兩種存儲器管理機制,并提供定時器,用于處理周期性事件、任務(wù)超時[3]。
TD-LTE終端綜合測試儀可以實現(xiàn)TD-LTE系統(tǒng)下行物理通道發(fā)生、呼叫建立、釋放和尋呼、上下行功率控制等多種功能。其主要用來精確測量TD-LTE終端的各種射頻指標,可模擬TD-LTE基站、無線網(wǎng)絡(luò)控制器(radio network controller,RNC)和核心網(wǎng)的信令功能,測試TD-LTE終端在多種狀態(tài)下的性能指標。TD-LTE終端綜合測試儀廣泛應(yīng)用于TD-LTE終端的設(shè)計、研發(fā)、生產(chǎn)、認證以及維修等領(lǐng)域。
TD-LTE終端綜合測試儀能對被測終端發(fā)起如頻率誤差(error of frequency,F(xiàn)OE)、誤差向量幅度(error vector magnitude,EVM)、比特誤碼率(bit error rate,BER)和塊誤碼率(block error ratio,BLER)等各種基本測量,進行射頻(radio frequency,RF)工作模式、串行數(shù)據(jù)處理等模式的設(shè)置,以及實現(xiàn)小區(qū)激活、去激活和重配置等。它為出廠終端設(shè)備的檢測提供了最直觀的測試方式,同時也為TD-LTE終端設(shè)備的開發(fā)提供了極大的便利。TD-LTE終端綜合測試儀對出廠終端進行測量的基本方式如圖2所示。
圖2中,TD-LTE終端綜合測試儀模擬網(wǎng)絡(luò)端對終端進行測試。為防止測試中測試信號外泄對正常無線信號造成干擾,測試中需使用專用的測試線將被測終端連接至測試儀表。綜測儀前端面板可簡單劃分為顯示和控制兩個區(qū)域。顯示區(qū)域用來顯示測試結(jié)果,如測試波形、圖形等;控制區(qū)域用來配置并發(fā)送測試命令,如開機請求、小區(qū)激活請求和測量請求等指令。在測試中,還需將測試用計算機與綜測儀相連,從而更詳細地顯示或者處理得到的各種測試數(shù)據(jù)[4-5]。
系統(tǒng)任務(wù)的劃分是實時通信系統(tǒng)設(shè)計中最關(guān)鍵的一步,只有合理地劃分各任務(wù),系統(tǒng)的設(shè)計才能得到簡化,同時也使后續(xù)的調(diào)試更為方便。如任務(wù)劃分不恰當,則系統(tǒng)硬件的設(shè)計和軟件的調(diào)試會存在較大困難,系統(tǒng)甚至會出現(xiàn)致命的錯誤。在對TD-LTE終端測試儀表軟件部分進行設(shè)計中,根據(jù)不同的功能實現(xiàn)特點,系統(tǒng)被劃分為八個任務(wù)[6],它們分別是PDN網(wǎng)關(guān)(PDN-gateway,PGW)、業(yè)務(wù)網(wǎng)關(guān)(service-gateway,SGW)、增強型會話管理(EPS session management,ESM)、增強型移動性管理(EPS mobility management,EMM)、無線資源控制(radio resource control,RRC)、分組數(shù)據(jù)匯聚(packet data convergence protocol,PDCP)、無線鏈路控制(radio link control,RLC)以及媒體接入控制(medium access control,MAC)。任務(wù)共有執(zhí)行、就緒、掛起、停止和完成這五個不同狀態(tài)屬性,但任何任務(wù)只能處于其中一種狀態(tài)。在多任務(wù)系統(tǒng)中,只有在競爭到系統(tǒng)資源的情況下任務(wù)才能得到執(zhí)行。任務(wù)擁有的資源情況是不斷被改變的,因此,任務(wù)的狀態(tài)也不斷隨之變化。
任務(wù)的優(yōu)先級代表該任務(wù)對工作內(nèi)容的優(yōu)先程度。Nucleus PLUS實時操作系統(tǒng)可提供基于任務(wù)優(yōu)先級的搶占式調(diào)度,它提供0~255共256個不同的優(yōu)先級,0代表最高優(yōu)先級,255代表最低優(yōu)先級。對于重要的任務(wù),可賦予較高的優(yōu)先級;反之亦然。在該系統(tǒng)的實現(xiàn)過程中,通過整體分析,考慮到越底層的處理需要越高的優(yōu)先級。因此,對各任務(wù)優(yōu)先級分配如下:MAC的優(yōu)先級分配為40,RLC的優(yōu)先級分配為50,PDCP的優(yōu)先級分配為60,RRC的優(yōu)先級分配為70,EMM的優(yōu)先級分配為80,ESM的優(yōu)先級分配為90,SGW的優(yōu)先級分配為100,PGW的優(yōu)先級分配為110。
Nucleus PLUS實時操作系統(tǒng)提供任務(wù)間同步、互斥以及通信機制。在對該系統(tǒng)進行設(shè)計時,各任務(wù)不是相互獨立的,它們之間存在各種聯(lián)系。因此,必須處理好任務(wù)間通信,才能使系統(tǒng)達到最佳的使用效率,避免發(fā)生死鎖甚至崩潰等災(zāi)難性后果。
在系統(tǒng)設(shè)計過程中,使用消息隊列實現(xiàn)消息間通信。消息隊列由消息隊列控制塊統(tǒng)一進行管理,系統(tǒng)可以動態(tài)地分配或回收消息隊列控制塊。當一個消息被創(chuàng)建以后,Nucleus PLUS內(nèi)核將會為其分配一個唯一的隊列控制塊(queue control block,QCB)和標志,同時分配消息存儲緩沖區(qū)、一個或多個任務(wù)等待列表等。消息隊列的創(chuàng)建者可通過接口程序設(shè)置隊列長度與最大消息長度。一個任務(wù)包括兩個列表:發(fā)送任務(wù)等待列表和接收任務(wù)等待列表。僅當消息隊列為空時,才開始填充接收任務(wù)等待列表;同樣地,僅當消息隊列為滿時,才開始填充發(fā)送任務(wù)等待列表[7]。
任務(wù)在等待一個空隊列時會被掛起,同樣地,當任務(wù)試圖發(fā)送一個消息到滿隊列中時也會被掛起。圖3通過RRC隊列簡單展示了隊列通信的基本原理。根據(jù)系統(tǒng)前期設(shè)計,對應(yīng)八個任務(wù)創(chuàng)建了八個消息隊列,隊列長度為30(可存儲30條不同消息),消息最大長度為1(只需存儲消息首地址)。用戶創(chuàng)建RRC隊列后,該隊列處于空狀態(tài),此時EMM、PDCP、RLC和MAC等任務(wù)都可以將消息發(fā)送至RRC隊列而無需等待。當RRC隊列中存滿30條消息后,隊列即被存滿,無空間接收其他消息,所以圖3中任務(wù)EMM與任務(wù)MAC將會進入發(fā)送等待隊列而被掛起。同時,對于該隊列進行接收的任務(wù)RRC,可以從隊列中取出相應(yīng)消息,當隊列中的消息個數(shù)為0時,接收任務(wù)RRC即被掛起,直到隊列中又存儲了消息。
圖3 消息隊列示意圖Fig.3 Sketch map of message queue
內(nèi)存分配組件負責管理Nucleus PLUS所有的內(nèi)存設(shè)備。在對系統(tǒng)設(shè)計時,根據(jù)實際需要為它分配五個內(nèi)存池,每個內(nèi)存池中包括一定數(shù)目的、固定大小的內(nèi)存單元,分別為52 B、140 B、352 B、2000 B 和60000 B,適用于不同的內(nèi)存需求。當任務(wù)申請內(nèi)存時,系統(tǒng)首先檢查其合法性,對于合法的內(nèi)存申請,系統(tǒng)選擇對應(yīng)內(nèi)存池并按照先后順序分配固定大小內(nèi)存單元,同時在該內(nèi)存池中進行相應(yīng)記錄[8]。
任務(wù)MAC需要申請40 B的內(nèi)存空間,系統(tǒng)根據(jù)MAC該次申請的內(nèi)存大小(0<40<52)選擇對應(yīng)的內(nèi)存池PM_POOL_1。緊接著,根據(jù)可用首地址(Pm_available_list)中存儲的地址值(指針(N+1)),系統(tǒng)將編號為(N+1)的內(nèi)存單元分配給MAC任務(wù),并將該內(nèi)存單元中的地址(N+1)設(shè)置為空,此時可用首地址中存儲的就是下一個未分配的內(nèi)存單元N的首地址(指針N),并標記了該內(nèi)存空間的使用情況。當RRC任務(wù)需要釋放內(nèi)存單元時,只需將該內(nèi)存單元的首地址(指針M)告知系統(tǒng),系統(tǒng)根據(jù)內(nèi)存池標示 PM_POOL_1知道該單元屬于內(nèi)存池1;然后將該內(nèi)存單元的地址域(空)設(shè)置為可用首地址中的值(指針N),同時將可用首地址的值設(shè)置為該內(nèi)存單元的首地址(指針M),即說明該內(nèi)存單元可以被再次使用。
內(nèi)存申請與釋放的基本步驟如圖4所示。
圖4 內(nèi)存申請與釋放Fig.4 Allocation and release of memory
根據(jù)在運行過程中能否響應(yīng)中斷的情況,可將任務(wù)分為搶占式調(diào)度和非搶占式調(diào)度。Nucleus PLUS操作系統(tǒng)提供基于優(yōu)先級的搶占式調(diào)度,同時也提供基于時間片的輪轉(zhuǎn)調(diào)度。時間片輪轉(zhuǎn)調(diào)度是指當同優(yōu)先級的多個就緒任務(wù),需要根據(jù)就緒的先后順序,分配一定的時間片給先就緒的任務(wù),運行完后再執(zhí)行后就緒的任務(wù)。在測試儀表軟件的實現(xiàn)中并未定義同優(yōu)先級的任務(wù),所以只需利用操作系統(tǒng)提供的基于優(yōu)先級的搶占式調(diào)度[9-10]。
基于優(yōu)先級的搶占式調(diào)度過程如圖5所示。在系統(tǒng)運行后,任務(wù)RRC需占用系統(tǒng)資源,此時CPU未被任何其他任務(wù)占用,申請被允許。任務(wù)RRC執(zhí)行完成后,向任務(wù)PDCP發(fā)送相關(guān)處理指令,任務(wù)PDCP接收到該指令后需申請相應(yīng)資源,系統(tǒng)根據(jù)資源占用情況分配一定資源給 PDCP,觸發(fā)其進行處理。在任務(wù)PDCP的執(zhí)行過程中,優(yōu)先級高的任務(wù)MAC需要占用系統(tǒng)資源,系統(tǒng)將PDCP掛起,并運行就緒的MAC任務(wù),直到MAC運行完成后才開始執(zhí)行掛起的任務(wù)PDCP。在PDCP執(zhí)行的過程中,任務(wù)EMM需占用系統(tǒng)資源進行處理,但由于其優(yōu)先級低于正在執(zhí)行的任務(wù),所以必須等待;當PDCP執(zhí)行完成后,系統(tǒng)才開始EMM任務(wù)的處理。
圖5 任務(wù)調(diào)度Fig.5 Task scheduling
圖5中,當EMM任務(wù)執(zhí)行完成后,它會向ESM任務(wù)發(fā)送一個處理信號,要求ESM任務(wù)進行處理。此時若系統(tǒng)發(fā)現(xiàn)并無優(yōu)先級高的任務(wù)調(diào)用資源,則任務(wù)ESM開始執(zhí)行。經(jīng)過一段時間,優(yōu)先級較高的PDCP任務(wù)需要占用資源,系統(tǒng)將使用權(quán)交給任務(wù)PDCP,而在其執(zhí)行過程中,優(yōu)先級更高的RLC任務(wù)需要調(diào)用系統(tǒng)資源,此時系統(tǒng)將使用權(quán)交給任務(wù)RLC,然后交還給掛起的任務(wù)PDCP與任務(wù)ESM。任務(wù)調(diào)用過程完成后,系統(tǒng)掛起所有任務(wù)。
在底層硬件支持、射頻發(fā)射模塊以及應(yīng)用層實現(xiàn)的基礎(chǔ)上,結(jié)合系統(tǒng)軟件部分,就可以完全實現(xiàn)TDLTE終端綜合測試儀。綜測儀的整體設(shè)計如圖6所示。
圖6 整體設(shè)計圖Fig.6 Overall design
圖6中,當綜測儀開機后,首先對底層硬件、射頻發(fā)射模塊以及應(yīng)用層相關(guān)組件進行初始化,然后對操作系統(tǒng)進行初始化,包括隊列、應(yīng)用以及匯編初始化。應(yīng)用層初始化部分是重點,它由用戶自行設(shè)計,大體上包括地址分配、串口和終端初始化、任務(wù)創(chuàng)建、定時器創(chuàng)建及其初始化。
如前所述,根據(jù)綜測儀的設(shè)計,在創(chuàng)建任務(wù)時創(chuàng)建了八個不同的任務(wù),其都由Nucleus PLUS操作系統(tǒng)進行調(diào)度并共享系統(tǒng)資源。當綜測儀開機完成后,測試人員可通過人機操作界面發(fā)送請求。該請求通過中斷的方式告知給Nucleus PLUS操作系統(tǒng),操作系統(tǒng)根據(jù)系統(tǒng)資源使用情況分配相應(yīng)的資源給任務(wù)PGW,從而及時處理人機接口下發(fā)的請求。任務(wù)PGW將處理產(chǎn)生的消息發(fā)送至相應(yīng)隊列(SGW隊列),觸發(fā)SGW任務(wù)執(zhí)行相應(yīng)操作,此時操作系統(tǒng)又將分配相應(yīng)資源給SGW任務(wù)使用CPU。如此循環(huán)往復,直到將消息(需要對被測終端進行操作)通過射頻模塊發(fā)送出去或觸發(fā)(配置綜測儀)綜測儀本身進行相應(yīng)動作。
本文所設(shè)計的系統(tǒng)采用了實時多任務(wù)操作系統(tǒng)Nucleus PLUS。首先利用其任務(wù)分配機制將系統(tǒng)劃分成不同功能的多個任務(wù),且不同的任務(wù)擁有不同的優(yōu)先級,高優(yōu)先級任務(wù)優(yōu)先占用系統(tǒng)資源;然后利用內(nèi)存分配機制為占用資源的任務(wù)分配合理空間,同時通過隊列實現(xiàn)各任務(wù)間的通信。對比于其他單任務(wù)操作系統(tǒng),采用該實時操作系統(tǒng)既可以滿足通信軟件對實時性和可靠性的高要求,又方便了系統(tǒng)調(diào)試。這種實現(xiàn)方案對其他類似的應(yīng)用場合同樣具有一定的啟示作用。
[1]管武.基于ARM的嵌入式測控平臺的設(shè)計及實現(xiàn)[D].上海:上海大學,2008.
[2]胡曙輝,陳健.幾種嵌入式實時操作系統(tǒng)的分析與比較[J].單片機與嵌入式系統(tǒng)應(yīng)用,2007(5):5-9.
[3]鄭宗漢.實時系統(tǒng)軟件基礎(chǔ)[M].北京:清華大學出版社,2003.
[4]李小文,李貴勇.TD-SCDMA第三代移動通信系統(tǒng)、信令及實現(xiàn)[M].北京:人民郵電出版社,2003.
[5]沈嘉.3GPP長期演進(LTE)技術(shù)原理與系統(tǒng)設(shè)計[M].北京:人民郵電出版社,2008.
[6]張曉輝,羅毅.μC/OS-Ⅱ在應(yīng)用系統(tǒng)中任務(wù)劃分及優(yōu)先級設(shè)置[J].工業(yè)控制計算機,2005(7):40-44.
[7]羅蕾.嵌入式實時操作系統(tǒng)及其應(yīng)用開發(fā)[M].2版.北京:北京航空航天大學出版社,2007.
[8]李侯清.嵌入式系統(tǒng)內(nèi)存管理簡述[J].經(jīng)濟技術(shù)協(xié)作信息,2010(33):128-129.
[9]朱麗英,蔡家楣.基于Nucleus PLUS的嵌入式系統(tǒng)的軟件設(shè)計[J].計算機應(yīng)用于軟件,2005,22(2):33 -34.
[10]劉洲洲.基于嵌入式Nucleus系統(tǒng)的多進程實現(xiàn)方案[J].微處理機,2010(2):85-87.