autosar架构_利用Matlab独立开发Autosar架构下的应用层SWC的一种方法

本文摘要

目前汽车软件开发越来越多的使用了AUTOSAR架构,相比传统的开发方式,在AUTOSAR架构下开发应用层软件,需要和AUTOSAR Authoring Tools (简称AAT,比如ETAS的ISOLAR和Vector的Davinic) 有比较多的耦合关系,提高了开发的复杂度。

本文介绍了一种只需要在Matlab环境中就可以完成所有应用层SWC(Softare Component)以及Composition的Arxml文件的定义;然后根据生成的Arxml文件自动创建框架模型并自动merge控制模型到框架模型;并且还能把多个SWC组成的composition直接生成模型,方便整体的MIL测试。

阅读这篇文章可能需要基础的Autosar知识或者开发经验。

一般的AUTOSAR开发流程

下图是matlab官方文档上推荐的开发流程。但实际操作中,把matlab生成的arxml文件merge回AAT软件中,是比较麻烦而且,所以一般就不会再有下面那个动作了。

ec656d158e3826137be67b6ed895ceda.png

所以一般的做法就是在AAT工具中配置好应用层所有的SWC,然后将定义这些SWC的arxml文件都导出来,matlab再根据这些导出的arxml文件创建各个SWC的框架模型,然后再把控制逻辑添加到这些框架模型中,然后生成c代码。最后将应用层模型生成的c代码和AAT工具生成的bsw代码,rte代码,macl代码,以及手写代码一起编译生成hex文件。

但是在AAT工具中配置应用层SWC的描述是件很麻烦,很费时间的事情,很多公司大都有自动生成arxml文件的脚本来提高效率,但对于应用层SWC来说,由于最后还是要到matlab中去生成模型框架,搭建控制模型,生成模型代码,所以如果可以直接在matlab的环境中完成应用层所有SWC的arxml文件的定义,然后把这些arxml文件直接给到AAT工具去用,那么在AAT工具中就不需要对应用层SWC的描述进行任何操作了,只需要把各个SWC的runnable放到对应的OsTask中去,然后关联通信接口(比如CAN,LIN等),在连接应用层与底层的一些接口连线,就可以了,大大简化了在AAT工具中的配置操作。

而且,这样即使在没有AAT工具的情况下,仍然可以完整的开发应用层的软件,后期只需要将描述应用层SWC的arxml文件给到AAT工具,就能进行后续的开发,也方便分工合作。

优化的AUTOSAR开发流程

下图是本文推荐的一种AUTOSAR开发流程。这里需要开发一个工具(暂时就叫MAAT,matlab autosar authoring tool),可以根据各个SWC的数据词典(里面需要定义SWC接口喝Runnable的信息)以及项目整体的一个配置文件(可以定义数据词典里无法定义的的一些定义信息)自动生成所有应用层SWC的arxml描述文件。然后这些arxml文件给到AAT工具,来生成RTE以及BSW的c代码。另外matlab通过这些arxml文件直接生成各个SWC的模型框架,并且完成控制逻辑后生成所有应用层的c代码。最后把应用层的c代码,与AAT工具生成的BSW代码,RTE代码,再加上MCAL代码和手写代码,共同编译生成最后的二进制hex文件。

748c1bb17cf877cab62d42bf2e243fcf.png

这样就几乎把应用层的开发和BSW层的开发分离开来,应用层的开发人员只需要专注与应用层各个SWC的接口和控制逻辑,当应用层与BSW的接口固定以后,应用层内部的接口变更就可以直接用应用层更新的arxml文件来直接生成rte代码来集成软件了,应用层的开发人员甚至可以不需要集成工作人员的帮助就可以直接编译代码去进行实车测试了。

一个简单的实例

比如我们就拿matlab中,Powertrain Blockset工具箱下的EV Reference Application模型中Controllers的控制模型做一个例子。假设这个简单的控制器的应用层由5个SWC组成,输出扭矩指令和刹车指令,输入加速信号,电池SOC,车速,电机转速和减速信号。输入输出信号都直接连接到Can上。

1647ce09a7e0587385ec2115152dfd3e.png

首先需要准备这五个SWC的数据词典和控制模型。

d713a5d8dcdd436c68e6e450fee410f9.png

其中数据词典中最需要定义输入以及输出SR接口的interface名,interface中的Element名,Element的数据类型,以及Port名和定义interface的packsge名(不填就是用默认的规则补充)。如果有CS接口,Nvm变量的话也可以在数据词典中定义好,以及这些属于哪个runnable。

8ff3c13b88b3bdf3644a7735532e369f.png

然后还需要准备一个总体的excel配置文件,里面可以定义各种数据词典里无法体现的而实际中需要用到的定义描述,比如这里就需要定义一个应用层整体的composition定义,把这个五个SWC放到一个叫EvPowertrainController的composition中。

3ca227c56452c0710320db0b64a9fbc0.png

这样根据这些数据词典和配置文件,就可以自动生成出所有的描述这个应用层定义的arxml文件。我这里的处理是把所有SWC用到的数据类型定义,SR接口定义,CS接口定义,数据类型Mapping定义等,统一去重后放到一个文件中,然后各个SWC的描述按照SWC的名称分别定义,Composition的定义统一放到一个文件中。

ff03a8bbe031eb65427614a4af902329.png

