Autosar Dem模块之故障数据存储策略

事件存储概述

事件存储指当事件发生故障时将相关的数据存储到Nvm中,事件存储分为primary event memory 、user defined event memory、mirror event memory和permanent event memory。其中primary event memory和user defined event memory有同样的功能,主要是事件保留、事件优化、老化、内存替换等功能,mirror event memory具备不同的功能,permanent event memory主要处理OBD事件相关的存储。


事件存储管理

事件内存管理流程

Dem模块的内存管理主要包括事件的添加、更新、去除等操作,下图是诊断事件存储的主要流程

事件存储流程

Dem模块事件预留包括记录和处理DTC、UDS status、event related data等功能,具体流程如下图所示。

Dem模块的存储由主触发器和辅助触发器,主触发器包括DemEventMemoryEntryStorageTrigger容器,辅助触发器包括DemFreezeFrameRecordTrigger和DemExtendedDataRecordTrigger等 。

DemEventMemoryEntryStorageTrigger主要功能是事件被存储的时机,具体配置参数如下:

  • CONFIRMED:当事件对应的DTC确认(状态位bit3由0到1)时,事件会被存储
  • FDC_THRESHOLD:当故障检测计数器超过DemDebounceCounterPreconfirmedThreshold时,事件会被存储
  • PENDING:当事件对应的DTC挂起(状态位bit2由0到1)时,事件会被存储
  • TEST_FAILED:当事件对应的DTC失败(状态位bit0由0到1)时,事件会被存储

DemFreezeFrameRecordTrigger主要功能是快照被记录的时机,具体配置参数如下:

  • FDC:当故障计数器达到阈值时获取快照数据
  • CONFIRMED:当confirmed状态标志位由0置1时获取快照数据
  • PENDING:当pending状态标志位由0置1时获取快照数据
  • TESTFAILED:当testfailed状态标志位由0置1时获取快照数据
  • TESTFAILED_FIRST_IN_CYCLE:当testfailed状态标志位由0置1时获取快照数据,一个运行周期只会记录一次快照数据
  • FDC_FIRST_IN_CYCLE:当故障计数器达到阈值时获取快照数据,一个运行周期只会记录一次快照数据

DemExtendedDataRecordTrigger主要功能是快照被记录的时机,具体配置参数如下:

  • FDC_FIRST_IN_CYCLE:当故障计数器达到阈值时记录扩展数据,同时一个运行周期只会记录一次数据。
  • TESTFAILED:当testfailed标志位由0置1时记录扩展数据
  • CONFIRMED:当confirmed标志位由0置1时记录扩展数据(不支持)
  • PASSED:当testfailed标志位由1置0时记录扩展数据

事件溢出指示

当Event memory存满了或者当前的event正在存储别的event时,Dem模块会给每个event memory溢出指示,此时Dem模块会触发内部displacement策略。Dem模块提供Dem_GetEventMemoryOverflow API接口,这个API主要为特定的诊断服务或者特定的供应商处理,同时还为SW-Cs提供接口。Dem模块提供Dem_GetNumberOfEventMemoryEntries API接口,这个API主要返回当前存储在Event memory中的event数量。

event memory溢出指示会在清除DTC(14服务)操作后重置相关参数。

事件替代

Dem模块事件替换指新的事件存储条目替换旧的事件存储条目。当发生事件存储溢出指示后,Dem模块会根据配置丢弃事件存储条目。

Dem模块提供了DemEventDisplacementStrategy参数,配置Dem是否支持事件存储替换。具体配置如下:

  • NONE:不替换。如果事件内存被填满,不会替换已存在的事件存储条目。请注意,对于这种情况,惟一支持的回退策略是DISCARD_NEW_EVENT
  • PRIO_OCC:可替换。如果事件内存已被填充,则选择优先级最低的DTC。如果多个dtc共享这个最低优先级,则选择最老的dtc
  • FULL: 可替换。如果事件内存已被填充,则选择优先级最低的DTC。如果多个DTC共享这个最低优先级,则选择最老的被动DTC。如果最低优先级列表中没有被动DTC,则选择最老的活动但未测试的DTC
  • LEGACY_403:根据Autosar 4.0.3中定义的置换行为做向量扩展。如果事件内存已被填充,则选择优先级最低的DTC。如果多个DTC共享这个最低优先级,则选择最老的被动DTC

Dem模块事件存储替换流程如下图所示:

上报的事件优先级和已存在的事件优先级相同,同时已存在的事件在本次运行周期未完成测试,Dem模块把上报的事件将替换已存在的事件。

上报的事件优先级和已存在的事件优先级相同,同时已存在的事件在本次运行周期完成测试,Dem模块将丢弃上报的事件。

当某个事件被替换之后,同时DemResetConfirmedBitOnOverflow 参数配置为true,Dem模块将该事件的UDS status bit2和bit3设置为0。

当某个事件被替换之后,同时DemStatusBitHandlingTestFailedSinceLastClear参数配置为DEM_STATUS_BIT_AGING_AND_DISPLACEMENT,DemResetConfirmedBitOnOverflow设置为true,Dem模块将该事件的UDS status bit5设置为0。

总结

本章节主要描述了事件存储通用流程、事件存储的细节、事件溢出指示以及事件替代策略,以及相关Autosar配置。这些功能仅仅是Dem模块的一小部分,同时我们还需要了解Dem模块其他功能和Autosar工具的配置选项,这样才能灵活使用Autosar工具配置和调试相关的BUG。

本章节主要参考Autosar标准的Dem模块相关文档和ISO14229标准等。

  • 4
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值