• 1069查看
  • 0回复

[测试标定] 汽车标定技术--标定数据固化方法简介

[复制链接]

  • TA的每日心情
    无聊
    1-7-2015 18:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 7-1-2024 17:23:16 | 显示全部楼层 |阅读模式

    汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


    目录

    1.标定数据固化方法

    1.1 基于XCP固化

    1.2 基于UDS固化

    2. 具体实现形式

    2.1 CANape实现刷写

    2.2 INCA 实现刷写

    3.小结

    前面的文章聊了很多关于标定的概念,我们知道了目前标定功能大多都还是基于RAM实现。当标定参数的整定达到了预期值后,我们就要想办法把这些数据固化到Flash中,以便车型的后续开发工作。那么如何将标定数据固化到Flash中呢?目前主流的玩法有两种:基于XCP协议的刷写指令集、基于UDS的刷写。1.标定数据固化方法

    1.1 基于XCP固化

    XCP协议中提供了一套编程指令,我习惯统称为Non-Volatile Memory Programming,如下图:
    汽车标定技术--标定数据固化方法简介w1.jpg
    通过上述指令序列,我们可以把标定常数刷写至指定位置,常见的顺序如下:
    1.声明刷写开始:用到的指令PROGRAM_START(D2)2.擦除FLASH:用到的指令有 SET_MTA(F6)、PROGRAM_CLEAR(D1)。3.开始刷写数据:PROGRAM(D0)4.结束刷写:PROGRAM_RESET(CF)

    而指定的Flash位置毫无疑问应该从A2L中去定义。需要注意的是,这套指令集很容易和标定指令集造成混淆。标定指令集包含的指令如下:
    汽车标定技术--标定数据固化方法简介w2.jpg
    标定指令集用于动态修改RAM的值,实现在线标定,示例如下:
    汽车标定技术--标定数据固化方法简介w3.jpg
      首先上位机通过SET_MTA告诉ECU要操作的地址(如上0x00000060),然后通过DOWNLOAD告诉ECU要在该地址修改的多长数据,以及具体数据信息(如上,数据长度4byte,具体值为0x0000803F),在ECU端根据上位机指令修改当前地址的数据后返回FF正响应,最后上位机通过UPLOAD指令将该地址的数据读出到上位机显示,我们就可以判断是否实现了标定动作(在线动态修改RAM)
    而标定指令集PROGRAM,主要用于标定参数的固化,示例如下:
    汽车标定技术--标定数据固化方法简介w4.jpg

    注意这里的代码实现就需要调用flash driver驱动对目标Flash进行擦写动作了。 那么根据标定上位机的不同,具体实现方式也有所不同。1.2 基于UDS固化

    基于UDS主要还是通过Bootloader刷写,这和刷写代码很相似,区别在于标定数据通常在Flash中的单独维护,因此这里需要和最开始的原始hex进行合并,然后整体刷入。常见流程如下:
    汽车标定技术--标定数据固化方法简介w5.jpg
    2. 具体实现形式

    2.1 CANape实现刷写

    CANape提供了三种方式实现hex的刷写,如下图:
    汽车标定技术--标定数据固化方法简介w6.jpg

      使用XCP\CCP协议刷写:要求集成刷写指令集,并有相应驱动支持通过Bootloader进行刷写:要求匹配Vector的vFlash工程(其实自研的也可以,只是无法在CANape上识别)通过VX1000,XCP onEth

      基于XCP\CCP刷写
    完成标定后,在CANape上位机中点击工具栏calibration>parameter set>save in binary format,将数据保存为hex。
    汽车标定技术--标定数据固化方法简介w7.jpg
    然后选择Flash>Program download to flash,出现如下界面:
    汽车标定技术--标定数据固化方法简介w8.jpg

    选择Add,选择相应的HEX,点击确定等待刷写成功。值得一提的是,我们去分析vector提供的xcp代码,发现标定指令集里面没有具体的编程代码,而根据CANape中的提示,我们发现,如果是选用xcp刷写,它会提供一个flash kernel,如下图:
    汽车标定技术--标定数据固化方法简介w9.jpg
    这个Flash Kernel的使用流程推测如下:在ECU收到XCP某个编程指令后,上位机会发送这个kernel的hex给ECU,ECU将其放置在指定RAM中运行;Flash Kernel全程接管XCP的通信直到完成刷写。
      通过诊断协议刷写
    需要将原始hex中的标定数据段替换为当前标定数据,具体步骤如下:
    (1)根据下图对memory segment进行配置(可根据需要改变flash和ram的地址);
    汽车标定技术--标定数据固化方法简介w10.jpg
    这样在添加标定量时不需要做地址偏移,如下:
    汽车标定技术--标定数据固化方法简介w11.jpg
    (2)完成标定后,选择CDM studio,进入界面后选择tools > options
    汽车标定技术--标定数据固化方法简介w12.jpg
    找到extended ASAP2 Setting,勾选地址映射选项,如下图:
    汽车标定技术--标定数据固化方法简介w13.jpg
    (3)在CDM界面添加原始hex文件(注意备份),此时会弹出如下界面,在地址映射方式里选择xcp,如下:
    汽车标定技术--标定数据固化方法简介w14.jpg
    添加完成后如下所示(左为标定的数据,右为原始数据):
    汽车标定技术--标定数据固化方法简介w15.jpg
    将左边的数据copy至右边合成新的hex文件,通过hexview可以看到对应的flash地址的数值已经改变,如下图:
    汽车标定技术--标定数据固化方法简介w16.jpg
    合并成一个完成的hex文件后,就可以通过诊断协议进行刷写了。 2.2 INCA 实现刷写

    通过INCA实现刷写,就需要用到它自己独有的ProF文件。ProF是一种程序刷写的工具文件,专门给INCA使用,它需要进行特别的工程配置来实现上述功能。创建一个ProF配置文件必须要涵盖以下内容:
      CNF:ECU以及协议描述文件;PRM:用来定义flash和其他程序的控制流描述文件;前端layout文件(即显示在INCA ProF安装界面)Install.ini描述安装步骤和运行时配置的安装文件。
    值得一提的是,在控制文件中,我们可以选择使用XCP还是UDS协议进行数据的刷写,例如选择用UDS进行刷写,可以按照如下语法:/* Erase Flash */UDS_ROUTINE_CONTROL(01, $FF00, "") /* Program Flash */UDSX_PROGRAM_MEMORY("%1.bin", 1, 1, 0, "") /* Check */UDS_ROUTINE_CONTROL(01,$0202,””)不过我以前确实不怎么用INCA去刷标定数据,毕竟太慢了。每天做完标定后都把数据保存到PC端,第二天来了首先download到ECU中继续标,最后出版本了把hex合并,通过UDS统一刷进去。3.小结

    通过上述文章,我们简单把标定数据的固化方式做了一个介绍。大家需要区分的是标定指令集(DOWNLOAD等)和编程指令集(PROGRAM)是两个不同的范畴,通常DOWNLOAD是对RAM(Working Page)进行操作,而PROGRAM是对Flash(Reference Page)进行操作。对于标定数据的固化,如果没有特殊需求,一般还是建议通过UDS进行批量刷写,通过XCP这种方式效率确实一般。
    往期回顾:

    1.汽车标定精选
    万字长文:汽车标定技术--XCP概述
    汽车标定技术--A2L格式分析
    汽车标定技术--标定量与#pragma的趣事
    汽车标定技术--A2L文件生成的方法

    2.AUTOSAR精选
    AUTOSAR OS概述(一)
    AUTOSAR OS概述(二)
    AUTOSAR 诊断栈分析(一)
    AUTOSAR 诊断栈分析(二):DEM
    AUTOSAR诊断栈分析(三):DTC状态位

    3.汽车网络安全精选
    汽车信息安全--MCU启动常用密码算法
    汽车网络安全方案需求分析
    汽车信息安全--常见车规MCU安全启动方案
    车载信息安全场景概述

    4.汽车功能安全精选

    5.汽车虚拟化精选

        汽车ECU虚拟化技术初探(一)

        汽车ECU虚拟化技术(二)--U2A虚拟化功能

    6.杂七杂八

        我为什么开始写技术博客

        Flash模拟EEPROM原理浅析

       征途漫漫:汽车MCU的国产替代往事

       车规MCU应用场景及国产替代进展
    

    该用户从未签到

    发表于 15-3-2025 22:47:02 | 显示全部楼层
    以下是针对所提供内容的回复:

    汽车标定技术中的标定数据固化方法简介:

    一、概述
    在汽车标定过程中,将标定参数从RAM固化到Flash中是确保数据持久性和车型后续开发的关键步骤。当前主流的固化方法主要有两种:基于XCP协议的方法和基于UDS的方法。

    二、基于XCP固化方法详解
    XCP(Execution Context Protocol)协议是一套汽车标定和刷写过程中广泛应用的协议标准。其中包含了编程指令,通过这些指令,我们可以实现对标定数据的刷写和固化。该方法操作简单,效率高,被广大工程师所青睐。具体实施中,需要利用相关的标定工具,如CANape等,通过XCP协议实现对标定数据的固化。

    三、基于UDS固化方法概述
    UDS(Unified Diagnostic Services)是一种统一的诊断服务标准,在数据固化方面也有广泛应用。通过UDS的刷写指令,我们可以实现对标定数据的固化。相较于XCP方法,UDS的应用更为广泛,兼容性更好。

    四、具体实施方式
    在实际操作中,我们常用CANape和INCA等工具来实现数据的刷写和固化。这些工具基于XCP或UDS协议,能方便地实现对汽车ECU的标定数据刷写和固化。

    五、小结
    数据固化是汽车标定过程中的重要环节,关系到车型开发的稳定性和可靠性。选择适当的固化方法,利用专业的工具,可以高效、准确地完成数据固化工作。目前,基于XCP和UDS的固化方法被广泛应用,工程师可根据具体需求和条件选择合适的方法。
    回复 支持 反对

    使用道具 举报

    快速发帖

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

    GMT+8, 26-6-2025 13:19 , Processed in 0.381971 second(s), 36 queries .

    Powered by Discuz! X3.5

    © 2001-2013 Comsenz Inc.