基于ARINC615A的控制软件并行加载技术

2023-07-19 09:04刘宇汪坤缪国凯林江
化工自动化及仪表 2023年3期
关键词:多线程

刘宇 汪坤 缪国凯 林江

摘 要 针对基于ARINC615A的软件加载常见的点对点和串行加载方式传输效率低且耗时长的缺点,根据ARINC615A协议在应用过程中的实际经验,按照ARINC615A协议的要求,提出一种IO多路复用结合多线程执行方式的软件并行加载技术架构。仿真结果表明:在相同的加载文件大小、网络环境和网络参数配置下,加载目标端设备数量每增加1,串行加载时的传输时间增长率在100%左右,并行加载的传输时间增长率小于1%,提高了控制软件加载的效率。并且该技术具有较高的可靠性和稳定性,满足软件适航的要求。

关键词 并行加载 工控系统 多路复用 多线程 ARINC615A 加载效率

中图分类号 TP206   文献标识码 A   文章编号 1000?3932(2023)03?0356?05

作者简介:刘宇(1985-),高级工程师,从事嵌入式软件架构设计、机载嵌入式适航软件技术的设计与开发工作,miersoft@126.com。

引用本文:刘宇,汪坤,缪国凯,等.基于ARINC615A的控制软件并行加载技术[J].化工自动化及仪表,2023,50(3):356-360.

工程实践中,对工控系统和机载系统的软硬件设计有较高的可靠性、正确性和安全性要求,需要遵循相关的研发流程和标准。对于可加载的控制软件来说,保证软件升级加载和记录数据导出加载操作的可靠性、正确性和安全性就显得尤为重要。

随着基于ARINC664的全双工交换式以太网(AFDX)的发展,控制设备中以太网的使用也越来越广泛,越来越多的控制软件采用基于以太网总线的ARINC615A协议进行软件加载和数据下载。

目前,机载系统设备控制软件加载和数据下载操作主要遵循ARINC615协议和ARINC615A协议。ARINC615协议基于ARINC429总线实现,ARINC615A协议[1]主要基于以太网总线、CAN总线等实现,相对于ARINC429总线,以太网总线速率大幅提高。ARINC615A协议能够满足控制软件加载较高的可靠性、正确性和安全性要求。ARINC615A是一种基于以太网TFTP协议的控制软件加载协议。ARINC615A协议定义了查找、信息获取、上载和下载4种类型的操作,能够支持控制软件上载和数据下载功能。基于ARINC615A软件加载的主要功能是将控制软件的可加载部分通过以太网总线上载到控制设备,如控制软件的配置数据、地图数据、音视频数据等;软件加载的另一个功能是通过以太网从控制设备下载数据,如需要维护的控制软件的日志记录数据等。ARINC615A的软件加载系统由加载端和目标端两部分组成,目标端设备通常为连接到以太网的被加载设备;加载端设备为连接到以太网的发起软件加载设备,通常分为便携式加载端(PDL)和设备加载端(ADL)两类,便携式加载端可在维护时根据需要携带上机,设备加载端固定安装在机上。

常见的点对点和串行加载方式具有传输效率低且耗时长的缺点。因此,按照ARINC615A协议的要求,笔者提出一种数据并行加载技术架构,并进行仿真验证。

1 软件加载架构

1.1 网络结构

系统维护时,控制软件的可加载部分在导入加载端设备后再通过以太网总线上载到目标端,同时目标端的日志记录数据通过以太网总线下载到加载端并可导出分析处理。加载端和目标端常见系统网络连接拓扑结构如图1所示,加载端和目标端通常连接到以太网交换机,通过以太网交换机进行以太网通信和数据交换。

1.2 功能架构

ARINC615A软件加载协议分层功能架构如图2所示。ARINC615A协议主要由基于以太网传输层的UDP协议以及上层的TFTP简单文件传输协议扩展实现。采用UDP协议和TFTP协议[2]具有较小的系统空间和时间开销。加载端协议层和目标端协议层主要通过TFTP协议进行协议文件交互,通过ARINC615A和ARINC665协议定义的协议文件的名称和格式化内容来实现ARINC615A协议的控制通信和数据传输通信,并实现加载端应用层和目标端应用层的软件上载和数据下载操作。

ARINC615A协议主要定义了4种类型的操作:

a. 查找(Find)。主要用于加载端发现网络内的目标端设备,并获取目标端设备的MAC地址、IP地址、目标硬件ID、设备位置、设备名及制造商等信息。加载端查找操作的Request消息通过1001端口的UDP协议广播发送,目标端在收到广播的Request消息之后,通过1001端口应答包含有目标端设备相关信息的Answer消息至加载端,用于记录和注册。

