李小文 肖 壘,2
(重慶市移動通信重點實驗室1,重慶 400065;重慶郵電大學通信與信息工程學院2,重慶 400065)
隨著我國通信市場需求的進一步增加,現階段對通信前沿技術的研究呈現迅速增長的態勢,與此同時,公眾對通信軟件服務質量的要求也越來越嚴格。這使得人們對通信軟件的實時性、可靠性要求越來越高,從而催生了通信行業對新一代無線通信系統的研究與開發。
在2011年世界移動通信大會上,4 G網絡的發展成為各界關注的焦點,TD產業聯盟已將重點放在TDLTE端到端的產業鏈成果上。由此可以預測,日后通信行業對TD-LTE產品的測試擁有極大的潛在需求。在對TD-LTE終端綜合測試儀的設計過程中,采用了Nucleus操作系統。Nucleus PLUS是由美國ATI公司開發設計的實時操作系統(real-time operating system,RTOS)嵌入式產品,它是一種實時、搶占、多任務內核,被應用于有強實時性要求的應用領域。由于RTOS中大約95%的程序由ANSI C編寫,所以非常便于移植,現已被廣泛應用于通信、航天航空、自動化控制和國防等領域[1]。TD-LTE終端綜合測試儀目前已經進入試驗階段,正式產品已在2011年4月底完成。
Nucleus PLUS操作系統是目前應用較為廣泛的操作系統之一,其核心區代碼不超過20 kB。它采用軟件組件的方法,每個組件可以完成特定的功能。組件通常由使用C或匯編語言編寫的模塊組成,為外部應用程序提供清晰的接口。Nucleus PLUS不但提供源程序代碼,且具有性價比高、易學易用、功能模塊豐富等特點[2]。
Nucleus PLUS系統結構如圖1所示。
從圖1可知,Nucleus PLUS開發平臺提供多種模塊,用戶僅需編寫任務模塊和中斷服務程序(interrupt service routines,ISR),然后利用各模塊接口獲取相應服務,由Nucleus PLUS操作系統調度多個用戶任務并行運行,從而共享系統資源。Nucleus PLUS根據優先級和時間片調度各任務分時、分優先級地占用系統資源,各任務間通過郵箱、隊列或管道進行通信,使用信號量、事件組和信號進行同步與互斥。同時,Nucleus PLUS提供分區內存和動態內存兩種存儲器管理機制,并提供定時器,用于處理周期性事件、任務超時[3]。
TD-LTE終端綜合測試儀可以實現TD-LTE系統下行物理通道發生、呼叫建立、釋放和尋呼、上下行功率控制等多種功能。其主要用來精確測量TD-LTE終端的各種射頻指標,可模擬TD-LTE基站、無線網絡控制器(radio network controller,RNC)和核心網的信令功能,測試TD-LTE終端在多種狀態下的性能指標。TD-LTE終端綜合測試儀廣泛應用于TD-LTE終端的設計、研發、生產、認證以及維修等領域。
TD-LTE終端綜合測試儀能對被測終端發起如頻率誤差(error of frequency,FOE)、誤差向量幅度(error vector magnitude,EVM)、比特誤碼率(bit error rate,BER)和塊誤碼率(block error ratio,BLER)等各種基本測量,進行射頻(radio frequency,RF)工作模式、串行數據處理等模式的設置,以及實現小區激活、去激活和重配置等。它為出廠終端設備的檢測提供了最直觀的測試方式,同時也為TD-LTE終端設備的開發提供了極大的便利。TD-LTE終端綜合測試儀對出廠終端進行測量的基本方式如圖2所示。
圖2中,TD-LTE終端綜合測試儀模擬網絡端對終端進行測試。為防止測試中測試信號外泄對正常無線信號造成干擾,測試中需使用專用的測試線將被測終端連接至測試儀表。綜測儀前端面板可簡單劃分為顯示和控制兩個區域。顯示區域用來顯示測試結果,如測試波形、圖形等;控制區域用來配置并發送測試命令,如開機請求、小區激活請求和測量請求等指令。在測試中,還需將測試用計算機與綜測儀相連,從而更詳細地顯示或者處理得到的各種測試數據[4-5]。
系統任務的劃分是實時通信系統設計中最關鍵的一步,只有合理地劃分各任務,系統的設計才能得到簡化,同時也使后續的調試更為方便。如任務劃分不恰當,則系統硬件的設計和軟件的調試會存在較大困難,系統甚至會出現致命的錯誤。在對TD-LTE終端測試儀表軟件部分進行設計中,根據不同的功能實現特點,系統被劃分為八個任務[6],它們分別是PDN網關(PDN-gateway,PGW)、業務網關(service-gateway,SGW)、增強型會話管理(EPS session management,ESM)、增強型移動性管理(EPS mobility management,EMM)、無線資源控制(radio resource control,RRC)、分組數據匯聚(packet data convergence protocol,PDCP)、無線鏈路控制(radio link control,RLC)以及媒體接入控制(medium access control,MAC)。任務共有執行、就緒、掛起、停止和完成這五個不同狀態屬性,但任何任務只能處于其中一種狀態。在多任務系統中,只有在競爭到系統資源的情況下任務才能得到執行。任務擁有的資源情況是不斷被改變的,因此,任務的狀態也不斷隨之變化。
任務的優先級代表該任務對工作內容的優先程度。Nucleus PLUS實時操作系統可提供基于任務優先級的搶占式調度,它提供0~255共256個不同的優先級,0代表最高優先級,255代表最低優先級。對于重要的任務,可賦予較高的優先級;反之亦然。在該系統的實現過程中,通過整體分析,考慮到越底層的處理需要越高的優先級。因此,對各任務優先級分配如下:MAC的優先級分配為40,RLC的優先級分配為50,PDCP的優先級分配為60,RRC的優先級分配為70,EMM的優先級分配為80,ESM的優先級分配為90,SGW的優先級分配為100,PGW的優先級分配為110。
Nucleus PLUS實時操作系統提供任務間同步、互斥以及通信機制。在對該系統進行設計時,各任務不是相互獨立的,它們之間存在各種聯系。因此,必須處理好任務間通信,才能使系統達到最佳的使用效率,避免發生死鎖甚至崩潰等災難性后果。
在系統設計過程中,使用消息隊列實現消息間通信。消息隊列由消息隊列控制塊統一進行管理,系統可以動態地分配或回收消息隊列控制塊。當一個消息被創建以后,Nucleus PLUS內核將會為其分配一個唯一的隊列控制塊(queue control block,QCB)和標志,同時分配消息存儲緩沖區、一個或多個任務等待列表等。消息隊列的創建者可通過接口程序設置隊列長度與最大消息長度。一個任務包括兩個列表:發送任務等待列表和接收任務等待列表。僅當消息隊列為空時,才開始填充接收任務等待列表;同樣地,僅當消息隊列為滿時,才開始填充發送任務等待列表[7]。
任務在等待一個空隊列時會被掛起,同樣地,當任務試圖發送一個消息到滿隊列中時也會被掛起。圖3通過RRC隊列簡單展示了隊列通信的基本原理。根據系統前期設計,對應八個任務創建了八個消息隊列,隊列長度為30(可存儲30條不同消息),消息最大長度為1(只需存儲消息首地址)。用戶創建RRC隊列后,該隊列處于空狀態,此時EMM、PDCP、RLC和MAC等任務都可以將消息發送至RRC隊列而無需等待。當RRC隊列中存滿30條消息后,隊列即被存滿,無空間接收其他消息,所以圖3中任務EMM與任務MAC將會進入發送等待隊列而被掛起。同時,對于該隊列進行接收的任務RRC,可以從隊列中取出相應消息,當隊列中的消息個數為0時,接收任務RRC即被掛起,直到隊列中又存儲了消息。

