基于BM3803处理器的即插即用星载计算机系统设计
2013-12-29詹盼盼郭廷源高建军孙勇
詹盼盼 郭廷源 高建军 孙勇
(北京空间飞行器总体设计部,北京 100094)
1 引言
国外卫星系列的成功发射表明,卫星从组装建造到发射的时间已从传统模式的数月缩短至以小时为单位,并且随着空间技术的提高和应用需求的扩展,对卫星进行在轨维修、硬件更换、功能升级等在轨服务的需求越来越急迫[1],而实现星载计算机上述在轨服务的关键是设备模块的通用化和产品化。为了降低成本,实现按需发射和快速响应的目标,国内外在模块化卫星的性能定义和设计复杂性方面进行了积极研究[2-4],结果表明,模块化设计的复杂性主要体现在接口设计[5]和驱动实现上。
目前,国内的星载计算机系统普遍使用基于可扩展处理器体系结构(Scalable Processor Architecture,SPARC)V7 的TSC695F 处理器,其性能较低,如处理器主频只有11 MHz、无缓存(Cache)支持等,而且长期依赖于进口,无法满足星载计算机系统日益复杂的需求和实现自主化研制的需要。另一方面,这些星载计算机系统由于硬件结构非标准化和软件驱动不通用(无法实现硬件自动配置且地址空间各异)的限制,设备模块不能在不同计算机之间进行通用替换,难以实现星载计算机的即插即用功能和产品化生产。
为改变这一现状并且考虑卫星对高性能处理器的需求,本文在研究设备模块通用化和外围组件互连(PCI)总线驱动的基础上,设计了一种即插即用星载计算机系统,采用我国自主研制的基于SPARC V8体系结构的BM3803处理器,能够适应星载计算机复杂任务处理和在轨服务及快速组装的需求,可为星载计算机应用BM3803处理器和实现即插即用功能提供借鉴。
2 BM3803处理器简介
BM3803处理器是基于SPARC V8 体系结构的32 位精简指令系统计算机(RISC)嵌入式处理器,可用于空间环境使用的嵌入式实时计算机系统,能够满足各种航天应用的功能以及性能指标要求,只要加上存储器和与应用相关的外围电路,就可以构成完整的单板计算机系统[6]。
BM3803处理器内部结构如图1 所示,芯片内部包含整数处理单元、浮点处理单元、独立的指令和数据缓存(Cache)、硬件乘法器和除法器、中断控制器、带有跟踪缓冲器的硬件调试支持单元、两个24位定时器、通用输入输出(I/O)接口、“看门狗”、能够支持可编程只读存储器(PROM)、静态存储器(SRAM)、动态存储器(SDRAM)和I/O 映射空间访问的存储器控制器,具有软件可以控制的省电工作模式,具有可实现PCI主机桥和从属桥功能的PCI控制器。
本文基于BM3803 处理器支持PCI总线的特性,克服传统星载计算机非标准化和不能通用的限制,设计了一个采用PCI标准总线作为底板总线的星载计算机硬件结构,各个设备模块均遵循标准PCI总线的机械、电气和逻辑规范;并且设计一种统一的设备识别、地址空间动态分配和访问方法,在物理上和软件驱动上实现设备模块的即插即用和通用化功能。
图1 BM3803处理器内部结构图Fig.1 Inside structure of BM3803processor
3 星载计算机系统硬件设计
3.1 设计原则与目标
本文将一个设备模块(或称为硬件模块、硬件板)作为一个在轨更换单元(ORU)。为了提升通用化程度,针对星载计算机系统硬件设计,遵从以下设计原则。
(1)模块化设计原则:综合星载计算机的特点,根据功能设计相应模块,通过灵活组合这些功能模块,构成满足特定功能的星载计算机系统;
(2)采用标准化接口:在星载计算机的设计中采用标准化接口,提高计算机系统的通用化程度,不同的计算机之间可以共用这些标准化功能模块;
(3)可扩展设计:通过采用PCI标准底板总线,使计算机具备良好的可扩展性。
3.2 硬件结构
即插即用星载计算机系统是按照模块化和标准化的设计思想进行设计,硬件结构如图2所示,其中供电模块为整机提供二次电源,将其他模块按功能划分,每个功能模块作为一个ORU,包括中央处理单元(CPU)控制模块、总线通信模块、遥测遥控模块和其他功能扩展模块等,除CPU 控制模块外的其他模块可以自由组合。这些模块通过PCI标准总线进行通信,每个模块之间是相互独立的,不依赖于其他模块。
图2 即插即用星载计算机系统的硬件结构图Fig.2 Hardware structure of plug-and-play on-board computer system
根据BM3803处理器手册[6]和PCI规范[7-8],一级PCI 总线上最多可支持7 个PCI 设备模块。CPU 控制模块作为PCI总线的主控模块,其他模块为从属模块,每个模块板上含有一个PCI桥芯片以支持PCI协议规范。下文对每个模块的功能和实现进行说明。
(1)供电模块:实现了整机加断电控制,并且提供其他功能模块所需的二次电源。星载计算机系统在每一个功能模块上对二次供电进行分区,采用限流器对每个电源分区提供电源并且进行电流检测和限流保护。
(2)CPU 控制模块:采用BM3803处理器作为CPU,BM3803 PCI接口配置为主机桥(Host Bridge)模式,在软件的配合下,配置和访问总线上的其他PCI设备,并为这些设备提供总线仲裁。CPU 控制模块是即插即用星载计算机系统的核心,软件驱动运行在该模块上,完成对其他功能模块的自动化识别和配置。
(3)总线通信模块:包括一个或者多个1553B总线芯片,实现以1553B总线控制器或远程终端的方式进行通信。总线通信模块的PCI控制器工作在从模式,由于BM3803支持的从PCI中断源数量有限,当有多个总线芯片工作时,采用分立元件实现多路1553B总线中断源的合并及识别,每个中断源状态可分别清除。
(4)遥测遥控模块:实现遥控数据注入、指令接收和遥测输出等通用功能,可采用现场可编程门阵列(FPGA)实现为一个标准化遥测遥控模块,在FPGA 中实现串行数据的并串转换。PCI控制器工作在从模式,通过外部先进先出缓冲区(FIFO)或者内部FIFO 与FGPA 进行数据交换。
(5)功能扩展模块:可以根据计算机的特定功能进行设置,最多可设置3个,比如可以实现为存储功能模块、复接功能模块、飞行控制模块、SpaceWire总线通信模块和以太网模块等。扩展模块上包括一个工作在从模式的PCI控制器与CPU 控制模块通信,当有多个中断信号时,需要对多个中断源进行合并。
4 即插即用驱动软件设计
4.1 设备模块自动识别方法
即插即用星载计算机系统使用BM3803处理器内置的PCI控制器与PCI底板总线上的其他设备模块进行通信。即插即用驱动软件是一个通用驱动软件,运行于处理器上,通过控制BM3803处理器的PCI接口,实现其他设备模块的自动识别和数据交互,多个设备模块的自动识别过程如下。
(1)设备模块的发现和标识。驱动软件通过设置处理器的映射寄存器,分别读取各个设备模块的PCI配置头信息,包括设备标识和厂商标识信息,作为设备的唯一标识。每个设备模块物理上均有一个卡槽地址,驱动软件通过遍历卡槽地址读取设备模块的配置信息,并且记录到一张设备配置表中,以后对设备的每次访问均对该表进行操作,从而屏蔽了不同设备模块的差异,使得对设备模块的访问统一为对设备配置表的读写。设备配置表是实现自动识别和即插即用功能的关键,主要包括设备识别(ID)、设备状态、卡槽地址、基地址、基地址类型和基地址长度等元素。
(2)确定设备空间类别和容量要求。PCI配置头中包括6个基地址寄存器,驱动软件通过读取基地址寄存器查明各设备模块需要的空间类别,并向该基地址寄存器全部写1,然后读取基地址寄存器的值。由于硬件接地,在读回的值中包括的零的个数反映了设备所需要的空间。
(3)分配基地址。基地址的容量确定后,驱动软件在存储空间中为这片空间分配一个基地址,即设备的访问地址,并且将分配的起始地址写回PCI空间的基地址寄存器。
驱动软件通过上述方法可以识别各个设备模块的类别,并且通过访问本地存储空间即可访问到其他设备模块,包括发送和读取数据。驱动软件定时每20ms遍历所有设备模块和更新设备配置表,保证设备模块的动态添加和删除。通过这种方式,所有设备模块均可作为本地存储空间进行统一访问,当计算机系统增加或者更换新的设备模块时,无需更改处理程序,而且各个设备模块在机箱内的位置可以不固定,提高了设备的通用性和灵活性,在硬件和软件上支持设备模块的自动识别和即插即用特性。
4.2 中断复用方案
由于BM3803处理器只提供了4个外部中断和一个PCI中断,对于应用比较复杂的系统,中断接口数量不能满足要求,需要对中断进行复用。即插即用星载计算机系统由于采用PCI总线作为底板总线,挂接在PCI总线上的设备模块上的中断源均可挂接在处理器的PCI中断上,因此多个设备模块要实现中断复用需要在软件上进行设计。驱动软件设计的中断复用处理方式分为两个方面,一是单一设备模块的中断复用,二是多设备模块的中断复用。
驱动软件处理单一设备的中断复用由设备模块自身的中断服务程序完成。单一设备复用中断,驱动程序将挂接在指定的中断号上,可以在中断服务程序中检查所有该类型的设备或者由硬件给出中断状态,以确定中断的来源并对产生中断的设备服务。
对于多个设备模块复用一个PCI中断的情况,本文的方案是为PCI中断挂接一个中断服务管理程序,并且设计一个保存复用中断服务程序入口地址的中断服务链表,当产生中断后,中断服务管理程序依次遍历该链表,检查设备模块的中断状态,如果某设备模块有中断,则进入该设备模块的中断处理。
星载计算机中有多个设备模块,每个设备模块存在多个中断源,通用星载计算机系统分两个层面对这些中断进行复用,避免了将所有设备模块的多个中断源都挂接在一个中断服务程序的处理方式,使得各个设备模块的中断处理程序保持独立。本方案实现了一种统一的链式中断处理方法,具有较强的灵活性和可扩展性,当设备模块加入新的中断源时,新的中断服务程序被自动加入到中断链中,支持中断服务程序的即插即用能力。
4.3 设备模块访问方法
系统识别设备模块后,应用软件与设备模块的数据交互方式有两种:一种是通过内存映射的方式进行访问,即通过读写设备配置表中的基地址的方式来访问,这种方式与内存访问方式类似,一次可以读写一个字节、一个字或者一个双字;另一种是通过直接存储器访问(DMA)方式进行访问,通过调用驱动软件提供的接口,应用软件可以一次性地将大块数据从设备模块读出或者写入。DMA 方式分为同步方式和异步方式:同步方式是启动DMA 发送后将自己阻塞,等待DMA 中断返回数据传输完成后才能进行下一步操作;异步方式是启动DMA 发送后立即进行后续操作,不必等待数据传输完成。
这两种访问方式的区别在于:内存映射方式将设备模块当作本地内存进行多次访问,每次访问均占用CPU 的运行时间;而DMA 方式是一次性数据通信,通信过程不占用CPU 的运行时间。两种访问方式具有不同的应用场景,DMA 方式具有较高的传输性能,当需要大量数据传输而且对性能要求较高时可以使用DMA 方式;当数据量较小,比如对设备模块进行配置时可以使用内存映射方式。
5 设计应用及性能分析
通过使用BM3803 处理器和实现通用PCI总线驱动,该设计可以适应星载计算机应用需求不确定和设备模块不确定的情况。如表1所示,以卫星上的中央处理单元、高速数据复接器、大容量存储器、星载网络路由器为例,说明该设计各功能模块的通用性和快速组装能力。
表1 通用设备模块在星载计算机系统中的复用关系Table 1 Reuse relationship between general equipment modules and on-board computer systems
表1列出了通用设备模块与星载计算机之间的复用关系,“√”表示此设备模块可以在该星载计算机中使用,“×”表示此设备模块不能在该星载计算机中使用。其中CPU 控制模块、总线通信模块、存储模块和以太网模块均可以在这4 类计算机中复用,而复接模块和SpaceWire通信模块的复用程度也很高,表明在不修改硬件设计和软件驱动的情况下,不同的星载计算机可以复用相同的设备模块;通过自由选择和组装不同的设备模块,能够实现星载计算机系统的快速组装能力。
在当前星载应用中,处理器访问1553B 总线的效率是星载计算机系统的一个重要指标,计算机系统除了完成总线数据的收发外,还需要实现其他复杂计算和处理过程。如果总线流量较大,占用处理器的时间过多,必然会对其他任务造成影响。本文将即插即用星载计算机系统访问总线通信模块的性能与传统计算机进行了对比,如图3所示。
图3 总线访问时间对比Fig.3 Comparison of bus access time
图3是对不同总线通信流量下,分别使用本文设计的设备模块访问方式和传统访问方式时,总线消息从内存搬移至总线芯片到发送完成的时间进行了对比,从图3中可以看出,本文设计的系统向总线通信模块读写数据的时间远远小于传统方式,向总线通信模块读写数据和发送完成的时间也小于传统方式。测试结果表明,使用本文的设备模块访问方式具有更高的性能,对设备模块的访问时间远远小于传统访问方式。
从上文的分析可以看出,基于BM3803处理器的即插即用星载计算机系统,通过采用标准PCI总线将星载计算机硬件模块化、标准化,并且实现一种设备自动识别和支持DMA 方式访问的通用软件驱动,不仅大大降低了外部硬件设备的访问时间,而且实现了星载计算机的即插即用特性,新的设备模块可以自由增加或者替换到计算机系统中,而无需对硬件和驱动软件做任何修改。本设计支持多个设备模块在不同计算机之间复用,能够实现硬件板级的产品化生产,使得复杂星载计算机系统具备快速组装能力。
6 结束语
随着空间技术的发展和未来大量卫星建设的需要,对星载计算机设计构成了挑战,而模块化和即插即用技术能够确保星载计算机各设备模块随时取用,一旦有需求,可以将它们快速组装起来,并发射升空。本文在研究BM3803 处理器和PCI驱动软件的基础上,设计了一种即插即用星载计算机系统,支持设备模块在多个卫星内部甚至卫星之间的复用。本文的方法具有较强的模块化、通用化特点,不仅提高了设备模块的访问性能,而且可以实现设备模块的产品化生产和即插即用功能,更好地满足未来卫星研制的要求。
(References)
[1]Shoemaker J,Wright M.Orbital express space operations architercture program E[C]//International Society for Optical Engineering.Orlando:The International Commission for Optics,2003,5088:1-9
[2]Philip D.A modular design for rapid responsive telecons and navigation missions[C]//2nd Responsive Space Conference.Washington D.C.:AIAA,2004
[3]Trevor S.Kutesat-2,A student nanosatellite mission for testing rapid-response small satellite technologies in low earth orbit[C]//3rd Responsive Space Conference.Washington D.C.:AIAA,2005
[4]Norman C.Standardization to optimize integration and testing[J].3rd Responsive Space Conference.Washington D.C.:AIAA,2005
[5]杨希祥,张为华.卫星公用舱模块化及其即插即用技术研究[C]//2008年全国博士生学术论坛(航空宇航科学与技术).北京:国务院学位办公室,2008
Yang Xixiang,Zhang Weihua.Research on modularization and plug-and-play technology for public service cabin of satellites[C]//The Doctoring Forum of Space Navigation Science and Technology in China,2008.Beijing:State Department Degree Office,2008(in Chinese)
[6]北京微电子技术研究所.BM3803MG 32位空间处理器用户手册[M].北京:北京微电子技术研究所,2010
Beijing Microelectronics Technology Institute.User manual of 32bit space processor BM3803MG[M].Beijing:Beijing Microelectronics Technology Institute,2010(in Chinese)
[7]PCI Special Interest Group.PCI local bus specification[S].Oregon:PCI Special Interest Group,1999
[8]李贵山,陈金鹏.PCI局部总线及其应用[M].西安:西安电子科技大学出版社,2003
Li Guishan,Chen Jingpeng.PCI local bus and applications[M].Xi’an:Xidian University Publishing House,2003(in Chinese)