Autosar BSW_DCM模块

{本篇文章主要是从DCM模块下的三大子模块角度去学习本模块,文章只是让读者对模块有个初步的认识,想要深入学习,建议结合demo工程,了解各个接口函数,从而对各个子模块有更深的交互关系认识。}

Dcm模块:{诊断通讯管理模块}

定义概述:

Dcm模块作为AutoSar诊断模块的重要组成部分,

主要负责诊断数据流和管理诊断状态,包括诊断会话和安全状态,

当然DCM模块能检查诊断服务的请求是否满足条件。

三大子模块及交互关系:

诊断服务层(DSL):

该模块主要是:①用来处理诊断数据请求和响应的数据流

②监控和确保诊断请求和响应的时序

1、处理诊断请求:

当收到诊断请求时,PDUR调用Dcm_StartOfReception()和Dcm_CopyRxData()函数将收到的诊断请求数据放置在DCM模块的Buffer中,然后PDUR调用Dcm_TpRxIndication()函数通知Dcm模块接收到了新的诊断请求。

2、处理诊断响应:

当需要响应诊断请求时,DSL模块通过调用PduR_DcmTransimit()和Dcm_CopyTxData()将数据传递至PDUR模块,其中PduR_DcmTransimit()函数只是传递长度信息、地址信息,数据是通过Dcm_CopyTxData()函数传递至PDUR模块,当数据传输成功后,PDUR模块通过Dcm_TpTxConfirmation()函数告知DCM数据接收成功。

3、管理安全等级

DSL提供Dcm_GetSecurityLevel()、DslInternal_SetSecurityLevel()两个函数分别用于获取当前的安全等级和设置安全等级。

对于配置层面而言,DSL菜单主要是配置诊断帧,包括物理寻址和功能寻址,单次通信的最大buffer、时间参数、包括回复0x78(诊断请求已收到且有效服务器正在执行请求服务-等待响应)的时间和为了防止诊断服务异常,允许0x78的最大次数。

诊断服务调度(DSD):

该模块主要目的:①负责检查诊断请求的有效性(诊断会话、安全访问级别、应用程序权限的验证)

②跟踪服务请求执行的进度

1、检查诊断服务:

当DSL接收到新的诊断请求,DSL通过内部接口通知DSD,DSD调用Dcm_GetSesCtrlType()、Dcm_GetSecurityLevel()获取当前的会话和安全等级,DSD模块会在当前会话的“Service Identifier Table”(服务标示表)检查诊断请求SID是否在其中,如果不在table中,DSD会发送NRC 0x7F,如果诊断服务支持,但当前Session不支持该子服务,DSD会发送NRC 0x7E;然后检查当前安全等级是否满足条件,如果当前安全等级不支持该诊断请求,DSD会发送NRC 0x33。最后检查数据的长度。

2、汇总响应数据:

当DSP模块完成诊断请求处理后,DSD负责将整理响应数据。并发送至DSL。 DSD模块将服务标识符(SID)(如果是负反馈,即当前会话不支持该服务,则为0x7F)和响应的数据流添加至“Dcm_MsgContextType”。 然后DSD将其传送至缓冲区,并在缓冲区的第一个字节添加SID。

对于配置层面而言,DSD主要是配置所需要实现的服务,以及服务所支持的session以及服务执行的安全等级。

诊断服务处理(DSP):

该模块主要目的是:

实现不同服务的处理。

1、分析接收的请求信息,调用不同的诊断服务实现函数;

2、检查格式以及是否支持所寻址的子功能;

3、获取数据或者调用DEM、SWC或者其他BSW模块的接口。

例如:0x22和0x2E服务需要调用SWC的数据接口进行读写

0x28需要调用BswM的逻辑实现关闭不同的CAN报文;

0x19服务需要调用DEM模块获取快照数据和扩展数据。等

4、汇总响应数据,通过内部接口发给DSD,DSD汇总响应数据发给DSL,进行处理诊断响应。

对于配置层面而言,DSP模块配置项比较杂,

1、DID的实现,包括DcmDspData用于配置DID的数据类型,数据长度,以及接口类型;DcmDspDidInfo用于配置DID的读写功能;DcmDspDids用于汇总DcmDspDidInfo和DcmDspData,并且添加DID value

