登录
首页 嵌入式系统 嵌入式系统
回帖 发帖
正文

主题:基于VxWorks的1553B仿真开发系统

点击:780 回复:3

附件 20161125_105631.jpg
一种应用于强实时系统开发的1553B总线仿真开发系统,采用双微机结构,下位机基于386EXCPU和VxWorks实时嵌入式操作系统,用户界面基于PC机。该系统可实现对有严格时序要求和容错要求的基于1553B总线的网络的仿真和测试。对该开发系统的设计和实现方案进行了介绍,包括基本原理的介绍和VxWorks程序以及用户应用程序的开发。
1553B总线是一种军用标准的数据总线,利用它可以实现多个系统间的数据和信息交换。由于1553B总线的高可靠性,它广泛应用于航空、航天和军事领域的电子联网系统中。 目前市面上的1553B仿真开发系统的产品很多,但是这些1553B仿真开发系统的总线消息调度、监视都是在PC机上实现的。而PC机上的操作系统一般是Windows,Windows是分时操作系统,在系统对时间特性要求较高时,无法保证整个仿真测试过程的实时性。 另外,市面上的产品一般都是用于通用目的的,用户应用程序的操作界面复杂烦琐,为了完成实际的仿真测试任务,常常需要进行大量反复的设置和操作,甚至有时无法依靠产品提供的用户应用程序完成仿真测试任务;有的产品甚至仅仅提供一个软件开发包,需要用户在此基础上自己开发应用程序。在绝大多数情况下,都不可能直接使用产品提供的用户应用程序来完成实际的仿真测试任务,需要用户进行二次开发,大大加重了用户的负担。 本文在多年工程实践的基础上,根据实时系统对时间特性、可靠性的要求,将消息调度放到386EXCPU上执行,386EXCPU上面运行的是VxWorks实时嵌入式操作系统,保证了系统的实时性和灵活性;根据实际仿真测试任务中经常使用到的通讯功能和数据分析功能来编写用户应用程序,完全针对实际工程中的应用,用户只需要根据自己的通讯协议,在操作界面上设置仿真系统的运行状态,就可以实现严格的通讯时序和进行各种错误测试。
17-02-25 10:05
1系统组成和原理 本文要实现的1553B仿真开发系统如图1
所示,分为上 位机和下位机两部分。
附件 untitled1.jpg
上位机即PC机,上面运行的是1553B仿真开发系统的用户应用程序。上位机软件完成初始化输入,将输入参数传给下位机,实时接收下位机上传的通讯过程,实时对通讯过程进行统计、显示和存储,在用户要求运行停止时,通知下位机停止运行。同时,在离线状态下,对运行结果进行显示、查询、处理分析。 下位机即1553B仿真卡上的386EXCPU,上面运行的是VxWorks实时嵌入式操作系统。下位机在收到完整的输入参数之后,启动1553B总线协议芯片的运行,在运行过程中,对通讯过程进行分析,将通讯过程通过双口RAM发送给上位机。在给定的运行周期到达或收到上位机的停止运行命令后,停止1553B总线协议芯片的运行。 本文中的1553B仿真开发系统上位机和下位机之间的通信采用查询方式。系统上电时,下位机处于复位状态,上位机的应用程序开始执行,首先配置双口RAM的LocalBusCon-figuration寄存器,设置双口RAM的LOCAL端(386EXCPU一侧)的接口方式为16位方式;通过HostControlRegister的LocalProcessorReset位使下位机复位,一秒后释放下位机,下位机开始启动,启动完成后开辟初始化数据和1553B消息数据存储缓冲区,向双口RAM的特定区域写入成功启动信息,进入查询状态,等待上位机下传初始化数据。上位机的应用程序在查询到双口RAM该区域的成功启动信息后之后,启动用户界面。用户手动输入或读入以前的设置,启动初始化数据的下传,在初始化数据的下传结束后,向双口RAM的特定区域写入成功下传信息,下位机查询到双口RAM该区域的成功下传信息后,开始接收初始化数据,并根据初始化数据的不同,运行相应的功能模块[1]。
1.1 双口RAM 通过图1可以看到,本仿真开发系统的1553B仿真卡是 一块PCI卡,它通过PCI总线与PC机进行通讯。1553B仿真卡上的双口RAM选用CYPRESS公司的CY7C09449,它是一块带PCI桥的双口RAM,通过它,实现上位机和下位机之间的通讯。上位机传给下位机的输入参数首先缓存在双口RAM中,下位机再从双口RAM中读出这些参数;下位机实时上传的通讯结果也是先缓存在双口RAM中,然后再由上位机读出。
1.2 386EXCPU 386EXCPU是整个1553B仿真卡的核心。386EXCPU上 面运行的是VxWorks实时嵌入式操作系统,整个仿真开发系统的消息调度都是由386EXCPU完成,保证了系统的实时性。386EXCPU上面的VxWorks开发主要分为板极支持包BSP的开发和应用程序的开发。 1.31553B总线协议芯片 1553B总线协议芯片负责同1553B总线上的其它设备进 行通讯。在本文要实现的1553B仿真开发系统中,根据输入参数的不同,1553B总线协议芯片可以配置为BC、RT、MT这3种工作模式。 1553B总线协议芯片选用DDC公司的BU-61580。BU-61580芯片和1553B总线之间多采用变压器藕合方式,通过变压器同外部总线相连。外部总线一般为二冗余的双总线结构,BU-61580内部也是一个逻辑二冗余的结构。
 BU-61580的存储器分为内存RAM和寄存器REGISTER。REGISTER控制BU-61580的运行方式,如工作于哪种工作模式,使用逻辑A区还是B区,如何产生中断,如何处理错误等。RAM是BU-61580的数据存储区,包括各种数据指针和数据结构,及接收发送数据的存储区域等。RAM有少部分区间的使用是硬件预先设定的,其余大部分的使用是用户可自定义的。 BU-61580的初始化步骤主要有:复位61580;清61580内部RAM;内部RAM初始化;寄存器初始化;设置中断向量;开对应中断;启动芯片运行[2]。