圖3 消息隊列示意圖Fig.3 Sketch map of message queue
內存分配組件負責管理Nucleus PLUS所有的內存設備。在對系統設計時,根據實際需要為它分配五個內存池,每個內存池中包括一定數目的、固定大小的內存單元,分別為52 B、140 B、352 B、2000 B 和60000 B,適用于不同的內存需求。當任務申請內存時,系統首先檢查其合法性,對于合法的內存申請,系統選擇對應內存池并按照先后順序分配固定大小內存單元,同時在該內存池中進行相應記錄[8]。
任務MAC需要申請40 B的內存空間,系統根據MAC該次申請的內存大小(0<40<52)選擇對應的內存池PM_POOL_1。緊接著,根據可用首地址(Pm_available_list)中存儲的地址值(指針(N+1)),系統將編號為(N+1)的內存單元分配給MAC任務,并將該內存單元中的地址(N+1)設置為空,此時可用首地址中存儲的就是下一個未分配的內存單元N的首地址(指針N),并標記了該內存空間的使用情況。當RRC任務需要釋放內存單元時,只需將該內存單元的首地址(指針M)告知系統,系統根據內存池標示 PM_POOL_1知道該單元屬于內存池1;然后將該內存單元的地址域(空)設置為可用首地址中的值(指針N),同時將可用首地址的值設置為該內存單元的首地址(指針M),即說明該內存單元可以被再次使用。
內存申請與釋放的基本步驟如圖4所示。

