《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Nucleus Plus操作系統的多實例模式的實現
基于Nucleus Plus操作系統的多實例模式的實現
來源:電子技術應用2012年第9期
陳發堂,庹 勤
重慶郵電大學 重慶市移動通信技術重點實驗室,重慶400065
摘要: 在對TD_LTE射頻一致性測試儀表的開發中,針對同時建立多個承載的需求,引入了多實例管理模式。著重介紹了項目協議棧中基于Nucleus Plus操作系統多實例模式的實現機制。該機制中包含了系統的內存池、隊列、任務等組件的初始化,其多實例管理模塊有效地完成了消息的路由,同時采用優化后的分區內存池對消息和各實例數據內存進行分配和釋放,使內存分配中產生的內碎片降到最低。
中圖分類號: TN929
文獻標識碼: A
文章編號: 0258-7998(2012)09-0014-04
Implementation of multiple instances mode based on the Nucleus Plus operating system
Chen Fatang,Tuo Qin
Chongqing Key Laboratory of Mobile Communication, Chongqing University of Posts and Telecommunications, Chongqing 400065,China
Abstract: On the basis of the development of TD_LTE radio frequency consistency testing instrument, multiple instances mode is introduced in order to meet the establish of multiple radio bearers at the same time. This paper presents the realization mechanism of multiple instances pattern, which is based on the Nucleus Plus operating system. This mechanism includes system module initialization such as memory pool, queue, task and so on. The design of multiple instances management module accomplishes message routing. The memory of message and instances data are managed by optimized partition memory pool, which minimizes the inner fragment.
Key words : Nucleus Plus;multiple instances;partition memory pool

    TD_LTE技術標準從確定至今發展十分迅速。根據TD產業聯盟信息,TD_LTE產業鏈的發展得到了全球主流研發制造廠商的積極參與,而測試又是關系未來商用的關鍵點。其中測試儀表對測試結果的準確性和可信度影響很大,因此急需對測試儀在測試標準化、測試儀表的功能和性能等方面對測試儀進行改進[1]。

    本文在對TD_LTE射頻一致性測試儀表的開發中,需要建立多個承載來滿足同時發起的業務,因此引入了多實例模式。而如何保證消息正確到達對應的實例,解決各實例消息和數據的內存區的分配和釋放是關鍵。在本設計過程中,結合了Nucleus Plus操作系統提供的內存池、隊列、任務等組件功能,有效地解決了測試儀表中多實例模式的實現問題。
1 多實例模式
    TD_LTE射頻一致性測試儀表是依據3GPP標準、TD_LTE國家行業標準開發的TD_LTE基站和終端的測試儀表。在TD_LTE終端協議棧中,無線承載用于接入層向上提供的服務,包括了用于承載控制面信令的信令無線承載(SRB)和用于承載用戶面的數據業務的數據無線承載(DRB)。而默認承載和專用承載是非接入層向上提供的服務,以滿足不同業務的QoS。在實際測試中,可能同時激活建立多個承載去滿足不同的業務。非接入層與接入層承載的映射是根據承載建立情況動態配置的,并且是一一映射的關系。在設計過程中,建立的承載每個對應一個激活的實例,每個實例通過分配的唯一標識進行區分。根據LTE協議規范,在整個協議棧中同時存在多個實例的有ESM、RLC和PDCP三個子層[2]。
2 Nucleus Plus
    Nucleus Plus是美國源代碼操作系統商ATI公司推出的嵌入式系統,以其實時響應、搶先、多任務以及源代碼開放特性獲得在通信、國防、自動化控制、智能家電等領域的廣泛應用。同時Nucleus Plus初始化過程中提供的Application_Initialize是對用戶開放的子程序,用戶可以根據自己的需要在其中初始化Nucleus Plus提供的組件,如任務、內存池、隊列等[3]。系統為協議棧每個子層設置一個對應的任務,并為每個任務分配了一個優先級,數值范圍從0~255對應由高到低的256個優先級別。同時也為每個任務分配一個隊列,隊列是Nucleus Plus中承載消息的載體之一。隊列提供了傳輸多個消息的機制,消息以數值形式發送和接收。發送消息時要求將消息拷貝進隊列;接收消息時要求將消息從隊列拷貝出消息。而內存池組件又提供了分區內存池分配和動態內存池分配兩大類,為用戶提供了靈活的內存管理模塊。
