汽车标定技术(二)--基于XCP的标定测量实战

目录

1.工程创建

1.1 新建工程

1.2 设备配置

1.3 标定观测

1.4 刷写

2.原始hex文件与标定文件的合并

2.1 修改memory segment file

2.2 标定量地址偏移

​编辑

2.3 标定后与原始hex文件合并

2.4 标定后直接merge

2.5 不用对ram地址进行偏移实现hex文件合并


        本文使用CANape14.0,演示如何从0创建基于XCP的标定工程、如何只刷写标定数据到Flash以及如何合并Hex为诊断刷写提供支撑。

使用CANape第一步就是新建一个工程。

1.工程创建

1.1 新建工程

        首先打开CANape,出现如下界面,选择Create new project,

        在给工程命名后点击next,

        选择工程的存放地点,可以新建一个工作空间给CANape,点击next,完成工程创建,完成之后如果手里有A2L文件将其放在该文件夹下方便后续使用。

1.2 设备配置

        所谓设备,就是在PC端建立一个虚拟ECU,用于描述实际ECU内部信息,因此这里通常选择:device>new from(因为已经有A2L文件了)

        因为A2L文件本身就是用于描述ECU内部信息和对外接口。 

        选择对应a2l文件点击打开,通常这个名字是根据A2L文件名来的,如下:

        接下来,为Master和Slave选择传输方式,这里我们选择CAN,因为A2L只描述了CAN

        这里选用CAN总线,在Network setting里配置一路can网络,如下图所示,点击next

        因为用的1640,选择一个通道即可,之后一路点击next即可,完成后出现如下界面

        这里主要是针对XCPsim的一些设置,主要包括标定段的起始地址、协议选择等;

例如memory配置,

        通常情况下,选取A2L之后标定区地址会自动显示,此时只需要检查一下地址起始和范围,如果有错选择change即可更改。

Protocol界面

        需要配置的有ECU数据格式、是否支持block模式,以及Seed&Key,点击browse选择seedkey.dll文件即可(建议a2l和seedkey.dll文件都集中放在工程目录下),点击Transprot Layer检查主机和从机ID是否正确。之后关闭即可。

1.3 标定观测

在上位机主界面右键,选择Other window新建一个trace window(目的是trace主机和从机之间通讯报文,遇到连接不成功时有文件可以追溯)。

        使用标定工具(我用的是VN1640A)物理连接ECU和上位机,点击

        或者shift+F9进行连接,会出现

        该界面表示上位机的数据与ECU数据不一致,点击Upload将ECU数据上传给上位机,也可以使用download下载到ECU RAM里,前提是有提前标好的hex在PC端,点击OK,等待数据上传,可通过trace window来观察报文。

        建立连接之后,就可以进行数据的标定和观测。

        主界面右击选择calibration window,会弹出如下界面

        选择所需要的标定量(CANape自动识别A2L文件中的标定、观测量)即可,之后右键选择measurement window(观测量界面有多种形式可选),根据控制策略选择相应的观测量。

        点击工具栏的闪电 或者F9即可开始进行测量。

1.4 刷写

        在标定后,如果对标定结果比较满意,可以点击工具栏calibration>parameter set>save in binary format,

        然后选择Flash>Program download to flash,出现如下界面。

        选择Add,选择相应的HEX,点击确定等待刷写成功。

2.原始hex文件与标定文件的合并

        常见的做法是将标定数据和原始代码hex进行合并,然后统一通过uds去进行刷写。那么我们来看看如何进行合并

2.1 修改memory segment file

         最开始使用的是将flash映射到ram的方式,但是这样在合并时,标定量的地址也是在ram区,在原始hex文件里是找不到对应的ram的block的,如下图:

       因此需要将标定量的地址全部改为flash的地址:Device Configuration > Memory Segments,修改如下:

         这样就建立了flash和ram的映射,但是标定量的地址是flash地址,因此需要在database里为标定量地址添加偏移量。

2.2 标定量地址偏移

       进入Database Editor,此时发现标定量的地址为红色,且没有钉子状,说明该地址无效,且没有与elf文件关联;右击一个标定量,选择properties>address>link,选择对应的标定量,如下:

         此时发现MAP offset为0,由于flash起始地址是a0150000,ram的起始地址是600090000所以其偏移量为:0xa0150000-0x600090000 = 0x40147000,转为十进制是:1075081216

         确认,然后发现标定量地址有效,且与efl关联;

