当前位置: 首页 > news >正文

AUTOSAR进阶图解==>AUTOSAR_SWS_FlexRayISOTransportLayer

AUTOSAR FlexRay ISO Transport Layer (FrTp) 详解

基于AUTOSAR标准的FlexRay传输层协议分析

目录

  • 1. 概述
  • 2. FrTp架构设计
  • 3. FrTp配置结构
  • 4. FrTp状态机
  • 5. FrTp消息传输流程
  • 6. 总结

1. 概述

AUTOSAR FlexRay Transport Layer (FrTp)是AUTOSAR基础软件架构中的一个关键模块,它按照ISO 10681-2标准实现,为应用层与FlexRay网络之间提供了透明的数据传输服务。本文档详细分析了FrTp模块的架构、配置结构、状态机和消息传输流程。

根据AUTOSAR分层软件架构,FlexRay Transport Protocol (FrTp)位于PDU Router模块和FlexRay Interface模块之间。FrTp的主要功能是对那些无法适配单个FlexRay L-PDU的消息(I-PDU)进行分段和重组。

FrTp的主要功能包括:

  • 在发送方向上对数据进行分段
  • 在接收方向上对数据进行重组
  • 分段会话中的错误检测
  • 数据流控制

FrTp支持1:1和1:n连接,并且可以传输高达2^16-1字节的数据。


2. FrTp架构设计

下图展示了AUTOSAR FlexRay Transport Layer (FrTp)的架构及其与其他模块的关系:

在这里插入图片描述

2.1 架构说明

FrTp在AUTOSAR分层架构中处于通信服务层,与其他模块的关键交互如下:

2.1.1 上行接口(与PDU Router)

FrTp模块从PDU Router模块请求以下服务原语:

  • PduR_FrTpStartOfReception: FrTp指示开始接收FrTp-I-PDU
  • PduR_FrTpCopyRxData: FrTp启动从FrTp N-PDU有效负载数据到上层Rx缓冲区的复制过程
  • PduR_FrTpRxIndication: FrTp指示FrTp-I-PDU接收完成(成功或失败)
  • PduR_FrTpCopyTxData: FrTp启动从上层Tx缓冲区到FrTp N-PDU有效负载数据的复制过程
  • PduR_FrTpTxConfirmation: FrTp模块确认Fr N-SDU的发送(成功或失败)给相应的发送模块(如COM、DCM等)

PDU Router调用FrTp的服务原语包括:

  • FrTp_Transmit: 上层模块通过PDU Router发起I-PDU数据传输
  • FrTp_CancelTransmit: 在发送方取消Fr N-SDU的发送
  • FrTp_ChangeParameter: 更改FrTp模块的通信参数
  • FrTp_CancelReceive: 取消正在进行的接收
2.1.2 下行接口(与FlexRay Interface)

FrTp调用FlexRay Interface (FrIf)模块的以下服务原语:

  • FrIf_Transmit: 发起Fr N-PDU的传输

FlexRay Interface调用FrTp的服务原语包括:

  • FrTp_RxIndication: FrIf模块指示接收到FrTp帧(Fr N-PDU)
  • FrTp_TxConfirmation: FrIf模块确认包含Fr N-PDU的帧通过FlexRay网络成功或失败地发送
  • FrTp_TriggerTransmit: FrIf模块获取Fr N-PDU数据
2.1.3 与系统服务的接口

FrTp与系统服务模块的交互:

  • FrTp_Init: 由ECU状态管理器调用以初始化FrTp模块
  • FrTp_Shutdown: 由ECU状态管理器调用以关闭所有活动通信链接并释放资源
  • Det_ReportError: FrTp报告开发错误给默认错误追踪模块

2.2 FrTp功能

FrTp模块的关键功能包括:

  • 数据分片和重组: 将大型I-PDU分段为多个FlexRay L-PDU,或将多个L-PDU重组为完整I-PDU
  • 数据传输控制和确认: 确保数据可靠传输,管理传输确认
  • 流量控制: 通过流控制帧管理发送方和接收方之间的数据流
  • 超时监控: 监控各种超时参数以确保通信的可靠性
  • 错误检测: 检测分段会话中的错误并进行适当处理

