嵌入式接口通讯软件代码自动生成技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

科技与创新┃Science and Technology&Innovation ·82·2022年第03期
文章编号:2095-6835(2022)03-0082-03
嵌入式接口通讯软件代码自动生成技术
赵昶宇1,胡平2
(1.天津津航计算技术研究所,天津300308;2.海军工程大学舰船与海洋学院,湖北武汉430033)
摘要:为了提高嵌入式接口通讯软件代码的开发效率和可靠性,提出了一种嵌入式接口通讯软件代码自动生成方法。

该方法基于接口控制文档生成不同总线类型和不同数据帧格式的报文配置文件,通过设计驱动模型,建立接口通讯软件知识库和类型库,根据代码自动生成原理自动构造并输出目标代码。

该方法已在某航空监控设备中得到应用和验证,不仅降低了开发成本,而且提高了代码的通用性和重用率。

关键词:嵌入式软件;自动生成代码;接口通讯软件;接口控制文档
中图分类号:TP311文献标志码:A DOI:10.15913/ki.kjycx.2022.03.025
随着计算机技术的飞速发展,如今的嵌入式系统的复杂程度也变得越来越高,嵌入式系统的内部接口和外部接口类型和种类也越来越丰富,对嵌入式系统的软件设计和编码人员也提出了较高的挑战。

目前嵌入式系统常见的接口类型有以太网接口、RS422A接口、RS485接口、CAN总线接口、1553B接口、模拟量信号和离散量信号等。

接口通讯代码程序的开发已经成为嵌入式系统软件开发中的重要方面,它所占的开发比例也越来越大。

一般来讲,嵌入式系统软件中接口通讯代码是根据具体的接口通讯协议设计编制的,也就是说接口通信代码和通讯协议之间的耦合度非常高。

通讯协议有细微改动,都有可能需要修改接口通讯软件代码。

软件设计和编码人员需要花费相当大的精力用于维护该部分代码,这样做不仅导致嵌入式接口通讯代码的开发效率低下,也使得接口通讯代码的可靠性和可维护性大大降低。

在嵌入式系统接口通讯软件中,通常使用接口控制文档(Interface Control Documents,以下简称“ICD”)来描述和维护各个接口之间的关系,ICD的最大优点是通用性强,并且独立于开发平台和任务[1]。

为了解决现有接口通讯软件代码开发效率低、可靠性不高的问题,本文基于ICD特点提出一种软件代码的自动生成方法。

该方法通过对ICD配置文件的读取和分析,能够自动实现并生成接口通讯软件代码的功能。

后续接口通讯协议发生变化了,无需改动接口通讯代码,只需要修改ICD配置文件即可自动生成新的接口通讯软件代码,极大地提高了软件开发效率和可靠性。

1ICD技术简介
ICD通常是一种以数据库方式的结构化树形图来进行描述,由于不同类型总线采用的通讯协议不同,或是同一种类型总线的数据帧格式不同,因此在进行ICD数据库设计时,需要根据不同的总线类型进行分别分析,包括数据帧头、数据字段、数据校验位和数据帧尾。

总线类型首先应该作为ICD结构树中的单独一层节点,总线类型相同但是数据帧格式不同的也应该单独作为ICD结构树中的一层节点。

为了提高后期自动生成代码的效率,将每一个ICD结构树都保存在一个对应的数据库中[2]。

每个数据库中建立一张表,表中包括建库时间、信号类型、备注信息等内容,将这张表取名为ICD_Explain。

如果总线类型相同,则需要建立一张信号类型表,表中包括数据帧标识号、数据帧名称、数据频率、数据块数量、数据块内容、板卡号、通道号、接收/发送状态等,将这张表取名为ICD_BusType_Explain。

对于相同总线类型中具有相同数据帧格式的报文建立一张对应的数据表,表中包括该数据帧的参数标识号、参数名称、数据帧起始位置、数据帧长度、数据帧类型、LSB、状态信息、参数最小值、参数最大值以及数据帧的步长等,将这张表取名为ICD_BusType_FrameName。

上述定义的ICD库文件包含了接口通讯软件中所有的总线接口数据规范[3],涵盖各个子系统之间、子系统内部各个设备之间以及设备内部各个模块之间的数据接口格式定义。

有了这些ICD数据库文件,代码的自动生成技术可以很方便地通过对通讯协议的自动分析,实现对每个通讯接口数据的自动打包和解包处理。

一旦通讯协议发生变化,无需修改软件代码,只需替换相应的ICD数据库文件即可。

接口通讯软件的ICD 配置文件结构如图1所示。

. All Rights Reserved.
Science and Technology &Innovation ┃科技与创新
·83·
2022年第03期
图1接口通讯软件ICD 配置文件结构图
2XML 模板生成、验证和解析
XML (可扩展标记语言)被设计用来传输和存储数据,它具有很强的跨平台可移植性,且存储数据基于文本不需要转换。

XML 模板生成格式主要采用以下规则。

XML 节点具有层次化的特点。