3 多實例模式實現方案
3.1 初始化模塊

    (1)在Application_Initialize中首先完成內存池組件的初始化。在系統設計時,共創建了5個分區內存池和2個動態內存池。動態內存池用于系統任務堆棧和隊列的創建內存分配。分區內存池用于消息、各實例數據等存儲區的內存分配,本文即著重介紹了對分區內存池的初始化進行。
    Nucleus系統低級初始化中,由系統堆棧之后分配一個可用內存,用于分區內存池的第一個可用地址;然后把連續的大塊內存按分區池進行管理,每個池中包含整數大小相同的小分區,但不同池之間的分區大小不同。根據實際需要,定義了不同密度的小分區,分別為52 B、140 B、352 B、2 000 B、60 000 B。每個池都分配一個PM_PCB(分區池控制塊)和一個分區的內存區指針。PM_PCB中包含了每個分區池的詳細信息包括:分區內存池的名稱、起始池地址、總分區大小、分區大小、分區中第1個可用地址等。每個小分區都有一個占8 B的頭,包含2個地址(下一個可用的分區地址和分區池地址)。分區池之間通過一個雙向鏈表進行鏈接,而池中單個分區通過單向鏈表進行鏈接,如圖1所示。在動態申請內存時,系統首先進行判斷,根據申請內存的大小選擇一個與其大小最接近的分區,然后在相應的分區池中劃去第1個可用地址對應的小分區。將劃分出的分區中的下一個可用分區地址置為NULL,同時更改PM_PCB中相應的消息,例如下一個可用分區地址、可用分區數等。釋放內存時根據該小分區中保存的分區池地址,將其放回它以前所屬的分區池,并作為第一個可用分區地址。采用這種方式能有效解決碎片問題,同時執行時間是固定的[4]。

    (2)任務和隊列的創建:與分區池的原理類似。系統為相應的任務和隊列分別分配一個TCB(任務控制塊)和QCB(隊列控制塊),并且各任務之間和各個隊列之間都通過動態的雙向鏈表進行鏈接。每個TCB中包含了任務優先級、任務狀態、任務處理函數入口地址等相關信息。QCB包含了隊列的最大消息數、消息起始地址、消息的結束地址等信息。接著對存在多實例模式的三個子層進行初始化,將三個子層分別定義為一個多實例進程,并為其分配一個唯一進程標識(processID),同時定義可能存在的最大實例數。每個進程和各實例的信息采用結構體數組的形式,初始信息包括每個進程的狀態機入口函數、各實例的初始狀態等。
    至此,與多實例相關的初始化已完成,系統其他組件初始化這里不再敘述。初始化完成之后,就進入Nucleus操作系統的主控程序調度。
3.2 多實例管理模塊
    協議棧層間原語通信是通過Nucleus系統隊列來實現的。一旦主控程序檢測到某層任務被激活,系統將從任務棧中取出當前任務所包含的所有控制信息并跳轉至任務處理函數。在任務處理函數中,處理函數將從相應的任務隊列中取出消息。協議棧的開發也是基于有限狀態機的思想,每收到一條消息,就要進行消息處理。對于多實例模式,要進行消息的處理,就必須知道該消息所屬實例的狀態、該狀態下對應著這條消息的處理函數以及處理結束后躍遷到的狀態[5-6]。因此,在前期開發中定義了每個子層的狀態和接口原語,并為每條原語分配一個信令標識(signlingID),同時每個狀態對應一個消息分組。為保證消息傳遞到對應的進程實例中,為三個多實例模式的子層設計了一個多實例管理模塊,圖2為該模塊的處理流程。從隊列取出消息后,先從消息頭中獲得實例號InstID,將其作為入口函數的參數之一;然后調用多實例處理函數。在函數內部,首先對入口函數中相應的InstID和processID進行有效性判斷,對于錯誤的InstID和processID直接轉入消息內存釋放分支,并返回多實例處理不正常的標識。反之,通過有效的processID獲得相應進程的狀態入口函數,有效的InstID獲得相應的實例狀態地址,接著轉入狀態機處理函數分支;最后對調用函數返回的狀態機處理標識進行判斷,對于正常標志,返回多實例處理正常的標識,否則返回多實例處理不正常的標識。這樣通過返回的處理流程標志,可容易地檢測和定位出錯的位置。

3.3 狀態機處理模塊
    以PDCP子層為例說明狀態機處理模塊的實現流程。如圖3所示,通過對入口函數中攜帶的狀態進行有效性驗證,如果沒有找到匹配的狀態就對該消息所占內存進行釋放;反之,在匹配的狀態下通過消息頭指針獲得消息的signalID。同樣對signalID進行判斷,如果是無效消息標識,則轉入釋放消息內存分支,并向多實例模塊返回狀態機處理不正常的標識;否則將消息轉入相應的消息處理函數。在消息處理函數中,各實例所用的數據緩存都通過分區內存池進行申請,再由分區池對其內存進行統一分配和釋放。消息處理完之后,返回當前實例的狀態賦給入口函數中的狀態指針,通過實例狀態指針的地址對其狀態進行更新。同樣,正常流程處理完之后,對消息所占內存進行釋放,以免發生內存泄露。最后向多實例模塊返回狀態機處理正常的標識。

 

 