2.3 标定后与原始hex文件合并

         选择Display parameter in CDMs>Calibration object in the calibration ram;

         选择 read values of current device;再红框右击选择open,找到原始hex文件

如下图:

将左边标定好的数据拷贝到右边保存即可;

2.4 标定后直接merge

         Calibration > Parameter set > save in binary format

2.5 不用对ram地址进行偏移实现hex文件合并

(1)根据下图对memory segment进行配置(可根据需要改变flash和ram的地址);

这样在添加标定量时不需要做地址偏移;如下:

(2)进行标定后,选择CDM studio,进入界面后选择tools > options

找到extended ASAP2 Setting,勾选地址映射选项,如下图;

(3)在CDM界面添加原始hex文件(注意备份),此时会弹出如下界面,在地址映射方式里选择xcp,如下:

         添加完成后如下所示(左为标定的数据,右为原始数据):

         将左边的数据copy至右边合成新的hex文件,通过hexview可以看到对应的flash地址的数值已经改变,如下图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/134689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jdk 1.8 for mac 详细安装教程(含版本切换)

Jdk 1.8 for mac 详细安装教程(含版本切换) 官网下载链接 https://www.oracle.com/cn/java/technologies/downloads/#java8-mac 一、选择我们需要安装的jdk版本,这里以jdk8为例,下载 macOS 版本,M芯片下载ARM64版本…

Presentation Prompter 5.4.2(mac屏幕提词器)

Presentation Prompter是一款演讲辅助屏幕提词器软件,旨在帮助演讲者在公共演讲、主持活动或录制视频时更加流畅地进行演讲。以下是Presentation Prompter的一些特色功能: 提供滚动或分页显示:可以将演讲稿以滚动或分页的形式显示在屏幕上&a…

【Solidity】Remix在线环境及钱包申请

好久没有学习区块链方面的知识了,目前通过自学大致掌握了Fabric联盟链的搭建,链码编写、部署,api调用,可以独立开发出一些基于fabric的应用,感觉开发出去中心化的应用还是很有意思的,因为他与之前开发的ssm…

数据集:机器人理解世界的关键

原创 | 文 BFT机器人 传统的机器人和工业自动化解决方案已经颇有成效。在工厂中入驻自动化机器人可以快速地帮助工人们完成长时间重复劳动的任务。随着用工成本上涨、技能人才短缺、工作环境恶劣等问题的凸显,社会更迫切地需要采用自动化设备代替人工来完成该类操作…

Pod控制器详解

目录 一、Pod控制器及其功用 二、Deployment控制器 三、StatefulSet控制器 四、DaemonSet控制器 五、Job控制器 六、CronJob 控制器 一、Pod控制器及其功用 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层…

解析找不到msvcr100.dll文件的解决方法,4个方法修复msvcr100.dll

msvcr100.dll是Microsoft Visual C 2010运行库的组成部分,一些基于Visual C开发的软件运行时会依赖这个dll文件。出现“找不到msvcr100.dll”的错误提示,往往意味着这个文件在你的计算机系统中丢失或损坏,导致相关程序无法正常运行。以下是找…

MSQL系列(十四) Mysql实战-SQL语句 left join inner join On和Where语句的区别

Mysql实战-SQL语句On和Where语句的区别 前面我们讲解了Join的底层驱动表 选择原理,也知道了基本的内连接外连接两种SQL查询表连接方式 但是我们再查询多表的时候on和where语句到底有什么区别? where是过滤条件 ,不满足where的一定不会出现在结果中on是连接条件, …

[MICROSAR Adaptive] --- Hello Adaptive World

Automotive E/E Architecture and AUTOSAR Adaptive Platform Vector Solution: MICROSAR Adaptive First project: Hello Adaptive World Summary 1 引言 1.1 AP诞生的历史背景 新一代电子电器架构通常将车内的节点分为三类。计算平台,预控制器和传感器执行器相关的节点,…

怎样选择文件外发控制系统,让数据实现高效安全交换?

制造型企业都非常重视其知识产权(IP)的安全性,尤其是其最有价值的产品设计数据的安全问题。基于复杂的供应链生态,每天可能要与几十家甚至上百家供应商及合作伙伴进行数据交换。不管是一级还是二级供应商,合作伙伴还是…

