UDS中数据的存储是一个容易混淆但又非常重要的点,下面我们就来简单捋一捋。
ECU中用到的存储芯片通常有三种:FLASH,RAM,EEPROM。
FLASH一次写入,掉电数据不消失,也就是说只能在刷程序的时候写一次,我们不能调用2E服务对其进行操作。
EEPROM可以多次写入,掉电数据不消失,我们可以通过2E服务多次重复写操作。
RAM掉电消失,不能通过2E服务进行操作。
针对这三种存储芯片的特点,我们分部存储不同的DID。
FLASH只能写一次,而且数据不会因为断电发生改变,因此我们把一些不会轻易变更的量存储在里面,比如说软件版本号,硬件版本号,供应商代码,车辆识别号等,统称为静态DID。
EEPROM里的数据在程序刷写进去后还可以通过调用2E服务更改,所以我们在EEPROM里存储的量就是后面可能还会修改的,比如说刷写日期,ECU件号等。
RAM里的数据就更好理解了,由于RAM存储数据快的特点,我们通常把电压,电流,车速,转矩等即时变化的DID放在RAM里,统称为动态DID,取动态变化的意思。
这里涉及到另一个易混淆的点,动态DID和快照。动态DID和快照通常是同一个值,但又不完全一样。当故障发生的一瞬间,动态DID的值被保存下来,这就是快照。快照是为了方便诊断人员查找故障发生的原因的,因此快照不能存储在RAM里,而是存储在EEPROM中,否则掉电就消失了。
转载于:https://blog.csdn.net/qq_42718749/article/details/107784592