摘要 本文首先提出了3G底层技术统一平台的概念,介绍了本平台及系统控制子系统的框架结构;然后给出了实时状态检测模块的功能和结构设计,包括其在整个系统中的位置、和其它功能模块的联系等;进而重点分析了该模块各个进程和任务的处理流程,并对它们是如何分工合作、实现对整个底层工作状态的实时性检测和控制等技术做了详细说明。
3G底层技术平台主要是对硬件设备等基本组成元素做底层的封装,组合为各个功能不同的网元,再由上层各个研发机构作二次开发,推出基于各自标准的可供商用的产品。整个平台划分为若干个子系统,其中SCS即系统控制子系统居于核心地位,实现对3G平台的控制和管理。在SCS子系统中,实时状态检测模块主要完成:单板外围电路和单板上资源的状态检测,处理BSP异常中断上报,将检测的结果上报给SMM(状态管理模块)或者OAM网管子系统,使整个系统实时的了解各个单板的状态,以便进行相应操作。本文通过对该模块的研究、规划和设计,给出了实现方案,并分析了各个功能点的实现流程。
1、3G统一平台
1.1 平台组成结构
本平台由BSP子系统、支撑子系统系统、系统控制子系统等功能相对独立的11个子系统组成。不同子系统之间通过互发消息、提供或者调用接口函数、中断处理等机制实现整体协作,组成结构见图1。开发环境为Vxworks操作系统和Tornado2.2,程序设计语言为C语言。
VxWorks是由WindRiver公司推出的嵌入式实时操作系统(RTOS),它利用基于主机和目标机的交叉开发平台(Tornado)来编辑、编译、连接和动态加载可执行代码,并运行和调试实时应用程序。
1.2 相关术语、定义
进程:支撑系统进行调度的单位,由消息驱动,每个进程拥有自己的消息队列、数据区和栈。
消息:进程通讯信息的载体,指进程通讯时所传递的一块完整的数据,包括消息头和消息体,包括异步和同步消息。进程调用发送异步消息的原语后继续执行以后的指令,进程状态不因调用而有所改变;调用发送同步消息的原语后进入阻塞状态,停止执行下面的指令,直到接收该消息的进程处理完并返回应答后,再从阻塞状态进入就绪状态,等待CPU的调度。
2、系统控制子系统的设计
2.1 主要功能和性能
系统控制子系统在系统中的位置如图1所示,该系统完成的功能如下:
(1)系统加电,各个单板加载版本时,通过版本校验保证运行版本的正确性。(2)单板上电后,根据相应的单板配置决定是否需要进行主备竞争,同时从OMP获得本板的基本配置信息,按照顺序启动各个基本进程,完成单板的正常启动。(3)上电成功后,对单板的运行状况进行检测,包括对本板的各个外设进行检测,以及定时与MP进行握手,以便MP能够全面的管理系统中各个单板的运行状态和相关的资源状态,并进行闭塞/解闭塞处理。(4)在正常运行过程中,支持版本的在线更新,并提供一定人工干预的手段,以便在版本更新时保证系统的稳定运行。
系统控制子系统的性能主要体现为系统整体启动的时间(包括软件加载的过程和进程上电过程的控制等)、单板和资源状态变化的检测时间、主备倒换完成的时间。
2.2 模块设计
系统控制子系统划分为如下部分:主控制模块、状态管理模块、实时状态检测模块、版本管理模块和Boot。(1)主控制模块:完成单板基本配置信息的获取、进程加载过程的控制、主备倒换的控制。(2)状态管理模块:完成系统中各个单板的在线状态的检测、各种资源的配置信息的获取及其状态的管理。(3)实时状态检测模块:完成单板运行状态的检测,包括CPU的使用情况、内存的使用情况以及单板外设的状态和单板上资源的状态检测。(4)版本管理模块:本模块比较独立,完成系统版本的管理,包括从后台发起的版本更新、前台各个单板的运行版本信息及版本下载。(5)Boot模块:自成体系,完成的功能相对来说比较单一但是非常重要,包括单板的自举、版本下载和加载。
3、实时状态检测模块
实时状态检测模块,作为系统控制子系统的核心部分,驻留在各个物理单板上,包括UIM、TSNB、SPB、SDTB、MRB、MNIC、DTEC、APBE、VTCD、GLI、TMB、PSN、WPBCB、MPX86等。实时状态检测模块在3G统一平台中的位置如图1所示。
图1 实时状态检测模块在3G统一平台中的位置
3.1 模块功能和结构
主要功能:定时检测单板外围电路、单板上各个设备模块等实时状态;处理单板的异常中断上报消息;加载微码版本、DSP软件、固件、音资源文件等;该模块还要与版本管理模块交互,对微码版本、DSP软件、固件、音资源文件等进行加载,检测,重下及启动。根据模块的功能和结构划分为:异常处理任务及中断相关处理,实时状态检测进程,版本加载进程和音资源加载进程,耗时查询进程。
(1)如果单板需要加载DSP、固件或微码,则版本加载进程作为上电基本进程,接收主控进程的上电消息,加载完后通知状态查询和音资源加载进程上电;状态查询进程上电完成后则发上电消息给耗时查询进程。
(2)如果单板不需要加载DSP、固件或微码,则状态查询进程作为基本进程,接收主控的上电消息,然后通知耗时查询进程上电。
3.2 异常处理任务
由于支撑的接口带有阻塞,在处理异常中断的回调函数内,不能调用支撑的接口直接往某个进程发送消息,所以需要创建一个异常处理任务专门负责处理异常中断。
异常处理任务的功能是处理BSP的异常中断,由两部分组成,即一个回调函数和一个处理任务。回调函数由BSP在异常发生时调用,向处理任务上报各种异常中断信息,同时对于一些有可能大量上报的中断,进行一些过滤。回调函数将中断信息发送给处理任务,在处理任务里面向状态查询进程发送设备异常消息,状态查询进程对该设备异常消息进行处理,并通知OAM或SMM。
3.3 版本加载进程
进程涉及到的状态有S_StartUp、S_StateInit、S_StateLoad C6416、S_StateLoadM82620、S_StateLoadTMSC5402、S_StateLoadM80310、S_StateLoadOCT6100、S_StateLoadMicroCode、S_StateIdle。系统启动后,进程创建即S_StartUp,进行分配内存空间等工作,然后进入S_StateInit状态,等待上电消息。获得上电消息后初始化本模块的静态数据区,包括逻辑地址初始化、告警代理进程的配置,并加载DSP软件、微码版本、固件。如果从本地读取的版本加载不成功,则与OMP上的版本管理进程交互,完成版本的下载;然后向状态查询进程和音加载进程发送上电消息,进入S_IdleState状态;同时定时查询DSP状态,发现DSP跑飞后进行重新加载的处理。
3.4 状态查询进程
进程涉及到的状态有S_StartUp、S_StateInit、S_StateWork,前两个状态和版本加载进程流程相同。在获得上电消息后,初始化本模块的静态数据区,包括逻辑地址和告警代理进程的配置,然后转入S_State Work;在该状态下完成所有的单板实时状态查询功能。
本进程处理异常任务发送过来的设备异常消息,定时查询异常设备的告警恢复状态(因为BSP只上报设备的异常,不上报设备异常恢复),和单板上的HW、时钟等实时状态等。
3.5 耗时查询进程
进程涉及到的状态有S_StartUp、S_StateWork。进程创建即进入S_StartUp,进行分配内存等工作后进入S_StateWork。在该状态下,获得上电消息后初始化进程私有数据区和网口设置,定时查询网口状态,同时还完成业务板复位处理和微码设备上网口的配置。
3.6 音资源加载进程
本进程只在MRB板上有,该板上共有4个TMSC5402 DSP,视数据库对DSP用途的配置来定是否需要加载音资源。进程涉及到的状态有S_StartUp、S_StateInit、S_StateWork,状态转换和状态查询进程基本相同,进入S_StateWork后准备加载音资源。
4、数据结构和功能分析
4.1 公用数据结构
4.1.1 T_BSP_DEVICEDRIVER_PARA
BSP设备控制通用结构体:
4.1.2 T_BSP_INT_EVENT
中断回调函数参数结构定义如下:
异常回调函数接口事件结构定义如表1所示。
表1 异常回调函数接口事件结构定义
4.2 模块设计和实现
4.2.1 异常处理任务及中断相关处理
异常中断处理包括一个回调函数VoID Callback ForException(T_BSP_INT_EVENT*pReason)和一个处理任务。回调函数由BSP在异常中断发生时调用,将中断信息发送给异常处理任务,在异常任务里面向状态查询进程发送设备异常中断消息。
OSS在初始化设备时,调用BSP提供的外部中断服务程序初始化函数,把CallbackForException作为入口参数传递给BSP,作为单板上设备的异常中断服务程序,然后BSP在各个ISR中调用该回调函数将各种异常和错误信息上报。
4.2.2 实时状态检测进程
该进程在具有版本加载进程的单板上只从版本加载进程接收上电消息,否则作为基本进程运行。主要完成单板外围电路和单板上资源的状态检测,处理异常处理任务发送过来的设备异常消息,定时查询异常设备的告警恢复状态和单板上的HW、GE、FE等实时状态以及DSP的工作状态,定时查询各个设备的工作状况,并且响应后台的性能统计请求等。进程的实现与具体的物理单板密切相关,对各个相应的单板会有不同的检测需求,也随之实现不同的功能。
4.2.3 版本加载进程
该进程作为基本上电进程,接收主控进程发来的上电消息,并负责给本模块的另外两个进程上电。上电时,首先对单板的需下载资源进行设置,再加载DSP、固件和微码版本,然后给状态查询和音下载进程发送上电消息。
4.2.4 音资源加载进程
音资源的加载在MRB单板上,在完成对DSP TMS320VC5402的版本加载后,通过DSP与HOST的交互,调用BSP提供的接口函数,完成加载。本板上有多个DSP,根据数据库的配置来决定哪个DSP需要下载。
加载通过HOST与DSP之间的HPI接口进行数据下载,速度比较慢;而且音资源的文件比较大,所以加载时间较长;音资源存放在DSP的FLASH上,加载只需要一次。在单板复位后,首先先检查DSP的Flash上是否已经有了当前版本的音资源文件。加载的流程如图2所示。
图2 音资源加载流程图
4.2.5 耗时查询进程
该进程主要处理网口查询等耗时操作。该进程优先级比较低,在获得上电消息后首先设置网口的初始状态,然后设置5s定时器进行网口的耗时查询。
5、结束语
本文首先阐述了3G统一平台的概念,在简要介绍3G平台和系统控制子系统的组成方案的基础上;给出了实施状态检测模块的设计框架和功能点实现,重点分析了该模块各个进程和任务的处理流程,并对它们的内部交互和联系做了详细说明。通过对整个底层工作状态的实时性检测和控制等技术实现的介绍,向人们展示了3G技术在底层的应用。
系统控制子系统在整个平台的组成结构中处于中心地位,是整个平台有效运作的前提和关键,而实时状态检测模块则是系统控制子系统功能实现的关键部分。目前本系统已在某公司的多个事业部推广使用,各个功能模块均运行良好,实践证明本平台在整个研发体系结构中发挥了重要的作用。