b. 信息获取(Information)。主要用于加载端查询目标端设备的软硬件构型信息。加载端获取到目标端设备的软硬件构型信息之后,可将其用于软件的可加载部分的匹配和识别。信息获取操作通过ARINC615A协议所定义的协议文件进行交互实现,协议文件通过扩展的TFTP协议进行传输。

c. 上載(Uploading)。主要用于加载端对目标端设备软件的可加载部分进行上载。加载端发起上载请求,并将目标端设备软件的可加载部分通过TFTP协议上载到目标端设备,目标端设备对上载软件数据进行匹配和校验之后,完成对软件可加载部分的更新操作。

d. 下载(Downloading)。主要用于加载端从目标端设备对日志记录数据进行下载。加载端发起下载请求,并将目标端设备的日志记录数据通过TFTP协议下载到本地,维护人员可以对日志记录数据进行导出、分析和处理。下载操作又分为介质定义下载模式(Media Defined Download Mode)和操作者定义下载模式(Operator Defined Download Mode)两种。介质定义下载模式是自动模式,加载端自动生成下载文件列表文件并发送至目标端;操作者定义下载模式是手动模式,由操作者选择所需下载文件,由加载端根据所选择文件生成列表文件并发送至目标端。

ARINC615A协议需要结合ARINC665协议使用。ARINC665协议[3]定义了软件可加载部分数据文件的组织以及内容格式,并定义了相关文件的校验方式方法,通过CRC、MD5、SHA1等算法进行文件的校验,保证了上载和下载数据文件的正确性。

2 并行加载架构设计

ARINC615A协议在实现时,为了简便,通常对加载端采用串行处理方式。但串行方式存在加载效率低、时间成本高的缺点。由于软硬件技术的发展,现代工控领域以及机载系统设备数量不断增多,同时软件的可加载数据量也不断增大。特别是对于终端系统设备较多的情况下,加载效率低的缺点就显得尤为突出。随着控制设备硬件性能的不断增强和CPU核心的增加,对于并行加载技术的应用需求就显得更为迫切。

ARINC615A协议是在TFTP协议基础上实现的,并对TFTP协议进行了扩展。ARINC615A协议将默认控制端口由69修改为59,并在TFTP协议选项协商功能[4]的基础上进行了扩展,在原有的File Transfer Size、Timeout Interval[5]和Block Size[6]选项协商功能基础上,增加了Part Number、Checksum和Port选项的协商功能。

TFTP协议的选项协商功能可以通过TFTP请求携带选项,实现TFTP Client和TFTP Server间各种控制参数的修改和协商。通过Port选项协商,ARINC615A协议即可实现对不同目标端设备使用不同控制端口,也为支持并行加载提供了基础技术条件。

2.1 控制流设计

在进行软件并行加载架构设计时,首先需考虑软件加载的应用场景,分析相应的用例。

软件的并行加载无需对目标端进行更改,主要是对加载端的串行操作进行并行化。具体的控制流设计如图3所示,操作人员通过加载端应用HMI接口选择加载目标设备以及需要上载的软件或者需要下载的数据,并通过HMI接口启动加载操作。加载端应用HMI将加载列表通过消息队列发送到加载端主线程;加载端主线程则启动相应的上载或下载操作,将带有Port选项协商的加载请求发送到目标端,完成对已分配Port的协商;完成协商后将对应的加载任务放入加载任务队列,并通过加载任务队列推送到分配的状态文件处理线程和数据文件处理线程。将加载任务分配到相应线程之后,主线程可以继续对后续加载任务进行分配,由于线程之间的数据和控制没有耦合,加载任务可以并发运行。如加载端设备采用多核CPU,则操作系统可将线程分配到不同核心并行运行,运行效率可以进一步提升。

状态文件处理线程和数据文件处理线程可以采用线程池的方式,在初始化时分配足够的状态文件处理线程和数据文件处理线程,避免在加载过程中动态创建线程所带来的系统稳定性风险。

2.2 工作流程设计

并行加載的具体工作流程如图4所示。加载端发起加载操作时,首先根据当前所需加载的目标端设备,构造加载请求文件,并将分配的Port参数作为协商选项放入加载请求文件内部,然后发送到目标端,目标端应答对应文件并在接受加载请求和Port协商之后,分配相应的并行加载线程,将任务通过消息队列等方式发送到加载线程。如果Port选项协商未成功,则需要执行串行加载操作,避免因为目标端无法支持Port选项协商导致加载失败。

