UDS协议基于AUTOSAR架构的UDS服务软件实现.docVIP

UDS协议基于AUTOSAR架构的UDS服务软件实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UDS协议基于AUTOSAR架构的UDS服务软件实现 图1 AUTOSAR架构通讯模块,引自[1] 本质上,AUTOSAR架构的通讯功能是基于OSI参考模型来构建,即CAN Driver和CAN Interface模块对应数据链路层(Data Link Layer),CAN Transport模块对应网络层(Network Layer),Dcm模块对应应用层(Application Layer),如下图2所示。 图2 引自[2] 其实这些AUTOSAR模块就是OSI相对应层的标准协议的软件实现,而这些模块的AUTOSAR文档基本可看成是软件的说明文档。下面就通过对这些AUTOSAR文档的梳理,来大致介绍UDS服务的接收请求,请求处理和发送响应过程。 1 接收请求 基于CAN总线来实现UDS服务通讯,是指使用CAN ID进行接收和发送。一般使用2个CAN ID进行接收,一个对应物理寻址,另一个对应功能寻址;而发送则使用一个CAN ID即可。这里可先回顾下CAN通讯系列:menghuyouyou:CAN通讯系列--AUTOSAR架构的CAN通讯5 对于接收部分,不管是CAN通讯还是UDS服务都是在CAN Driver去访问硬件(寄存器),读取数据,然后通知CAN Interface。对于CAN通讯,再向上经PduR路由到COM模块;而UDS服务是先向上到CanTp处理,再向上经PduR路由到DCM模块,如下图3所示。 图3 UDS服务的接收请求过程 具体过程描述如下: 1.轮询模式时,BSW调度器周期性调用CAN Driver模块的Can_MainFunction_Read函数; 2.CAN Driver模块的Can_MainFunction_Read函数将访问CAN Controller(硬件)的寄存器,比如仲裁寄存器,数据寄存器和数据长度寄存器,读取这些寄存器的数据; 3.数据读取结束后,这时再调用CAN Interface模块的CanIf_RxIndication函数,这样数据从CAN Driver模块传给了上一层的CAN Interface模块; 4.CAN Interface模块识别到数据的CAN ID为UDS服务,则调用CanTp模块的CanTp_RxIndication函数,将数据传到CanTp模块; 5.CanTp模块接收数据后,先通过N_PCI类型来判断单帧传输(SF?)还是多帧传输(FF?CF?FC?);然后根据相应的类型去处理:(这里的依据是ISO15765-2协议) 当接收到单帧(SF),需要确认DCM模块接收数据的buffer是否够用,够用则存入数据,再经PduR路由,调用Dcm_TpRxIndicaiton通知DCM模块。 当接收到首帧(FF),需要先确认DCM模块发送数据的buffer是否够用,再确定流控帧的BS和STmin,最后直接请求发送流控帧。(注意:接收首帧后是不需要DCM模块处理,而是直接由CanTp模块来处理,因为接收首帧意味着要回流控帧,告诉发送方要怎么回续帧,属于网络层的内容) 当接收到续帧(CF),可能存在如下3种情况: 当接收到流控帧(FC),需要根据流控状态来确定是否继续发送续帧,当继续发送续帧时,也需要根据流控帧数据来更新续帧的发送配置(BS和STmin)。 6. DCM模块接收到CanTP的通知,会去判断请求是否允许。 注:CanTp模块其实应用接收数据做了很多操作,并非图3简单的示意向上通知,具体会在下篇文章进行介绍。 2? 请求处理 当DCM模块允许处理请求后,当BSW调度器周期性调用Dcm_Mainfunction函数进行请求处理,这部分处理的内容其实就是对应的ISO14229协议。比如接收的数据是10 03,那么Dcm_Mainfunction就会去调用$10服务的相应函数,最终回复正响应10 03 00 32 01 F4,还是负响应 7F 10 xx。若参考AUTOSAR文档,其架构如下图4所示: 图4 DCM模块组成,引自[3] 这部分内容仅先了解它的功能是干什么的,不做具体介绍,将会在后面的文章展开。 3? 发送响应 当DCM模块处理好了请求,总的来说,分为两个关键步骤:一个是DCM模块经PduR路由,将调用CanTp_Transmit函数更新网络层的配置;另一个是将通过BSW调度器调用CanTp模块的CanTp_MainFunction函数来发送数据。 图5 UDS服务的请求处理和响应发送过程 图5描述了数据发送的具体过程,即: 1.BSW调度器周期性调用DCM模块的Dcm_MainFunction函数,处理请求,响应数据暂存入DCM模块发送的buffer; 2.DCM模块处理完请求后将调用PduR模块的PduR_DcmTransmit函数,PduR模块经路由

文档评论(0)

play + 关注
实名认证
文档贡献者

分享有帮助的文档

1亿VIP精品文档

相关文档