利用XML 的子节
点创建一颗树型结构,子节点的输出内容通常比父节点要多缩进一个Tab 。

节点名称具有层次化的特点。

同一父节点下的子节点之间如果名称相同,则在输出内容时的缩进是相同的;如果名称不相同,则同一父节点下名称编号大的比名称编号小的子节点在输出内容时要多缩进一个Tab 。

节点内容具有层次化的特点。

在节点内容中加入一个“\t ”表示一个缩进,加入多少个“\t ”表示输出内容时缩进多少个Tab 。

一个节点内容对应一行目标代码,若输出新的节点内容时需增加回车换行。

XML 模板验证包括DTD (文档类型定义)和XML Schema ,前者用于定义XML 文档的合法构建模块,后者除了具备前者功能外,还具有良好的可扩展性。

XML 解析是XML 模板生成的逆向过程,它通过XML 模板生成格式读取XML 模板信息并生成标准格式的目标代码。

图2为ICD 配置文件自动生成代码的原理图。

在图2中,ICD 库需要对RS-422A 串口、GJB289A 总线、高速总线、开关量和以太网数据进行归纳总结,找出各种信号帧数据段的规律,作为生成代码的依据;知识库和类型库提供生成不同模块代码的规则和算法以
及生成代码需要的数据类型;词法分析器用于将XML 模板在更新时确保数据一致性;XML 模板生成、XML 结构定义(XSD )模板验证和XML 模板解析用于将ICD 库中的信息配合知识库自动生成XML 模板,并采用XSD 模板对XML 模板进行验证,再通过解析XML
模板得到目标代码。

图2
ICD 配置文件自动生成代码的原理图
驱动模型。

驱动模型根据ICD 库的接口描述关系,对输入ICD 信息进行建模,输出代码生成机理的描述。

驱动模型是平台无关模型,描述了ICD 配置文件自动生成代码的机制,
驱动模型的组成和原理如图3所示。

图3
驱动模型的组成和原理图
. All Rights Reserved.
·84·
知识库和类型库。

知识库用来存放代码生成的语法规则和代码映射规则,类型库用来描述代码生成过程中所有可能用到的数据类型。

词法分析器。

知识库中可变代码段的XML 模板设计需要用到词法分析器。

可变代码段的XML 模板的生成是一个动态建立的过程,XML 模板所需要的部分信息由ICD 配置文件确定。

XML 模板中会存在多个变量关联到ICD 配置文件的同一个参数数据结构。

在ICD 配置文件更新后,利用此法分析器在XML 模板所需要的内存缓冲区中搜索所有关联到该参数数据结构并全部更新,这样就可以保证XML 模板的数据一致性。

XML 模板生成、验证和解析。

XXXX 软件根据ICD 配置文件、知识库、类型库和词法分析结果,并采用XmlWriter 设计和生成XML 模板;采用XML Schema 模板对生成的XML 模板进行验证,保证XML 模板的语法正确;最后,通过对XML 模板进行解析,生成标准格式的目标代码。

3接口通讯软件代码自动生成模型
接口通讯软件代码的自动生成技术包含以下几个关键技术:ICD 数据库设计、驱动模型建立、知识库设计、类型库设计以及代码生成单元设计。

其中,ICD
数据库设计是代码自动生成的基础和依据,它将系统
中的各种类型总线数据进行分析汇总,并找寻出各个数据帧的规律;驱动模型基于ICD 数据库中描述的数据接口关系,对每种输入数据元素进行建模,并将ICD 参数和数据块输出给代码生成单元;知识库中用于存放生成目标代码的映射规则、语法规则和算法等;类型库用于存放自动生成目标代码过程中所使用的各种数据类型;代码生成单元是自动生成代码技术的核心,它根据ICD 数据库、知识库和类型库中的信息,并基于代码自动生成机理产生最终的目标代码。

接口通讯
软件自动生成模型如图4所示。

图4接口通讯软件自动生成模型
接口通讯软件通常由以下几部分组成:①通用代码。

一般为固定代码,以基本函数的形式存在,它不会随着ICD 数据库的变化而改变。

②专用代码。

需要根据每种数据帧进行结构体定义、打包和解包处理。

③发送代码。

定义执行发送数据帧相关操作的函数。

④接收代码。

定义执行接收数据帧相关操作的函数。

通过读取ICD 数据库配置文件,并基于上述驱动模型生成各种ICD 数据帧和ICD 参数,提取不同总线类型的数据帧结构体,并生成相应的打包和解包函数,从而构建接口通讯软件的专用代码。

在生成专用代码的同时,可以分析并构建接收代码和发送代码,通用代码可以通过知识库中的规格和算法生成,这样就输出了接口通讯软件的所有类型代码。

4
接口通讯软件代码自动生成流程
为了实现接口通讯软件代码自动生成技术的通用化,在软件设计时会为任何一个数据帧保存一个对应的配置文件。

在自动生成接口通讯软件代码前,先将所有的配置文件加载到程序中,分析提取其中的数据帧到相应的结构体内,并基于知识库中的语法规格和代码映射规则生成通用代码。

