• 805查看
  • 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应用场景及国产替代进展

    快速发帖

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

    本版积分规则

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

    GMT+8, 5-3-2025 16:13 , Processed in 0.485033 second(s), 37 queries .

    Powered by Discuz! X3.5

    © 2001-2013 Comsenz Inc.