3.4 多實例模式實現流程
    在Nucleus操作系統完成所有與目標硬件相關的低級初始化和相關組件的高級初始化子程序后,調用對用戶開放的子程序Application_Initialize模塊。在其中完成分區內存池和動態內存池的分配、為每個子層創建隊列和任務、三個多實例子層的相關信息的初始化以及其他系統組件的初始化。Application_Initialize完成后,Nucleus的初始化完畢,開始進入主控調度程序TCT_Schedule,圖4所示為多實例模式實現流程。 Nucleus主控程序采用等待檢測機制,不斷循環檢測當前執行任務[7]。當向某個多實例子層的隊列發送消息時,將激活掛起在此隊列的任務。一旦主控程序檢測到某個多實例子層任務被激活,則轉入相應子層的任務處理函數。在任務處理函數中,處理函數將從相應的任務隊列中取出消息,然后將消息遞交給多實例管理模塊,通過一些異常情況的檢測后,調用相應多實例進程的狀態機處理函數。在狀態機處理函數中將消息遞交給當前實例狀態下的消息處理函數。在實現過程中,為了避免內存泄露,每次處理完消息之后都及時回收所占內存。同樣如果要釋放某個承載,對應的實例中所開辟的數據存儲區也要進行釋放,釋放后的內存可被再次使用。處理完某個隊列的消息后,又將此隊列的任務掛起,并返回系統的循環檢測控制塊中。

    本文給出了項目協議棧中基于Nucleus操作系統的多實例模式實現機制。Nucleus為用戶提供了靈活的內存管理機制,通過自定義池的大小和不同密度的分區大小,以滿足不同內存的需要。同時增加了一個判斷模塊,將申請任務指定到適應它的最小分區,從而有效地減小了分區內碎片問題。本文設計的多實例管理模塊,能完成異常情況的處理,保證消息順利到達相應進程的狀態機處理函數。結合Nucleus提供的其他任務、隊列等組件功能,該設計方案能實現多實例模式的功能。