这样做的好处是一旦通讯协议发生变化,在修改完相应配置文件内容后,重新加载一遍配置文件即可。

然后通过对不同数据帧的解析,根据该数据帧的ICD 数据块和参数内容,针对每种数据帧生成相应的打包和解包函数;同时,通过对类型库中总线类型和数据类型的解析,生成不同数据帧的接收代码和发送代码。

接口通讯软件代码自动生成的流程如图
5所示。

图5接口通讯软件代码自动生成流程图
针对不同总线类型的报文或是同一种总线类型但数据帧格式不同的报文,虽然它们各自有各自的通讯协议和处理函数,但是这些代码自动生成的流程是相
同的。

为了提高接口通讯软件的通用性和可靠性,对相同总线类型不同数据帧格式的报文采用通用的自动生成流程和处理方法,将它们各自的数据处理函数当作一个总线处理函数库,通过设计并不断优化该总线处理函数库,使得该总线类型下的所有数据帧格式
(下转第90页)
. All Rights Reserved.
3讨论
由于将杆单元的杨氏模量设置为其他材料的4倍多,因此杆单元对整体蜂窝结构的变形影响很小,由于蜂窝结构具有对称性,因此发生最大应力集中的点也对称分布。

由于六韧带手性蜂窝材料属于拉胀材料且具有周期性,当该材料受到冲击时,每个节点上的六条韧带都会受到一定程度的拉伸或挤压,而韧带又是正弦形,在变形时会对节点产生一定的力,因此节点在六条韧带的作用下做翻滚运动,使得结构右侧产生一定的向上偏转。

此外,由于在本文研究的3种情形下,产生的最大应力均在韧带上且均未超出材料本身的屈服应力,因此韧带并不会产生断裂。

4结论
蜂窝结构受到的冲击越大,结构发生变形越大,结构越不稳定,但由于将韧带换成正弦形后韧带具有一定的缓冲作用,所以会减小变形从而增加结构的稳定性。

因此本文通过有限元法完成了对正弦型六韧带手性蜂窝结构的拉伸变形分析。

正弦型韧带幅值越大,蜂窝结构产生的变形越小,因而结构也越稳定。

而韧带幅值能减小蜂窝结构的变形是由一定限度的。

韧带幅值超过某限度之后,最大
应力会越大,这说明结构在承受拉伸变形时存在断裂的可能。

参考文献:
[1]赵显伟.可变形蜂窝结构的力学性能分析[D].
哈尔滨:哈尔滨工业大学,2013.
[2]卢子兴,李康.负泊松比蜂窝动态压溃行为的有限元模拟[J].机械强度,2016,38(6):1237-1242.[3]ALDERSON A,ALDERSON K L,ATTARD D,et al.Elastic constants of3-,4-and6-connected
chiral and anti-chiral honeycombs subject to
uniaxial in-plane loading[J].Composites science
and technology,2009,70(7):1042-1048.[4]B A C I G A L U P O A,G A M B A R O T TA L.
Homogenization of periodic hexa-and tetrachiral
cellular solids[J].Composite structures,2014,116:416-476.
————————
作者简介:王永慧(2000—),女,本科在读,研究方向为机械电子工程。

〔编辑:王霞〕
————————————————————————————————————————————————(上接第84页)
的报文均能够采用上述的总线处理函数库进行数据处理,最终使得接口通讯软件的代码自动生成技术具有更广泛的适用性。

5结束语
本文提出了一种嵌入式接口通讯软件代码的自动生成方法,进行了ICD数据库设计、驱动模型建立、知识库设计、类型库设计以及代码生成单元设计。

该方法已经在某航空监控设备系统中得到了应用,大大提高了软件代码的开发效率和软件可靠性。

参考文献:
[1]高天德,杨小丽.基于配置文件的自动化测试软件设计方法[J].测控技术,2009,28(6):69-71.[2]赵琳,翟正军,周健.基于配置文件的测试软件结构一体化设计方法[J].测控技术,2011,30(5):
94-97.
[3]宁伟.通用航空总线实时测试与分析技术研究[D].
西安:西北工业大学,2006.————————
作者简介:赵昶宇(1982—),男,陕西汉中人,工学硕士,天津津航计算技术研究所高级工程师,主要从事嵌入式系统软件测试方面的研究。

胡平(1981—),男,湖南衡阳人,博士,海军工程大学舰船与海洋学院讲师,主要研究方向为武器系统与运用工程。

〔编辑:张超〕
————————————————————————————————————————————————(上接第87页)
作者简介:马帅(1992—),男,助理工程师,研究方向为输配电运行维护。

储昭亮(1991—),高级工,研究方向为营销工程。

彭玄之(1992—),助理工程师,研究方向为输配电运行维护。

宁磊涛(1990—),助理工程师,研究方向为输配电运行维护。

〔编辑:王霞〕
. All Rights Reserved.
·90·。

相关文档
最新文档