3. FrTp配置结构

下图展示了AUTOSAR FlexRay Transport Layer (FrTp)的配置结构:

在这里插入图片描述

3.1 配置结构说明

FlexRay Transport Layer的配置结构主要包含以下组件:

3.1.1 FrTp配置类

FrTp配置类是整个模块配置的根容器,包含以下子容器:

  • FrTpGeneral: 包含全局配置参数
  • FrTpConnectionConfig: 包含多个连接配置
  • FrTpTxPduPool: 包含多个PDU池配置
  • FrTpConnectionControl: 包含连接控制参数
3.1.2 FrTpGeneralType

通用配置参数,控制模块全局行为:

  • FrTpDevErrorDetect: 开发错误检测开关,类型为boolean
  • FrTpCommunicationTimeout: 通信超时时间,类型为float
  • FrTpChangeParameterApi: 是否支持参数变更API,类型为boolean
  • FrTpCancelReceiveApi: 是否支持取消接收API,类型为boolean
  • FrTpCancelTransmitApi: 是否支持取消发送API,类型为boolean
  • FrTpTxConfirmationTimeout: 发送确认超时时间,类型为float
  • FrTpVersionInfo: 是否支持版本信息API,类型为boolean
  • FrTpMainFunctionPeriod: 主函数周期,类型为float
3.1.3 FrTpConnectionType

定义FrTp连接,每个连接具有以下属性:

  • FrTpChannelId: 通道ID,类型为uint8
  • FrTpLocalAddr: 本地地址,类型为uint16
  • FrTpRemoteAddr: 远程地址,类型为uint16
  • FrTpNSduId: N-SDU ID,类型为uint16
  • FrTpBufferPoolRef: 缓冲池引用,类型为reference
  • FrTpConnectionControlRef: 连接控制引用,类型为reference

每个FrTp连接都有模块范围内唯一的RemoteAddress/LocalAddress对,这相当于ISO 10681-2中的源地址和目标地址。

3.1.4 FrTpTxPduPoolType

PDU池配置,用于动态带宽分配:

  • FrTpTxPduRef: PDU引用列表,类型为reference数组
  • FrTpTxPduPoolInit: 初始值,类型为uint8
  • FrTpTxPduPoolMax: 最大值,类型为uint8

FrTpTxPduPool包含配置用于发送FrTp N-PDU的N-PDU列表。一个FrTpTxPduPool可以被不同的FrTpConnection引用,但每个FrTpConnection只能引用一个FrTpTxPduPool。

3.1.5 FrTpConnectionControlType

连接控制参数,包含各种超时参数和流控制配置参数:

  • FrTpTimeBs: 发送方等待FlowControl N-PDU的超时时间,类型为float
  • FrTpTimeBr: 接收方等待下一个FlowControl/LastFrame N-PDU的超时时间,类型为float
  • FrTpTimeCr: 接收方等待下一个ConsecutiveFrame N-PDU的超时时间,类型为float
  • FrTpTimeCs: 发送方等待发送下一个ConsecutiveFrame N-PDU的超时时间,类型为float
  • FrTpTimeAs: 发送方的超时参数,类型为float
  • FrTpTimeAr: 接收方的超时参数,类型为float
  • FrTpMaxFrIf: 最大FlexRay接口实例数,类型为uint8
  • FrTpMaxAs: 最大发送方超时计数,类型为uint8
  • FrTpMaxAr: 最大接收方超时计数,类型为uint8
  • FrTpMaxFcWait: 最大流控制等待计数,类型为uint8
  • FrTpBandwidthLimitation: 是否启用带宽限制,类型为boolean
  • FrTpPaddingActivation: 是否启用填充,类型为boolean
3.1.6 运行时数据结构

运行时数据结构包含以下主要组件:

  • FrTpRuntime: 包含运行时参数和通道列表
  • FrTpChannel: 包含通道相关的运行时参数
  • FrTpConCtrlRuntime: 包含连接控制的运行时参数
  • FrTpPduPoolRuntime: 包含PDU池的运行时参数

这些运行时数据结构用于跟踪和控制通信会话的状态,每个通道可以分配用于处理连接,通道是FrTp的运行时资源。

