当前位置: 首页 > news >正文

汽车标定技术(七)--基于模型开发如何生成完整的A2L文件(2)

目录

1. 自定义ASAP2文件

2. asap2userlib.tlc需要修改的部分

3. 标定量观测量地址替换

3.1 由elf文件替换

3.2 由map文件替换

3.3 正则表达式(含asap2post.m修改方法)

4.小结



书接上文汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)-CSDN博客

1. 自定义ASAP2文件

        自定义文件在程序安装目录\toolbox\rtw\targets\asap2\asap2\user\asap2userlib.tlc,

        如果确实找不到可以在matlab command window下输入如下指令:

        该文件可以分为静态部分和动态部分

        静态部分:不依赖模型的部分,例如头部分等;

        动态部分:依赖模型,标定量观测量名字,数据大小等

2. asap2userlib.tlc需要修改的部分

(1)头部分改写

(2)将a2l module部分复制到

        这样就完成了a2l的定制,这种方法有个缺点,必须要a2l最初的源代码;但也有好处,可以详细了解A2L文件的ECU描述关键词。

        当然,如果嫌麻烦,哈哈哈,CANape直接生成A2L文件。

        如果需要修改a2l工程名字,调用asap2setup在里面做出修改即可;

3. 标定量观测量地址替换

Matlab提供了两种替换a2l文件地址的方式

3.1 elf文件替换

从ELF文件更新地址的方法简单,就是通过调用MATLAB自带的函数rtw.asap2SetAddress(ASAP2File, InfoFile),输入A2L文件和elf文件名(即InfoFile)即可得到更新地址后的A2L。缺点是ELF文件不是文本文件,不能看到其内容,很难检验地址更新的正确性。

示例:

rtw.asap2SetAddress('TestA2L.a2l', 'tc1782_project.elf')

3.2 由map文件替换

用MAP文件更新地址的方法较为复杂,使用函数asap2post(ASAP2File, MAPFile) ,其通过调用%matlabroot%\toolbox\rtw\targets\asap2\asap2\asap2post.m 文件来更新地址。但是需要手动更改该文件的内容,使其符合对应你MAP的格式(每种编译器生成的MAP文件格式不一样)。