參考文獻
[1] 蔣遠.移動通信新技術—LTE快速發展[J].電信工程技術與標準化,2011,24(9):1-4.
[2] 沈嘉.3GPP長期演進(LTE)技術原理與系統設計[M].北京:人民郵電出版社,2008.
[3] 管武.基于ARM的嵌入式測控平臺的設計及實現[D].上海:上海大學,2008.
[4] 左利云,吳良海.基于內存管理的多重查詢調度算法[J].計算機研究與發展,2010,20(7):121-124.
[5] 李小文,陳賢亮.TD-SCDMA第三代移動通信系統、信令及實現[M].北京:人民郵電出版社,2003.
[6] 宋茂強.通信軟件設計基礎(第2版)[M].北京:北京郵電大學出版社,2008.
[7] 魏振華.嵌入式實時操作系統Nucleus中線程控制部件的實現方法[J].計算機應用研究,2003,20(4):97-99.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美福利专区| 一区二区三区亚洲| 久久婷婷色综合| 欧美一级专区| 亚洲欧美日韩国产一区二区三区 | 久久精品99久久香蕉国产色戒 | 国产精品你懂的| 欧美午夜不卡在线观看免费| 欧美日韩免费观看一区三区| 欧美日本国产视频| 欧美日韩视频免费播放| 欧美日本一区| 欧美三区在线观看| 国产精品激情偷乱一区二区∴| 欧美性猛交99久久久久99按摩 | 亚洲少妇诱惑| 亚洲主播在线| 亚洲欧美伊人| 欧美亚洲一级片| 久久精精品视频| 亚洲激情偷拍| 亚洲免费观看高清在线观看| 99在线热播精品免费99热| 中文精品视频| 亚洲欧美制服中文字幕| 欧美一区网站| 老鸭窝91久久精品色噜噜导演| 美女视频黄 久久| 欧美激情精品久久久久久变态| 欧美日本国产精品| 亚洲靠逼com| 亚洲乱码国产乱码精品精98午夜| 日韩视频欧美视频| 制服丝袜亚洲播放| 午夜精品久久| 亚洲国产成人不卡| 日韩视频一区| 午夜精品视频网站| 久久久久在线| 欧美激情一区二区三区蜜桃视频| 欧美日韩中文字幕| 国产欧美日韩视频一区二区| 一区二区三区自拍| 亚洲欧洲另类| 亚洲一区二区三区四区在线观看 | 亚洲一区二区三区精品视频| 性久久久久久| 亚洲欧洲一区二区天堂久久| 亚洲无人区一区| 久久精品视频在线观看| 欧美电影打屁股sp| 国产精品久久久免费| 激情小说另类小说亚洲欧美| 亚洲精品系列| 欧美一区二区视频在线观看| 亚洲免费观看高清完整版在线观看| 亚洲欧美日本精品| 美国成人直播| 国产精品免费一区二区三区在线观看| 国户精品久久久久久久久久久不卡| 亚洲欧洲综合| 欧美一区二区三区久久精品茉莉花| 亚洲精品日韩欧美| 欧美一级播放| 欧美人与性动交a欧美精品| 国产欧美一级| 亚洲卡通欧美制服中文| 欧美中文在线视频| 中文国产成人精品| 免费日韩精品中文字幕视频在线| 国产精品久久久久久久久免费| 激情久久久久久久| 亚洲一区免费网站| 99re8这里有精品热视频免费| 欧美一区二区久久久| 欧美日韩不卡一区| 黄色精品网站| 亚洲欧美日韩一区二区三区在线观看 | 日韩视频在线免费| 久久久久久午夜| 国产精品久久久久永久免费观看| 亚洲国产一区二区精品专区| 午夜亚洲精品| 亚洲免费视频中文字幕| 欧美黄网免费在线观看| 黑人巨大精品欧美一区二区小视频 | 亚洲一区二区伦理| 这里只有精品丝袜| 欧美黄色一级视频| 亚洲第一中文字幕| 欧美一区二区三区四区在线观看| 亚洲性xxxx| 欧美日本一区| 亚洲日韩第九十九页| 亚洲国产日韩欧美综合久久| 久久精品99无色码中文字幕| 国产精品一区久久久久| 在线视频精品一区| 一本一本久久a久久精品综合麻豆| 麻豆九一精品爱看视频在线观看免费| 国产精品一区久久| 亚洲制服欧美中文字幕中文字幕| 亚洲影院在线观看| 欧美色大人视频| 亚洲美女毛片| 一本色道久久综合| 欧美久久在线| 亚洲另类视频| 国产精品99久久久久久久久 | 国内精品99| 欧美一区二区三区四区在线观看地址 | 久久福利影视| 久久久精品一区| 国模一区二区三区| 久久精品国产99国产精品澳门| 欧美在线一二三四区| 国产欧美精品一区二区三区介绍| 亚洲性色视频| 午夜亚洲伦理| 国产欧美日本| 午夜在线一区二区| 久久精品成人欧美大片古装| 国产深夜精品| 欧美在线视频在线播放完整版免费观看| 久久精品理论片| 国内精品嫩模av私拍在线观看 | 亚洲理论在线观看| 欧美日韩中文精品| 在线视频日韩| 欧美亚洲尤物久久| 国产三区二区一区久久| 亚洲福利在线看| 欧美国产国产综合| 亚洲精品中文字| 亚洲一区二区3| 国产精品一区在线观看你懂的| 午夜精品美女自拍福到在线| 久久久久久久尹人综合网亚洲| 在线观看福利一区| 亚洲精品在线一区二区| 欧美片第1页综合| 亚洲一区二区动漫| 久久综合狠狠综合久久综合88| 亚洲成色最大综合在线| 日韩午夜电影| 国产精品一区二区你懂得| 久久av二区| 欧美激情视频在线免费观看 欧美视频免费一 | 国产精品免费看| 欧美一区二区三区在| 免费国产自线拍一欧美视频| 亚洲毛片在线观看| 欧美一二三区在线观看| 伊人久久综合| 亚洲天堂视频在线观看| 国产欧美日韩视频在线观看 | 久久精品国产综合| 欧美激情一区二区三级高清视频| 这里只有精品丝袜| 久久九九99| 亚洲精品日韩综合观看成人91| 午夜精品福利视频| 在线观看视频免费一区二区三区| 亚洲私人黄色宅男| 国产亚洲欧美一区| 一本色道久久综合狠狠躁篇的优点 | 亚洲欧美在线一区| 欧美大片免费| 亚洲影院色在线观看免费| 免费观看亚洲视频大全| 宅男精品视频| 欧美成年人在线观看| 亚洲一区二区在| 欧美高清在线一区| 欧美一级大片在线免费观看| 欧美久久影院| 久久精品视频在线免费观看| 欧美午夜精品久久久久久人妖| 亚洲第一福利在线观看| 欧美午夜www高清视频| 亚洲国产小视频| 国产精品美女999| 亚洲精品国产精品乱码不99按摩| 国产精品一区二区三区成人| 亚洲毛片视频| 狠狠88综合久久久久综合网| 亚洲一区二区三区在线看| 在线观看成人av| 久久国产66| 99视频一区| 欧美成人免费一级人片100| 亚洲女同性videos| 欧美日韩免费一区二区三区| 欧美诱惑福利视频| 国产精品极品美女粉嫩高清在线 | 伊大人香蕉综合8在线视| 亚洲欧美国产高清| 亚洲精品国产视频| 久久婷婷亚洲| 午夜精品久久|