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

文章详细介绍了AutosarDem模块在事件存储方面的功能,包括事件内存管理流程,如事件的添加、更新和去除,以及不同类型的事件内存。此外,还讨论了事件存储的触发条件、快照记录时机和事件溢出后的处理策略,如事件的替换和优先级处理。同时,提到了相关的配置参数对系统行为的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件存储概述

事件存储指当事件发生故障时将相关的数据存储到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标准等。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值