其他分享
首页 > 其他分享> > AUTOSAR DEM Configuration

AUTOSAR DEM Configuration

作者:互联网

本文只介绍AUTOSAR DEM配置,目的在于指导DEM快速开发,对于AUTOSAR DEM 功能请参见AUTOSAR DEM Introduction 一文

Workflow

Step

Action

Refer to Section

1

定义DEM General

Dem General

2

定义Freeze Frame

Freeze Frame

3

定义Extended Data

Extended Data

4

定义 Enable Condition(Option)

Dem Enable Condition

5

定义Storage Condition (Option)

Dem Storage Condition

6

定义Operation Cycle

Operation Cycle

7

定义Event

Event Basic

Event Details

Debouncing(Option)

8

定义DTC

DTC

9

定义Callback(Option)

Callback

Dem General

Note:下图只是示例,具体配置要结合需求

Aging After Healing

DEM_AGING_WHILE_HEALING : Aging Process 可以不需要等待Healing 完成,只有满足Aging Process 触发条件就可以

DEM_AGING_AFTER_HEALING: AUTOSAR 标准, Aging Process 可以需要等待Healing 完成才可以Aging Process

DEM_AGING_AFTER_HEALING_ALL_DTC:  与DEM_AGING_AFTER_HEALING 类似,如果Event 不关联Indicator 也需要Healing 完成才可以Aging Process

Aging Behavior : Aging判断与触发条件

Aging Counter Behavior : Aging Counter 变化的方式

DEM_AGING_COUNT_ALWAYS: 即使EVENT Aging Process disabled , Aging Counter 也会变化

DEM_AGING_COUNT_ONLY_AGEABLE:: Aging Counter 变化只针对Enable Aging Process 的Event

Aging Counter Report: Aging Counter 对于report的形式(通过Internal Element Data)

Aging Retain Environment Data: 当Aged时, 对应的FF/ExtendData 是否一并清除

Availability Support :是否支持运行期ACTIVATE/DEVATIVATE 某个Event. 具体配置还需要在Event 级别

BswError Buffer Size: Dem Processing Queue Size, 一个Dem Mainfunction 最后能处理的Event个数,如果超过则会丢失

Clear Dtc Behavior:

ALL_SUPPORTED_DTCS: The API accepts all supported DTC values, as well as all DTC values which are configured in DemGroupDTCs and DEM_DTC_GROUP_ALL_DTCS (default).

ONLY_CLEAR_ALL_DTCS: The API accepts ClearAllDTCs only (DTC Group 0xFFFFFF).

ONLY_CLEAR_OBDII_AND_ALL_DTCS: The API accepts ClearAllDTCs only (DTC Groups 0x000000, 0xFFFFFF).

ONLY_CLEAR_SINGLE_AND_ALL_DTCS: The API accepts DTC numbers and ClearAllDTCs (DTC Group, 0xFFFFFF).

ONLY_CLEAR_WWHOBD_AND_ALL_DTCS: The API accepts ClearAllDTCs only (DTC Groups 0xFFFF33, 0xFFFFFF).

Clear DTC Behavior:

VOLATILE: 只清空RAM

NONVOLATILE_TRIGGER: ClearDTC 清空RAM 之后会trigger Clear NVM Data ,但是不会等待NVM 数据清除完成在给response

NONVOLATILE_FINISH: ClearDTC 需要清空RAM,NVM Data 都完成才会给出response

DTC StatusAvailablityMask: 用于$19 的DTC Mask

Event Displacement Strategy: 当Dem Primary 满了的时候,Event 替换原则

NONE: 不替换,新的Event将不再存储在DEM Fault Memory

PRIO_OCC: 根据Priority, Occurrence 进行替换

FULL: 根据Priority, Passive status ,Occurrence 进行替换

EventMemory Entry Storage Trigger:

写入New Event entry到Dem Fault Memory的触发源

Extended Data Capture: 收集Extended Data 的时机

FreezeFrame Capture : 收集FF 的时机

