【Autosar DEM 一 .初次了解 】

在这里插入图片描述
Dem:Diagnostic Event Manager诊断事件管理。负责管理诊断事件,可提供对故障的产生进行debouncing,DTC status bits管理,DTC记录、清除等。
Dcm:Diagnostic Communication Manager诊断通信管理,处理和响应UDS服务请求,管理诊断session、Mcu安全等级等。
NvM:NVRAM Manager非易失性RAM数据管理。NvM提供对DTC管理数据、故障冻结帧数据和拓展数据等的存储。
EcuM:ECU State Manager,ECU状态管理,负责ECU上电初始化顺序、ECU运行状态、下电流程的控制。

Dem初始化
Dem分两阶段进行初始化:Dem_PreInitDem_Init
Dem_PreInit可在NvM初始化完成前(比如InitZero阶段)就进行一些BSW相关的DTC管理的初始化,之后BSW模块即可通过Dem_ReportErrorStatus()接口上报诊断事件(DTC所对应的operation cycle必须已经启动,参数DemOperationCycleAutostart确定其是否自启动)。
Dem_Init发生在NvM初始化完成之后(比如StartupTwo阶段),之后ASW应调用Dem_SetOperationCycleState()启动相应的operating cycle,启动后ASW即可通过RTE使用接口Dem_SetEventStatus()上报事件。

故障存储
Dem通过NvM模块进行存储。ECU下电过程中,比如在ECUM PREP SHUTODWN阶段,调用Dem_Shutdown()接口关闭Dem,接口中Dem将根据存储需要,设置Dem相关的NvM Block的RAM status为changed或者unchanged。之后的NvM_WriteAll()将对RAM status为changed的NvM block进行存储。
在这里插入图片描述

DEM全称diagnostic event manager,主要是用于处理诊断事件(如检测12伏电压是否异常)和存储相关数据(如扩展数据、冻结帧等)。同时也给其他模块通过标准接口提供信息,如DCM可以通过

Dem_ReturnGetStatusOfDTCType Dem_DcmGetStatusOfDTC(

uint32 DTC,

Dem_DTCOriginType DTCOrigin,

uint8* DTCStatus)

这个标准接口同步或异步的读取到指定的DTC的故障状态。

下面将从以下几个方面,感性地分享一下DEM在AUTOSAR中的规定:

DEM与不同模块之间的联系;
DEM包括哪些子功能,这些功能又是怎么实现的呢?
首先从架构的角度看DEM,DEM处于BSW的服务层,见图一,与之交互的模块有SWC、BSW、ECUM、FIM、DCM、NVM,见下图。
在这里插入图片描述

在这里插入图片描述

DEM与其他模块间的关系:

SWC:

其中应用层SWC会周期调用故障监控函数,并周期调用标准接口Std_ReturnType Dem_SetEventStatus(

Dem_EventIdType EventId,

Dem_EventStatusType EventStatus)

把故障及状态报给DEM,DEM会根据预先配置的debounce方式调用相对应的函数。然后根据debounce的结果决定是否把当前故障加入到fault memory中和触发FIM。该内容的详细介绍在DEM与其他模块的联系章节的SWC部分和DEM内部模块的debounce部分会涉及到。

BSW:

BSW也会给DEM报故障,根据AUTOSAR规定,BSW通过调用

void Dem_ReportErrorStatus(

Dem_EventIdType EventId,

Dem_EventStatusType EventStatus)

标准接口给DEM报故障,故障内容如NVM写入失败或者排队任务数溢出或者校验错误。该类故障在DEM中的debounce方式是no debounce,不需要debounce,所以故障状态只有DEM_EVENT_STATUS_FAILED或者DEM_EVENT_STATUS_PASSED。

ECUM:

ECUM主要负责在不同时序调用DEM的初始化工作,

DEM初始化应包括

对每个故障的debounce status做处理;
初始化fault memory相关数据;
初始化DEM中存储的BSW的故障数据。

FIM:

FIM全称function inhibition manager,主要负责给SWC提供一个控制机制,可以使能或者失能SWC的功能,如SWC中电压检测功能,此时由于其该功能被抑制,SWC此时使用Dem_SetEventStatus报给DEM的故障状态是no condition。

另外在SWC调用Dem_SetEventStatus时,如果故障状态发生变化,DEM会通过调用

void FiM_DemTriggerOnEventStatus(

Dem_EventIdType EventId,

Dem_UdsStatusByteType EventStatusByteOld,
Dem_UdsStatusByteType EventStatusByteNew )

来抑制SWC本身的功能和与之相关的事件的功能。详细内容请期待FIM模块的分享。

DCM:

