前言
在整车项目开发过程中,样车阶段会存在着大量时间的标定过程,以提升车辆的性能。主流的标定协议-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公众号,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~