APP下载

跨平台操作系统数据记录模块技术研究

2021-09-10张磊

内燃机与配件 2021年3期
关键词:网络通信

张磊

摘要:为了提高航空发动机实时记录数据的可靠性,提出了一款跨平台操作系统数据记录模块。该模块以Zynq7010芯片为核心,基于可移植操作系统接口标准,设计了统一的应用程序接口(API),兼容Linux和VxWorks 7.0操作系统。通过调用Linux的EXT4文件系统和VxWorks的TrueFFS文件系统驱动,结合用户数据报协议的网络通信方式,完成跨平台数据记录模块的存储操作。测试结果表明,该模块能以较快的速率实现两种操作系统下的数据记录过程,保障了航空发动机数据记录的准确性和可靠性。

关键词:数据记录模块;跨平台操作系统;文件系统;网络通信

Abstract: To improve the reliability of real-time recording data of aero-engine, a data recorder module was proposed in the cross-platform operating system. The Zynq7010 chip was selected as the core. Based on the portable operating system interface of UNIX standard, a unified application programmer interface was designed. The data recorder module was compatible with Linux and VxWorks 7.0 operating systems. Through calling the drivers of the EXT4 file system of Linux and TrueFFS file system of VxWorks, the storing operation of cross-platform operating system data recorder module was realized through the user data gram protocol network communication method. The test result demonstrates that the data recorder module could realize the data recording process under two operating systems at fast rate. In this way, the accuracy and reliability of aero-engine data recording could be guaranteed.

Key words: data recorder module;cross-platform operating system;file system;network communication

0  引言

近年來航空领域飞机事故频发,如MH370失联、波音737max故障等事件,因此航空发动机的实时监控技术研究受到极大关注[1]。航空发动机通过数据记录模块收集数据,方便实时监测保证飞行安全,也有利于后期维护和定位故障来源,因此,数据记录模块的技术研究逐渐成为了研究热点[2]。

发动机控制软件属于安全关键领域的重要技术,必须采用安全关键操作系统。基于VxWorks系统的数据记录仪能对文件系统资源进行了合理分配,提高了数据记录模块的实时性和可靠性[3]。此外,通过Linux系统搭建的多通道数据采集记录仪软件[4],操作简单,应用灵活,性能可靠。

由于单操作系统故障可能会引起整个数据记录模块失效,必须研究适用于不同操作系统的通用数据记录模块技术。因此,本文设计了具有统一API接口的跨平台多操作系统数据记录模块。该模块以Zynq7010芯片为核心,基于POSIX标准设计了统一的API接口进行存取,通过调用文件系统驱动,完成数据记录过程,提高了数据传输的可靠性。

1  基于POSIX标准的跨平台数据记录模块设计

跨平台操作系统数据记录模块主要包含底层硬件设备、两个系统的OS层以及应用程序层。其中OS层中包含了Linux内核和VxWorks 7.0内核以及各自文件系统的驱动。文件系统由文件属性、接口和处理文件对象的软件组成,数据记录模块通过文件系统对发动机控制系统运行中的解析数据进行传输,实现存入和读取操作。本文所设计的模块主要采用了EXT4文件系统和TrueFFS文件系统。

1.1 Linux的EXT4文件系统

在Linux系统中,目前以EXT4为主流代表[5]。它能够支持48位的内部寻址,采用了延迟分配的方式有效地减少了碎片,同时具有日志校验功能,避免无序日志条目的错误并损坏文件系统。EXT4文件系统创建一个文件时,会预规划得到inode、区块、元数据等信息,以便系统直接使用。

Linux通过Virtual Filesystem Switch(VFS)的内核功能管理EXT4文件系统,VFS作为中间层,可以屏蔽文件系统的具体实现,简化了自行设置读取文件系统的行为,优化数据读写过程。

1.2 VxWorks 7.0的TrueFFS文件系统

TrueFFS文件系统[6]为VxWorks系统提供块设备功能,它支持承载VxWorks系统的所有CPU体系结构,可以重入、线程安全。

TrueFFS文件系统的核心层为文件系统提供名块设备接口,起到核心管理作用;转换层存储块分配映射表,代表存储介质和Flash中擦除块之间的映射;存储技术驱动层主要执行Flash的编程功能,包括读取、写入、擦除等功能;套接层接口能实现TrueFFS对硬件的访问功能。

在VxWorks 7.0系统中,通过TrueFFS的核心层管理,OS核能够有效地驱动文件系统对硬件存储设备进行空间擦除、数据读写的操作。

2  基于POSIX标准的跨平台数据记录模块设计

考虑到高性能要求,本文采用了Xilinx公司的Zynq7010芯片设计数据记录模块。由于Linux中的VFS与VxWorks中的DosFS采用不同的方式驱动文件系统,因此,采用POSIX标准[7]进行接口统一化设计,以实现跨平台操作系统的应用软件通用性,提高数据记录模块的可靠性。

POSIX标准对Linux系统和VxWorks7.0系统核心服务的覆盖率较高,基本能够完成各自文件系统的操作功能。文件系统在执行任务时,每个程序都会占用一定的时空资源,操作系统会为其分配对应的线程。在POSIX兼容标准下,OS内核通过调用pthread_creat创建线程,并结合sched_setscheduler调整调度策略。Linux系统为POSIX标准提供了统一的入口函数,在POSIX创建的线程中,程序会合理地调用VFS对底层的EXT4文件系统进行管理,进行文件区块的创建,inode点的分配,并根据调度时序将采集数据写入对应的区块或从区块中读取数据读取,实现数据记录过程。而在VxWorks 7.0系统中,POSIX线程能够调用DosFS,实现对底层TrueFFS文件系统的操作,打开设备接口的函数句柄,将映射的存储块进行数据擦除、数据写入以及数据读取等功能。考虑到VxWorks 7.0系统是高实时性操作系统,当数据量太大任务时间短时,可能引起丢帧的情况时,引入POSIX标准的nanosleep延时函数,当没收到数据帧尾或达到接收长度时,延长时间,确保发动机数据全部采集至数据记录模块中,保证数据帧接收的完整性。图1所示为基于POSIX标准的数据记录模块工作机制。

