按:本文作者为泛亚技术中心的模型开发工程师,文章实例很长,公众号文章中没有完全刊出,需要的网友可以通过文末左下角的
一. 先导知识
CCP https://mp.weixin.qq.com/s/D3-iHC63BcIL4YK7c0P7vA?
XCP https://blog.csdn.net/nibiewuxuanze/article/details/78856714
A2L的作用:观测或更改CHARACTERISTIC(标定)、MEASUREMENT(观测量)、AXIS(查表)等标定或信号的信息。
1. CHARACTERISTIC生成方法: ,在Workspace中添加同名Simulink.Parameter(aa),选择ConstVolatile、Datatype、Value、头文件calib.h、定义文件calib.c。
2. MEASUREMENT生成方法:任一信号(名称长度<32)选择
,在Workspace中添加同名Simulink.Signal,选择SimulinkGlobal、Datatype、Inital Value,名称过长会导致无法生成A2L(缩短至<=31位,Autosar4.0要求)。
3. AXIS生成方法:
,在Workspace中添加同名Simulink.Parameter(aaa,bbb),选择ConstVolatile、Datatype、Value、头文件calib.h、定义文件calib.c。
A2L包含scalar(单值标定)、Lookup1D(curve)、Lookup2D(mapping)、Measurable可测量但不可调 applicable可调。
Simulink在生成A2L时使用如下文件:
文件夹:matlabroot\toolbox\rtw\targets\asap2\asap2
getCompuMethodName.m用于获取Compu_Method的名称,CM_DataType_DocUnits,其中Units将数字和字母以外的符号变成’_’;
asap2userlib.tlc定义了生成A2L的形式,可以对标定/信号之类的加A2L属性
向标定或者信号中加上MemoryAddress_ASAP2
属性即可生成A2L时加上地址;
asap2post.m可以对A2L进行地址map,与编译器的Linker map/ELF文件进行关联使用,规则可以在该.m中修改;
asap2post_targets.m函数可以把a2l文件中的虚拟地址根据map文件中的地址改掉;
asap2post(ASAP2File, MAPFile)可以替换a2l文件里的地址,但是系统自带的一般无法直接使用,需要修改里面部分匹配规则,具体参考正则匹配。以适合你的map文件格式。然后直接运行ok了。
Help提示:可以根据asap2post.pl文件和asap2post_targets.m文件推出来工作工程,需要学一点很简单的perl语言,只改一两行就可