3.2 配置与运行时关系

配置结构和运行时数据结构之间存在以下关系:

  • FrTpChannel引用FrTpConnection、FrTpPduPoolRuntime和FrTpConCtrlRuntime
  • FrTpConCtrlRuntime引用FrTpConnectionControl
  • FrTpPduPoolRuntime引用FrTpTxPduPool
  • FrTpConnection引用FrTpTxPduPool和FrTpConnectionControl

这种设计允许多个连接共享相同的控制参数和PDU池,实现更有效的内存使用和资源分配。


4. FrTp状态机

下图展示了AUTOSAR FlexRay Transport Layer (FrTp)的状态机:

在这里插入图片描述

4.1 发送端状态机

发送端状态机控制消息的发送过程,包含以下主要状态:

4.1.1 空闲状态
  • 含义: 发送端处于空闲状态,可以开始新的传输
  • 特征: 没有活动的传输会话
  • 退出条件: 接收到来自上层的传输请求

从空闲状态,根据数据长度,可以转换到以下状态:

  • 如果数据长度小于或等于最大SF长度,则发送SF(Single Frame)并转换到等待传输确认状态
  • 如果数据长度大于最大SF长度,则发送SF/FF(First Frame)并转换到等待FC状态
4.1.2 等待FC状态
  • 含义: 等待接收方发送的流控制帧
  • 特征: 已经发送SF/FF,等待接收方的响应
  • 进入条件: 发送了FF或大于最大SF长度的SF帧
  • 退出条件: 收到FC帧、超时或取消传输

从等待FC状态可以转换到以下状态:

  • 如果收到FC(CTS),则转换到传输CF数据状态
  • 如果收到FC(WAIT)且等待次数小于最大等待次数,则保持在等待FC状态
  • 如果收到FC(WAIT)且等待次数大于或等于最大等待次数,或者超时(FrTpTimeBs到期),则转换回空闲状态
  • 如果传输被取消,则终止传输
4.1.3 传输CF数据状态
  • 含义: 发送连续帧(CF)
  • 特征: 正在按照流控制参数发送数据块
  • 进入条件: 收到FC(CTS)
  • 退出条件: 发送完当前数据块或达到最后一块数据

从传输CF数据状态可以转换到以下状态:

  • 如果未达到最后块,则继续留在传输CF数据状态
  • 如果达到最后块,则转换到传输LF数据状态
  • 如果发送完当前块但未完成全部发送,则根据情况转换到等待FC状态或等待传输确认状态
4.1.4 传输LF数据状态
  • 含义: 发送末帧(LF)
  • 特征: 正在发送最后一帧数据
  • 进入条件: 从传输CF状态转换过来,准备发送最后一帧
  • 退出条件: 发送LF后

从传输LF数据状态发送LF后,转换到等待传输确认状态。

4.1.5 等待传输确认状态
  • 含义: 等待传输确认
  • 特征: 已发送所有数据帧,等待确认
  • 进入条件: 发送完SF或LF
  • 退出条件: 收到传输确认或超时

从等待传输确认状态可以转换到空闲状态,条件是收到传输确认或超时。

4.2 接收端状态机

接收端状态机控制消息的接收过程,包含以下主要状态:

4.2.1 空闲状态
  • 含义: 接收端处于空闲状态,可以接收新的传输
  • 特征: 没有活动的接收会话
  • 退出条件: 接收到SF/FF

从空闲状态,当接收到SF/FF时,转换到等待CF状态。

4.2.2 等待CF状态
  • 含义: 等待连续帧(CF)
  • 特征: 已经接收了SF/FF,等待后续数据帧
  • 进入条件: 接收到SF/FF
  • 退出条件: 接收完所有数据、接收到LF、超时或取消接收

从等待CF状态可以转换到以下状态:

  • 如果可以继续接收,则发送FC(CTS)并转换到等待FC确认状态
  • 如果暂时无法接收,则发送FC(WAIT)并转换到等待FC确认状态
  • 如果接收到LF或接收完成,则转换回空闲状态
  • 如果超时(FrTpTimeCr到期),则转换回空闲状态
  • 如果接收被取消,则终止接收