当应用程序对数据记录模块操作时,Zynq7010中的OS内核会通过运行程序创建POSIX线程,调用VFS或DosFS的驱动函数对文件系统进行操作,实现与底层的硬件存储设备之间数据交互。

由于航空发动机数据的采集量较大,小容量的Flash存储模块难以满足应用需求,同时串口发送数据的速率较低容易丢包,因此,采用网络通信实现数据记录模块的数据存取过程。此处采用用户数据报协议(UDP)的方式进行网络通信,设定目标IP地址和接收空间IP地址,可实现数据收发。POSIX标准对网络通信也有相应的支持函数,包括socket、sendto、recvfrom等函数:

跨平台操作系统数据记录模块记录数据时,先创建存储区块,获得区块节点号,将缓冲区中的数据按帧格式写入分配的硬件存储区块;若为数据读取过程,对存储区块中的数据帧进行帧头判别,按帧进行读取,并存入缓冲区中;上层应用程序调用函数对帧头以及帧长度等信息进行解析,当帧头正确,同时接收数据的帧长度和发送长度一致时,可以读取数据。在完成数据记录模块的数据存取功能后,返回操作结果,释放POSIX线程所占用的内存空间,再次执行OS内核的下一条指令。

由于POSIX标准不能全面覆盖操作系统的各项功能,因此,可通过POSIX线程调用驱动函数,进行功能扩展,实现多操作系统的跨平台应用开发。

3  实验测试与分析

测试时,Zynq7010板卡与上位机通信通过UDP实现网络通信,设定下位机的IP地址为:172.16.31.1,上位机的IP地址为:172.16.31.120。

上位机中接收得到的数据存入文件test.txt,并对其进行初始化,清空文件数据。

Zynq7010板卡烧写程序中包含了数据帧,上电复位启动后,上位发出数据发送信号,Zynq7010板卡会持续发送数据包给上位机,根据芯片中的数据记录模块驱动算法调用POSIX接口函数进行存储,数据帧的帧头为:41413535;帧尾为:34313431,帧长度为1700bit。上位机接收界面如图2所示。

分别记录下Linux系统下和VxWorks7.0系统下地数据记录模块传输至上位机的信息,点击保存数据存储到txt文本中。利用Beyond compare软件对上位机接收的信息与发送的数据进行二进制比较,并计算两个系统的数据发送时间。

其中Linux系统的数据一致率为100%,单次发送一帧数据包时间为30.797us,VxWorks7.0系统的数据一致率为100%,单次发送一帧数据包时间为28.825us。可以发现,两个系统均能达到数据记录模块的要求,且VxWorks7.0系统作为硬实时系统,采用函数调用内核服务,相比Linux系统采用系统调用内核服务方式,具有更高的时间利用率。但数据记录模块是用于存储航空发动机的采集信息以及控制信息,没有控制发送机执行任务的实时要求,只要数据具有完整性和准确性即可。因此,该模块可在单操作系统损坏时,正常执行数据记录功能,提高整体系统的可靠性。

4  结束语

本文针对单操作系统下航空发动机数据记录过程具有不确定性的问题,设计了基于Zynq7010芯片的跨平台操作系统数据记录模块。该模块利用POSIX接口标准,兼容运行Linux和VxWorks 7.0操作系统,实现单硬件平台下通用系统的数据记录过程。测试结果表明,文中设计的数据记录模块能够提高记录数据的准确性和可靠性,可为航空发动机的相关研究提供技术支撑。

参考文献:

[1]XU J P, WANG Y S, XU L. PHM-Oriented Integrated Fusion Prognostics for Aircraft Engine Based on Sensor Data[J]. IEEE Sensors Journal, 2014, 14(4): 1124-1132.

[2]趙刚,郑军,封二强. 基于虚拟设备的数据记录软件测试环境研究[J]. 微电子学与计算机,2019,36(7):70-75.

[3]马江峰,柏航,范洪志,等.基于VxWorks的数据记录器关键模块设计[J].计算机工程与应用,2015,51(S1):252-256.

[4]蒋杰.嵌入式多通道数据采集记录仪软件设计[D].电子科技大学,2020.

[5]位丽娜,李炳龙,涂晨昊.基于Ext4元数据Extent树重构的数据恢复研究[J].信息工程大学学报,2017,18(1):98-102.

[6]冉鹏,陈向.VxWorks环境下NandFlash驱动程序设计研究[J].计算机应用与软件,2013,30(6):325-328.

[7]陈博,何连跃,严巍巍,等.海量小文件系统的可移植操作系统接口兼容技术[J].计算机应用,2018,38(5):1389-1392.

猜你喜欢

网络通信
信息化时代网络通信安全的背景和对策
5G网络通信技术的应用初探
4G系统的新技术和特点
5G网络通信技术应用的前瞻性思考
计算机网络通信的技术特点与发展前景探讨
新时期计算机网络通信现状及发展趋势研究
网络通信技术及其应用