• CANape导出标定数据Hex/S19等二进制文件


    前言

    在整车项目开发过程中,样车阶段会存在着大量时间的标定过程,以提升车辆的性能。主流的标定协议-XCP协议,通过导入A2L到标定软件(CANape,INCAd等),实现控制器参数的在线标定。而对于控制器来说,标定量一般存放在flash中,加载时从flash地址加载,运行时在ram中读取,这样便可以实现定义时由const属性修饰,标定时可以修改标定量值。这样又会产生另外一个问题,由于标定量运行时是在ram地址,所以标定完后如果下电的话,标定量并不会更新到flash中,再次上电的话仍然会是标定之前的值。
    基于此,一种方案是将标定过的数据存储在特定的文件中,canape的如.par文件,下次再标定的时候可以导入,但是只在标定过程中有效。另一种方案即本文描述的方案,就是将标定后的数据写入flash中,生成hex文件或s19文件,再刷写到控制器中。(还有一种通过XCP-下载服务,这个不在本文描述范围)

    配置CANape工程

    一般标定量存储在固定的Flash区域中,在canape中需要进行相关配置

    配置Memory Segments

    选择Device Configuration,创建与标定量对应的存储段(主要是flash起始地址和大小)。勾选Cache对应的选项

    配置Memory Flash

    配置对应的Flash Sectors,与标定量区域一致


    配置好上述Flash区域后,点击保存。

    生成二进制文件

    点击Device,选择Flash中的Save parameter set and merge to binary file

    有两种方式,一种是导出当前工程的标定数据到par和二进制文件中,一种是从par中导入标定数据到二进制文件中。

    导出二进制文件并保存为par文件


    选择对应的原可执行文件,目标导出的hex/srec文件,保存到的.par文件。确认后即可生成目标的二进制文件。

    通过par文件导入到二进制文件中

    和上面的界面一样,只是选择的par文件为之前已经存在的par文件(包含需要写入flash的标定数据)。确认后即可生成目标的二进制文件

    对比二进制文件

    测试修改过参数的二进制文件和原来的二进制文件对比。

    修改的参数在新的二进制文件中已经更改过了。

    将这个二进制文件刷写到ECU中即可实现标定量flash更新,且不需要对代码进行编译。

    总结

    通过这种生成二进制文件的方式,在样车调试过程中,可以实现快速更新参数到flash中,避免了重新编译链接的过程。


    若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~

    你的鼓励是对小弟的最大支持~~~

    建了一个WX公众号,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~

  • 相关阅读:
    ROS通信模块:秒懂话题通信
    复杂的C++继承
    matlab测量计算信号的相似度
    2023年全球及中国半导体石英坩埚市场发展概况分析:未来需求量迅速增长[图]
    红黑树的性质与简单实现
    【云原生】设备入云之FlexManager数据通道的具体部署
    Java高级面试问题
    js 日期时间sort排序
    .NET 6学习笔记(7)——ASP.NET Core通过配置文件启用HTTPS
    阿里云 Serverless 异步任务处理系统在数据分析领域的应用
  • 原文地址:https://blog.csdn.net/weixin_49000276/article/details/126431711