4.2.3 等待FC确认状态
  • 含义: 等待流控制帧的传输确认
  • 特征: 已经发送了FC帧,等待确认
  • 进入条件: 发送了FC(CTS)或FC(WAIT)
  • 退出条件: 收到FC传输确认或超时

从等待FC确认状态可以转换到以下状态:

  • 如果收到FC传输确认,则转换回等待CF状态
  • 如果超时(FrTpTimeAr到期),则转换回空闲状态

4.3 状态机总结

FrTp状态机通过严格控制发送和接收过程,确保数据传输的可靠性和有序性。关键帧类型包括:

  • SF(Single Frame): 单帧,用于小数据量的传输
  • FF(First Frame): 首帧,多帧传输的第一帧
  • CF(Consecutive Frame): 连续帧,多帧传输的中间帧
  • LF(Last Frame): 末帧,多帧传输的最后一帧
  • FC(Flow Control): 流控制帧,用于控制数据流

超时参数对于状态转换至关重要,包括:

  • FrTpTimeBs: 发送方等待FC的超时时间
  • FrTpTimeBr: 接收方的相关超时时间
  • FrTpTimeCr: 接收方等待CF的超时时间
  • FrTpTimeAr: 接收方的流控制确认超时时间

5. FrTp消息传输流程

下图展示了AUTOSAR FlexRay Transport Layer (FrTp)的消息传输序列:

在这里插入图片描述

5.1 单帧传输流程

当需要传输的数据较小,能够放入单个帧时,FrTp会使用单帧传输:

  1. 发起传输:

    • 上层模块(COM/DCM)调用PDU Router的服务
    • PDU Router调用FrTp_Transmit服务
    • FrTp从上层获取数据(PduR_FrTpCopyTxData)
  2. 单帧发送:

    • FrTp创建Single Frame (SF)
    • FrTp通过FrIf_Transmit服务发送SF
    • SF通过FlexRay网络从发送节点传输到接收节点
  3. 接收处理:

    • 接收节点的Fr Driver接收到数据并通知FrIf
    • FrIf调用FrTp_RxIndication通知FrTp
    • FrTp调用PduR_FrTpStartOfReception获取接收缓冲区
    • FrTp将数据复制到上层缓冲区(PduR_FrTpCopyRxData)
    • FrTp通知PDU Router接收完成(PduR_FrTpRxIndication)
  4. 传输确认:

    • FrIf通知FrTp单帧传输确认(FrTp_TxConfirmation)
    • FrTp通知PDU Router传输完成(PduR_FrTpTxConfirmation)
    • PDU Router通知上层模块

整个单帧传输过程简单高效,适用于小数据量的传输。

5.2 多帧传输流程

当数据量较大时,FrTp会使用多帧传输,包括首帧(FF)、流控制帧(FC)、连续帧(CF)和末帧(LF):

  1. 发起传输:

    • 上层模块(COM/DCM)调用PDU Router的服务
    • PDU Router调用FrTp_Transmit服务
    • FrTp从上层获取数据(PduR_FrTpCopyTxData)
  2. 首帧发送:

    • FrTp创建First Frame (FF)并通过FrIf发送
    • 接收节点接收FF并通知FrTp
    • FrTp获取接收缓冲区并复制数据
  3. 流控制处理:

    • 接收方FrTp发送Flow Control (FC)帧
    • 发送方接收FC帧并根据FC类型决定下一步操作
    • FC类型包括CTS(Continue To Send)和WAIT(等待)
  4. 连续帧传输:

    • 发送方根据FC参数循环发送Consecutive Frame (CF)
    • 每发送一个CF,发送方从上层获取新数据
    • 接收方接收CF并将数据复制到上层缓冲区
  5. 末帧处理:

    • 发送方发送Last Frame (LF)表示传输结束
    • 接收方接收LF,完成数据复制
    • 接收方通知上层接收完成
  6. 传输确认:

    • FrIf通知FrTp传输确认
    • FrTp通知PDU Router传输完成
    • PDU Router通知上层模块

多帧传输过程包含流控制机制,能够适应不同带宽和缓冲区条件,确保可靠传输。

