前面
如何在Matlab进行AutoSAR软件组件SWC的开发?也就是下图红框标识出来的部分。
常规的有两种方式自顶向下与自下而上:
- 从上往下:从软件组件描述文件起步
- 从下往上:从Simulink已有模型起步
自顶向下
首先,你需要在AutoSAR的架构设计工具中,比如Davinci DEV中设计好你需要的SWC,以及这个SWC的里有哪些Runnable,Interface,Port……然后导出arxml 文件。
然后,把上一步生成的arxml 文件导入到Matlab中,Matlab会自己识别,生成模型的框架,我们只需要在这个框架里开发我们的算法,生成符合AutoSAR代码,最后在编译环境中集成。
导入arxml文件
这里借用一个大佬的例子(ID:Qingniao_Avalon)
导入指令:
arObj = arxml.importer('SWC1.arxml')
这是第一步,已经导入了arxml文件,可以看到反馈,下一步是根据这个文件生成模型框架。
生成模型框架
输入指令
arObj.createComponentAsModel("/Components/SWC1", //上面导入文件后,生成的组件名字
"ModelPeriodicRunnablesAs", //添加一个周期性的运行实体
"FunctionCallSubsystem", //回调函数
"DataDictionary",//数据字典
"SWC_Data.sldd")//sldd
生成模型:
在10ms运行实体里可以看到,只有输入输出port,具体的内容是需要我们去搭建的。
打开AutoSAR工具箱
这里注意两个东西:AUTOSAR Dictionary 和 Code Mapping
AUTOSAR Dictionary是你这个SWC的所有信息:Runnable,interface,Port,Compu Method……
Code Mapping顾名思义,就是把你模型里的各种Port、subsystem与AUTOSAR Dictionary中你定义好的AUTOSAR组件联合起来。
搭建算法模型
如何搭建?其实就是在Runnable中把输入输出,按照自己的需要连起来。
比如我们这里先把他们都加起来,再求OR:
生成代码
自下向上
从Simulink已有模型起步。
首先,我们要搞清楚simulink组件到autosar组件的映射,可以看一下我这篇笔记,里面有详细的介绍;
基于Matlab/Simulink的软件组件开发
然后,在simulink中搭建模型(要与autosar组件能映射上);
其次,在autosar工具箱中里,也就是AUTOSAR Dictionary中定义你需要的autosar组件;
再次,在Code Mapping里把两者映射起来;
最后,生成代码,生成arxml文件,导入到autosar配置工具中,把一些端口该连接的连接起来,生成 RTE代码。
关于直接在Matlab中搭建AUTOSAR的步骤,内容较多故放在下一篇博客里讲解。