圖4 內存申請與釋放Fig.4 Allocation and release of memory
根據在運行過程中能否響應中斷的情況,可將任務分為搶占式調度和非搶占式調度。Nucleus PLUS操作系統提供基于優先級的搶占式調度,同時也提供基于時間片的輪轉調度。時間片輪轉調度是指當同優先級的多個就緒任務,需要根據就緒的先后順序,分配一定的時間片給先就緒的任務,運行完后再執行后就緒的任務。在測試儀表軟件的實現中并未定義同優先級的任務,所以只需利用操作系統提供的基于優先級的搶占式調度[9-10]。
基于優先級的搶占式調度過程如圖5所示。在系統運行后,任務RRC需占用系統資源,此時CPU未被任何其他任務占用,申請被允許。任務RRC執行完成后,向任務PDCP發送相關處理指令,任務PDCP接收到該指令后需申請相應資源,系統根據資源占用情況分配一定資源給 PDCP,觸發其進行處理。在任務PDCP的執行過程中,優先級高的任務MAC需要占用系統資源,系統將PDCP掛起,并運行就緒的MAC任務,直到MAC運行完成后才開始執行掛起的任務PDCP。在PDCP執行的過程中,任務EMM需占用系統資源進行處理,但由于其優先級低于正在執行的任務,所以必須等待;當PDCP執行完成后,系統才開始EMM任務的處理。

圖5 任務調度Fig.5 Task scheduling
圖5中,當EMM任務執行完成后,它會向ESM任務發送一個處理信號,要求ESM任務進行處理。此時若系統發現并無優先級高的任務調用資源,則任務ESM開始執行。經過一段時間,優先級較高的PDCP任務需要占用資源,系統將使用權交給任務PDCP,而在其執行過程中,優先級更高的RLC任務需要調用系統資源,此時系統將使用權交給任務RLC,然后交還給掛起的任務PDCP與任務ESM。任務調用過程完成后,系統掛起所有任務。
在底層硬件支持、射頻發射模塊以及應用層實現的基礎上,結合系統軟件部分,就可以完全實現TDLTE終端綜合測試儀。綜測儀的整體設計如圖6所示。

圖6 整體設計圖Fig.6 Overall design
圖6中,當綜測儀開機后,首先對底層硬件、射頻發射模塊以及應用層相關組件進行初始化,然后對操作系統進行初始化,包括隊列、應用以及匯編初始化。應用層初始化部分是重點,它由用戶自行設計,大體上包括地址分配、串口和終端初始化、任務創建、定時器創建及其初始化。
如前所述,根據綜測儀的設計,在創建任務時創建了八個不同的任務,其都由Nucleus PLUS操作系統進行調度并共享系統資源。當綜測儀開機完成后,測試人員可通過人機操作界面發送請求。該請求通過中斷的方式告知給Nucleus PLUS操作系統,操作系統根據系統資源使用情況分配相應的資源給任務PGW,從而及時處理人機接口下發的請求。任務PGW將處理產生的消息發送至相應隊列(SGW隊列),觸發SGW任務執行相應操作,此時操作系統又將分配相應資源給SGW任務使用CPU。如此循環往復,直到將消息(需要對被測終端進行操作)通過射頻模塊發送出去或觸發(配置綜測儀)綜測儀本身進行相應動作。
本文所設計的系統采用了實時多任務操作系統Nucleus PLUS。首先利用其任務分配機制將系統劃分成不同功能的多個任務,且不同的任務擁有不同的優先級,高優先級任務優先占用系統資源;然后利用內存分配機制為占用資源的任務分配合理空間,同時通過隊列實現各任務間的通信。對比于其他單任務操作系統,采用該實時操作系統既可以滿足通信軟件對實時性和可靠性的高要求,又方便了系統調試。這種實現方案對其他類似的應用場合同樣具有一定的啟示作用。
[1]管武.基于ARM的嵌入式測控平臺的設計及實現[D].上海:上海大學,2008.
[2]胡曙輝,陳健.幾種嵌入式實時操作系統的分析與比較[J].單片機與嵌入式系統應用,2007(5):5-9.
[3]鄭宗漢.實時系統軟件基礎[M].北京:清華大學出版社,2003.
[4]李小文,李貴勇.TD-SCDMA第三代移動通信系統、信令及實現[M].北京:人民郵電出版社,2003.
[5]沈嘉.3GPP長期演進(LTE)技術原理與系統設計[M].北京:人民郵電出版社,2008.
[6]張曉輝,羅毅.μC/OS-Ⅱ在應用系統中任務劃分及優先級設置[J].工業控制計算機,2005(7):40-44.
[7]羅蕾.嵌入式實時操作系統及其應用開發[M].2版.北京:北京航空航天大學出版社,2007.
[8]李侯清.嵌入式系統內存管理簡述[J].經濟技術協作信息,2010(33):128-129.
[9]朱麗英,蔡家楣.基于Nucleus PLUS的嵌入式系統的軟件設計[J].計算機應用于軟件,2005,22(2):33 -34.
[10]劉洲洲.基于嵌入式Nucleus系統的多進程實現方案[J].微處理機,2010(2):85-87.