Matlab替换A2L文件中的地址生成完整A2L文件的方法小结

原文链接:https://blog.csdn.net/weixin_43930342/article/details/85094660

引言
基于模型的开发(MBD)方式在汽车电子嵌入式软件行业中发展迅速。关于其N多好处不去瞎说了,自然有mathwork的工作人员去宣传。基于模型的开发在模型生成代码的过程中,如果软件工程师在matlab开发环境中定义了变量的相关属性,应用层软件中定义的观测量和表达量将生成在一个matlab修改配置文件定义格式的A2L文件(也可以自己定义其生成格式,具体可参见另一篇文章:https://blog.csdn.net/weixin_43930342/article/details/84936156)。
如果采用matlab默认的配置生成的A2L,此时生成的A2L文件中变量的地址为空且没有包含控制器与上位机通讯的CCP配置的头文件部分(涉及BSW底层CCP协议的实现)。如果要运用此A2L文件进行标定测试则需要完成上述两部分内容。

matlab提供了一些方法,现将其中两种比较常用的方法介绍如下:
一、基于elf文件生成A2L
编译器在完成C代码的编译链接过程后将会生成可刷写的文件(.S19或者.hex)。随之一起生成的还包括map文件以及elf文件。
关于elf文件的介绍可百–度。
输入文件:c代码编译后生成的elf文件,matlab生成A2L文件,CCP协议相关的header文件
m语言代码:
A2l_Raw=[build_root_path,'\A2L\Input\RawA2L\EC30.a2l'];  %build_root_path is the project path
Elf_file=[build_root_path,'\Bin\YX_EC30.elf'];
rtw.asap2SetAddress(A2l_Raw,Elf_file);

123
此方法最为简单,调用matlab自带函数rtw.asap2SetAddress即可。由于elf文件不易打开,所以不易检查替换地址的准确性。
二、基于map文件生成A2L
此方法中的输入文件与ELF文件相同,只是输入的elf文件变成map文件。
直接上代码:
此部分代码为调用asap2post函数的使用方法
ASAP2File = 'C:\MyCowin_Work\Matlab_Project\TEST\TEST\EC30.a2l';
MAPFile = 'C:\MyCowin_Work\Matlab_Project\TEST\TEST\YX_EC30.map';
asap2post(ASAP2File, MAPFile);

123
接下来附上asap2post函数代码
可以通过修改regexp正则表达式内容匹配不同的编译器生成的不同格式的map文件。
核心正则表达式匹配代码:
 function MAPFileHash = getSymbolTable1(MAPFileString) 
  pairs = regexp(MAPFileString, '\n\s*(Ve\w{4}_\w+|Ke\w{4}_\w+|Kt\w{4}_\w+|Ka\w{4}_\w+|ka\w{4}_\w+)\s+([0-9a-fA-F]+)\W','tokens');%match windriver compiler MAP file
     % Store symbol names and corresponding symbol values into a hash table
     MAPFileHash = containers.Map;
     for i = 1:length(pairs)
         MAPFileHash(pairs{i}{1}) = pairs{i}{2};
     end     
end

————————————————
版权声明:本文为CSDN博主「小丑哥子」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43930342/article/details/85094660

  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值