Autosar诊断实战系列19-UDS首帧数据接收及流控帧发送代码级分析

本文详细分析了Autosar中长帧数据的首帧接收过程,包括在CanTp_RxIndication()和CanTp_StoreRxNPduEvt()等接口中的操作,并讨论了首帧数据处理及流控帧发送的步骤,如CanTp_RxHandleFFReception()和CanTp_ConstructFCPci()。内容涉及ISO14229协议、CanTp内存管理及Dcm层的数据处理。

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

前言

在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/CanTp/Fim模块配置开发及注意事项,诊断与BswM/NvM关联模块的应用开发及诊断capl测试脚本开发等诊断相关实战内容。
Autosar诊断实战导读快速链接:Autosar诊断实战系列导读
Autosar全模块实战专栏快速链接:AutoSar实战进阶系列导读

本篇开始,我们从代码级别分析下长帧数据的首帧数据接收流控帧数据发送的实现过程,包括每个模块执行了哪些操作,配合流程图的方式更直观展示给大家,本文框架如下:
在这里插入图片描述

1. 长帧数据的首帧接收

根据ISO14229协议,对于无法通过一帧报文发送的长帧,会拆分为首帧+连续帧的形式发送,对于首帧报文的接收与单帧的接收过程基本一致,
1)对应报文callout函数CanTp_Rx

UDS (Unified Diagnostic Services) 是ISO 14229标准定义的一套统一的汽车诊断服务规范,用于车辆之间的通信,允许对车辆的各种系统进行诊断、读取数据、执行动作等操作。 诊断(Diagnostic Flow Control Frame)在UDS环境中是一个用于数据传输速度的。它主要用于在发送大量数据前,请求接收方准备好接收,以及在发送数据后确认已接收到所有数据。这种机制有助于防止因数据传输过快而导致的数据丢失或接收错误的情况发生。 ### UDS诊断回复的基本功能: 1. **请求准备接收**:当需要向远程节点发送大量数据之前,本地节点可以发出一个询问对方是否已经准备好接收数据。这通常由本地节点主动发起。 2. **接收准备状态指示**:远程节点在收到后,会回复相应的表示其当前的接收状态。如果远程节点尚未完成之前的数据接收并准备好了接收新的数据,则可能会暂时拒绝接收新的数据。 3. **数据传输确认**:在发送数据之后,本地节点可以再次使用告知远程节点数据传输已完成,并期望获得接收确认。 4. **接收确认**:远程节点在接收到全部数据后,通过特定的响应向本地节点反馈接收结果。如果所有的数据都被成功接收,会返回确认信息;如果有数据丢失或未被正确接收,则需要进行相应处理,如重新传输等。 ### 实现细节: - **结构**:UDS通常包含一个命令字节、一个数据长度字段和其他必要的信息,比如CRC校验码。这些信息帮助确定的目的、长度以及有效性。 - **协议交互**:在实际应用中,通过按照ISO 14229标准规定的程执行一系列特定的命令和等待响应,来实现的操作。例如,使用ISO 5725-1标准中定义的特定命令ID来启动和管理过程。 - **安全性考虑**:在使用进行数据传输的过程中,还需要考虑到安全性的保护措施,比如使用密码验证或其他加密手段,以确保数据传输过程中数据的安全性和完整性。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Autosar汽车电子进阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值