1.采用基于模型的设计(MBD)搭建应用程序
从Simulink Library Browser中推拽出如下模块,搭建模型。
Matlab function内容如下图
2.设置用户存储类(CSC)
因为a2l中的标定量和检测量存放在用户指定的区域,故在代码生成时需要指定该变量存储的位置。
在CMD窗口中输入 cd(fullfile(matlabroot,'/toolbox/simulink/simdemos/dataclasses'))
将文件夹+SimulinkDemos复制到如D:\MyProjects\MyPackage,并重命名为+myPackage.
将matlab路径定位到D:\MyProjects\MyPackage,并打开Parameter.m和Signal.m文件。修改这两个文件中的methds方法下的函数setupCoderInfo(line45),并将参数更改为“myPackage”和刚才重命名的一致。
保存并关闭文件
打开matlab主页上的设置路径按钮,添加package路径
添加package路径
点击保存,确认按钮
在CMD窗口中键入:cscdesigner('myPackage'),此时将打开cscdesigner
点击Memory Seeting选项卡,点击New,设置参数如下(这个具体内容需要根据实际的MCU进行设置)如下定义两种内存区,一个是calibration内存区,另一个是monitor内存区.在设置参数后可点击Valiable按钮检测是否设置出错,在Validating result输出窗口中查看。
在Custom Storage Class选项卡中,点击New ,参数如下,下图设定义了2个存储类,一个是calibration存储类,另一个是monitor存储类.在设置参数后可点击Valiable按钮检测是否设置出错,在Validating result输出窗口中查看。
点击ok,弹出的窗口中点击OK按钮。
点击simulink模型中的userkey1模块,打开对话框,在Signal Attributes选项卡中,点击Data Store
Memory:simulink.Signal下拉选择Customize calss lists,在Signal classes栏中勾选myPackage.Signal前的复选框,如图
点击ok,在刚才点击打开的模块的对话框中,再次下拉Signal object class,此时选择myPackage.Signal,然后再Storage class的下拉框中选择MyCalib,此时就已将该变量设置为标定两个,如图。
A模块和userkey1模块一样,设置为标定量,userdata1和userdata2模块在Storage class下拉中选择MyMonitor.
以上就设置好了,simulink模块的参数,接下来还需要设置代码生成的规则。
3.设置系统生成A2L文件,并生成AUTOSAR代码。
ctrl + e,打开模型配置参数对话框,设置如图。
以上配置就基本上能生成了autosar代码和a2l文件,当然还有其它优化生成代码的选项,这里就不多说了。
在模型中点即RUN,若没有错误,则点击Bulid Mode,生成代码,如图。
4.将生成的代码集成到工程中,利用生成的Hex文件,map文件,将A2l中的变量地址填充上(另外可能还需编写一些文件信息到A2L中,如标定时的canId,QAC触发条件等信息),即可在标定软件中使用了。
以上四点即我在项目中使用的手法,若有错误还望指出。
本人是从事汽车电子ECU的开发的攻城狮一枚,主要从事BSW的开发,欢迎志同道合的朋友加我微信,一起讨论有关汽车电子开发的技术。