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

引言
  基于模型的开发(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);

此方法最为简单,调用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);

接下来附上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
  • 16
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值