DCM和DEM之前有着密切关系,因为DCM中有ReadDTCInformation和ClearDiagnosticInformation这两个服务都是都是要从DEM中读取信息或者传递命令,还有PID01请求当前动力诊断数据等服务。比如根据DTC读冻结帧(也叫快照)(19 04 xx xx xx yy),在19服务的自服务的处理函数里面,首先就要调用

Dem_ReturnGetStatusOfDTCType Dem_DcmGetStatusOfDTC(

uint32 DTC,

Dem_DTCOriginType DTCOrigin,

uint8* DTCStatus)

给DEM传递DTC和该DTC所属的memory类型,来获得DTCStatus;然后调用

Dem_ReturnGetSizeOfDataByDTCType Dem_DcmGetSizeOfFreezeFrameByDTC(

uint32 DTC,

Dem_DTCOriginType DTCOrigin,

uint8 RecordNumber,

uint16* SizeOfFreezeFrame)

获得冻结帧(快照)的数据大小,因为数据大小和数据内容是提前配置好的,也可标定。最后调用

Dem_ReturnGetFreezeFrameDataByDTCType Dem_DcmGetFreezeFrameDataByDTC(

uint32 DTC,

Dem_DTCOriginType DTCOrigin,

uint8 RecordNumber,

uint8* DestBuffer,

uint16* BufSize)

获取冻结帧。但是DCM和DEM是两个不同的任务,所以以上几个函数一般是异步执行,DCM只负责把请求命令和写入目标给到DEM,在DEM任务中轮询DCM的任务请求,并实现数据的填充,后通知DCM任务完成。DCM再通过肯定相应回复数据。

DCM:

DCM和DEM之前有着密切关系,因为DCM中有ReadDTCInformation和ClearDiagnosticInformation这两个服务都是都是要从DEM中读取信息或者传递命令,还有PID01请求当前动力诊断数据等服务。比如根据DTC读冻结帧(也叫快照)(19 04 xx xx xx yy),在19服务的自服务的处理函数里面,首先就要调用

Dem_ReturnGetStatusOfDTCType Dem_DcmGetStatusOfDTC(

uint32 DTC,

Dem_DTCOriginType DTCOrigin,

uint8* DTCStatus)

给DEM传递DTC和该DTC所属的memory类型,来获得DTCStatus;然后调用

Dem_ReturnGetSizeOfDataByDTCType Dem_DcmGetSizeOfFreezeFrameByDTC(

uint32 DTC,

Dem_DTCOriginType DTCOrigin,

uint8 RecordNumber,

uint16* SizeOfFreezeFrame)

获得冻结帧(快照)的数据大小,因为数据大小和数据内容是提前配置好的,也可标定。最后调用

Dem_ReturnGetFreezeFrameDataByDTCType Dem_DcmGetFreezeFrameDataByDTC(

uint32 DTC,

Dem_DTCOriginType DTCOrigin,

uint8 RecordNumber,

uint8* DestBuffer,

uint16* BufSize)

获取冻结帧。但是DCM和DEM是两个不同的任务,所以以上几个函数一般是异步执行,DCM只负责把请求命令和写入目标给到DEM,在DEM任务中轮询DCM的任务请求,并实现数据的填充,后通知DCM任务完成。DCM再通过肯定相应回复数据。

NVM

NVM之于DEM主要在于存储啦,NVM也就是NVRAM manager,司职于非易失性数据的存储和维护。而DEM中又有大量数据需要存储在非易失性存储模块(如Dflash、EEPROM)中,但两者的交互关系都发生在上电初始化(startup)和下电(shutdown)过程中,当然,如果没有NvM_WriteAll的过程,也可以在运行过程中写入。

DEM需要存储在非易失性存储模块的数据包括19服务中会用的相关数据(如第一次出现的故障,第一个confirm的故障、最新的故障等等)、primary fault memory中的数据、mirror memory中的故障、OBD相关的数据、冻结帧、预存的数据、Debounce的状态(甚至是debounce counter)等,这些数据会在NVM_Readall的时候读取到DEM的RAM中,下电的时候会在NVM的writeall时从DEM的target RAM写入非易失性存储区(non-volatile memory)。