2 VxWorks实时嵌入式操作系统开发
    本文中的1553B仿真开发系统使用了386EXCPU,386EXCPU的资源丰富,处理能力强大。如果采用传统的编程方法,由程序员在自己的程序里面分配、管理CPU资源,不仅非常烦琐,容易出错,而且也不能有效地利用CPU的资源和处理能力。因此,有必要使用嵌入式操作系统,在操作系统的基础上直接进行开发,不仅避免了烦琐的资源分配管理,而且提高了编程的效率、可靠性和可维护性。 操作系统是整个系统应用的基础,它是硬件管理和软件应用之间的桥梁,操作系统的任何缺陷都可能引起非常严重而且不可预知的问题。因此,一个高性能的嵌入式操作系统,必须具有很高的可靠性。 本文中的1553B仿真开发系统选用了美国Windriver公司的VxWorks嵌入式实时操作系统。VxWorks是一个优秀的实时嵌入式操作系统,
主要优势包括:
(1)高效的代码和良好的可裁剪性。VxWorks采用微内核结构,内核可裁减至几十K字节,对于资源相对紧张的嵌入式系统具有非常好的适应性。
(2)丰富的接口资源和大量的第3方产品为VxWorks的广泛应用奠定了坚实的基础。
(3)良好的移植性。VxWorks支持包括X86系列,POWER-PC系列,SPARC系列,ARM系列,MIPS系列等几乎所有流行的CPU,可适应于不同的硬件平台。VxWorks提供POSIX1003.1b(对应旧标准1003.4)标准规定的大部分接口,使得对已有系统的移植变得非常容易。
(4)良好的开发环境。VxWorks有一个非常优秀的开发环境Tornado[3]。 本文中,VxWorks实时嵌入式操作系统开发主要包括:板极支持包BSP和应用程序的开发。
2.1板极支持包BSP的开发 板极支持包BSP即BoardSupportPackage,其功能相当于 PC机的BIOS。它来源于嵌入式操作系统与硬件无关的设计思想,操作系统被设计为运行在虚拟的硬件平台上。对于具体的硬件平台,与硬件相关的代码都被封装在BSP中,由BSP向上提供虚拟的硬件平台,BSP与操作系统通过定义好的接口进行交互[4]。 BSP由3部分组成: (1)源文件、头文件以及编译描述文件makefile。主要是C语言程序和少量汇编语言程序。 (2)导出文件。导出文件是由BSP的基本文件、
驱动文件
17-02-25 10:16
和VxWorks库模块编译连接生成。 (3)二进制驱动程序模块。 本文中的1553B仿真开发系统的VxWorks映像文件是基于ROM的,其初始化过程如下: (1)romInit():位于romInit.s文件中,上电或者复位后,运行romInit()子程序。该程序完成的功能有:关闭CPU中断、复位CPU、进行各种与硬件相关的初始化以及资源分配、将启动类型传递给bootInit.c中的romStart()子程序,并跳转到romStart()子程序。 (2)romStar():位于bootInit.c文件中。将ROM中的代码重新定位到RAM中(如果是ROM驻留映像,只重定位数据段);如果是压缩的映像,则完成解压缩;完成内存的初始化。跳转到usrConfig.c中的usrInit()子程序。 (3)usrInit():位于usrConfig.c文件中。负责系统的初始化,初始化通用代码,激活VxWorks内核,建立多任务环境。跳转到usrConfig.c中的usrRoot()子程序。 (4)usrRoot():位于usrConfig.c文件中。安装驱动、创建设备、激活中断,调用用户创建的应用程序。 进行BSP开发时,应以独立发行的目标板CPU的BSP文件为模板,在此基础上进行适当的修改,开发自己的BSP。一般在开发BSP的时候,应该将\tornado\target\config\all和\tor-nado\traget\config\bspname目录下的文件拷贝到自己的开发目录下进行修改。要修改的主要有: (1)配置头文件:涉及到的配置头文件主要有:configAll.h、config.h、bspname.h。其中,除非硬件环境有变化,否则,不需要修改bspname.h。configAll.h是VxWorks的缺省配置,为了保持软件的一致性,一般不做修改,而是通过修改config.h来实现对缺省配置的修改。在config.h中,通过宏命令#undef使con-figAll.h中定义的配置选项失效,然后通过宏命令#define来定义自己的配置选项。 (2)配置模块文件:涉及到的配置模块文件主要有:usrConfig.c、bootConfig.c、sysLib.c、romInit.s、sysAlib.s等。 (3)Makefile:Makefile定义编译规则、控制生成VxWorks映像文件的类型。所有新增加的程序模块都必须在Makefile中使用MACH_EXTRA命令将其目标模块加入到最终的VxWorks映像文件中。 2.2应用程序的开发 应用程序的开发是在VxWorks的开发环境Tornado中进 行的。应用程序开发过程中最重要的问题就是任务的划分和优先级的确定。一般来说,功能联系比较紧密的模块可以划分成一个任务;由于每个任务都有独立的堆栈空间,周期性运行的模块可以划分为一个任务,只执行一次的模块一般不单独划分为一个任务,以免浪费资源。 实时性要求能够随时中断正在执行的任务,对内部和外部事件在确定的时间内做出响应。因此,多任务机制是保证应用程序实时性的重要手段。如果任务划分得过少,把好多功能上没有联系的模块都放在一个任务里,那么应用程序的实时性将会比较差;如果任务划分得过于细致,那么任务调度的开销将会随之增加。 此外,任务之间通信时,对信号量的处理应当谨慎,避免在任务间通信时造成任务死锁;任务的堆栈空间是有限的,在任务运行过程中要注意检查堆栈空间的余量,避免堆栈溢出; 优先级的确定相对简单一点,一般来说,用户任务的优先级要低于系统任务的优先级;经常运行,对实时性要求高的任务应分配较高的优先级。任务的优先级在任务创建时指定,也可以在运行过程中动态地改变。用户任务优先级应该根据实际情况来分配,使各个任务能够协调的运行,避免因为优先级过低导致某个任务长时间得不到响应。 在实际仿真测试任务中,要仿真测试的1553B总线设备一般工作在BC、RT和MT这3种状态;不同的仿真测试任务可能使用不同的具体通信协议。所以,应用程序的功能必须包括BC、RT、MT这3种模式的仿真测试和具体通信协议的配置。另外,在应用程序的执行过程中,必须实时响应上位机的要求,停止通信,因此需要启动任务aceManager来完成此功能;由于1553B仿真卡使用看门狗电路来控制386EXCPU和BU-61580的复位,因此需要启动任务feed690来控制看门狗电路的状态。考虑到上面的这些因素,本文中386EXCPU上运行的应用程序框架如图2所示。
附件 untitled2.jpg
3 PC机应用程序开发
   PC机应用程序用VisualC++6.0编写完成,为用户提供简单快捷的图形化操作界面。对应于下位机的各种功能,上位机要完成设置消息、启动1553B通信设备等相应的功能。在实际的仿真测试任务中,需要对通讯时序和各种错误进行仿真测试,因此需要PC机应用程序能够对通信结果进行各种相应的统计分析。考虑到上面的这些因素,PC机应用程序的功能划分如图3所示。