TESTFAILED: 每次请求Test Failed

MEMORY_STORAGE: EVENT 第一次写入DEM PRIMARY BLOCK

Latch Test Failed Behavior: Latch Test Failed策略,具体是否启用在Event级别

DEM_LATCH_TF_ONLY_THIS_CYCLE: 如果Event 在本次Operation Cycle Failed,不能在Passed

DEM_LATCH_TF_CONFIRMED_AND_THIS_CYCLE : 如果Event 在本次Operation Cycle Failed,不能在Passed ,另外如果Event is Confirmed ,则需要Clear Fault之后才可以再次Passed

Max Number Event Entry Primary:  最多可以存储的Event 个数

Max Number Prestored FF:  最多存储的Prestored FF 个数

Occurrence Counter Process: Occurrence Counter 变化策略

DEM_PROCESS_OCCCTR_TF :每次TF 都 +1

DEM_PROCESS_OCCCTR_CDTC: 只有confirm 才 +1

Operation Cycle Storage : Operation Cycle State是否需要存储在NVM , 当Operation Cycle 大于Power Cycle 会用到这个功能

Reset Debounce Behavior :  Event Enable Condition 和 Debounce Counter  之间的关系

DEM_RESET_DEBOUNCE_ON_DISABLE_ENABLE_CONDITIONS

如果Event Enable Condition 不满足,需要reset Debounce Counter

DEM_RESET_DEBOUNCE_ON_ENABLE_ENABLE_CONDITIONS

如果Event Enable Condition 从不满足切换至满足,需要reset Debounce Counter

Restart Cycle on Init Ref : 由Dem_PreInit  Start所指定的 Operation Cycle

Reset TF on OperationCycle Start: Reset TF bit 当Operation Cycle Start

Status Bit TF Storage :  TF Bit 是否存储在NVM 中, 也就是说上个上电周期TF bit 将会影响下个上电周期

Status Bit ConfirmDTC Reset on Overflow : Confirm Bit是否reset 当发生Displacement  

Status Bit PendingDTC Process: Pending DTC 更新策略

STOREDONLY: 只有对应EVENT 存储在Dem Primary中才可以设置PendingDTC bit, 反之如果EVENT 被Displacement  或Aged 或 Clear Fault(Event 被从Dem Primary中移除),则需要Reset PendingDTC bit

ALL_DTC: PendingDTC bit 并不会受到影响,即使Event 被从Dem Primary中移除

Status bit TestFailedSinceLastClear Handing : TestFailedSinceLastClear 更新策略

AGING_AND_DISPLACEMENT: 当Displacement  或Aged或Clear Fault 发生时,由于Event 被从Dem Primary中移除,对应的TestFailedSinceLastClear bit 需要reset

NORMAL: 当Clear Fault 发生时,由于Event 被从Dem Primary中移除,对应的TestFailedSinceLastClear bit 需要reset

AGING: 当Aged 或Clear Fault 发生时,由于Event 被从Dem Primary中移除,对应的TestFailedSinceLastClear bit 需要reset

Status Bit WIR User Controlled: 是否支持外部勇敢通过Dem_SetWIRStatus 设置WIR

Status Bit WIR Controlled Behavior :

DISABLED_DURING_CONTROLDTCSETTING: 如果通过$85已经Disable DTC ,那么请求Dem_SetWIRStatus 将会返回E_NOT_OK

ENABLED_DURING_CONTROLDTCSETTING:通过 $85 Disable DTC宁不能影响外部设置WIR

Status Bit WIR Process: WIR bit 更新策略

STOREDONLY: 只有对应EVENT 存储在Dem Primary中才可以设置WIR Bit, 反之如果EVENT 被Displacement  或Aged 或 Clear Fault(Event 被从Dem Primary中移除),则需要Reset WIR bit

ALL_DTC: WIR bit 并不会受到影响,即使Event 被从Dem Primary中移除

Support Aging For All DTC: 是否所有Event 都支持AGING ,即使Event 没有存储在DEM Primary 中

