作者:杜宝林;毕清波;姚敏立
随着信息社会的到来,人类的生产方式、生活方式以及工作方式也随着现代技术的不断发展而发生变化。无论在民用还是军用方面,都需要一种可以在移动中实时、大容量、不间断地传递语音、数据、动态图像等多媒体信息的卫星天线跟踪系统的出现。因此,机动性能强、抗干扰能力强、保密性强的卫星通信系统理所当然地成为了当前移动通信研究领域的热点与重点。
本文所介绍的基于XScale微处理器的“动中通”移动卫星天线控制系统,能够在各种条件下保证天线高精度地对准目标卫星,准确而快速实现平台天线和卫星之间的实时通信。由于采用了嵌入式控制系统进行开发,该卫星移动天线控制系统体积小,性价比优良,实时性好。
1 系统总体设计
1.1 总体方案
采用“开环稳定+闭环跟踪”的控制方案。总体思想如下:通过GPS接收机得出载体方位信息,使用姿态传感器敏感载体的姿态角,快速初始对准卫星,将惯性角速率陀螺仪作为电机伺服控制的反馈元件,敏感载体运动过程中天线平台在方位和俯仰方向的变化,通过反馈补偿保证载体运动过程中平台的稳定。同时,为克服载体姿态变化快、幅度大,以及陀螺的漂移和电机的特性等诸多复杂因素的影响,满足卫星通信对跟踪精度的要求,在陀螺稳定的基础上还配以电平信号步进跟踪以达到高精度稳定跟踪目标卫星的目的。
采用方位和俯仰两轴控制,虽可以避免三轴控制的复杂性,但是天线俯仰轴相对于水平面的横滚变化却无法消除。该变化对螺旋天线、平板天线影响不大,但是会影响抛物面天线接收信号的强度。这时可以在两轴稳定控制的基础上增加极化轴,用电机寻找最佳极化角度。
1.2 嵌入式系统组成
嵌入式系统设计是本文的重点内容。嵌入式系统是一种将嵌入了软件的计算机硬件作为其最重要的一部分的系统。它是一种专用于某个应用或者产品的基于计算机的系统,既可以是一个独立的系统,也可以是更大系统的一部分[1]。总体而言,一个嵌入式系统有三个主要组成部分:支撑硬件、主应用软件和实时操作系统(RTOS)。实时操作系统和主应用软件集成于计算机硬件系统之中,也就是软件与硬件的一体化。软件和硬件之间由BSP层(板极支持包)连接。嵌入式系统的体系结构如图2所示:
1.3 硬件支持
设计中首先要考虑的是如何使操作系统能更有效的管理资源并支持多任务环境。为了移植Windows CE操作系统与开发相关的程序,我们选用基于Intel XScale PXA255处理器的高端嵌入式解决方案XSBASE255作为实验平台。
该开发板具有我们系统实验所需的大部分硬件配置。同时,硬件设备厂商为客户提供了Windows CE.NET下PXA255的BSP,所以在硬件扩展加以改动时,可以很方便的进行BSP开发,只需对现有的源代码进行修改。
Intel XScale PXA255是32位RISC处理器,支持ARMv5TE指令集,采用7级超流水线,32KB指令缓存和32KB数据缓存,主频为400MHz,具有MMU(Memory Management Unit)。XSBASE255采用两片16MB的Flash Rom提供了32MB的非易失存储,采用两片32MB SDRAM组成64MB作为主内存。引导程序、Image等所有的软件都是存储在Flash中。同时,PXA255提供众多的外设接口为开发提供了极大的扩展性和适应性。
2 系统软件实现
2.1 软件支持
在嵌入式计算机应用中使用实时操作系统,可使控制系统的实时性得到保证,同时良好的多任务规划设计及根据需求对软件进行裁剪,有助于提高系统的稳定性和可靠性。
Microsoft Windows CE是一个开放的、可裁剪的、32位的实时嵌入式窗口操作系统。可以工作在12种不同的处理器体系结构、180余种CPU上;紧凑、高效和可扩展的特性,使它适用于各种嵌入式系统和产品。拥有多线程、多任务、确定性的实时、完全抢占式优先级的操作系统环境,专门面向只有有限资源的硬件系统[2]。同时,它的模块化设计方式使得系统开发人员和应用开发人员能够为多种多样的产品来定制它。
Windows CE内核是Windows CE操作系统的核心。系统运行时,Windows CE的内核表现为NK.EXE进程。NK.EXE是所有基于Windows CE的系统中都存在的核心进程,它实现了Win32 API核心进程创建加载、线程调度、中断处理和内存管理等核心功能[3]。
当Windows CE加载一个应用程序时,它就产生了一个进程。多个进程使用户可以同时工作于多个应用程序,而多个线程可以使一个应用程序同时完成多个任务。在任务调度过程,内核维护一个当前操作系统所有线程的优先级列表。每个进程可能包含多个线程,而每一个线程都是一个可执行单元。调度系统控制这些执行单元的执行顺序,并允许他们相互之间以可预测的方式交换数据[4]。当中断发生时,调度系统重新排列所有线程的优先级。
下面是一些与调度有关的主要函数介绍[5]:
1、MakeRunIfNeeded(HANDLE hth)函数:主要功能是在需要时调度线程;
2、MakeRun(PTHREAD pth)函数:如果当前没有可运行的线程,或者指定的线程pth是优先级最高的线程,那么把pth插入到可运行队列的最前面,并判断是否需要重新修改调度策略;
3、RunqDequeue(PTHREAD pth,DWORD cprio)函数:从运行队列中删除一个线程;
4、SleepqDequeue(PTHREAD pth)函数:把一个线程从睡眠队列中删除;
5、ThreadSleep(DWORD time)函数:让线程睡眠一段时间。
2.2 任务划分
天线控制系统功能复杂、任务繁多,且各个任务之间需要进行信息交流,彼此联系,互为因果。利用多任务机制对各个功能进行管理调度,保证了系统的实时性和可靠性。
对本系统而言,任务划分实际上就是对天线控制系统的工作流程做一个分解,使其每一动作都对应在一个任务中实现,由动作的执行顺序确定多任务中每一任务的优先级。系统进入开机状态后,通过选择输入卫星参数(卫星参数信息固化在程序中),系统开始初始化。通过串口提取GPS提供的有用信息,通过姿态解算计算出天线的初始对星角度,并在基准确定的基础上进行角度修正,通过嵌入式控制系统驱动完成初始对星。在对星状态完成之后,开始进行电平搜索,得到准确的天线指向并锁定该位置,之后系统进入自动跟踪状态,同时陀螺进入闭环工作状态。
2.3 Windows CE移植
引导加载程序(Boot Loader)是在操作系统内核运行之前运行的一段小程序。虽然在Boot Loader中并不严格规定如何获得操作系统映像,但绝大多数Boot Loader都会从开发机下载映像到目标机,然后把映像放到内存里执行。在所有下载映像的Boot Loader中,通过以太网进行下载的Boot Loader占绝大多数,称为Etherent Boot Loader,简称EBoot。在本系统中,EBoot主要有以下功能:
1、初始化目标硬件设备,包括初始化内存、中断控制器、时钟和MMU等;
2、控制启动过程,提供简单的菜单与用户交互,让用户选择启动过程;
3、下载并执行操作系统映像。
总体而言,EBoot的唯一目标就是加载并执行操作系统映像。因此,Boot Loader必须在OS被下载前就先安装在目标机上,并与Platform. Builder交互。
在ARM/ XScale系统中,我们使用JTAG将Boot Loader程序烧写到Flash存储器中,待系统加电或重置时自动执行。
2.4 软件开发与调试
基于Windows C++E设备的开发过程是由不断修改、增加配置特征、构建、下载、调试等组成的一个递归开发过程。每当在Platform. Builder中添加或修改一个特征时,都必须重新构建操作系统映像,并将它下载到目标设备硬件上进行执行和调试。一旦完成操作系统配置,我们就可以利用Platform. Builder提供的导出SDK工具,为应用程序开发者导出一个定制的SDK,应用程序将导出的 SDK安装到eMbedded Visual C++ 4.0后,就可以为特定的硬件平台开发应用程序,并在特定硬件上进行调试和测试了。
在天线控制系统工作原理的基础上,采用多线程、分时共享技术,根据任务规划流程建立多任务和用户应用程序,具体划分如下模块:用户界面线程、信号采集线程、数据处理线程、初始对准线程、动态跟踪线程、状态判断线程、卫星搜索线程、稳定控制线程。相关算法集合在各个任务之中。
软件移植主要包括Windows CE操作系统内核代码定制、裁剪,实现其核心代码在XScale处理器上的移植,针对系统实际需求对Windows CE进行操作系统本身的功能扩展,并移植到硬件平台,实现天线的每一步具体动作。主要实现“陀螺闭环稳定+程序跟踪+步进跟踪”控制跟踪方案的算法实现与优化,并把用C++语言实现的控制程序移植到XScale处理器上,最后基于Windows CE建立完整实用的RTOS对天线控制系统进行控制。
3 结束语
基于Intel XScale PXA255处理器作为硬件设计、移植Windows CE操作系统并在天线控制系统整体方案的基础上,开发了天线控制系统的多任务软件系统。整个系统的模块化设计,为日后的扩展、移植和维护工作提供了方便。同时表明,应用嵌入式实时操作系统Windows CE开发天线控制系统软件能够有效地降低软件设计的复杂度,显著提高软件的可靠性和运行效率。该设计方案在实际中有很好的应用前景。