应用RTOS的TD-LTE无线综测仪的实现

2012-07-26 11:04李小文
自动化仪表 2012年2期
关键词:队列内存消息

李小文 肖 垒,2

(重庆市移动通信重点实验室1,重庆 400065;重庆邮电大学通信与信息工程学院2,重庆 400065)

0 引言

随着我国通信市场需求的进一步增加,现阶段对通信前沿技术的研究呈现迅速增长的态势,与此同时,公众对通信软件服务质量的要求也越来越严格。这使得人们对通信软件的实时性、可靠性要求越来越高,从而催生了通信行业对新一代无线通信系统的研究与开发。

在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月底完成。

1 Nucleus PLUS简介

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]。

2 TD-LTE无线综测仪简介

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]。

3 系统设计

3.1 系统任务划分

系统任务的划分是实时通信系统设计中最关键的一步,只有合理地划分各任务,系统的设计才能得到简化,同时也使后续的调试更为方便。如任务划分不恰当,则系统硬件的设计和软件的调试会存在较大困难,系统甚至会出现致命的错误。在对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。

3.2 任务间通信

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

3.3 内存管理

内存分配组件负责管理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

3.4 任务调度

根据在运行过程中能否响应中断的情况,可将任务分为抢占式调度和非抢占式调度。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。任务调用过程完成后,系统挂起所有任务。

3.5 整体体设计

在底层硬件支持、射频发射模块以及应用层实现的基础上,结合系统软件部分,就可以完全实现TDLTE终端综合测试仪。综测仪的整体设计如图6所示。

图6 整体设计图Fig.6 Overall design

图6中,当综测仪开机后,首先对底层硬件、射频发射模块以及应用层相关组件进行初始化,然后对操作系统进行初始化,包括队列、应用以及汇编初始化。应用层初始化部分是重点,它由用户自行设计,大体上包括地址分配、串口和终端初始化、任务创建、定时器创建及其初始化。

如前所述,根据综测仪的设计,在创建任务时创建了八个不同的任务,其都由Nucleus PLUS操作系统进行调度并共享系统资源。当综测仪开机完成后,测试人员可通过人机操作界面发送请求。该请求通过中断的方式告知给Nucleus PLUS操作系统,操作系统根据系统资源使用情况分配相应的资源给任务PGW,从而及时处理人机接口下发的请求。任务PGW将处理产生的消息发送至相应队列(SGW队列),触发SGW任务执行相应操作,此时操作系统又将分配相应资源给SGW任务使用CPU。如此循环往复,直到将消息(需要对被测终端进行操作)通过射频模块发送出去或触发(配置综测仪)综测仪本身进行相应动作。

4 结束语

本文所设计的系统采用了实时多任务操作系统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.

猜你喜欢
队列内存消息
队列队形体育教案
队列里的小秘密
基于多队列切换的SDN拥塞控制*
一张图看5G消息
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
在队列里
内存搭配DDR4、DDR3L还是DDR3?
消息
消息