DEM内部分很多子模块,每个子模块分工不同,任务明确。INIT负责对DEM内部变量根据配置内容进行初始化。debounce负责对事件发生故障的有效性和事件表现正常的有效性的做滤波判断,如KL30电电压超过16伏100ms,该事件才会报KL30过压故障;primary fault memory负责存储当前发生的故障的DTC及相关数据,如冻结帧、扩展数据等。operational cycle management负责管理各种操作循环的判断,如对于OBD-related ECU中OBD drving cycle开启时才能故障状态才能进入confirm的状态,这也和项目配置有关;其它子模块及以上模块详细内容,敬请期待下一次的分享——DEM子模块详细分析。

  • 7
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 《ECU软件的AUTOSAR分层架构》是一篇详细探讨AUTOSAR(汽车开放系统架构)的文章。AUTOSAR是一种标准化的软件架构,旨在提高汽车电子系统的可重用性和可扩展性,提高生产效率并减少成本。 AUTOSAR由多个层次组成,每个层次都有特定的功能。文章详细介绍了以下六个AUTOSAR层次: 1. 底层驱动:该层次提供底层硬件驱动,包括设备驱动程序和通信模块,支持高效的通信和数据传输,确保系统稳定性和安全性。 2. MCAL(微控制器抽象层):这一层次抽象了底层驱动,并提供了与硬件相关的功能。它可以处理芯片特定的低级别细节,并提供基本的软件驱动程序和芯片初始化设置。 3. 操作系统:这一层次提供针对开发和管理自动化软件的操作系统功能。它使用了任务的概念,可以将系统操作细节与应用程序分离。 4. RTE(运行时环境):这一层次是应用程序和底层驱动程序之间的接口。它提供数据传输和错误管理功能。 5. 服务层:这一层次为应用程序提供服务。服务层包括通信协议,错误管理以及高级驱动程序,以提高汽车电子系统的可重用性和可扩展性。 6. 应用程序:最后一层是应用程序。它包含客户端和服务器端应用程序,完成特定的任务,如ADAS(高级驾驶辅助系统)、车辆诊断和车载娱乐等。 总的来说,本文详细介绍了AUTOSAR的分层架构,每个层次的功能和作用。AUTOSAR的采用将更好地促进汽车电子系统的发展,使系统更加稳定和安全。 ### 回答2: Ecu软件的autosar分层架构.pdf是一篇关于汽车电控单元软件的文章。该文章介绍了AutosarAutomotive Open System Architecture)分层架构的原理和特点,并且讲述了Autosar在汽车电控单元软件开发中的应用。 Autosar分层架构是一种基于模块化开发的设计思想,它将汽车电控单元软件分解成不同的功能层,每一层都具有特定的功能和接口。这种设计能够提高软件的可重用性和可维护性,并且适应不同制造商之间的互操作性。 该文章详细介绍了Autosar分层架构的五个层次:应用层、服务层、复合器层、基础软件驱动层和微控制器抽象层。每一个层次都有不同的功能和任务。例如,应用层是最高层,它负责应用程序的实现;服务层提供了针对通信和访问硬件的服务接口;复合器层主要处理多路信号的复合;基础软件驱动层抽象了硬件接口;微控制器抽象层负责操纵微控制器的硬件和软件。 此外,文章也讲述了Autosar分层架构在汽车电控单元软件开发中的具体应用,例如在系统配置、软件开发、软件测试和生命周期管理等方面的应用。最后,文章强调了Autosar分层架构的优势,包括可重用性、可维护性、互操作性和可扩展性。 总之,Ecu软件的autosar分层架构.pdf提供了关于汽车电控单元软件开发的宝贵信息,可以为汽车制造商和软件开发者提供帮助和指导。 ### 回答3: Ecu软件的autosar分层架构.pdf文件主要介绍了汽车电子控制单元(ECU)中,使用AUTOSARAutomotive Open System Architecture)标准进行软件分层的架构。该标准旨在加强汽车电子系统的可重用性、互换性和可扩展性。该文档介绍了AUTOSAR软件分层架构的组成和层次结构,并详细说明了每个层次的作用和职责。 该文档介绍了AUTOSAR的三个主要层次:应用层、运行时环境层和基础设施层。 应用层是用户编写的应用程序模块。 运行时环境层为应用程序提供运行所需的基本服务。 基础设施层提供基本软件组件(例如操作系统、电源管理、通信协议等)的服务。 该文件还介绍了ECU内两个重要模块:BSW(Basic Software Module)和MCAL(Microcontroller Abstraction Layer)。 BSW层实现了AUTOSAR标准中定义的所有服务,并提供了ECU软件的基本功能。 MCAL层为硬件平台提供适配层,以实现与不同硬件的兼容性。 BSW和MCAL共同构成了ECU软件的底层实现。 此外,该文件还讨论了AUTOSAR的组件构建,即将不同的软件组件组合为一个整体系统的过程。 该文件强调了AUTOSAR分层结构的优点,包括提高软件开发效率、简化软件维护和升级、降低成本和提高可靠性等。 总之,ECU软件的AUTOSAR分层架构.pdf文件系统地介绍了汽车电子系统的软件体系结构,详细说明了每个层次的作用和职责。 汽车制造商和软件开发人员可以借鉴该文件,有效提高软件开发效率和软件系统的稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值