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

2023-11-01

引言
  基于模型的开发(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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • Tomcat

    一 Web资源的分类 Web资源分为两类 静态资源和动态资源 静态资源 html css js mp4视频 jpg图片 txt等 动态资源 jsp页面 servlet程序等 二 常用的web服务器 Web服务器 也可以叫javaweb容器
  • 驱动开发 day4 9/13

    head h ifndef HEAD H define HEAD H typedef struct unsigned int MODER unsigned int OTYPER unsigned int OSPEEDR unsigned i
  • JAVA中类的public class与class的区别详解

    1 类的访问权限 为了控制某个类的访问权限 修饰词必须出现在关键字class之前 例如 public class Student 在编写类的时候可以使用两种方式定义类 A public class定义类 B class定义类 2 publi
  • 2021-11-3 内核态和核心态

    1 什么是内核态 当一个进程进行系统调用而陷入内核代码中时 就称程序陷入了内核态 否则就是用户态 用户程序运行在用户态而操作系统运行在内核态 用户态只能执行非特权指令 而内核态可以执行全部指令 内核态可以执行的指令比如 执行I O 设置时钟
  • 拓数派荣获 “2023 年杭州市企业高新技术研究开发中心” 认定

    近日 拓数派上榜由杭州市科学技术局公布的 2023 年杭州市企业高新技术研究开发中心名单 通过专业的技术研发 成果转化和高新技术产业化成绩 获得 杭州市拓数派数据计算企业高新技术研究开发中心 认定 图为 杭州市拓数派数据计算企业高新技术研究
  • Lattice库联合ModelSim仿真FIFO

    Lattice联合ModelSim仿真FIFO 前言 一 添加IP 二 库文件添加 一 方式一 添加器件库到ModelSim 二 方法二 直接添加器件库到Libray 和tb v在同一个目录下仿真 三 仿真 一 仿真文件 二 仿真结果 前言
  • 计算机进制存在的意义

    发布本文的实际想法 是否想过为什么要有进制的存在 如二进制 十进制等 存在即合理 通过思考 得出以下结论 希望能在计算机基础方面给你带来一定的帮助 进制的意义 二进制是计算机看得懂的语言 我们在电脑上所写的一切东西 都需要转成二进制让电脑执
  • ctfshow web4

    提示日志注入 文件包含 还有一个get方式的参数url 有nginx 那就试试它的默认日志目录 日志默认路径 1 apache Linux 日志默认路径 etc httpd logs access log var log httpd acc
  • Window下编译PJSIP,不编译Media模块

    Windows系统下使用VS2017进行编译PJSIP 下载地址 PJSIP的地址 https github com pjsip pjproject 在线clone太慢的话 可以直接在这里下载比clone会快很多 https github
  • 用数组实现邻接表

    用数组实现邻接表 转载自 http blog csdn net wang2534499 article details 47750321 坐在马桶上看算法 算法8 巧妙的邻接表 数组实现 之前我们介绍过图的邻接矩阵存储法 它的空间和时间复杂
  • Android APP专项测试之ADB命令

    Android环境准备 Android APP专项测试需要使用adb命令 需要安装Android SDK参考 验证adb 数据线连接Android设备 或虚拟机 或使用无线连接参考 Android设备进入开发者模式 打开USB调试 USB安
  • 线性DP相关例题

    目录 1 最长公共子序列 2 最长递增子序列 蓝桥骑士 3 字符串转换 4 装箱问题 0 1背包简化版 5 过河卒 1 最长公共子序列 题目描述 给定一个长度为 N 数组 a 和一个长度为 M 的数组 b 请你求出它们的最长公共子序列长度为
  • Django学习小记[5] —— View Request/Response

    在Django中 view是指一个方法 这个方法接收一个request 然后返回一个response 当客户端发送一个请求的时候 Django会创建一个HttpRequest对象 这个对象包含本次请求的所有相关信息 比如请求的路径 请求的参
  • windows环境下,nginx 配置静态网站页面

    server listen 8092 nginx 监听端口 server name 192 168 1 73 localhost 服务器地址 location root E nginx 1 15 0 cx 静态html文件存放目录地址 in
  • c++ 将int、float、double类型转换成string类型

    使用to string 包含在 include 可参考https blog csdn net lzuacm article details 52704931 t t t 0 3578803457785398 std string to st
  • restful实现文件下载

    private static final byte UTF8 BOM byte 0xEF byte 0xBB byte 0xBF private static final String FAV ICO fav ico GET Path ge
  • mysql安装教程(图文详细版)

    1 先进入mysql官网选择下载对应版本 https dev mysql com downloads mysql 5 7 html 这里提供的链接是5 7 42版本 选择自己机子对应的位数下载解压包 我们这里以解压包的形式演示安装 down
  • 小米开发版安装magisk_小米开发版安装magisk(面具),不用第三方rec就可以安装...

    帖子搬砖至大神 浅陌初心原创 策策大哥修改 小米开发版安装magisk教程 不用第三方rec就可以安装 手机必须有root 没有直接左上角 1 这个教程浅陌初心i大神原创的 我稍微修改了下 大家有喜欢的可以试一试 2 首先 解锁后刷入内测版
  • jquery控制商品数量加减改变价格,只能输入数字

    做商城时候 购物车中的商品加一个和减一个用jquery实现的代码 并且保证文本框text只能输入纯数字
  • Matlab替换A2L文件中的地址生成完整A2L文件的方法小结

    引言 基于模型的开发 方式在汽车电子嵌入式软件行业中发展迅速 关于其 多好处不去瞎说了 自然有mathwork的工作人员去宣传 基于模型的开发在模型生成代码的过程中 如果软件工程师在matlab开发环境中定义了变量的相关属性 应用层软件中定