首页 / 专利库 / 航空电子 / 航空电子 / 一种基于DDS的嵌入式软件运行平台设计方法及其仿真平台

一种基于DDS的嵌入式软件运行平台设计方法及其仿真平台

阅读:1048发布:2020-06-21

专利汇可以提供一种基于DDS的嵌入式软件运行平台设计方法及其仿真平台专利检索,专利查询,专利分析的服务。并且本 发明 属于航空 电子 系统任务处理平台设计开发技术,涉及一种基于DDS的嵌入式 软件 运行平台设计方法及其仿真平台。本发明包括以下步骤:步骤一,将DDS 中间件 部署在VxWorks6.6 操作系统 内核 中;步骤二,在VxWorks6.6系统下对于DDS进行配置,设计实现数据收发;步骤三,在VxWorks6.6系统下实现CPCI驱动程序,使得系统可经由该驱动完成对板卡的调用和数据的读取;步骤四,在AcoreOS653操作系统下设计实现C PCI总线 驱动程序,完成对于板卡的调用和数据的传输;步骤五,实现VxWorks6.6板卡与AcoreOS653系统板卡通过CPCI板卡实现双向数据传输。本发明为机载嵌入式平台提供了一种灵活的数据分发方案,可适用于航电任务系统设计开发。,下面是一种基于DDS的嵌入式软件运行平台设计方法及其仿真平台专利的具体信息内容。

1.一种基于DDS的嵌入式软件运行平台设计方法,其特征为所述方法包括以下步骤:
步骤一,将DDS中间件部署在VxWorks6.6操作系统内核中;
步骤二,在VxWorks6.6系统下对于DDS进行配置,设计实现数据收发;
步骤三,在VxWorks6.6系统下实现CPCI驱动程序,使得系统可经由该驱动完成对板卡的调用和数据的读取;
步骤四,在AcoreOS653操作系统下设计实现CPCI总线驱动程序,完成对于板卡的调用和数据的传输;
步骤五,实现VxWorks6.6板卡与AcoreOS653系统板卡通过CPCI板卡实现双向数据传输。
2.一种验证权利要求1所述方法的仿真平台,其特征为:所述仿真平台包括三个核心模,即:I/O机、任务处理机和通信模块:
2.1)I/O机
包含对于VxWorks6.6下CPCI驱动程序设计实现,使得系统可经由该驱动完成对于I/O板卡的调用和数据的读取;在VxWorks6.6下对于DDS进行配置,设计实现数据收发;
2.2)任务处理机
包括在AcoreOS653系统下实现应用软件开发,设计CPCI总线驱动程序,完成对于处理机板卡的调用和数据的传输;
2.3)通信模块
实现VxWorks6.6板卡与AcoreOS653系统板卡通过CPCI-AFDX板卡实现实时性通信,完成数据的双向传输,实现实时数据传输。
3.根据权利要求1所述的嵌入式软件运行平台设计方法,其特征为:所述步骤二中在VxWorks6.6系统下部署DDS,需要经过以下步骤:
3.1)在BSP的makefile文件中添加宏定义DRTI_VXWORKS;
3.2)建立VxWorks6.6映像工程;
3.3)添加相应路径:
3.3.1)在VxWorks6.6映像工程的属性设置处,选择Build Properties-Build Macros,在LD_LINK_PATH处添加DDS静态链接库文件所在路径;
3.3.2)在Build Paths处添加DDS所使用的头文件所在路径;
3.4)添加VxWorks组件:
打开VxWorks映像工程的Kernel Configuration选项,在Operating System Components操作系统组件中找到Real Time Process Components,右击Real Time Process Components,选择添加该组件。
4.根据权利要求1所述的嵌入式软件运行平台设计方法,其特征为::所述ACoreOS 653系统与VxWorks系统通过CPCI背板,依靠CPCI-AFDX板卡进行实时性通信。

说明书全文

一种基于DDS的嵌入式软件运行平台设计方法及其仿真平台

技术领域

[0001] 本发明属于航空电子系统任务处理平台设计开发技术,涉及一种基于DDS的嵌入式软件运行平台设计方法及其仿真平台。

背景技术

