7.7.7 Event related data
即冻结数据 / 扩展数据 freeze frame data (DTCSnapshot) / DTCExtendedData).
7.7.7.1 Storage of freeze frame data
直接介绍配置吧
DemTypeOfFreezeFrameRecordNumeration:
①
针对上述配置,需要额外配置DemMaxNumberFreezeFrameRecords(每个DTC可存储的最大冻结帧条数,假设配置为N条),并且DemFreezeFrameRecordTrigger需要配置以为DEM_TRIGGER_ON_TEST_FAILED。每次触发冻结数据存储时,记录编号将按照时间顺序从1连续增加到N。
②
针对上述方式,记录编号已经在Autosar工具界面配置好了,完全固定了。只要冻结帧存储触发了,就会存储已配置编号的冻结数据。
说到冻结数据存储的触发,则顺便介绍一个配置:DemFreezeFrameRecordTrigger(配置冻结帧存储的触发时机)
注意:不是冻结数据存储触发了,就会执行存储操作。是否能够存储需要进行event retention流程(具体判断流程见章节 7.7.2.1 Event retention)。
说到触发存储,再介绍个配置,DemFreezeFrameRecordUpdate(冻结数据触发存储/更新存储时机):No表示只在初次DemFreezeFrameRecordTrigger满足时,才会触发存储;YES:每次DemFreezeFrameRecordTrigger满足都会触发存储更新。(这个也是针对方式②)
再介绍一个配置DemEnvironmentDataCapture(冻结数据以及扩展数据的capture获取时机):
DEM_CAPTURE_SYNCHRONOUS_TO_REPORTING:调用Dem_SetEventStatus的时候获取
DEM_CAPTURE_ASYNCHRONOUS_TO_REPORTING:下一个周期调用Dem_MainFunction时获取
那么问题来了:同步获取环境数据的时候,不可能获取完了便立即存储到event memory,所以这些环境数据放在哪里呢?
Autosar中有这样一个配置DemMaxNumberEventEntryEventBuffer,便是用来定义环境数据存储buffer(参数是指这个存储buffer 可以容纳的memory entry的个数)。
后面还有一些OBD相关的配置,目前尚未研究!后续补充!
7.7.7.2 Pre-storage of freeze frame data
冻结帧的预存储可以用于具有高度易失性(比如:某些变化频率很高的数据)的冻结帧数据的事件(针对每个Event事件的配置)。
首先介绍一些配置
DemFFPrestorageSupported:是否支持FF预存储
DemMaxNumberPrestoredFF:预存储FF的最大数量。若为0,则意味着不支持预存储。
DemFFPrestorageInNvm:预存储的FF是否存到NvM。
当DemFFPrestorageSupported为TRUE时,Dem module将提供 API Dem_PrestoreFreezeFrame和API Dem_ClearPrestoredFreezeFrame.
当没有内存空间的时候(DemMaxNumberPrestoredFF限制),API Dem_PrestoreFreezeFrame返回not OK
当pre-stored FF已经存入event memory或者被取消(换句话说:event retention成功或者失败),pre-stored FF都将被释放。
当事件判定为pass时(即bit0 1--0时),需要释放re-stored FF。
对于需要某些跨操作循环存储FF的情况,需要将预存储数据立即存储或者Dem_Shutdown下电存储到NvM中。然后在Dem_Init之前读取出来。
7.7.7.3 Storage of extended data
其实扩展帧存储机制以及配置和冻结数据类似,如;
DemExtendedDataRecordTrigger
DemExtendedDataRecordUpdate
比较明显的不同之处是:扩展数据能够配置存储内部数据,而冻结数据不行。