【黑马程序员】SpringCloud——微服务

文章目录 前言一、服务架构演变1. 单体架构2. 分布式架构2.1 服务治理 3. 微服务3.1 微服务结构3.2 微服务技术对比3.3 企业需求 二、SpringCloud兼容性 三、服务拆分及远程调用1. 服务拆分1.1 服务拆分注意事项1.2 导入服务拆分 Demo 2. 远程调用2.1 根据订单 id 查询订单功能…

JAVA客户端使用账号密码调用influxdb2报错:{“code“:“unauthorized“,“message“:“Unauthorized“}

问题&#xff1a;JAVA客户端访问influxdb2报错 说明&#xff1a;当前influxdb版本&#xff1a;2.6.1 使用依赖&#xff1a; <dependency><groupId>org.influxdb</groupId><artifactId>influxdb-java</artifactId><version>2.10</vers…

IDEA插件分享:代码零入侵,后端神器

今天给大家介绍一款好用的IDEA插件&#xff1a;Apipost-Helper-2.0。非常好用&#xff01;主要包含以下功能&#xff1a; 1、无侵入生成API文档 编写完代码后&#xff0c;只需右键upload同步接口即可快速将源码中包含的API以及注解自动生成API文档&#xff0c;并生成可以访问…

说说你在React项目是如何捕获错误的?

一、是什么 错误在我们日常编写代码是非常常见的 举个例子&#xff0c;在react项目中去编写组件内JavaScript代码错误会导致 React 的内部状态被破坏&#xff0c;导致整个应用崩溃&#xff0c;这是不应该出现的现象 作为一个框架&#xff0c;react也有自身对于错误的处理的解…

vuecli3 批量打印二维码

安装以个命令: npm install qrcode --save npm install print-js --save 页面使用: import qrcode from qrcode import printJS from print-js <el-button type"primary" click"handleBulkPrint">批量打印</el-button>methods: {// 批量打印…

c++ 信奥赛编程 2049:【例5.19】字符串判等

#include <iostream> using namespace std; string strlwr(string s) { for(int i0;i<s.size();i){if(s[i]>A && s[i]<Z)s[i]s[i]-Aa;}return s; } int main() {string str1,str2; //定义两个字符串变量 getline(cin,str1); //通过函数输入字符串 getl…

集成运算放大电路

引用原文链接&#xff1a; 集成运放及其经典电路详解 - 知乎 (zhihu.com) 1、 反比例运算放大器 输入负电压则输出正电压&#xff0c;输入正电压则输出负电压 2、同相放大电路&#xff08;同相指输入电压与输出电压的位相相同&#xff09; 输入负电压则输出负电压&#xf…

网络测试工具—— iperf2 安卓APK 下载 及简单使用

网络测试工具—— iperf2 安卓APK 下载 及简单使用 前言一、iperf2是什么&#xff1f;二、使用步骤附上help中命令截图翻译总结 前言 项目上有一款安卓车机加载局域网图片加载非常慢&#xff0c;所以需要测试一个安卓车机设备的带宽&#xff0c;经过调研后使用到了iperf2。 一…

四阶龙格库塔与元胞自动机

龙格库塔法参考&#xff1a; 【精选】四阶龙格库塔算法及matlab代码_四阶龙格库塔法matlab_漫道长歌行的博客-CSDN博客 龙格库塔算法 Runge Kutta Method及其Matlab代码_龙格库塔法matlab_Lzh_023016的博客-CSDN博客 元胞自动机参考&#xff1a; 元胞自动机&#xff1a;森林…

Globalsign证书

GlobalSign是全球可信的数字证书提供商之一&#xff0c;提供广泛的证书服务&#xff0c;包括SSL证书、代码签名证书、电子邮件证书等&#xff0c;帮助保护企业和个人的网络安全。本文将详细介绍GlobalSign证书的特点和优势&#xff0c;帮助您更好地了解这一重要的数字证书提供商…

快速了解什么是跳跃表(skip list)

什么是跳跃表&#xff08;skip list&#xff09; 跳跃表&#xff08;Skip List&#xff09;是一种概率性的数据结构&#xff0c;它通过在多层链表的基础上添加“快速通道”来提高搜索效率。跳跃表的效率可以与平衡树相媲美&#xff0c;即在平均和最坏的情况下&#xff0c;查找…