1.4 系统的体系结构
该系统是由三个基于F2812 DSP的嵌入式子系统A、B、C通过CAN总线构成同构异步的分布式系统(见图2)。三个子系统没有主从关系,各子系统的功能根据系统状态,通过任务分配策略,用软件配置。三个子系统与硬件、软件互为备份,提高了系统的可靠性。
三个子系统之间主要通过CAN总线进行信息交换,变化较慢的数据也可以通过UART串口进行交换。每个子系统都能够同时接收信号,也能够输出控制信号。通过特殊的硬件设计,每个子系统都具有故障隔离的功能,可以防止因为一个子系统出现故障而影响整个系统的工作。
2 分布式系统的协同工作
分布式系统的资源位于不同的位置,系统需要不断监视各组件的状态,检查资源的使用情况。当一个处理器出现故障时,系统应该立即响应,重新调配资源,规划任务分配方案,确定任务分配策略,重构系统,必要时牺牲系统的某些性能,以保证系统正常工作。
2.1 系统状态监视
系统状态包括每个子系统各个模块的工作状态(CPU、UART的工作状态、片上存储器(SDRAM、FLASH等)和片外存储器(SRAM)、非易失性存储器的分配情况)、每个子系统之间的通信状态等。
分布式系统中,各子系统难以确定系统的状态。为此,网络上的每个子系统应定时向其他子系统广播,将各自的状态通知其他子系统(见图3)。如果在规定的时间内没有收到某个子系统的消息,则认为该子系统出现故障,系统应重新配置系统资源、重新分配任务,重构系统。
图3中:SCAB表示子系统A到B通信的情况。通过A、B、C之间的相互通信,确定系统的状态。
不失一般性,令三个子系统的状态的集合为SA、SB、SC,则系统状态SS为:
SS=ρ(SA∪SB∪SC)
={Si|0≤i≤N} (1)
其中:ρ(A)表示A的幂集,N=|SS|
2.2 任务分配策略
一般情况下,多处理机任务分配问题是NP-完全的,通常是根据具体应用需求,确定一个可行的、比较满意的任务分配策略。任务分配的目的是合理配置系统资源,设法减少系统中各处理器间的通信开销和执行模块所需的开销。均衡负载是将系统承担的任务合理地分配给系统中各处理机,最大限度地提高系统的吞吐量。一般来说,减少系统的通信量和均衡负载是相互矛盾的。因此,任务分配策略也就是最大限度地减少系统中各子系统间的通信量,同时均衡各子系统的负载,以此提高整个系统的性能。
系统的任务分配有两种方式:自动方式和人工方式。自动分配方式是根据系统状态和各子系统任务量的估计确定任务分配策略,通过软件自动为各子系统分配任务。人工分配方式是测控中心通过指令为子系统分配任务。
不妨假设系统是由N个组件构成的一个分布式系统,承担的任务为T,则:
T={Ti|0≤i<M},Ti为最小任务分割。
构造任务分配集合V:
确定任务分配策略TAS(Task Allocate Strategy):
在实际应用中,任务分配策略受多种因素的制约和影响,如空间限制、信号干扰、通信距离等,所以,只能在一定条件下最大限度地满足负载均衡、任务间最小通信量等任务分配原则。
在该系统的具体应用中,考虑到信号干扰和数据传输的要求,将系统承担的任务主要分为信号的采集/预处理(SP)、信号运算(SC)、过程控制(SO)。SP任务主要承担23路模拟信号的采集、AD转换、信号滤波等;SC任务主要承担各类信号的运算;SO任务主要承担过程控制的参数计算、控制信号输出、与测控中心实时交互等。经过测试,CPU对于SP、SC、SO任务的负载基本均衡,三个子系统之间的通信量基本相同。将承担SP任务的子系统尽量放置在信号源附近,将承担SO任务的子系统尽量放置在控制部件附近,可以减小信号的干扰,同时也能减少数据的通信量。基于以上因素的考虑,根据系统状态,确定如表1所示的任务分配策略。
2.3 系统的协同工作
系统协同工作包括系统资源的统一调配(CPU、各类存储器、事件管理器、GPIO等)、根据实际需求和系统状态确定任务分配策略以及为各子系统分配任务。当系统状态变化时,重新配置系统资源、确定任务分配策略,为每个子系统重新分配任务(见图4)。该系统正常工作时,三个子系统分别承担信号采集/预处理、信号运算和过程控制任务;当一个或两个子系统出现故障时,系统通过CAN总线检测各子系统情况,确定系统的状态,根据任务分配策略,由其余子系统代替故障子系统的任务。当线路出现故障时,由测控中心通过串口发送指令,人工分配任务,保证系统正常工作。
2.4 辅助通信、与测控中心交互
系统由三个子系统构成,每个子系统有四路RS422串口,记作Ai、Bi、Ci(i=1、2、3、4)。根据任务的需求,Ai、Bi、Ci连接在一起,分别完成信息采集、子系统之间辅助通信、与测控中心交互的任务。
与测控中心实时交互的目的是:一方面将系统状态和各种参数传送到测控中心;另一方面,测控中心可以发送指令,完成指定的任务。
测控中心实时监视系统的工作状态。当CAN总线工作正常时,系统自动完成任务分配等任务;当CAN总线出现断路或其他线路故障时,测控中心发送指令给系统,人工分配任务,保证系统正常工作。
根据任务的需求,三个子系统的串口Ai、Bi、Ci(i=1、2、3、4)连接在一起发送数据时会发生冲突,因此,系统应根据各串口的工作状态确定线路状态,根据线路状态决定对串口的读写。
本文介绍了由三个DSP嵌入式子系统构成的基于CAN总线的分布式系统的软、硬件设计方案,着重分析了各子系统之间协同工作的方式。该系统充分利用了分布式系统的并发性和可靠性等特点,在满足多路信号实时处理、多个过程控制、与测控中心实时交互等要求的基础上,采用自动分配任务和指令分配任务相结合的方式,有效地提高了系统的可靠性。实验仿真和现场测试表明,该系统不仅满足了任务要求,而且还具有很高的稳定性和可靠性。
参考文献
1 Simon-Klar C.A Multi DSP board for real time SAR pro-cessing using the HiPAR-DSP 16.In:Proceedings of the In-ternational Geoscience and Remote Sensing Symposium 2002,2002,6
2 Coulouris G,Dollimore J,Kindberg T著,金蓓弘译.分布系统概念与设计.北京:机械工业出版社,2004
3 Bacon J,Harris T著,陈向群译.操作系统-并发与分布式软件设计.北京:电子工业出版社,2005
4 何炎祥.分布式操作系统.北京:高等教育出版社,2005