基于Vxworks网络远程更换程序设计

2022-03-24 09:18:50 | 浏览次数:

zoޛ)j馕qZ䱨ky方案。

关键词:更换应用程序;网络通信技术;VxWorks系统;现场应用

文献标识码:A

机车上设备大部分是基于组匣的设计模式,内部由各个插件拼组而成,而各个插件的通信连接都挂载在以太网交换机中。每个插件都接入组匣的卡槽中,在组匣后背端按照某种通信介质连接起来,形成一个整体(设备)。

每个插件都有自己的CPU处理器和操作系统,为了简化系统的复杂性,每个插件都采用相同的CPU架构,本文采用的CPU为飞思卡尔公司提供的MPC5125处理器,它提供丰富的外设资源,如10路串口、2路CAN以及两路FEC网络控制器等。它片内只有32KRAM资源,没有片内FLASH,因此每个插件都扩展了FLASH和RAM内存,其FLASH容量为16M,RAM为128M。采用VxWorks操作系统,系统在上电复位后,利用Bootloader程序,把FLASH中的应用执行程序拷贝到RAM运行,在启动应用程序执行。

在应用程序启动前,首先需要通过下载工具把程序固化到FLASH中。目前,FLASH烧写方式主要分为两种,一种是借助下载工具(风河仿真器),直接下载到板级FLASH中,这种为编程器烧写方式,这种方式适用于开发员进行仿真调试和下载程序;另外,风河公司的仿真工具价格昂贵,大量采用仿真工具更换应用程序使得费用成本增高;且不适用于组匣现场更换应用程序。另一种方式为是适用于现场特定环境烧写方式,运用板子上自带的通信媒介直接更换应用程序。本文采用第二种方式,运用无线网络技术和VxWorks系统网络通信,实现无线远程应用程序下载和升级。

1 系统平台

本设计的机车设备采用组匣机箱,其硬件结构如图1所示。本组匣有五个插件,四个应用插件,一个交换机插件。其中应用插件处理不同的应用功能,它的每个网络口都连接在交换插件上。交换机对外网提供一个公共网络接口,该接口可以连接无线网络路由器,PC机间接地与组匣进行连接。

2 软件设计

实现网络更换程序,需要实现三部分,分别分为应用程序加载模块、Vxworks网络通信模块、PC机侧应用模块。PC机侧应用程序这部分提供人机交互界面,可以是通过WEB网页,也可以窗口界面进行程序下载操作,本设计采用窗口界面进行开发。Vxworks网络通信模块,实现数据交互,按照设定的协议进行网络通信,保证下载程序的完整性和保密性。Vxworks提供的TCP/IP协议、Socket套接字模式,方便网络程序应用开发。应用程序加载模块提供程序加载方式,包括校验程序数据,提供指定入口加载。其中后面两个模块为插件的软件设计。

2.1 应用程序加载模块

插件程序在启动时,加载FLASH Boot启动代码,完成CPU相关初始化和内存配置等等,然后拷贝应用程序到RAM区运行。为了把应用程序和维护代码隔离开来,需要对FLASH进行合理划分,这也是程序下载的关键部分,其应用程序加载过程如图2所示。从图中把FLASH划分了四个部分,两个相同的应用程序加载部分,一个文件区和系统配置部分。

插件在硬件设计时,设定在FLASH启动。Flash划分为两个相同的应用程序部分,分别为A和B。其中应用程序A部分提供系统维护功能、应用程序B部分提供应用程序功能。当检测到0xFC400000位置应用程序不存在或者系统崩溃,则拷贝应用程序A到RAM区间,然后启动应用程序A部分维护代码。这两个应用程序在下载时,存在文件区,等完成所有文件下载并校验成功后,文件区自动把两个应用程序拷贝B区,然后重新启动系统。这样备份了应用程序,不容易丢失。

2.2 Vxworks网络通信模块

Vxworks网络通信模块完成PC与插件之间的通信协议,是网络下载的关键部分。它们之间采用UDP协议,采用SOCKET编程,主要由VXWORKS提供,这里主要实现应用协议层,它主要实现五个功能,分别是建立连接、验证与认可、数据传输,数据校验及程序烧写,其通信过程如图3所示。