[0002] 随着飞机任务能的增长、飞机系统的多电化和航空电子软、硬件技术的发展,飞机航电系统的新功能被不断开发出来。这些功能在增加新性能的同时也增加了系统的复杂程度。为了满足不断增加的需求,同时解决系统的扩展性、可信性和复杂性等问题,航空电子界已经在分离式系统、联合式系统的基础上发展了综合模化航空电子系统(IMA)和分布式综合模块化航空电子系统(DIMA)。IMA是指一组由标准格式处理模块和标准格式连接器构成的系统结构,是一个由实时计算机网络组成的机载系统,该网络由许多支持不同用途和重要性的计算模块组成。IMA结构是建立于多个航电系统之间计算、通信和I/O资源共享概念的基础上,它提供了更加有效的解决方案,即通过共享资源将资源浪费降到最低。多个系统可以在分区的平台资源上被构建和覆盖,以形成高度综合的系统。一个IMA平台为多个航空电子系统提供了可共享的计算、通信和I/O服务。DIMA是IMA系统的重要改进,是一种由安全关键通信系统所连接的分布式航电系统,结合了联合式系统和IMA系统的结构设计特点与优势,具有可组合性好、可变规模性与可扩展性强、低复杂性与高可信性、分布式系统分区与重构、功能抽象分层与通用标准接口和全局统一基准时钟等重要系统结构特征。DIMA能降低系统复杂程度、减少体积重量与功耗、便于独立开发、简化系统验证,具有更大的系统灵活性和增强的可维护性,是未来航空电子系统的重要发展方向。
[0003] DIMA作为一类集成架构,能够高效地设计具有混合关键型应用的分布式系统,消除了在分布式系统中对关键和非关键型功能进行整合所面临的冲突。在这一架构成熟的同时,顶层的架构应用与交互网络对介于两者之间的中间件技术提出了更高的要求,迫切需要分布式实时通信中间件技术解决如下难题:
[0004] 1)系统组成部件众多,各部件之间广泛存在着各种差异,包括不同的硬件设备、操作系统、编程语言、通信协议等,这些部件如何协调工作,是需要解决的关键问题;
[0005] 2)设备和设备之间通信,需要事先配置好对端地址,然后通过指定的地址完成同对端的通信。对于设备而言,如果增加或者删除一个与之通信的设备,则需要在程序或配置文件中做相应的修改,这使得设备之间紧密耦合;
[0006] 3)不同设备之间存在多种多样的消息格式,每增加一种消息格式,就需要重新扩展以前的程序,增加对应的消息打包与解包功能,不能将注意力更为集中到需要解决的业务问题上去;
[0007] 4)随着系统中参与资源的不断增多以及彼此之间关系的日益复杂,缺乏一种灵活的管理机制,以更有效的利用各种资源。
[0008] 除此之外,为了保障DIMA各子系统故障传递隔离,并将IMA平台从“时间/空间分区”扩展到DIMA的“时间/空间/通信分区”,实现系统资源的高度共享,中间件还必须能够提供全局统一的调度、通信能力。

发明内容

[0009] 本发明的目的是:提出一种基于DDS发布订阅通信中间件的嵌入式运行平台设计方法及其仿真平台,以实现嵌入式实时运行平台与异构平台/操作系统间的数据通信。
[0010] 本发明的技术方案是:一种基于DDS的嵌入式软件运行平台设计方法,所述方法包括以下步骤:
[0011] 步骤一,将DDS中间件部署在VxWorks6.6操作系统内核中;
[0012] 步骤二,在VxWorks6.6系统下对于DDS进行配置,设计实现数据收发;
[0013] 步骤三,在VxWorks6.6系统下实现CPCI驱动程序,使得系统可经由该驱动完成对板卡的调用和数据的读取;
[0014] 步骤四,在AcoreOS653操作系统下设计实现CPCI总线驱动程序,完成对于板卡的调用和数据的传输;
[0015] 步骤五,实现VxWorks6.6板卡与AcoreOS653系统板卡通过CPCI板卡实现双向数据传输。
[0016] 为了验证该设计方法的可行性,基于上述技术方案,构建了一套仿真平台,所述仿真平台包括三个核心模块,即:I/O机、任务处理机和通信模块:
[0017] 1)I/O机
[0018] 该模块主要包含对于VxWorks6.6下CPCI驱动程序设计实现,使得系统可经由该驱动完成对于I/O板卡的调用和数据的读取。在VxWorks6.6下对于DDS进行配置,设计实现数据收发。
[0019] 2)任务处理机
[0020] 该模块的设计内容包括在AcoreOS653系统下实现应用软件开发,设计CPCI总线驱动程序,完成对于处理机板卡的调用和数据的传输。
[0021] 3)通信模块
[0022] 实现VxWorks6.6板卡与AcoreOS653系统板卡通过CPCI-AFDX板卡实现实时性通信,完成数据的双向传输,实现实时数据传输。
[0023] 本发明的有益效果是:本发明一种基于DDS的嵌入式软件运行平台设计方法及其仿真平台,以实现异构平台间的互连互通互操作为目标,构建了一套与飞机平台无关的嵌入式软件运行平台;所述平台以嵌入式实时操作系统为基础,通过部署和配置灵活的数据传输中间件,保证了上层应用与底层硬件的松耦合,通过标准的接口封装,应用软件间以主题消息的形式进行数据的发布订阅,有效地降低了应用软件与总线网络和驻留平台的耦合性,提高了应用软件部署的灵活性,实现了异构平台间的互联互通互操作。本发明可行性高,灵活性强,为机载嵌入式平台提供了一种灵活的数据分发方案,具有可推广、可应用的示范效果,可适用于航电任务系统设计开发,具有较高的市场前景和经济效益。附图说明
[0024] 图1为ACoreOS653操作系统软件架构示意图;
[0025] 图2为仿真平台设计示意图;
[0026] 图3为软硬件总体设计示意图;
[0027] 图4为机箱设计效果示意图;
[0028] 图5为AcoreOS653操作系统架构示意图;
[0029] 图6为AcoreOS653操作系统应用配置示意图;
[0030] 图7为AcoreOS653操作系统内存配置示意图;
[0031] 图8为虚端口驱动函数指针参数示意图;
[0032] 图9为虚端口配置示意图;
[0033] 图10为通信模块设计示意图。