2、安全等级的实现,包括种子和秘钥的位数、最大的错误访问次数,以及时间参数。

3、Session的配置,包括Session的等级,Session是否支持跳转至Boot,以及时间参数P2 ServeMax和P2* ServeMax。

简述工作流程:

在AUTOSAR架构中,Dcm模块位于通信服务层。Dcm模块是独立于具体的网络的(不依赖于具体的CAN,Lin,Eth,Flexray等网络来实现)。 PduR模块为Dcm模块提供独立于具体网络的接口。Dcm模块从PduR模块接收诊断信息,Dcm模块在内部处理和检查诊断消息。作为处理所请求的诊断服务的一部分,Dcm将与其他BSW模块或SW-Components(通过RTE)交互,以获取所请求的数据或执行所请求的命令。诊断服务处理与特定的服务请求强绑定(不同的诊断请求依赖于不同的一个或几个模块来实现)。通常,Dcm将汇集收集到的信息,并通过PduR模块发送回消息。

DCM交互模块:

DCM模块与其他模块交互:

Dcm和Dem的交互:

DEM模块提供了检索与故障内存相关的所有信息的功能,以便Dcm模块能够通过从故障内存中读取数据重新响应测试人员的请求,通俗的讲就是Dcm能够读取Dem记录的DTC信息。

Dcm和PduR的交互:

PduR模块接收和发送诊断数据。PduR为Dcm模块提供一个与具体通信协议无关的接口。

Dcm和ComM模块的交互:

Dcm模块可以指示状态“活动”和“非活动”用于诊断通信。Dcm模块提供了处理通信需求“完全/静默/无通信”的功能。此外,Dcm模块提供了在ComM模块要求时启用和禁用诊断通信的功能。

SWC通过和RTE接口和Dcm交互:

Dcm模块在完成诊断功能的时候需要通过RTE接口来读写/函数调用其他SWC的数据/服务。

BswM和Dcm模块的交互:

如果Dcm的初始化是从引导加载程序跳转的结果,则Dcm通知BswM应用程序已更新。Dcm也向BswM指示通信模式的改变。

定义规范:

DCM模块相关的标准主要包括三部分:ISO 14229(UDS,DCM遵循的主要标准)、ISO 15031(ISO 15031 (1-7))及SAEJ1939(OBD,与OBD相关的$01 -$0A服务)。

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Autosar BSW(Basic Software)是Autosar标准中的一部分,它包括一些通用的基础软件模块,用于支持汽车电子系统的各种功能和特性。Autosar BSW包含以下几个模块: 1. Communication Stack(通信栈):负责处理汽车电子系统的通信协议和网络通信。通信栈包括CAN、LIN、FlexRay、Ethernet等通信协议,以及TCP/IP、CANopen、UDS等通信协议栈。 2. Memory Stack(存储栈):负责管理汽车电子系统中的各种存储器,包括EEPROM、Flash、RAM等。存储栈提供了存储器管理、数据备份、数据恢复等功能。 3. Operating System (OS) (操作系统):负责管理汽车电子系统中的各种资源,包括CPU、内存、任务、中断等。操作系统提供了任务管理、资源管理、调度等功能。 4. Microcontroller Abstraction Layer (MCAL) (微控制器抽象层):负责管理汽车电子系统中的微控制器硬件资源,包括IO口、定时器、中断等。MCAL提供了硬件抽象层、驱动程序、中断处理等功能。 5. Diagnostics Stack (诊断栈):负责管理汽车电子系统中的故障诊断和错误处理。诊断栈包括UDS、OBD和J1939等诊断协议,以及诊断管理、错误处理、故障码诊断等功能。 6. Security Stack (安全栈):负责保护汽车电子系统的安全性和保密性。安全栈包括加密、解密、签名、认证等功能。 总之,Autosar BSW包含了多个重要的模块,它们提供了通信、存储、操作系统、硬件抽象、诊断和安全等方面的支持。这些模块的集成和协同工作,可以实现高效、安全、可靠的汽车电子系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值