Suppression Support: 是否支持DTC Suppression

Type of FreezeFrameRecord Numeration : FF记录策略分析

CALCULATED :在具体event级别需要设置Max Number FreezeFrameRecord即可

CONFIGURED: 在具体event级别需要设置DemFreezeFrameRecNumClassRef,用于指定这个EVENT 特殊的Storage Trigger/Update Condition

Event Combination Support: 对于多个Event 映射一个DTC的策略

DISABLED: 不支持

TYPE1: 只占用一个存储空间,相关数据也只存储一份比如FF,EX

TYPE2: 每个EVENT都会独立的存储, 数据也是一个EVENT 一份

Freeze Frame

DemDataClass

位置在DemGeneral/DemDataClass

Data Element  Data Size : 数据长度

Data Element Endianness: 大小端(只在USE_DATA_SENDER_RECEIVER 生效)

Data Element Read Fnc : User Defined Callback Function(只在USE_DATA_FUNCTION_CALL生效)

Data Element Store Non-Volatile: 是存储在NVM

Data Element Use Port

USE_DATA_FUNCTION_CALL: 通过User Defined Callback 方式获取对应的FF Data

USE_DATA_SENDER_RECEIVER: 通过RTE Sender/Receiver 方式获取数据,会生成对应的Receiver Port, 需要由SWC 和其连接

USE_DATA_CLENT_SERVER_PORT: 通过RTE Client/Server 方式获取数据,会生成对应的Client Port, 需要由SWC 和其连接

Internal Data Element: 对于FF来说不需要选择

DemDidClass

位置在DemGeneral/DemDidClass, 在这里需要执行DID($19 04),同时需要引用DemDataClass

DemFreezeFrameClass

位置在DemGeneral/DemFreezeFrameClass, 可以由多个DemFreezeFrameClass被不同的Event关联

在DemFreezeFrameClass定义当前所关联的FF Data

DemFreezeFrameRecNumClass

只有DcmGeneral/Type of FreezeFrameRecord Numeration : CONFIGURED 时才需要被引用

位置在DemGeneral/DemFreezeFrameRecNumClass

FreezeFrameRecord Number: FF Data的数量

FreezeFrameRecord Trigger: 收集数据的触发源, 只是收集数据,并不是触发写入数据到dem fault memory

FreezeFrameRecord Update: 触发写入数据到dem fault memory

Extended Data

DemDataClass

位置在DemGeneral/DemDataClass, 对于Extended Data ,如果需要引用internal DataElement 则Port 需要选择USE_DATA_INTERNAL ,同时Internal DataElement 需要选择要获取Internal Data

DemExtendedDataRecordClass

位置在DemGeneral/DemExtendedDataRecordClass , 在这里要关联多个DemDataClass

ExtendedDataRecord Number: $19 06 读取Extended Data 所指定的ID, 每个Record 需要有唯一的一个ID Number

DemExtendedDataClass

位置在DemGeneral/DemExtendedDataClass, 可以包含若干个Extended Data Class

Dem Enable Conditions

每个event 可以有多个Storage Enable Condition, 当所有的Condition满足时,才会将Event Entry写入Dem fault memory

DemEnableCondition

位置是DemGeneral/DemEnableCondition

通过接口如下接口设置Enable

Std_ReturnType Dem_SetEnableCondition(uint8 EnableConditionID, boolean ConditionFulfilled)

DemEnableConditionGroup

位置是DemGeneral/DemEnableConditionGroup

DemEnableConditionGroup 被Event 所引用,只有其包含的所有Enable Condition都满足才可以

Dem Storage Conditions

DemStorageCondition

位置是DemGeneral/DemStorageCondition

DemStorageConditionGroup

位置是DemGeneral/DemStorageConditionGroup

Operation Cycle

位置是DemGeneral/DemOperationCycle

可以定义多个Operation Cycle

在INIT 阶段 : Dem_SetOperationCycleState(IGNITION, DEM_CYCLE_STATE_START );