3.3 正则表达式(含asap2post.m修改方法

使用asap2post进行变量的地址替换要用到正则表达式;

正则表达式又叫做规则表达式,主要用于检索、替换符合某种规则的文本。

Matlab提供了四个正则表达式的库

        思考在A2L文件的标定量观测量地址替换中需要用到哪些库?

        首先,需要将从map文件中找到相应变量的地址,不同编译器中有不同给的表达方式,例如hightec的map文件地址如下:

        在asap2post中提供了多种编译器map文件的格式,可根据需要进行修改。

        在这里使用regexp函数找到匹配的文本,因此需要将map文件和a2l文件均转成文本格式的,会用到库fileread;

下面着重分析regexp(str,expression,’tokens’)

Tokens即标文,使用标文的一个好处是,标文会记住所匹配的内容,因此可以在搜索或替换过程中重新调用和重用匹配的文本。

MAPFileString表示map文件已经转成文本了

\n\s\s+0x([0-9a-fA-f]+)\W+(\S+):

\n:字符表示,这里表示从一个换行符开始匹配;

\s:任意空白字符空白字符开始匹配;

0x([0-9a-fA-f]:表示0-9a-f,A-F(区分大小写)的任意字符,

\W:除字母、数字下划线外的任意字符;

\S:任意非空白字符

通过上述可以读取地址与变量名。

然后将变量名和地址存入到哈希表里。

:什么是hash表?containers.map什么?

(1)containers.map:创建一个空的map对象

        这个对象里面的值(‘Keytype ,'char','ValueType','double'后面指令,接下来即变量名和地址放到map

(2)哈希表其实也就是一种根据关键码值(Key value)而直接进行访问的数据结构在matlab里也就是containers.map

for i = 1:length(pairs)

         MAPFileHash(pairs{i}{2}) = pairs{i}{1};

以上语句matlab里的用法就是右边valuetype左边的keytype赋值由于使用的是hightec编译器因此pairs{i}{2}指的是变量名,pairs{i}{1}指的是地址。

常用的标定工具有CANape和INCA;由于INCA只识别FLASH里的变量地址,因此在a2l描述里应该标定量做一个地址偏移到flash区,这样才能标定

我们可以在哈希表里就对需要的标定量地址进行偏移,由于matlab十六进制均为字符串形式,所以要将其转为十进制使用到库hex2dec进行地址偏移,最后在转为十六进制。

1610612769 转为十六进制为 0x60000000后面以此类推。

        将变量和地址一一对应后,就需要读取a2l的变量和地址进行替换,用到库函数regexprep以及动态正则表达式的概念。

这里引入定制的a2l生成的格式:

        regexprep中的表达式行匹配的字段是0000 /* @ECU_Address@Param3@ */

        那么为什么要用(\w+主要是后面replace来匹配它;

        ${MAPFileHash($1)}表示hash表里的第一元素,即变量名,当其去(\w+变量相匹配时,将hash表的值替换expression

        通过上面的表达式替换,会出现如下结果:

        那么下次再替换的时候就不太方便,必须要重新生成a2l来保证地址为0x0000,为了能够多次重复替换,需要将替换后的格式改为如下:

        因此需要将regexprep(str,expression,replace)的expression和replace进行修改;其中:

  1. Expression表示用于匹配的字符,我们可以看到,在a2l文件里,需要匹配的就是地址这一段,

         在最初版本中使用的是:expression=[addrPrefix '(\w+)' addrSuffix],

        为了能够匹配任意数字(地址),

        将expression改为:'[0-9]* /\* @ECU_Address@(\w+)@ \*/'

        表示:将匹配 (任意长度数字)+(空格)+(/\* @ECU_Address@(\w+)@ \*/

        保存之后替换a2l如下:

这样我们在做开发时就可以不用再重新生成代码,直接移植,替换a2l即可。

使用\* 的原因

完成上述工作后,将新的字符串写到a2l里

4.小结

        这只是我前几年在验证标定协议栈的一个实验,把模型开发、a2l生成、基础软件从上至下走了一通,再加上做了一个UI界面,基本上把这一套工具链缩减为编译器、matlab/simulink再加标定工具即可,还是比较有成就感的,分享给大家。 

       

相关文章:

汽车标定技术(七)--基于模型开发如何生成完整的A2L文件(2)

目录 1. 自定义ASAP2文件 2. asap2userlib.tlc需要修改的部分 3. 标定量观测量地址替换 3.1 由elf文件替换 3.2 由map文件替换 3.3 正则表达式(含asap2post.m修改方法) 4.小结 书接上文汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)-C…...

ZZ308 物联网应用与服务赛题第E套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 (E卷) 赛位号:______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等; 2.竞赛任务中所使用的…...

web相关框架

web相关框架 web 后端开发框架 expressKoaHapiNest web 前端UI库(组件库) Naive-UiAnt Design VueElement plus 后端页面,前端框架(一个开箱即用前端框架) naive-ui-admingin-vue-adminvue-vben-adminvue-pure-adminvue3-antd-admin 无…...

安装dubbo-admin报错node版本和test错误

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :dubbo-admin安装 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台&#xff0…...

HTML使用canvas绘制海报(网络图片)

生成前&#xff1a; 生成后&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>媒体参会嘉宾邀请函生成链接</title><link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/vant2.10…...

20道高频JavaScript面试题快问快答

※其他的快问快答&#xff0c;看这里&#xff01; 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过…...

【STM32】HAL库UART含校验位的串口通信配置BUG避坑

【STM32】HAL库UART含校验位的串口通信配置BUG避坑 文章目录 UART协议校验位HAL库配置含校验位的串口配置BUG避坑附录&#xff1a;Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作位带代码位带宏定义总线函…...

Python实用技巧:将 Excel转为PDF

将Excel文件转换为PDF可以方便储存表格数据&#xff0c;此外在打印或共享文档时也能确保表格样式布局等在不同设备和操作系统上保持一致。今天给大家分享一个使用第三方Python库Spire.XLS for Python 实现Excel转PDF的简单方法。 实现步骤 首先&#xff0c;通过pip命令来安装依…...

【面经】讲一下你对jvm和jmm的了解

JVM JVM是Java虚拟机&#xff0c;是Java程序的执行环境。它是一种虚拟的计算机&#xff0c;通过在实际的计算机上仿真模拟各种计算机功能来实现. JVM是Java程序运行的核心&#xff0c;可以将Java字节码转换为可执行的机器码&#xff0c;提供了跨平台性、优秀的垃圾回收器&…...

《网络协议》03. 传输层(TCP UDP)

title: 《网络协议》03. 传输层&#xff08;TCP & UDP&#xff09; date: 2022-09-04 22:37:11 updated: 2023-11-08 15:58:52 categories: 学习记录&#xff1a;网络协议 excerpt: 传输层、UDP、TCP&#xff08;可靠传输&#xff0c;流量控制&#xff0c;拥塞控制&#xf…...

ZooKeeper调优

服务器硬件配置 建议 Zookeeper 的服务器最好专属(或是资源隔离的)。磁盘由于 Zookeeper 的数据写入磁盘,强烈建议要使用 SSD。 Linux操作系统优化 Zookeeper 的性能会很明显受到交换分区的影响。建议部署 Zookeeper 的服务器关闭交换分区功能或是通过内核参数调整,减少…...

改进YOLOv5:结合ICCV2023|动态蛇形卷积,构建不规则目标识别网络

🔥🔥🔥 提升多尺度、不规则目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: �…...

开发知识点-NodeJs-npm/Pnpm/Vite/Yarn包管理器

包管理器 vue-cli-service 不是内部或外部命令&#xff0c;也不是可运行的程序npm 全局变量pnpmPnpm介绍ViteYarn ‘vue-cli-service’ 不是内部或外部命令&#xff0c;也不是可运行的程序 yarn yarn add vue-amap yarn add vue-amap ant-design-vue npm 全局变量 换主机 新…...

Mac上好用的翻译软件推荐 兼容m

Mac翻译软件可以用在学习&#xff0c;工作&#xff0c;生活当中&#xff0c;一款好用的翻译软件&#xff0c;具有翻译准确&#xff0c;翻译快速等基本特点&#xff0c;能够帮您提高工作效率。Mac上有什么好用的翻译软件呢&#xff1f;今天小编为大家整理了6款好用的Mac翻译软件…...

软件下载网站

1.qt 下载官网 Index of /new_archive/qt 2.qt-vs 插件下载 Index of /official_releases/vsaddin...

java获取近期视频流关键帧与截图

1、背景 最近在做视频转发的开发时&#xff0c;遇到一个问题&#xff0c;前端订阅播放h264视频流时&#xff0c;有时会出现一段时间黑屏&#xff0c;经过测试发现是没有收到关键帧&#xff0c;只有第一帧是关键帧才能保证后续播放正常。所以后端需要实现一个功能&#xff0c;就…...

arcgis 批量删除Table中的某些Field

当shp或者table文件较少时&#xff0c;可以手动删除每个文件中的某些字段&#xff0c;当文件较多时&#xff0c;就需要使用arcpy或者model进行处理。...

工厂设备扫码使用售卖联网开发需要怎么开发开源代码?

我们将详细介绍如何使用开源代码开发一套用于工厂设备联网统计的系统。我们将详细讨论所需硬件组件的选择、开源框架和库的使用、软件开发流程以及最后的集成和部署。在这个过程中&#xff0c;我们将提供实用的操作步骤和指导&#xff0c;帮助你更容易地完成这个复杂的任务。 …...

软考高级之132个工具和技术

分类 工具与技术 描述 数据收集 头脑风暴 在短时间内获得大量创意&#xff0c;适用于团队环境&#xff0c;需要引导者引导&#xff08;过程中可以天马行空&#xff0c;不要打断&#xff09; 包括&#xff1a;头脑风暴、头脑写作 头脑写作&#xff1a;在开始小组创意讨论之…...

算法通过村第十八关-回溯|白银笔记|经典问题

文章目录 前言组合总和问题分割回文串子集问题排序问题字母大小写全排列单词搜索总结 前言 提示&#xff1a;我不愿再给你写信了。因为我终于感到&#xff0c;我们的全部通信知识一个大大的幻影&#xff0c;我们每个人知识再给自己写信。 --安德烈纪德 回溯主要解决一些暴力枚举…...

终极Xshell配色方案大全:250+款主题让你的命令行界面焕然一新

终极Xshell配色方案大全&#xff1a;250款主题让你的命令行界面焕然一新 【免费下载链接】Xshell-ColorScheme 250 Xshell Color Schemes 项目地址: https://gitcode.com/gh_mirrors/xs/Xshell-ColorScheme 还在忍受单调的黑白终端界面吗&#xff1f;每天面对相同的颜色…...

揭秘Windows系统安全:OpenArk开源工具的全方位守护方案

揭秘Windows系统安全&#xff1a;OpenArk开源工具的全方位守护方案 【免费下载链接】OpenArk The Next Generation of Anti-Rookit(ARK) tool for Windows. 项目地址: https://gitcode.com/GitHub_Trending/op/OpenArk 在数字化时代&#xff0c;Windows系统安全已成为每…...

别再只用Item-CF了!手把手教你用GRU4Rec搞定电商‘只看不买’的会话推荐难题

电商会话推荐实战&#xff1a;用GRU4Rec破解用户"只看不买"的行为密码 当用户在电商平台连续浏览十几件商品却迟迟不下单时&#xff0c;传统推荐系统往往束手无策。这种典型的"只看不买"行为序列&#xff0c;恰恰是GRU4Rec模型最能大显身手的场景。本文将带…...

静电扫盲:为什么说‘电势’比‘电势能’更好用?一个电工维修中的实际案例

静电扫盲&#xff1a;为什么说‘电势’比‘电势能’更好用&#xff1f;一个电工维修中的实际案例 1. 从电路板故障说起&#xff1a;一个真实的维修困境 上周三&#xff0c;我接到某工厂的紧急报修电话——他们的自动化生产线控制板频繁出现误动作。现场检查时&#xff0c;用万用…...

别再手动拖参考线了!用这个InDesign JS脚本,5分钟搞定批量对齐(附完整源码)

InDesign高效排版神器&#xff1a;5分钟批量对齐参考线脚本全解析 每次面对画册内页的几十张产品图对齐时&#xff0c;你是否还在重复"拉参考线-微调-再拉参考线"的机械操作&#xff1f;我曾为某品牌年度产品目录排版时&#xff0c;整整两天时间都耗费在参考线的拖拽…...

GPU显存稳定性终极检测:memtest_vulkan专业级显卡故障排查指南

GPU显存稳定性终极检测&#xff1a;memtest_vulkan专业级显卡故障排查指南 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan 你是否遇到过游戏突然崩溃、3D渲染出…...

抖音下载器终极指南:从零开始掌握高效批量下载

抖音下载器终极指南&#xff1a;从零开始掌握高效批量下载 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音…...

5分钟搭建家庭电视直播系统:Kodi IPTV Simple完全指南

5分钟搭建家庭电视直播系统&#xff1a;Kodi IPTV Simple完全指南 【免费下载链接】pvr.iptvsimple IPTV Simple client for Kodi PVR 项目地址: https://gitcode.com/gh_mirrors/pv/pvr.iptvsimple 还在为电视直播体验烦恼吗&#xff1f;想用最简单的方式把网络直播源整…...

录屏长时间录制不卡顿不黑屏:通用解决方法+5款软件实操指南

长时间录屏&#xff08;如直播回放、网课、会议&#xff09;最易出现卡顿、黑屏、闪退等问题&#xff0c;导致录制内容丢失、功亏一篑。本文聚焦“长时间录制不卡顿、不黑屏”核心需求&#xff0c;分享通用解决技巧&#xff0c;再针对5款主流录屏软件&#xff0c;给出具体执行方…...

被头条爬虫单日5600万次抓取,JT808车载服务器平稳扛压复盘(附可复用配置)

作为长期深耕车载物联网领域的运维开发&#xff0c;日常工作核心就是保障JT/T 808车载定位监控系统的稳定运行——毕竟这套系统要承载上千台车载终端的长连接、实时定位上报、指令下发、轨迹存储&#xff0c;高并发、高可用是底线要求。 前段时间&#xff0c;公司官网(www.xlhd…...