2.2.1 建立连接

在没有进行通讯前,并不知道对方设备是否存在,也不知道对方是什么插件设备,因此需要建立查询机制,首先PC网络端发送广播帧,给各个设备,等待设备应答。当检测到设备应答后,将周期性发送检测信息,查询设备是否一直存在,当周期通信5次没有收到应答信息,建立连接自动断开,并提示无设备连接。

2.2.2 验证与认可

更换程序时,由于没有验证过程,因此技术人员可以随意进行更换,这样将不能把控程序更换的版本与正确性。因此在程序进行下载时,需要验证与认可,密钥由管理人员分配,发送密文后,插件验证密文的正确性,当验证密文正确后,才可以进行程序下载,这样保证程序更换不能擅自下载。

2.2.3 数据传输

由于网络一包最大传输不超过1K字节,而通常一个系统代码远远大于包数,因此需要进行分包传输。然而数据传输在没有通信机制下,是无法保证数据的完整性,本设计在进行数据传输时,每一个包都进行CRC校验,并附加包序号信息。当接收端接收数据后,解析包序号,当出现不连续的包序号,接收端把丢包的数据包序号加载到请求帧里,发送端检测接收端的请求后重传丢包数据,实现数据包完整传输。

2.2.4 数据校验与程序烧写

发送端在进行发送拆包时,先对整个文件加入校验信息和配置信息。当接收端获取到完整的数据包后,数据存放在RAM区,先对这个接收的数据解析校验,并读取配置信息是否与本插件的参数一样。若数据匹配,进行下一步程序烧写,按照应用程序加载过程,程序会保存在文件当中,并更改启动信息。当断电重启后,系统自动加载应用程序,完成程序烧写。

2.3 PC机端应用程序

PC机端程序采用面向对象设计,主要有以下几类组成,包括文件格式转换类、密文验证类、网络通信类、数据传输类、文件数据分包类以及用户界面类等。其类关系图如图4所示。

网络通信类采用Socket通信,创建两个网络线程,一个发送网络线程和一个接收网络线程。这个线程管理网络接收和发送 ,当用户需要发送数据时,先把数据放入数据传输缓冲区,网络发送线程检测缓冲区有数据,启动网络发送,直到缓冲区为空,网络接收过程同理。 文件格式转换类实现烧写数据格式转换,转换格式对象是HEX文件,由于Vxworks开发工具编译后生成HEX文件格式,因此把HEX文件转换为BIN文件,并在BIN文件里加载校验信息,形成新的BIN烧写文件。密文验证完成与插件验证认可,包括密文生成、校验密文操作。文件数据分包和数据传输类,实现与Vxworks网络模块通信,文件数据分包类分解BIN文件,把BIN文件拆分許多帧网络数据包,并在网络数据包加载校验数据和包序号。在经过数据传输类,运用重传机制和校验回执等方法,保证程序文件可靠传输。

3 结语

本设计为了简化对机车上设备的现场应用与软件升级,设计了一种远程更换程序的设计方案,通过该软件替换使用仿真工具更换应用程序的方法,特别是在组匣箱里避免了拆卸机箱更换程序。用户只要操作该软件,一次性更换组匣箱内的所有程序,提高了现场人员的工作效率。本软件可以推广到类似工程现场较复杂的系统中,具有较强延伸性和实用性。

参考文献:

[1]周平,张杨.VxWorks下设备驱动程序及BSP开发指南[M].北京:中国电力出版社, 2004.

[2]孔祥营,张宝山.VxWorks驱动及分布式编程[M].北京:中国电力出版社, 2007.

[3]胡鸣.Windows 网络编程技术[M].北京:科学出版社,2008.

[4]刘芳,臧威.TMS320C672x DSP 引导加载系统的设计与实现[J].微电子学与计算机,2013,30(10).

[5]肖磊.VxWorks下基于Socket的网络通信设计[J].计算机与网络,2013,24(12): 666.

推荐访问: 程序设计 更换 网络 VxWorks