在SHUTDOWN 阶段:Dem_SetOperationCycleState(IGNITION, DEM_CYCLE_STATE_STOP );

Automatic End:  选择则不需要APP STOP Operation Cycle,其将在DEM_SHUTDOWN 中由DEM来完成

Automatic Start: 并无作用,将用DemGeneral/DemRestartCycleOnInitRef代替

OperationCycle Type: 仅对OBD ECU 起作用

Event Basic

位置是DemConfigSet/DemEventParameters

Event Available : Event是否Available , 对于Unavailable Event将不能被请求更新状态,同样运行期也可以通过Dem_SetEventAvailable进行设置

Event ID:  线性变化的ID

Event Latch TestFailed: 是否支持Latch TF, 其用法见DcmGeneral/ Latch Test Failed Behavior:

Extended Data Class Ref: 引用Extended Data

FreezeFrame Class Ref: 引用FF

FreezeFrameRecNum Class Ref: 引用FF Rec Num, 只有DcmGeneral/Type of FreezeFrameRecord Numeration : CONFIGURED 时才需要被引用

Max Number FreezeFrame Record: FF Record只有DcmGeneral/Type of FreezeFrameRecord Numeration : CALCULATED时才需要被引用

Event Details

位置是DemConfigSet/DemEventParameters/DemEventClass

Aging Allowed: 当前Event 是否运行Aging Process

AgingCycle Counter Threshold: Clear Event需求的AgingCycle

AgingCycle Ref: Aging Process 所关联的Cycle, 通过调用Dem_UpdateAgingCounter进行Aging 更新

EnableCondition Group Ref: 引用EnableCondition Group

Event Destination:

PRIMARY_MEMORY: 存储在这里面的可以被$19,$14 所获取,也是绝大部分Event存储的方式之一

SECONDARY_MEMORY:

存储在 Secondary Memory 中的EVENT 所对应的DTC 通过19 读取不出来, 一旦多个Secondary DTC 映射一个Primary DTC, 类似多个Event 对应一个DTC ,当Secondary DTC Qulification, 所对应的Primary DTC 也Qualify ,但是需要APP 自己完成

Event FailureCycle Ref: 需要引用的Cycle

Event FailureCycleCounter Threshold: Confirm bit被设置所需要的Cycle Counter

Event Priority: Event 优先级, 当Displacement 发生时会有作用

FreezeFrame Prestorage Support: 是否支持 Prestore FF

  1. PreStorage 需要显示调用Dem_PreStoreFreezeFrame
  2. 当正式的Freeze Frame收集被触发,PreStore 的FF 数据将会被使用

Operation Cycle Refer关联一个Operation Cycle 将影响Event UDS bit

StorageCondition Group Ref:  引用StrorageCondition Group

Debouncing

位置是DemConfigSet/DemEventParameters/DemEventClass/DemDebounceAlgorithmClass

DemDebounceMonitorInternal

配置一个Callout用于实现Debounce的变化

DemDebounceCounterBased

基于预先配置好Increase/Decrease counter 进行Debounce

Debounce Behavior:

FREEZE: Debounce Counter 并不会恢复初始值,当Enable Condition , ControlDtcSetting,举个例子我们将BUSOFF 作为Enable Condition ,假设一个Message TO 是500ms, 现在Debounce Counter已经累加到250了,如果此时产生BUSOFF, 需要Disable Condition, 当BUSOFF 恢复后再次Enable Condition时, 之前累计的Debounce Counter是否要继续,还是复位

RESET: ,当Enable Condition , ControlDtcSetting 需要 Reset (0) Debounce Counter

Debounce Continues: 当Disable Condition/ ControlDtcSetting Disable DTC 时,是否Debounce Counter是否依然会持续技术,即不受这些条件影响

Debounce Counter Storage: 是否将Debounce Counter存储在NVM 中

Debounce Counter Decrement Step Size: PreTestPassed 减少的步长

Debounce Counter Failed Threshold: Event Test Failed 的Threshold