这里具体arxml的格式,一个可以参考官方文档的格式,另个方法就是手动在AAT工具中定义,然后看他保存出来arxml文件描述格式是什么样的,然后自己就按照这个格式生成。

matlab生成xml文件可以使用如下的命令:

com.mathworks.xml.XMLUtils.createDocument
setAttribute
appendChild
xmlwrite

具体可以参考帮助文档的“Exporting to XML Documents”

比如生成好的定义application datatype的arxml如下:

946d3816623ac6889028f024cae971ca.png

然后有了这些arxml文件,就可以直接生成框架模型了,生成框架模型的命令主要是:

arxml.importer(导入arxml文件,需要把涉及这个swc定义的所有arxml文件都导入)
createComponentAsModel(生成模型)

生成的框架模型就是只有输入输出接地。

3fce29a0134b8866fc7fe34d0ca6f40e.png

然后就可以把控制模型放到这个框架模型中,这步可以手动去做,也可以通过脚本,自动匹配端口名去自动做,弄完后就是完整的控制模型了。

98cd6794dae10959480d7bc82f53e7c4.png

最后就是生成代码了,全都弄好后就是代码编译集成了。

接下来,由于composition的定义也都在生成的arxml文件中了,所以还能直接生成composition的模型,来进行整体的MIL测试。使用的命令如下:

arxml.importer
createCompositionAsModel

生成的composition模型如下,一对多的连线会用from/goto连接。

f295f2afbc31278cd0c510a75df8cc86.png

然后将这些arxml文件导出到AAT工具中,可以看到定义的内容如下:

99416525d850a6c3a67c7ebfb701a38a.png

定义的composition如下:

33f5d365abab44c09958805223e05cae.png

实列视频

感觉文字还不足以说明这个内容,下面是这个实例操作的一个小视频,具体的内容会说的清楚一些,有兴趣的同学可以看看

后记

本文主要介绍了作者自己觉得开发Autosar架构下应用层软件的一种比较高效的方法。主要思想就是在matlab的环境中完成应用层开发的所有工作(包括生成代码和arxml文件),然后将描述应用层的arxml文件再给到AAT工具。以实现ASW开发与BSW开发分离的目的。

完全自动生成ASW的arxml文件也是件比较复杂的事情,需要考虑的因素很多,而且随着项目的扩展和深入,很可能需要持续的添加需要自动生成的内容,修改模板的格式,这方面的工作量也不小,看到这里的同学有兴趣可以投票说说自己的看法。

MATLAB/Simulink中实现AUTOSAR三层架构的软件组件开发,需要遵循以下步骤: 参考资源链接:[使用Matlab/Simulink开发AUTOSAR嵌入式软件实战指南](https://wenku.youkuaiyun.com/doc/6r2tz939f1?spm=1055.2569.3001.10343) 1. **理解AUTOSAR三层架构**:首先,了解AUTOSAR架构的三个层次——基础软件层(BSW)、运行时环境层(RTE)和应用软件层(ASW)。每层之间通过预定义的接口进行交互,确保了不同开发层的独立性和可重用性。 2. **安装和配置AUTOSAR插件**:确保你的MATLAB/Simulink安装了AUTOSAR插件,并正确配置了工具箱路径。这样可以访问所有与AUTOSAR相关的开发工具和功能。 3. **创建软件组件(SWC)**:在Simulink中创建一个新的模型,这将代表一个软件组件。定义该组件的接口,包括输入输出端口和所需的服务。 4. **模型开发**:使用Simulink的图形化工具开发软件组件的行为模型。你可以添加子系统、函数块、事件和数据类型来描述软件组件的内部逻辑。 5. **配置客户端-服务器接口**:根据AUTOSAR架构,软件组件之间可能需要通过客户端-服务器模型进行通信。在Simulink中配置相应的通信机制,例如使用函数调用或消息传递。 6. **集成标定和测量功能**:AUTOSAR允许在软件组件中集成标定和测量机制。在Simulink模型中使用相关的工具箱,例如Simulink Design Verifier,进行参数标定和性能监控。 7. **模型转换和代码生成**:使用MathWorks的Embedded Coder工具,将Simulink模型转换为符合AUTOSAR标准的C/C++代码。确保生成的代码能够通过AUTOSAR的软件组件描述文件与基础软件层正确交互。 8. **测试和验证**:对生成的代码进行单元测试和集成测试,确保它符合设计要求和AUTOSAR规范。MATLAB提供了一系列的测试和验证工具,如Simulink Test,帮助完成这个步骤。 在整个开发过程中,需要遵循AUTOSAR定义的开发流程和规范,确保软件组件与整个系统的一致性和兼容性。通过在MATLAB/Simulink环境中遵循上述步骤,可以有效地开发出符合AUTOSAR标准的嵌入式软件组件。 为了进一步深入学习关于MATLAB/Simulink中AUTOSAR嵌入式软件开发的详细内容,建议参考《使用Matlab/Simulink开发AUTOSAR嵌入式软件实战指南》。这份指南不仅涵盖了上述开发步骤的详细说明,还提供了大量实例和最佳实践,帮助工程师理解和掌握AUTOSAR开发的关键点,是汽车电子领域工程师学习和参考的宝贵资源。 参考资源链接:[使用Matlab/Simulink开发AUTOSAR嵌入式软件实战指南](https://wenku.youkuaiyun.com/doc/6r2tz939f1?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值