XCP的主要应用于测量和标定ECU内部参数。此协议能够使数据采集工作与ECU内部运行的任务和中断同步,从而保证每当ECU软件更新参数时,能快速采集到所需的参数值。根据标定数据要实现掉电存储的要求,需要为 RAM中的标定参数建立一个RAM-EEPROM的关联列表。列表中的具体元素为:EEPROM地址(相对于起始地址的偏移量)、RAM地址(标定参数在ECU中的 地址,“&+变量名”的形式可直接获得)、标定参数的长度和标定参数的数据类型。数据标定任务可细分为三部分。上电标定参数更新读入、上位机对ECU中 RAM地址的直接标定和运行过程中RAM-EEPROM参数关联列表的更新。上电时,标定参数处于初始化状态,其参数直接来源于程序烧写完成时的数 值。断电之前标定的参数需要更新到RAM中才能保证之后运行的参数值是上次 标定后的数值。因此数据更新时,将EEPROM中的存储值直接读出更新到RAM 中即可。但若标定参数都未被标定过,则不需要标定参数的读出更新。如下图 所示,处理的方法是在数据读出更新之前,读出EEPROM特定位置的标定更新标 志位,若标定更新标志不存在,则不需要将数据读出更新到RAM。该任务在主函 数初始化处被调用一次。
上位机对ECU中RAM地址的直接标定主要是在CCP命令指导下完成的。
数据在RAM中标定更新后可满足正常的控制运行,但数据仍需要更新到对 应的EEPROM中才可实现掉电存储。如下图所示,在主函数中查询更新EEPROM 标志位,以判断是否需要更新数据到EEPROM。在数据更新到EEPROM之前, 向EEPROM的特定地址处写入一个标志,表示有数据更新到EEPROM,以方便 下次上电时辨别标志读取最新的标定数据。读入RAM-EEPROM关联列表的信息, 将地址偏移、数据类型、数据长度、数据值写入缓存,置写EEPROM中断标志, 在中断函数中完成数据更新EEPROM的操作。整个任务在主函数中被调用,设定 任务时间为100ms,减少不必要更新查询