ECU标定要解决的问题
ECU 中 parameter 存在flash 中;
这些参数的值需要在运行过程中,在实验室条件下或实车环境下通过实验不断的调整优化来获取;
这样可能面临几个问题:
- 基于目前的flash工艺,flash的擦写操作一般都是整块操作的,并且擦除、program都需要时间;而标定时需要在运行过程中支持对各个参数进行快速的修改
- 每次ECU boot时,都会从flash中加载参数的初始值;已标定好的参数的new value该如何保存;使标定过的ECU每次 boot 后都使用标定好的新值
目前,只有RAM 才支持单byte 任意读写的物理特性,所以ECU parameter 的标定还是需要在RAM 中去完成;(ST新一代车规MCU Stellar内部集成Flash采用PCM 的工艺,使其能支持单byte的擦写;大大有利于ECU参数标定的实施)
标定参数的修改
对于问题1,目前的解决方式有:
1. 设置标定参数从flash加载,从RAM寻址,ECU 运行起来时访问的变量为RAM中的变量,标定过程修改的也是RAM变量;
相当于有参考页和工作页的概念;
标定过程中修改的是RAM 中的参考页;
工作页对应变量存在flash中的初始值;
2. Flash Overlay
设置MCU 内核地址访问的映射关系,将内核对Flash的访问映射到RAM中;
在标定的时候,打开flash到RAM的映射,使ECU对标定量的访问实际操作的是RAM的memory cell;标定结束,关闭flash到RAM的映射,ECU实际操作的是Flash 的memory cell;
缺点:需要MCU 硬件支持flash overlay;
3. AUTOSAR 定义的 RAM pointer based calibration concept
不同于方式2 通过 硬件方式切换memory;piointer based calibration 采用pointer 的方式寻址标定量;在标定时,将pointer 指向RAM 空间,不标定时,指向flash;
当标定工具写一个标定量时,ECU先将这个标定量的值copy 到RAM,然后更新pointer 指向RAM;然后再修改RAM中变量值;
缺点:
- 为每个parameter 都创建一个pointer 会使pointer table占用较多的memory 空间;
- 页切换时要对Pointer table 中的所有pointer都进行更新,比较麻烦;
优化:
针对pointer table占用memory空间的问题,可以用结构体的方式定义标定量;然后pointer table 存放指向结构体的pointer;
针对pointer table不适合页切换实施的问题,可以增加一个指向pointer table的指针来实现页切换;页切换时对指向pointer table的指针进行更新;
标定参数的保存
对于问题2,parameter set file的保存,目前的解决方式有:
1. 标定信息保存在上位机
将存有标定量信息的parameter set file 保存在上位机PC上,然后每次启动标定后通过DOWNLOAD命令,将标定参数重新传递给ECU;(这种方式每次上电后paramter 使用的还是标定前的参数)
2. 直接修改hex
CANape/INCA 标定工具根据paramter 修改信息,直接修改现存的hex file;因为hex file中有包含parameter的地址,value信息;
标签:flash,RAM,XCP,标定,ECU,table,pointer,基本概念 From: https://blog.csdn.net/mc737771794/article/details/143367824