Debounce Counter Increment Step Size: PreTestFailed 增加的步长

Debounce Counter Passed Threshold: Event Test Passed 的Threshold

Debounce Counter JumpDown Value:

如果启用,当PreTestPassed时,如果Debounce Counter >= JumpDown Value, 则 Debounce Counter = JumpDown Value

Debounce Counter JumpUp Value:

如果启用,当PreTestFailed时,如果Debounce Counter <= JumpUp Value, 则 Debounce Counter = JumpUp Value

DemDebounceTimeBased

DebounceTime Failed Threshold: PreFailed 产生之后,多久之后会真正的产生TestFailed, 在这期间如果出现PreFailed 不连续(中间穿插PrePassed),则会重新计数

DebounceTime Passed Threshold: PrePassed 产生之后,多久之后会真正的产生TestPassed, 在这期间如果出现PrePassed 不连续(中间穿插PreFailed),则会重新计数

DTC

位置是DemConfigSet/DemDTCClass

DTC Functional Unit:通过$19 09 可以读取

DTC Severity:

DTC的严重程度,ISO- 14229 所特有, $19 08/09 所使用

Immediate Nv Storage DTC 对应的EVENT 是否立即存储到NVM 中,非同步方式,如果Disable,数据将在DEM_Shutdown中写入

UDS DTC: DTC Number

Callback

Event ClearEventAllowed Callback

Event 级别的Callback,用于在清除fault($14) 之前判断该fault是否可以清除

位置是DemConfigSet/DemEventParameters/DemCallbackClearEventAllowed

Std_ReturnType Dem_CallbackClearEventAllowed (boolean *ClearAllowed);

Event EventStatusChanged Callback

Event 级别的Callback,Event Status 变化时会触发

位置是DemConfigSet/DemEventParameters/ DemCallbackEventStatusChanged

Std_ReturnType Dem_CallbackEventStatusChanged (Dem_UdsStatusByteType EventStatusOld ,Dem_UdsStatusByteType EventStatusNew);

Event EventDataChanged Callback

Event 级别的Callback,Event Data 变化时会触发

位置是DemConfigSet/DemEventParameters/DemCallbackEventDataChanged

Std_ReturnType Dem_CallbackEventDataChanged (void);

Global EventDataChanged Callback

Global级别的Callback,Event Data 变化时会触发

位置是DemGeneral/Trigger GlobalEventDataChanged Callback

Std_ReturnType Appl_Dem_GeneralCBDataEvt_EventDataChanged(Dem_EventIdType EventId)

Global EventStatusChanged Callback

Global级别的Callback,Event Status 变化时会触发

位置是DemGeneral/Trigger GlobalEventStatusChanged Callback

Std_ReturnType Appl_Dem_GeneralCBStatusEvt_GeneralCallbackEventUdsStatusChanged(Dem_EventIdType EventId, Dem_UdsStatusByteType EventUdsStatusOld, Dem_UdsStatusByteType EventUdsStatusNew

Global DTCStatusChanged Callback

Global级别的Callback,DTC Status 变化时会触发

位置是DemGeneral/DemCallbackDTCStatusChanged

Std_ReturnType DemCallbackDTCStatusChanged (uint32 DTC, Dem_DTCStatusMaskType DtcStatusOld, Dem_DTCStatusMaskType DtcStatusNew )

Start to Clear DTC Callback

 $14 执行Clear DTC 在清除DEM 数据之前触发

位置是DemGeneral/DemEventMemorySet/DemClearDTCNotification

Finish to Clear DTC Callback

 $14 执行Clear DTC 在清除DEM 数据之后触发

位置是DemGeneral/DemEventMemorySet/DemClearDTCNotification

Std_ReturnType ClearDTCCallOut(uint32 DTC, Dem_DTCFormatType DTCFormat, Dem_DTCOriginType DTCOrigin)

标签:AUTOSAR,DTC,Counter,DEM,Configuration,Data,Event,Dem
来源: https://blog.csdn.net/tiankefeng19850520/article/details/122763632