具体实施方式

[0034] 下面结合附图对本发明的具体实施方式做进一步说明。
[0035] 本发明产生的基本思路如下:如何将大型系统集成起来,并在上面开发新的应用,是开发人员经常面临的问题。在中间件出现以前,开发人员必须直接解决这些棘手的问题。在实际的软件开发过程中,开发人员一半以上的时间和经历花费在了这也与业务无直接关系的问题上。中间件是目前一项实现异构系统间透明访问的关键技术,它屏蔽了分布式系统中各个组成部分之间的硬件环境、操作系统和编程语言等方面的差异,为实现软件模块在分布式系统中的即插即用奠定了坚实的技术基础。
[0036] 但是在航空电子系统中,大量的实时应用需要把它们的通信模式建模成一个纯粹以数据为中心的交换模式。在这种模式中,一个应用发布数据,而另一个应用获取感兴趣的数据,构成发布/订阅((Publish/Subscribe)网络模型,这些实时应用主要关心的是如何用最小的代价来实现数据的可预测性分发。这些实时应用还有一个重要的需求:可伸缩性和灵活性,即要求不用重建整个系统就可以增加新的节点。OMG(Object Management Group)意识到了这种对数据分发服务的需求,并于2004年12月发布了面向分布式实时系统的数据分发服务规范(Data Distribution Service for Real-time Systems,DDS)。DDS规范为DDS中间件定义了一系列规范化的接口和行为,定义了以数据为中心的发布/订阅(Data-Centric Publish-Subscribe,DCPS)机制,提供了一个与平台无关的数据分发模型。此外,DDS规范还强力关注了对QoS(Quality of Service)的支持,它定义了大量的QoS策略,使得DDS可以很好地配置和利用系统资源,协调可预测性与执行效率之间的平衡,以及支持复杂多变的数据流需求。
[0037] VxWorks6.6操作系统是美国WindRiver公司1983年开发的一种嵌入式实时操作系统,包含了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分,只占用了很小的存储空间,并且可以高度裁减,这样可以保证系统能以较高的效率运行,而且可以适合于多种不同的硬件平台。VxWorks6.6支持的CPU包括Power PC、68K、CPU32、SPARC、i960、x86、Mips等,同时支持PISC、DSP技术。它是现在所有独立于处理器的实时操作系统中最具特色的操作系统之一,被广泛应用于航空航天、舰船、工业控制、通信、医疗等关键领域。
[0038] 想要实现在VxWorks6.6下各项功能的良好实现,首先需要对于VxWorks6.6系统进行初始设计及其配置。
[0039] VxWorks6.6实时操作系统由400多个相对独立的、短小精悍的目标模块组成,用户可根据需要选择适当的模块来裁剪和配置系统,这有效地保证了系统的安全性和可靠性。
[0040] VxWorks6.6操作系统的基本构成模块包括以下部分:
[0041] 1)高效的实时内核Wind:VxWorks6.6实时内核(Wind)主要包括基于优先级的任务调度、任务同步和通信、中断处理、定时器和内存管理。
[0042] 2)I/O系统:VxWorks6.6提供快速灵活的与ANSI-C相兼容的I/O系统,包括NUIX的缓冲I/O和实时系统标准POSIX的异步I/O,亦包含网络设备、管道驱动等多种驱动方式。
[0043] 3)本机文件系统:VxWorks6.6的文件系统与MS-DOS、RT-11、RAM、SCSI等相兼容。
[0044] 4)虚拟内存:可选单元为VxYMI,该单元主要用于对指定内存区的保护,如内存块只读等,加强了系统的稳定性和可靠性。
[0045] ACoreOS653嵌入式实时操作系统是专为新一代航空电子系统开发的,支持综合化航空电子系统的嵌入式实时操作系统。此外,它基于分区架构,具有高安全性,高可靠性,提供了符合ARINC653《AVIONICS APPLICATION SOFTWARE STANDARD INTERFACE》规范Part1部分的接口,为综合化系统中应用软件的开发提供分区、调度、通信、故障监控等功能,有效地降低了分区应用间的相互干扰,确保应用系统的安全运行。
[0046] ACoreOS653操作系统软件架构如图1所示。其中模块支持层软件作为硬件资源管理软件,为操作系统的运行提供硬件支持,该层软件与操作系统相互分离。核心操作系统作为分区的管理者运行在核心态,负责核心操作系统内的分区管理与调度、资源分配与管理等功能可配置组件作为操作系统可裁剪的功能,由用户通过配置进行功能扩充;分区操作系统则驻留在每一个分区内,其运行在用户态,提供分区内的进程调度和资源管理。具体描述如下:
[0047] ·模块支持层
[0048] 模块支持层提供ACoreOS653与硬件设备的访问接口。在该层中,由于其代码反映硬件特征,我们将根据系统提供的板级模板,基于源码构建特定653硬件板卡的板级支持包,从而生成相应平台的模块支持层软件。块支该模持层同时作为连接硬件层和上层核心系统层的过渡层,提供上层开发驱动软件所需的相关接口。
[0049] 模块支持层提供核心操作系统需要进行设置的主要功能包括:提供处理器访问功能;建立物理空间与逻辑空间映射;建立响应异常和外部中断设置项;设置解析部署信息;设计加载操作系统映像;管理系统内部映像,支持映像的部署与加载;向上层核心操作系统层提供平台驱动支持及系统级调试支持。
[0050] ·核心操作系统层
[0051] 此次航电系统平台下,653核心操作系统主要实现要求为三个方面:负责提供单个CPU目标平台的资源管理和分区管理设置;设置核心操作系统管理参数管理所有共享的资源,包括:中断、系统时间、内存和I/O服务,确保数据融合处理算法所在分区所需的资源是可用的;通过配置合适的通信通道,使系统可以支持并良好实现ACoreOS653机载嵌入式实时操作系统分区与I/O硬件设备的通信。
[0052] 此外,核心操作系统还可以提供扩展接口,用于支持操作系统扩展组件和工具代理的开发。
[0053] 核心操作系统为分区操作系统提供的主要功能:
[0054] a)分配系统资源。保障分区(雷达数据融合处理分区)中所需要的资源信息及其相关功能要求可以正确实现。
[0055] b)对于分区的调度。对于分区1(雷达数据融合处理分区)中所出现的各种系统资源请求提供响应,对于分区行进状态也可以及时获取做以调整。统率全部分区功能,在后续多分区扩展中,灵活实现对于各分区的控制。
[0056] c)执行异常处理。对于底层数据传输产生的的数据错误,和分区出现的中断警告,资源占用和突发状态进行及时的异常处理,实现数据融合的高可靠性。
[0057] d)定义和确定分区边界。设置划分分区和相关分区初始信息,包括其中的边界定义和分区资源分配、优先级设置等。
[0058] e)加载分区。分区的调用和应用需要通过核心操作系统加载和设置,因此在核心操作系统之上需要实现对于雷达数据融合算法的加载运算。
[0059] f)处理I/O操作。实现和底层模块支持层数据的传输和收发。
[0060] g)支持分区级调试。通过控制核心操作系统层,实现对于不同分区的单独调试。
[0061] ·分区操作系统层
[0062] 在此次航电领域服务ACoreOS653系统下的主要要求,就是将雷达数据融合处理算法移植到ACoreOS653系统分区一中,实现其在ACoreOS653下的正常准确数据处理功能。
[0063] 为了实现这一目标,首先需要在了解分区系统工作方式的基础上,对于分区系统进行基础设置,实现运行;之后通过移植裁剪,实现数据融合处理算法在ACoreOS653分区之上的实现。
[0064] 分区操作系统主要负责提供单个应用分区内的资源管理和进程调度。在系统调度的每个分区内都存在一个分区操作系统。分区操作系统在分区所处的时间窗口内运行,每当分区窗口发生切换时,分区操作系统也将切换。分区内运行的基本软件单位是进程,分区内的进程按优先级抢占方式进行调度,同时分区操作系统支持同优先级进程的时间调度。
[0065] 分区操作系统管理分区内的所有资源,包括:分区内存、分区内的时间、虚中断以及所有的对象资源,由于分区是隔离的,因此分区操作系统所管理的资源是不会被其他分区操作系统访问的。分区之间的信息交互必须通过核心操作系统来完成。分区操作系统需实现的主要功能:
[0066] a)分配分区内的资源。通过设置资源的分配来实现不同分区下功能的实现。
[0067] b)调度分区内的周期和非周期进程。在雷达数据融合处理分区一种,需要通过对于不同优先级进程的调度,实现在实时性下的数据处理。
[0068] c)执行分区内的异常处理。对于(雷达数据融合处理分区)分区一中出现的中断异常,资源抢占等异常状态,进行处理和响应。
[0069] 支持用户通过端口进行分区间的通信。在日后系统进行二次开发扩展时,可用于多分区间的通信设计。
[0070] 本发明所设计的嵌入式运行平台中,为了实现应用软件的高实时性和高可靠性,在硬件设计中采用了VxWorks6.6与AcoreOS653系统相结合的方式,完成其数据收发和数据处理的相关功能。验证该设计方法的可行性的仿真平台设计如下:在Windows10系统和VxWorks6.6系统下部署了DDS;在Windows系统下,DDS的使用是以DLL的形式调用其API;将VxWorks6.6作为I/O机,在该系统中部署DDS,与Windows系统中的DDS实现数据收发;通过AFDX板卡,与AcoreOS653系统建立连接,实现数据双向通信。所述嵌入式运行平台其软硬件总体设计如图3所示。所述仿真平台设计如图2所示。其中:
[0071] 硬件设计方法如下:
[0072] 采用CPCI机箱,完成包含工控机板卡、处理机板卡及AFDX通信板卡的试验箱设计。其中:
[0073] CPCI主板:选用CPC-3813CLD3N作为VxWorks6.6系统主板,HT-C130C作为AcoreOS653系统主板。
[0074] CPCI背板:在CPCI背板的设计中,将背板分为前后2部分。其前后白班的具体功能如下:
[0075] 前背板:分为左右对称两部分。左侧包含1个系统槽、2个扩展槽;右侧包含1个系统槽、2个扩展槽。2个主板在背板内部不通信。用于完成板卡的接入和系统电源的供电开启关闭等相关功能。
[0076] 后背板:是1个电源背板。用于实现电源的接入。
[0077] 前后背板都预留20PIN端子插件,通过线缆连接实现整体供电。
[0078] 机箱尺寸为:整机长:252mm,高:207mm,深:314mm。
[0079] 机箱设计效果如图4所示。
[0080] 软件设计方法如下:
[0081] A)I/O机设计:
[0082] 在VxWorks6.6操作系统中,主要实现两项功能,包括CPCI总线双向传输的设计,以及DDS数据分发服务的设计。
[0083] 步骤101:在VxWorks6.6系统下部署DDS,需要经过以下步骤:
[0084] 1.在BSP的makefile文件中添加宏定义DRTI_VXWORKS;
[0085] 2.建立VxWorks6.6映像工程;
[0086] 3.添加相应路径
[0087] 1)在VxWorks6.6映像工程的属性设置处,选择Build Properties-Build Macros,在LD_LINK_PATH处添加DDS静态链接库文件所在路径;
[0088] 2)在Build Paths处添加DDS所使用的头文件所在路径。
[0089] 4.添加VxWorks组件
[0090] 打开VxWorks映像工程的Kernel Configuration选项,在Operating System Components(操作系统组件)中找到Real Time Process Components,右击Real Time Process Components,选择添加该组件。
[0091] 完成上述步骤,即完成了DDS在VxWorks系统下运行所需的配置。
[0092] 步骤102:对VxWorks系统下相关核心组件进行配置及基础设置,主要集中在内核中,包括:任务管理、事件和异步信号服务、信号量服务、消息队列服务、内存管理、中断服务程序、时钟管理和定时器服务。
[0093] 步骤103:VxWorks系统下CPCI总线双向传输设计与实现
[0094] ·CPCI总线作为一种即插即用的总线结构,能够自动为设备分配合适的硬件接口参数。设备初始化分为:
[0095] a)为机箱内所有的CPCI插件包括初始化硬件分配设备资源以及中断设置。需要调用程序扫描CPCI总线,查找所有CPCI总线上的硬件设备,然后查询该硬件设备上的资源信息,最后把这些信息传给VxWorks系统,将CPCI总线上设备资源映射到系统中,具体步骤如下:槽预分配资源,主要是定义设备信息数据结构,创建设备列表,并填入部分信息(事先获得,与DSP插件FPGA中固化的信息一致),挂接中断服务子程序。
[0096] b)对CPCI设备进行检测,使用VxWorks库函数pciFindDevice()根据预写入各插件FPGA中的项目产品号和设备序号(统一设计指定)查找指定的PCI设备,获得相应的总线号、设备号、功能号。
[0097] c)根据设备的总线号、设备号、功能号通过库函数pciConfiglnByte(),pciConfigInLong(),pciConfigoutLong()进一步获得该设备的IRQ、PCI基地址寄存器、映射到系统中的IO空间等详细配置信息,保存到相应的设备信息数据结构中。
[0098] d)使用库函数pciConfigOutWord()配置设备的PCI命令寄存器,并在内存中分配专门的DMA输入、输出缓冲区;
[0099] e)通过库函数pciIntConnect()令中断向量指向中断服务程序。中断服务程序处理来自硬件的中断,为了保证实时性,必须满足运行时间不长、不会被阻塞等要求。
[0100] ·端口读写
[0101] VxWorks系统通过CPCI总线可对设备进行单字长数据的读写。
[0102] 端口读使用库函数syslnLong实现,可从指定的设备地址中读取一个总线宽度(32/64bit)的数据,主要用于插件状态的获取。端口写使用库函数sysOutLong()实现,可向指定的设备地址中写入一个总线宽度的数据,主要用于插件状态控制。
[0103] 不论是端口读还是端口写,都需要DSP插件的FPGA电路中配置相应的状态和命令寄存器,分别用以暂存从插件收集的待发到总线上的状态字和刚从总线获取待进一步处理的命令字。
[0104] 以端口读写方式操作CPCI总线,使用方便,单条语句即可完成,缺点是过程占用CPU运行时间,且一次读写的数据量不超过1个总线宽度,因此只适用于少量单字数据的传送。
[0105] ·多任务的执行和协调
[0106] VxWorks作为嵌入式实时操作系统,具有快速响应和并发处理多事件的特点,同时也带来了同步(Synchronous)和互斥(Mutex)以及公共资源的争夺问题,必须妥善处理,否则将引发死。为了协调各任务间的活动,需要使用如下任务间通信机制。
[0107] a)共享内存机制(Shared memory)
[0108] b)信号量机制(Semaphore)
[0109] c)消息队列机制(Message queue)
[0110] d)管道机制(Pipe)
[0111] e)远程调用(RPC),Signal等
[0112] 当VxWorks系统内有多个任务并发运行时,如中断等待任务、命令控制任务、DMA读写任务等,这些任务之间很多是存在逻辑依赖关系,需要严格的先后执行,同时,机箱内各板卡都共用一套CPCI总线,每块板卡都需要通过总线和VxWorks计算机交换数据,因此就产生了公共资源的争用问题,需要协调。
[0113] ·信号量机制保障任务间的逻辑依赖
[0114] VxWorks中,信号量包括二进制信号量、计数器信号量、互斥信号量等。二进制信号量可用于解决同步和互斥、优先级继承、删除安全和递归等情况。其系统开销小,速度快,非常适合嵌入式软件。
[0115] 在VxWorks与CPCI总线的通信中,二进制信号量大量地应用于有逻辑依赖关系的任务通信中,如下代码所示,semld1是一个二进制信号量,任务IntTask1是中断服务程序,其功能就是接收到某DSP插件的中断请求后,释放信号量通知后续操作执行,而另一任务Task1是在响应中断之后执行的后续操作,严格依赖于IntTask1,因此该任务是以无限循环的方式等待信号量semld1的释放,这种做法确保了每次Task1的执行都紧跟中断响应之后。
[0116]
[0117]
[0118] ·消息队列实现公共资源的保护和协调
[0119] 在VxWorks与CPCI总线的通信中,信号处理子系统每块插件可能都会有总线传输需要,极有可能出现“总线闲多板同时请求”或“总线忙出现新请求”等情况,由于插件本身无法自我协调,VxWorks计算机作为监控指挥者,必须统一协调和调度。
[0120] 消息队列是一种比较高级的任务间通信方式,请求资源的任务均需先发送一个消息到资源请求队列中,由专门的消息队列处理任务按照一定规则协调资源请求队列中任务先后执行。消息队列的系统开销较高,对于实时性要求比较高的系统来说有可能导致通信超时等问题。因此,只对需要重点保护的公共资源使用消息队列,比如总线DMA,网络接口数据发送等。
[0121] B)任务处理机设计
[0122] 主要完成三部分内容设计:操作系统基础配置,应用软件的设计与开发,以及CPCI总线驱动程序的设计。
[0123] 步骤201:AcoreOS653操作系统基础配置
[0124] 任务处理机中的应用软件以组件的形式封装在653系统各个分区中;I/O驱动模块与应用分区分离,驻留在653系统核心系统层;AFDX I/O驱动按照虚端口驱动形式进行二次封装,通过APEX服务,实现核心系统层I/O模块与分区应用模块数据交互。系统配置如图5所示。
[0125] 为了实现分区功能,在软件设计开发完成的基础上,需要完成以下系统配置:
[0126] 1)处理器配置
[0127] 根据默认值即可,不需要单独进行设置操作。
[0128] 2)应用软件配置
[0129] 分区操作系统的软件配置主要用于配置分区操作系统可裁剪的软件,包括系统监控器,远程浏览器。其系统配置如图6所示。配置信息如附表1所示。
[0130] 表1 AcoreOS653操作系统应用配置信息表
[0131]
[0132] 3)内存配置
[0133] 分区操作系统内存配置主要用于配置分区操作系统映像生成时的各段数据的地址空间分配,通过该配置可确定分区操作系统映像在RAM中的运行地址,该部分系统配置数据在构建时自动生成,来自于配置记录的配置生成数据。参见表2。分区操作系统内存配置界面如图7所示。
[0134] 表2 AcoreOS653操作系统内存配置信息表
[0135]
[0136] 步骤202:CPCI总线双向传输设计与实现
[0137] AFDX总线驱动以函数指针组的形式注册在653系统中,虚端口驱动函数指针参数如图8所示。
[0138] 虚端口驱动中共有五个不同功能的函数指针,AFDX驱动API根据功能进行区分,二次封装在这些函数指针中。
[0139] 虚端口驱动封装完成后,需要添加驱动名称,并注册在系统系统中。
[0140] status=portPseudoDrvAdd(&(funcPtr),(char*)"/pseudoDrv");
[0141] 在配置项目中设置虚端口时,配置驱动名称,使虚端口有数据到达时,能够根据虚端口上设置的驱动名称查找到对应的驱动。
[0142] 从图9中可知,此虚端口为目的端口,注册驱动为/pseudoDrv/sportone,按照VxWorks驱动名称匹配规则,此虚端口与/pseudoDrv驱动关联,而sportone作为此端口在系统中的虚端口名称。
[0143] 多个虚端口可能共同关联同一个驱动,此时会产生AFDX端口到指定虚端口的消息路由问题。在虚端口驱动指针attachRtn中,在每个虚端口初始化的过程中,会自动调用此指针中的程序内容。AttachRtn中,应根据虚端口名称的差异对每个虚端口进行区分,并为之分配一个唯一的虚端口ID。在虚端口驱动中其他函数指针被调用时,虚端口ID会作为一个参数传入,作为区分调用驱动虚端口的区分依据,以实现AFDX端口和虚端口之间指定的映射关系。
[0144] C)通信模块设计
[0145] 在环境中,ACoreOS 653系统与VxWorks系统通过CPCI背板,依靠CPCI-AFDX板卡进行实时性通信,该通信的过程如图10所示。VxWorks与ACoreOS653系统采用CPCI-AFDX-AFDX-CPCI方式进行通信,即VxWorks/ACoreOS653系统通过CPCI背板与CPCI-AFDX板卡进行通信,并输入输出AFDX信号,两块AFDX板卡通过AFDX板卡连接线实现数据的传输。
[0146] 在图10中,机箱中有两块CPCI背板,各连接一块主控板和CPCI转AFDX板卡,呈对称结构,分别作为IO机和653机。作为IO机的部分由主控板驱动CPCI背板,再由另一块板卡将数据由转入AFDX接口。IO机和ACoreOS 653机的两个AFDX板卡上的接口连接数据线,实现数据的交互传输。作为IO机,主控板上具有的是x86架构下运行Vxworks6.6的最小系统。不考虑DDS传输和AFDX传输,要让IO机正常发挥功能,要实现机箱内两部分的内容:
[0147] 1)在Vxworks/ACoreOS653系统下驱动CPCI背板,使其能够与板卡通信;
[0148] 2)在Vxworks/ACoreOS653系统下通过CPCI总线控制AFDX板卡传输数据。
[0149] 为了实现Vxworks—ACoreOS653系统的数据通讯,在分别完成VxWorks系统和ACoreOS653系统下CPCI板卡驱动及其通信的设置之后,另一个重要的问题就是Vxworks系统下两块AFDX板卡间的相互通信。想要良好实现AFDX板卡间的数据通讯,对于AFDX板卡特点及其通讯机制的了解是必不可少的。
[0150] 此次使用的AFDX板卡是基于PCI/CPCI总线协议,具有以硬件实现传输层、网络层、链路层及物理层4层传输协议;具有智能化配置编辑及分析工具,兼容多种系统软件的高性能板卡。
[0151] 在对其进行数据传输设计时,首先需要配置设计环境、初始化各端口和相关虚拟链路,完成端口收发函数的设计。接下来将分条列述如下:
[0152] 步骤301:配置设计环境
[0153] ·将产品光盘中VxWorks软件支持目录中的Map目录下的BSTMapPci_BSTAFDX.c复制到Tornado集成开发环境安装目录中的bootrom与VxWorks内核编译生成目录,一般为“?:\Tornado2.2\target\config\VxWorksEnv”目录下,其中?为盘符,VxWorksEnv为编译生成bootrom与VxWorks内核的目录名称;
[0154] ·在编译生成bootrom与VxWorks内核的目录中,找到sysLib.c,修改该文件,在文件的开头include集的末尾添加语句“#include"BSTMapPci_BSTAFDX.c"”;
[0155] ·将BSTMapPci_BSTAFDX.c文件中定义的BSTMapPci_BSTAFDX()函数添加到sysLib.c文件中sysHwInit函数体的末尾处;
[0156] ·重新编译生成bootrom与VxWorks内核。
[0157] ·在Tornado集成开发环境中创建自己的工作工程,将BSTAFDX.a与BSTAFDX_lib.h文件复制到工程目录中,创建主程序文件后,在其include集的末尾处添加如下代码:
[0158] #include"BSTAFDX_lib.h"
[0159] ·配置工程引用BSTAFDX.a文件,然后编译构建工程即可。
[0160] 步骤302:初始化各端口和相关虚拟链路
[0161] ·初始化各端口
[0162] 在端口及其虚拟链路的初始化中,首先需要实现对于端口的配置,其间:
[0163] 端口ID:硬件支持0~1023个端口ID,共1024个端口ID。
[0164] 端口号:端口号取值为0~65535,共65536个端口号,即UDP端口号。
[0165] 每个端口号都对应一个端口ID,由“配置工具”进行配置关联。且发送与接收均有1024个端口ID。
[0166] 可按照传输需求进行配置。
[0167] ·初始化虚拟链路
[0168] a)发送虚拟链路TxVL初始化结构
[0169]
[0170] 结构变量说明:
[0171] TxVL:发送虚拟链路通道(TxVL)数组,每个下标代表1个通道;
[0172] VL_ID:发送虚拟链路通道的ID号,取值范围0-65535,终端节点配置信息最多能设置128个发送虚拟链路通道,且VL_ID不可重复;
[0173] BAG:同一个发送虚拟链路通道发送两个连续的第一位之间的最小间隔,范围为0~7,表示间隙时间为2的0~7次方(即1~128ms);
[0174] MaxFrameSize:发送虚拟链路通道可以传送的最大帧的长度,范围为64-1518字节。
[0175] b)接收虚拟链路RxVL初始化结构
[0176]
[0177] 结构参数说明:
[0178] RxVL:接收虚拟链路通道(RxVL)数组,每个下标代表1个通道;
[0179] VL_ID:接收虚拟链路通道的ID号,取值范围0~65535,终端节点配置信息最多可设置128个接收虚拟链路通道,且VL_ID不可重复;
[0180] MaxSkew、BAG:MaxSkew是最大冗余时间,取值范围为0~65535,BAG是带宽分配间隙,取值范围为0~7,这两个参数配置应满足:
[0181] RxSkew=MaxSkew/MIN(2BAG+1,127)
[0182] 公式中的RxSkew为接收VL冗余处理时,最大延时时间,(PSN-RxSkew)……PSN之间被认为无效SN区。如果收到的SN不在以上区域,则认为有效;
[0183] MaxFrameSize:VL可以接受的最大帧的长度,范围64~1518。
[0184] 步骤303:端口数据收发函数设计
[0185] 根据数据传输需求,对于特定的AFDX收发端口设计收发函数,实现数据传输功能。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