17-02-25 10:18
3.1设置消息
   此模块的功能是对BU-61580的3种工作模式的参数进 行设置。对于BC模式,设置每一条消息的各种参数,如通信方式、RT地址、RT子地址等,设置消息帧的各种参数,如帧所包含的消息号、消息数、消息顺序、帧周期等;对于RT模式,设置RT的缺省状态,设置RT的各个子地址要用到的数据表;对于MT方式,设置要监视的RT地址及其子地址。此外,在这个模块中还可以设置通信结果的保存目录;设置通信过程中要实时显示的消息的类型(最多可同时实时显示8种不同类型的消息);保存当前设置;载入以前保存的设置。
3.2使1553B设备开始通信
  此模块的功能是启动BU-61580的运行。可以:分别启动 BU-61580以BC、RT、MT模式运行,并设置相应的运行参数,BU-61580开始运行后,实时接收通信结果,最多可以同时实时显示8种不同类型的消息;通过用户自定义格式设置具体的通信协议;随时停止通信。通信结束后,显示本次通信的各种统计结果。
3.3对结果进行统计分析
  此模块的功能是对刚结束的通信过程或者以前保存的通 信过程进行各种统计、分析。在实际任务中最关心的是时序和容错的仿真测试;所涉及到的消息主要分为周期性消息、随机消息和用户可控消息。PC机应用程序提供了查找、过滤和分析的功能,以方便用户进行上述仿真测试;在应用程序的查找、过滤和分析功能中也考虑到了不同类型消息的不同特征,提供了对应的操作选项。
 (1)查找:可以按消息号查找、命令字查找、数据字查找,这是最常用的查找方式,适合各种消息的查找;可以按异常出错状态查找、RT状态字的状态位查找,这主要用于查找出错的消息,便于进行容错的仿真测试;可以按命令字和数据字联合查找,这主要用来查找实际通信过程中的数据包的包头。
 (2)过滤:可以按命令字过滤、消息号过滤,这能够得到用户关心的消息;可以按命令字过滤数据字,这能够得到用户关心的数据,得到的数据已经去掉了因为1553B总线传输而加上的额外信息(如命令字、状态字等),是1553B总线设备之间真正需要传输的数据;可以按消息号过滤为文本形式,以方便用户在不运行PC机应用程序时,也能直接通过文本方式查看通信结果。
2)分析:可以分析消息间的时间间隔,便于判断1553B总线设备收发各种消息的相对时间是否正确;可以分析数据的连续性,对一类消息或者数据包头中携带的数据字的连续性进行分析,常用来分析周期性消息和服务请求消息的收发是否正常;在实际应用中,常常在消息的数据字中也携带了该消息的时间信息,因此还必须能够比较数据字中的时间信息与此消息时间标签信息之间的关系,这便于进行时序的仿真测试。
4结束语
  本文给出了基于VxWorks实时嵌入式操作系统的1553B 仿真开发系统的设计方案和具体实现。本文中的1553B仿真开发系统具有很高的实时性;可以很方便地设置具体的通信协议;针对实际应用设计了专门的统计分析功能,操作简便,效率高。可以广泛应用于航空航天任务中1553B总线通信系统的仿真测试。
17-02-25 10:20

工控新闻

更多新闻资讯