5.3 关键接口调用

在传输过程中,关键接口调用包括:

发送方向:

  • FrTp_Transmit: 发起传输
  • PduR_FrTpCopyTxData: 从上层获取数据
  • FrIf_Transmit: 发送帧
  • FrTp_RxIndication: 接收流控制帧
  • PduR_FrTpTxConfirmation: 通知上层传输完成

接收方向:

  • FrTp_RxIndication: 接收数据帧
  • PduR_FrTpStartOfReception: 开始接收处理
  • PduR_FrTpCopyRxData: 复制数据到上层缓冲区
  • FrIf_Transmit: 发送流控制帧
  • PduR_FrTpRxIndication: 通知上层接收完成

这些接口确保了数据在不同层之间的有序流动和处理。


6. 总结

AUTOSAR FlexRay Transport Layer (FrTp)是AUTOSAR通信栈中的关键组件,它为上层应用提供透明的FlexRay数据传输服务。通过本文档的分析,我们详细了解了FrTp的架构、配置结构、状态机和消息传输流程。

6.1 FrTp关键特性

  • 基于标准: 遵循ISO 10681-2国际标准实现
  • 分层架构: 在PDU Router和FlexRay Interface之间提供透明的传输服务
  • 灵活配置: 支持多种配置选项和参数调整
  • 可靠传输: 通过状态机和流控制确保数据可靠传输
  • 优化性能: 针对小数据量使用单帧传输,大数据量使用多帧传输
  • 动态带宽分配: 通过PDU池机制支持动态带宽管理

6.2 应用场景

FrTp主要用于以下场景:

  • 车辆诊断系统通信
  • ECU间通信
  • XCP通信
  • 其他需要传输层协议的FlexRay系统

通过灵活的配置和可靠的传输机制,FrTp能够满足现代汽车电子系统对通信的各种需求。

http://www.lryc.cn/news/588840.html

相关文章:

  • 读书笔记5:交易在供应链中的关键作用
  • AI产品经理面试宝典第20天:AI+金融场景相关面试题及回答指导
  • C#,List<T> 与 Vector<T>
  • 【记录】Ubuntu20.04安装mysql
  • k8s之Snapshots 详解
  • Apifox 和 Apipost如何选?2025企业API开发工具选型需求分析及建议
  • 前端打包自动压缩为zip--archiver
  • SpringBoot 2.x→3.0升级实战:Jakarta EE兼容性改造清单
  • Flink双流实时对账
  • GaussDB 数据库架构师修炼(三) 集群管理概览
  • 数据结构--树(1)
  • 同样是“跳转”,为何forward地址栏不变,redirect会变?
  • 20250715给荣品RD-RK3588开发板刷Android14时打开USB鼠标
  • MATLAB知识点总结
  • 物联网设备管理工具实战:用AR运维镜击穿6.8天修复魔咒
  • 构建企业级项目管理全面数字化运营体系︱易趋(蓝云软件)总裁唐智勇
  • 学习C++、QT---26(QT中实现记事本项目实现文件路径的提示、现在我们来学习一下C++类模板、记事本的行高亮的操作的讲解)
  • 【PDF识别改名】使用京东云OCR完成PDF图片识别改名,根据PDF图片内容批量改名详细步骤和解决方案
  • pytorch学习笔记(四)-- TorchVision 物体检测微调教程
  • sundog公司的SilverLining SDK库实现3d动态云层和下雨、下雨、雨夹雪效果
  • 终端安全管理系统为什么需要使用,企业需要的桌面管理软件
  • Java 异常处理详解:从基础语法到最佳实践,打造健壮的 Java 应用
  • Spring Boot目录变文件夹?3步解决!
  • AI大模型训练的云原生实践:如何用Kubernetes指挥千卡集群?
  • ETAS 总线接口 ES582.2
  • Bootstrap-HTML(七)Bootstrap在线图标的引用方法
  • 算法学习笔记:23.贪心算法之活动选择问题 ——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • html语法
  • C++题解(37) 信息学奥赛一本通1318:【例5.3】自然数的拆分
  • 测试tcpdump,分析tcp协议