并行加载由于采用了多线程,因此在实现时函数代码需要具有可重入性,同时需要对临界资源数据进行互斥保护。由于控制软件通常工作在资源极为有限的嵌入式系统中,在保证可靠性和安全性的基础上,在实现过程中需要对线程池中的线程进行回收,并对内存空间进行回收和重用。

并行加载过程中按照ARINC615A和ARINC665标准的要求,设计了CRC32的校验方式对整个软件加载包进行校验。对于每个加载的文件,设计了CRC16、MD5、SHA1等可选的校验方式进行校验,同时通过再传输层进行数据包的加密设计,保证了文件和数据传输过程中的可靠性、正确性和安全性。

整个并行加载过程采用了ARINC615A定义的简单文件传输协议设计,该协议相较于FTP等文件传输协议实现流程较为简单,通过少量的代码便实现了文件和数据的上载和下载功能。

3 测试验证

对软件并行加载技术架构的测试验证,采用仿真控制系统设备软硬件环境。加载端设备和多台目标端设备采用以太网交换机连接,模拟真实的控制系统结构。测试验证过程中分别采用串行加载和并行加载两种方式对目标端设备进行软件上载,同时测试在不同的加载文件大小、不同的设备数量和不同的BlockSize参数配置条件下,串行加载和并行加载的传输时间。得到的测试验证结果如图5所示,可以看出,在相同的加载文件大小、网络环境和网络参数配置条件下,加载目标端设备数量每增加1,串行加载的传输时间增长率在100%左右,并行加载的传输时间增长率则小于1%。

4 结束语

采用笔者提出的ARINC615A软件并行加载技术实现了工控设备的并行软件加载和数据下载,仿真和测试验证结果表明,在保证可靠性、正确性和安全性的基础上,该方法提高了加载效率,降低了软件加载的时间成本,并且无需对加载端设备软件进行修改和变更,适用于工控系统和机载系统需要进行软件加载的机载设备数量较大的场景。

笔者提出的并行加载技术,由于采用了通用的多线程技术和较少的代码实现,可以满足工控领域以及航空领域等各种高安全性操作系统的移植需要。并且考虑了对目标端的兼容性,在软件研发流程方面的成本增加较低,可以满足各种工控领域DO?178等相关标准的要求。

参 考 文 献

[1] Airlines Electronic Engineering Committee.Software Da? ta Loader Using Ethernet Interface:ARINC615A?3[S].USA:Aeronautical Radio,Inc,2007.

[2] IETF.The Tftp Protocol(Revision 2):RFC1350[S].USA:Sollins K,1992.

[3] Airlines Electronic Engineering Committee.Loadable So? ftware Standards:ARINC 665?3[S].USA:Aeronautical Radio,Inc,2005.

[4] IETF.Tftp Option Extension:RFC2347[S].USA:G.Ma? lkin,1998.

[5] IETF.Tftp Timeout Interval and Transfer Size Option:RFC2349[S].USA:G.Malkin,1998.

[6] IETF.Tftp Blocksize Option:RFC2348[S].USA:G.Ma? lkin,1998.

(收稿日期:2022-08-19,修回日期:2022-11-01)

Control  Software  Parallel Loading Technology  Based on  ARINC615A

LIU Yu, WANG Kun, MIAO Guo?kai, LIN Jiang

(Airbone Software Division,Comac Software Company Limited)

Abstract   Considering the poor transmission efficiency and longer time consumption in commonly?used point?to?point and serial loading methods based on ARINC615A protocol, having the practical experience from the ARINC615A protocol application based to propose a software parallel loading technology architecture based on IO multiplexing and multithreading architecture was proposed. Simulation results show that, regarding the same loading file size, network environment and network parameter configuration, the transmission time growth rate of serial loading is about 100% and that of parallel loading is less than 1% when the number of loading target devices increases by 1, which improves the efficiency of control software loading and the technology has high reliability and stability, and it meets the requirements of software seaworthiness.

Key words  parallel loading, industrial control system, multiplexing, multithreading, ARINC615A, loading efficiency

猜你喜欢
多线程
Java多线程同步机制在网络售票系统中的应用
Java并发工具包对并发编程的优化
基于多线程文件传输关键技术研究与实现
网页爬虫技术的关键技术研究探索
一种基于多线程的高速磁盘镜像算法
iOS并发程序设计中几种方法的特点及使用技巧研究
HTM L5 Web WOrker技术及应用研究
电站锅炉煤粉参数远程监控系统的软件设计与实现
一种高并发认证服务器的实现
一种低开销的并行重复数据删除算法