FlexRay AUTOSAR 传输层 (FrArTp) 分析
1. AUTOSAR FlexRay 传输层架构
1.1 FlexRay AUTOSAR 传输层在AUTOSAR架构中的位置
AUTOSAR分层架构中,FlexRay AUTOSAR 传输层(FrArTp)位于通信抽象层,其上方是PDU路由器,下方是FlexRay接口。FrArTp的主要功能是实现FlexRay网络上的数据分段和重组。FrArTp基于ISO 15765-2标准(最初为CAN总线设计),但针对FlexRay通信需求进行了扩展。
自AUTOSAR 4.0以来,标准的FlexRay传输层已经与ISO 10681-2兼容,而本文分析的FrArTp是基于ISO 15765-2的AUTOSAR特定实现。
1.2 FlexRay AUTOSAR 传输层的主要功能
- 数据分段和重组
- 流控制
- 错误检测
- 支持1:1和1:n连接
- 确认机制和重试
- 支持基于ISO 15765-2的帧格式和通信序列
- 支持多达2^32-1字节的数据传输
2. FrArTp 内部组件架构
2.1 模块内部组件结构
FlexRay AUTOSAR 传输层模块由以下主要组件构成:
-
FrArTp核心:负责协调所有内部组件和外部接口的工作。
-
传输处理:
- 分段处理:将长数据分割成多个帧
- 流控制处理:处理流控制帧的发送和接收
- 重试机制:实现传输失败时的重试逻辑
-
接收处理:
- 重组处理:将接收到的多个帧重组为完整数据
- 缓冲区管理:管理接收数据的缓冲区
-
协议处理:
- 帧格式处理:处理ISO 15765-2兼容和扩展帧格式
- 地址处理:支持1字节和2字节寻址,物理和功能寻址
-
资源管理:
- 连接管理:管理1:1和1:n的连接
- PDU池管理:管理N-PDU资源
-
主函数:
- 定时器管理:处理各种超时
- 状态机控制:管理连接状态
2.2 模块接口
FrArTp与其他模块通过以下接口交互:
-
与PDU路由器的接口:
- FrArTp_Transmit():触发数据传输
- FrArTp_CancelTransmit():取消传输
- FrArTp_CancelReceive():取消接收
- FrArTp_ChangeParameter():更改参数
- PduR_FrArTpStartOfReception():通知开始接收
- PduR_FrArTpCopyRxData():复制接收数据
- PduR_FrArTpRxIndication():指示接收完成
- PduR_FrArTpCopyTxData():复制传输数据
- PduR_FrArTpTxConfirmation():确认传输完成
-
与FlexRay接口的接口:
- FrIf_Transmit():触发帧传输
- FrArTp_TriggerTransmit():触发传输回调
- FrArTp_RxIndication():指示帧接收
- FrArTp_TxConfirmation():确认帧传输
3. FrArTp 帧格式
3.1 帧类型和结构
FrArTp支持多种类型的帧,所有帧都有共同的基本结构:
- 地址信息头部:包含目标地址和源地址(1字节或2字节)
- 协议控制信息(PCI):包含帧类型、数据长度等控制信息
- 数据负载:实际传输的数据
主要帧类型包括:
-
ISO 15765-2单帧(SF-I):
- PCI类型:0x0
- 用于小于等于7字节的无分段数据传输
- 符合ISO 15765-2标准
-
扩展单帧(SF-E):
- PCI类型:0x4
- 用于最多253字节的无分段数据传输
- 是FrArTp的扩展,非ISO 15765-2兼容
-
ISO 15765-2首帧(FF-I):
- PCI类型:0x1
- 表示分段传输的开始
- 包含完整数据长度信息和首部分数据
- 符合ISO 15765-2标准
-
扩展首帧(FF-E):
- PCI类型:0x5
- 表示扩展分段传输的开始
- 支持更大的数据长度值
- 是FrArTp的扩展,非ISO 15765-2兼容
-
连续帧(CF):
- PCI类型:0x2
- 包含序列号(0-15)和数据
- 用于传输分段数据
- 符合ISO 15765-2标准
-
扩展连续帧(CF2):
- PCI类型:0x6
- 用于交替块机制
- 是FrArTp的扩展,非ISO 15765-2兼容
-
流控制帧(FC):
- PCI类型:0x3
- 包含流状态(FS)、块大小(BS)和最小分离时间(STmin)
- 用于控制数据流
- 符合ISO 15765-2标准
-
确认帧(AF):
- PCI类型:0x7
- 用于实现有确认的传输
- 是FrArTp的扩展,非ISO 15765-2兼容
3.2 寻址模式
FrArTp支持两种寻址模式:
- 单字节寻址:每个地址1字节,最多支持256个节点
- 双字节寻址:每个地址2字节,最多支持65536个节点
4. FrArTp 通信过程
4.1 分段传输和流控制序列
FrArTp分段传输和流控制过程如下:
-
启动分段传输:
- 应用/DCM通过PDU路由器请求传输大数据
- 发送方FrArTp确定消息需要分段并计算所需帧数
- 发送方发送首帧(FF),包含完整数据长度和首部分数据
- 接收方从首帧获取完整数据长度信息
-
流控制过程:
- 接收方发送流控制帧(FC),指示继续发送(CTS)
- 流控制帧包含块大小(BS)和最小分离时间(STmin)参数
- 发送方根据这些参数调整传输行为
-
数据块传输:
- 发送方按照指定的块大小发送连续帧(CF)
- 每个连续帧都有序列号(SN),接收方通过序列号检查帧序列完整性
- 接收方将每个帧的数据复制到接收缓冲区
-
块结束和继续流控制:
- 当一个块传输完成后,接收方再次发送流控制帧
- 发送方继续发送下一个数据块,直到所有数据传输完成
-
传输完成确认:
- 如果配置了确认机制,接收方发送确认帧(AF)
- 接收方和发送方向上层通知传输完成
4.2 重试机制
当启用重试机制时,FrArTp在检测到传输错误时可以重新发送数据块:
- 如果接收方在接收块过程中检测到错误,会在流控制帧中指示错误
- 发送方收到错误指示后,会从指定的序列号开始重新发送数据
- 为防止无限重试,重试次数由配置参数FrArTpMaxRn限制
- 重试机制还使用交替块机制,通过不同类型的连续帧(CF和CF2)区分不同数据块
5. FrArTp 状态机
5.1 连接状态机
FrArTp模块使用状态机管理每个连接的状态,主要状态包括:
-
空闲(IDLE):
- 连接未活动状态
- 可以接收传输请求或首帧
-
发送方状态:
- 传输中(TRANSMITTING):正在发送首帧、单帧或连续帧
- 等待流控制(WAIT_FC):发送首帧后等待接收流控制帧
- 等待流控制重传(WAIT_FC_OVFLW):接收到溢出流控制帧后的状态
- 等待确认帧(WAIT_ACK):发送完所有数据后等待确认
-
接收方状态:
- 接收中(RECEIVING):正在接收连续帧
- 发送流控制(SEND_FC):准备发送流控制帧
- 发送确认帧(SEND_ACK):准备发送确认帧
- 等待缓冲区(WAIT_BUFFER):接收缓冲区不足,等待资源
-
异常状态:
- 已取消(CANCELLED):传输已被取消
- 错误(ERROR):发生错误
状态转换由事件触发,包括:
- API调用(如FrArTp_Transmit、FrArTp_CancelTransmit)
- 帧接收(如首帧、连续帧、流控制帧)
- 超时(如等待流控制帧超时)
- 缓冲区可用性变化
6. 配置参数
FrArTp模块的行为受多种配置参数控制,主要参数包括:
-
通道参数:
- ISO 15765-2兼容性配置
- 寻址模式(1字节或2字节)
- 帧格式限制
-
连接参数:
- 连接类型(1:1或1:n)
- 确认机制和重试配置
- 流控制参数(块大小、最小分离时间)
-
超时参数:
- 等待流控制帧超时
- 等待连续帧超时
- 等待确认帧超时
-
PDU池配置:
- N-PDU大小
- N-PDU地址类型
通过这些参数,可以灵活配置FrArTp模块以满足不同应用场景的需求。
7. 总结
FlexRay AUTOSAR 传输层(FrArTp)是AUTOSAR中的关键通信模块,提供了FlexRay网络上的分段传输和重组功能。它基于ISO 15765-2标准,但通过各种扩展功能提升了性能和灵活性。
FrArTp的主要特点:
- 支持大数据传输,通过分段和重组机制
- 提供流控制以优化资源使用
- 支持1:1和1:n通信模式
- 提供确认和重试机制以增强可靠性
- 灵活的配置选项以适应不同应用需求
足不同应用场景的需求。
7. 总结
FlexRay AUTOSAR 传输层(FrArTp)是AUTOSAR中的关键通信模块,提供了FlexRay网络上的分段传输和重组功能。它基于ISO 15765-2标准,但通过各种扩展功能提升了性能和灵活性。
FrArTp的主要特点:
- 支持大数据传输,通过分段和重组机制
- 提供流控制以优化资源使用
- 支持1:1和1:n通信模式
- 提供确认和重试机制以增强可靠性
- 灵活的配置选项以适应不同应用需求
通过本文对FrArTp架构、帧格式、通信过程和状态机的分析,可以更全面地理解AUTOSAR中FlexRay通信的实现机制和原理。